Compare commits

...

9 Commits

Author SHA1 Message Date
e7885d33b9 Grunk nodule splatter
All checks were successful
linting & formatting / build (push) Successful in 25s
2025-04-02 22:09:02 -06:00
467f0d5216 Heartbeat SFX 2025-04-02 21:50:41 -06:00
599696284b Greebles for grunk nodule chitter 2025-04-02 21:50:18 -06:00
0d2f785544 Using grunk groans for uncommon ambient creaks 2025-04-02 21:04:10 -06:00
3dc1011c6b Wall switch action SFX 2025-04-02 21:03:36 -06:00
dc6ff96ea0 Removed unused alarm screech 2025-04-02 21:03:05 -06:00
12a43946f4 Grunk alarm shriek SFX 2025-04-02 20:09:09 -06:00
e79a367277 Grunk tank deposit sfx 2025-04-02 12:19:06 -06:00
8a53349aef Player ship has door with open/close sfx 2025-04-02 11:56:22 -06:00
44 changed files with 651 additions and 87 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://ypk1d4adrcs"
path="res://.godot/imported/alarm_screech.wav-99f30850091e72de3c561e544b0403c0.sample"
[deps]
source_file="res://assets/sfx/grunk/alarm_screech.wav"
dest_files=["res://.godot/imported/alarm_screech.wav-99f30850091e72de3c561e544b0403c0.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bb560r2wvjfht"
path="res://.godot/imported/greeble1.wav-ea53a62389ed7a5fce08eb109c43dadd.sample"
[deps]
source_file="res://assets/sfx/grunk/greeble1.wav"
dest_files=["res://.godot/imported/greeble1.wav-ea53a62389ed7a5fce08eb109c43dadd.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dunakapj3mb0h"
path="res://.godot/imported/greeble2.wav-d90cb4544544b55f5382855b51f585d6.sample"
[deps]
source_file="res://assets/sfx/grunk/greeble2.wav"
dest_files=["res://.godot/imported/greeble2.wav-d90cb4544544b55f5382855b51f585d6.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://6bgyoaclmu8c"
path="res://.godot/imported/greeble3.wav-4ec0219b7b9fa19e355078aa1e99b2e0.sample"
[deps]
source_file="res://assets/sfx/grunk/greeble3.wav"
dest_files=["res://.godot/imported/greeble3.wav-4ec0219b7b9fa19e355078aa1e99b2e0.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://7nj6bldnhos3"
path="res://.godot/imported/greeble4.wav-9a84416c9d5fe46f4d88789a027646cd.sample"
[deps]
source_file="res://assets/sfx/grunk/greeble4.wav"
dest_files=["res://.godot/imported/greeble4.wav-9a84416c9d5fe46f4d88789a027646cd.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://0usonf3pjh3o"
path="res://.godot/imported/heartbeat.wav-23e070ceda3a2c6b2886e8fd85673555.sample"
[deps]
source_file="res://assets/sfx/grunk/heartbeat.wav"
dest_files=["res://.godot/imported/heartbeat.wav-23e070ceda3a2c6b2886e8fd85673555.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

BIN
assets/sfx/grunk/pump.wav Normal file

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cimw72d2lexvt"
path="res://.godot/imported/pump.wav-3af6b59129486d6bf0a5a519848e701a.sample"
[deps]
source_file="res://assets/sfx/grunk/pump.wav"
dest_files=["res://.godot/imported/pump.wav-3af6b59129486d6bf0a5a519848e701a.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

BIN
assets/sfx/grunk/splat1.wav Normal file

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://di0j2xhgfc78s"
path="res://.godot/imported/splat1.wav-0c184c3612f6e8dc49404de6420bfc5c.sample"
[deps]
source_file="res://assets/sfx/grunk/splat1.wav"
dest_files=["res://.godot/imported/splat1.wav-0c184c3612f6e8dc49404de6420bfc5c.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

BIN
assets/sfx/grunk/splat2.wav Normal file

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://d1w5gfmjj7tjk"
path="res://.godot/imported/splat2.wav-d793ff699626551d45adb56e386a2f81.sample"
[deps]
source_file="res://assets/sfx/grunk/splat2.wav"
dest_files=["res://.godot/imported/splat2.wav-d793ff699626551d45adb56e386a2f81.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

BIN
assets/sfx/space_door.wav Normal file

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://b601aiv71ddra"
path="res://.godot/imported/space_door.wav-cfdcf19076b3529fb20c9d5c6a8ba845.sample"
[deps]
source_file="res://assets/sfx/space_door.wav"
dest_files=["res://.godot/imported/space_door.wav-cfdcf19076b3529fb20c9d5c6a8ba845.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bckqqojs6pcu1"
path="res://.godot/imported/space_door_close.wav-b63dd0d5ac81269fa735a415c4610094.sample"
[deps]
source_file="res://assets/sfx/space_door_close.wav"
dest_files=["res://.godot/imported/space_door_close.wav-b63dd0d5ac81269fa735a415c4610094.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

BIN
assets/sfx/wall_switch.wav Normal file

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cnje66wrijwxw"
path="res://.godot/imported/wall_switch.wav-e47e5727c2106a3c962a073b6d4d5240.sample"
[deps]
source_file="res://assets/sfx/wall_switch.wav"
dest_files=["res://.godot/imported/wall_switch.wav-e47e5727c2106a3c962a073b6d4d5240.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=18 format=3 uid="uid://bov4ok76woyc"]
[gd_scene load_steps=21 format=3 uid="uid://bov4ok76woyc"]
[ext_resource type="PackedScene" uid="uid://crydi5cjgfwe5" path="res://levels/ghost_ship/ghost_ship_level.tscn" id="1_aj2m7"]
[ext_resource type="Environment" uid="uid://bkvij3ljl5ox3" path="res://levels/ghost_ship/environment_3.tres" id="1_wwgrl"]
@ -10,11 +10,14 @@
[ext_resource type="AudioStream" uid="uid://cqh31d5my7fst" path="res://assets/sfx/ambient/metal_creak1.wav" id="8_ihj8k"]
[ext_resource type="AudioStream" uid="uid://cfvdtl1n42bis" path="res://assets/sfx/ambient/metal_creak2.wav" id="9_d2iql"]
[ext_resource type="AudioStream" uid="uid://p5uendw5mb3x" path="res://assets/sfx/ambient/metal_creak3.wav" id="10_8h40n"]
[ext_resource type="AudioStream" uid="uid://bvtopyke5d17x" path="res://assets/sfx/grunk/groan3.wav" id="10_h081y"]
[ext_resource type="AudioStream" uid="uid://2qg0vqhygdwu" path="res://assets/sfx/ambient/metal_creak4.wav" id="11_it47q"]
[ext_resource type="AudioStream" uid="uid://ot7sr34qya3j" path="res://assets/sfx/ambient/metal_creak5.wav" id="12_h081y"]
[ext_resource type="AudioStream" uid="uid://7w531ufwc8c3" path="res://assets/sfx/ambient/metal_creak6.wav" id="13_law5k"]
[ext_resource type="AudioStream" uid="uid://c60m6qlq5cnp2" path="res://assets/sfx/ambient/metal_creak7.wav" id="14_4mbcm"]
[ext_resource type="AudioStream" uid="uid://cvwc2r2cmnaim" path="res://assets/sfx/ambient/metal_creak8.wav" id="15_r4ldl"]
[ext_resource type="AudioStream" uid="uid://b288km80xeh0" path="res://assets/sfx/grunk/groan1.wav" id="17_law5k"]
[ext_resource type="AudioStream" uid="uid://bujyltdunajj4" path="res://assets/sfx/grunk/groan2.wav" id="18_4mbcm"]
[sub_resource type="BoxShape3D" id="BoxShape3D_o7mxe"]
size = Vector3(6, 4, 15)
@ -22,7 +25,7 @@ size = Vector3(6, 4, 15)
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_d8fas"]
playback_mode = 1
random_pitch = 1.1
streams_count = 8
streams_count = 11
stream_0/stream = ExtResource("8_ihj8k")
stream_1/stream = ExtResource("9_d2iql")
stream_2/stream = ExtResource("10_8h40n")
@ -31,6 +34,12 @@ stream_4/stream = ExtResource("12_h081y")
stream_5/stream = ExtResource("13_law5k")
stream_6/stream = ExtResource("14_4mbcm")
stream_7/stream = ExtResource("15_r4ldl")
stream_8/stream = ExtResource("17_law5k")
stream_8/weight = 0.2
stream_9/stream = ExtResource("18_4mbcm")
stream_9/weight = 0.2
stream_10/stream = ExtResource("10_h081y")
stream_10/weight = 0.2
[node name="GhostShip" type="Node3D"]

View File

@ -0,0 +1,15 @@
extends Area3D
@onready var door_animation: AnimationPlayer = %DoorAnimation
@onready var open_sfx: AudioStreamPlayer3D = %OpenSFX
@onready var close_sfx: AudioStreamPlayer3D = %CloseSFX
func _on_body_entered(_body: Node3D) -> void:
door_animation.play("open")
open_sfx.play()
func _on_body_exited(_body: Node3D) -> void:
door_animation.play_backwards("open")
close_sfx.play()

View File

@ -0,0 +1 @@
uid://ck3yvtm42i1h4

View File

@ -9,6 +9,7 @@ const TANK_FILL_TIME := 1.0
@onready var tank_interactor: Interactive = %TankInteractor
@onready var grunk_liquid: MeshInstance3D = %GrunkLiquid
@onready var grunk_pump_sfx: AudioStreamPlayer3D = %GrunkPumpSFX
func _ready() -> void:
@ -27,6 +28,8 @@ func deposit_grunk() -> void:
set_liquid_level(clampf(Game.manager.grunk_vault / MAX_GRUNK, 0.0, 1.0))
grunk_pump_sfx.play()
func set_liquid_level(proportion: float) -> void:
(

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=29 format=3 uid="uid://oowut88kr2ox"]
[gd_scene load_steps=44 format=3 uid="uid://oowut88kr2ox"]
[ext_resource type="Script" uid="uid://lfd36ps52xgk" path="res://levels/ghost_ship/player_ship/player_ship.gd" id="1_0r2ng"]
[ext_resource type="ArrayMesh" uid="uid://dq4aj5ph31rce" path="res://assets/level/player_ship/player_ship.obj" id="1_nafoa"]
@ -10,11 +10,18 @@
[ext_resource type="ArrayMesh" uid="uid://djgqnuxrja1mo" path="res://assets/level/player_ship/player_ship_tank_facade.obj" id="8_2mvif"]
[ext_resource type="Shader" uid="uid://ckxc0ngd37rtk" path="res://src/shaders/gunk.gdshader" id="8_al8ma"]
[ext_resource type="ArrayMesh" uid="uid://bc8457r4rxpey" path="res://assets/level/player_ship/grunk_liquid.obj" id="8_xuj2g"]
[ext_resource type="AudioStream" uid="uid://cimw72d2lexvt" path="res://assets/sfx/grunk/pump.wav" id="9_0e0pl"]
[ext_resource type="Texture2D" uid="uid://cm1jrvx7ftx4c" path="res://assets/black.png" id="9_xuj2g"]
[ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="10_2mvif"]
[ext_resource type="PackedScene" uid="uid://mgygam1kakb7" path="res://levels/ghost_ship/player_ship/grunk_terminal/grunk_terminal.tscn" id="13_3trrp"]
[ext_resource type="Script" uid="uid://vewq8h8uulbg" path="res://src/util/translator_path_3d.gd" id="13_i4yi7"]
[ext_resource type="AudioStream" uid="uid://c838ofbu4bqrn" path="res://assets/sfx/computer_noise.wav" id="14_was05"]
[ext_resource type="Script" uid="uid://ck3yvtm42i1h4" path="res://levels/ghost_ship/player_ship/door_area.gd" id="16_kkevb"]
[ext_resource type="Texture2D" uid="uid://nexcq3xxrebb" path="res://assets/props/bulkhead/bulkhead_door_M.png" id="16_nps14"]
[ext_resource type="Texture2D" uid="uid://dk4sm780p6jfc" path="res://assets/props/bulkhead/bulkhead_door_N.png" id="17_kkevb"]
[ext_resource type="Texture2D" uid="uid://rjuyd20y2ov1" path="res://assets/props/bulkhead/bulkhead_door_R.png" id="18_3rulp"]
[ext_resource type="AudioStream" uid="uid://b601aiv71ddra" path="res://assets/sfx/space_door.wav" id="20_3rulp"]
[ext_resource type="AudioStream" uid="uid://bckqqojs6pcu1" path="res://assets/sfx/space_door_close.wav" id="21_bmg36"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xpsdy"]
transparency = 1
@ -29,6 +36,11 @@ texture_filter = 2
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_nafoa"]
data = PackedVector3Array(2.5, 1, 5.5, 2.5, 1, -4.5001, 2.5, 2, 5.5, 2.5, 2, 5.5, 2.5, 1, -4.5001, 2.5, 2, -4.5001, 1.5, 3, 4.4999, 1.5, 3, -4.5001, -1.5, 3, 4.4999, -1.5, 3, 4.4999, 1.5, 3, -4.5001, -1.5, 3, -4.5001, -1.5, 3, -4.5001, 1.5, 3, -4.5001, -0.625, 3, -4.5001, -0.625, 3, -4.5001, 1.5, 3, -4.5001, 0.625, 3, -4.5001, -2.5, 1, -4.5001, -2.5, 1, 5.5, -2.5, 2, -4.5001, -2.5, 2, -4.5001, -2.5, 1, 5.5, -2.5, 2, 5.5, 2.5, 1, -4.5001, 1.5, 0, -4.5001, 2.5, 2, -4.5001, 2.5, 2, -4.5001, 1.5, 0, -4.5001, 1.5, 3, -4.5001, 0.625, 0, -4.5001, 1.5, 3, -4.5001, 1.5, 0, -4.5001, 0.625, 2.5, -4.5001, 1.5, 3, -4.5001, 0.625, 0, -4.5001, 0.625, 3, -4.5001, 1.5, 3, -4.5001, 0.625, 2.5, -4.5001, 0.625, 2.5, -4.5001, -0.625, 2.5, -4.5001, 0.625, 3, -4.5001, 0.625, 3, -4.5001, -0.625, 2.5, -4.5001, -0.625, 3, -4.5001, -0.625, 3, -4.5001, -0.625, 2.5, -4.5001, -1.5, 3, -4.5001, -1.5, 3, -4.5001, -0.625, 2.5, -4.5001, -1.5, 0, -4.5001, -1.5, 0, -4.5001, -0.625, 2.5, -4.5001, -0.625, 0, -4.5001, -1.5, 0, -4.5001, -2.5, 1, -4.5001, -1.5, 3, -4.5001, -1.5, 3, -4.5001, -2.5, 1, -4.5001, -2.5, 2, -4.5001, -2.5, 1, -4.5001, -1.5, 0, -4.5001, -2.5, 1, 5.5, -2.5, 1, 5.5, -1.5, 0, -4.5001, -1.5, 0, 4.4999, -2.5, 2, 5.5, -1.5, 3, 4.4999, -2.5, 2, -4.5001, -2.5, 2, -4.5001, -1.5, 3, 4.4999, -1.5, 3, -4.5001, 2.5, 1, 5.5, 1.5, 0, 4.4999, 2.5, 1, -4.5001, 2.5, 1, -4.5001, 1.5, 0, 4.4999, 1.5, 0, -4.5001, 2.5, 2, -4.5001, 1.5, 3, -4.5001, 2.5, 2, 5.5, 2.5, 2, 5.5, 1.5, 3, -4.5001, 1.5, 3, 4.4999, -1.5, 0, 4.4999, -1.5, 0, -4.5001, 1.5, 0, 4.4999, 1.5, 0, 4.4999, -1.5, 0, -4.5001, 1.5, 0, -4.5001, 1.5, 0, -4.5001, -1.5, 0, -4.5001, 0.625, 0, -4.5001, 0.625, 0, -4.5001, -1.5, 0, -4.5001, -0.625, 0, -4.5001, 0.625, 0, -4.5001, -0.625, 0, -4.5001, 0.625, 0, -4.75, 0.625, 0, -4.75, -0.625, 0, -4.5001, -0.625, 0, -4.75, -0.625, 2.5, -4.5001, 0.625, 2.5, -4.5001, -0.625, 2.5, -4.75, -0.625, 2.5, -4.75, 0.625, 2.5, -4.5001, 0.625, 2.5, -4.75, -0.625, 0, -4.5001, -0.625, 2.5, -4.5001, -0.625, 0, -4.75, -0.625, 0, -4.75, -0.625, 2.5, -4.5001, -0.625, 2.5, -4.75, 0.625, 2.5, -4.5001, 0.625, 0, -4.5001, 0.625, 2.5, -4.75, 0.625, 2.5, -4.75, 0.625, 0, -4.5001, 0.625, 0, -4.75, -1.5, 3, 4.5, -2.5, 2, 5.5, -1.5, 3, 7.5, -1.5, 3, 7.5, -2.5, 2, 5.5, -2.5, 2, 7.5, -1.5, 0, 7.5, 1.5, 0, 7.5, -2.5, 1, 7.5, -2.5, 1, 7.5, 1.5, 0, 7.5, -2.5, 2, 7.5, -2.5, 2, 7.5, 1.5, 0, 7.5, -1.5, 3, 7.5, -1.5, 3, 7.5, 1.5, 0, 7.5, 1.5, 3, 7.5, 1.5, 3, 7.5, 1.5, 0, 7.5, 2.5, 2, 7.5, 2.5, 2, 7.5, 1.5, 0, 7.5, 2.5, 1, 7.5, -2.5, 1, 5.5, -1.5, 0, 4.5, -2.5, 1, 7.5, -2.5, 1, 7.5, -1.5, 0, 4.5, -1.5, 0, 7.5, 2.5, 1, 5.5, 2.5, 2, 5.5, 2.5, 1, 7.5, 2.5, 1, 7.5, 2.5, 2, 5.5, 2.5, 2, 7.5, -2.5, 2, 5.5, -2.5, 1, 5.5, -2.5, 2, 7.5, -2.5, 2, 7.5, -2.5, 1, 5.5, -2.5, 1, 7.5, 2.5, 2, 5.5, 1.5, 3, 4.5, 2.5, 2, 7.5, 2.5, 2, 7.5, 1.5, 3, 4.5, 1.5, 3, 7.5, 1.5, 3, 4.5, -1.5, 3, 4.5, 1.5, 3, 7.5, 1.5, 3, 7.5, -1.5, 3, 4.5, -1.5, 3, 7.5, 1.5, 0, 4.5, 2.5, 1, 5.5, 1.5, 0, 7.5, 1.5, 0, 7.5, 2.5, 1, 5.5, 2.5, 1, 7.5, -1.5, 0, 4.5, 1.5, 0, 4.5, -1.5, 0, 7.5, -1.5, 0, 7.5, 1.5, 0, 4.5, 1.5, 0, 7.5, 1.5, 3, 4.5, 1.5, 0, 4.5, 2.5, 2, 5.5, 2.5, 2, 5.5, 1.5, 0, 4.5, 2.5, 1, 5.5, -2.5, 1, 5.5, -1.5, 0, 4.5, -2.5, 2, 5.5, -2.5, 2, 5.5, -1.5, 0, 4.5, -1.5, 3, 4.5, -1.5, 0, 4.5, 1.5, 0, 4.5, -1.5, 3, 4.5, -1.5, 3, 4.5, 1.5, 0, 4.5, 1.5, 3, 4.5, 1.25, 2.5, -4.75, 1.25, 3, -4.75, 0.625, 2.5, -4.75, 0.625, 2.5, -4.75, 0.625, 0, -4.75, 1.25, 2.5, -4.75, 1.25, 2.5, -4.75, 0.625, 0, -4.75, 1.25, 0, -4.75, 0.625, 2.5, -4.75, 1.25, 3, -4.75, -0.625, 2.5, -4.75, -0.625, 2.5, -4.75, 1.25, 3, -4.75, -1.25, 2.5, -4.75, -1.25, 2.5, -4.75, 1.25, 3, -4.75, -1.25, 3, -4.75, -1.25, 0, -4.75, -0.625, 2.5, -4.75, -1.25, 2.5, -4.75, -0.625, 0, -4.75, -0.625, 2.5, -4.75, -1.25, 0, -4.75, -1.25, 2.5, -4.75, -1.25, 3, -4.75, -1.25, 0, -4.75, -1.25, 0, -4.75, -1.25, 3, -4.75, -1.25, 0, -6.75, -1.25, 0, -6.75, -1.25, 3, -4.75, -1.25, 3, -6.75, -1.25, 3, -4.75, 1.25, 3, -4.75, -1.25, 3, -6.75, -1.25, 3, -6.75, 1.25, 3, -4.75, 1.25, 3, -6.75, 1.25, 0, -4.75, 0.625, 0, -4.75, 1.25, 0, -6.75, 1.25, 0, -6.75, 0.625, 0, -4.75, -1.25, 0, -6.75, -1.25, 0, -6.75, 0.625, 0, -4.75, -1.25, 0, -4.75, -1.25, 0, -4.75, 0.625, 0, -4.75, -0.625, 0, -4.75, 1.25, 2.5, -4.75, 1.25, 0, -4.75, 1.25, 3, -4.75, 1.25, 3, -4.75, 1.25, 0, -4.75, 1.25, 3, -6.75, 1.25, 3, -6.75, 1.25, 0, -4.75, 1.25, 0, -6.75)
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_53iah"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("9_0e0pl")
[sub_resource type="SphereShape3D" id="SphereShape3D_e4hmc"]
radius = 0.3
@ -91,6 +103,66 @@ _data = {
}
point_count = 2
[sub_resource type="Animation" id="Animation_ta4yu"]
length = 0.001
tracks/0/type = "bezier"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Path3D:curve:point_1/position:x")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
tracks/1/type = "bezier"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Path3D:curve:point_1/position:y")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(-1.4, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
tracks/2/type = "bezier"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Path3D:curve:point_1/position:z")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Path3D/GrunkTerminal:rotation")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0.2618, 1.5708, 0)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Path3D/GrunkTerminal/AudioStreamPlayer3D:playing")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_i4yi7"]
resource_name = "jangle"
length = 3.0
@ -152,72 +224,69 @@ tracks/4/keys = {
"values": [true]
}
[sub_resource type="Animation" id="Animation_ta4yu"]
length = 0.001
tracks/0/type = "bezier"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Path3D:curve:point_1/position:x")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
tracks/1/type = "bezier"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Path3D:curve:point_1/position:y")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(-1.4, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
tracks/2/type = "bezier"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Path3D:curve:point_1/position:z")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Path3D/GrunkTerminal:rotation")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0.2618, 1.5708, 0)]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Path3D/GrunkTerminal/AudioStreamPlayer3D:playing")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_fw23o"]
_data = {
&"RESET": SubResource("Animation_ta4yu"),
&"jangle": SubResource("Animation_i4yi7")
}
[sub_resource type="BoxShape3D" id="BoxShape3D_nps14"]
size = Vector3(3, 3, 4)
[sub_resource type="Animation" id="Animation_kkevb"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Door:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, -0.3, 0)]
}
[sub_resource type="Animation" id="Animation_nps14"]
resource_name = "open"
length = 0.2
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Door:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.2),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, -0.3, 0), Vector3(0, 2.25, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_kkevb"]
_data = {
&"RESET": SubResource("Animation_kkevb"),
&"open": SubResource("Animation_nps14")
}
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bmg36"]
metallic = 1.0
metallic_texture = ExtResource("16_nps14")
roughness_texture = ExtResource("18_3rulp")
normal_enabled = true
normal_texture = ExtResource("17_kkevb")
ao_enabled = true
uv1_scale = Vector3(3, 2, 1)
texture_filter = 2
[sub_resource type="BoxMesh" id="BoxMesh_i4yi7"]
material = SubResource("StandardMaterial3D_bmg36")
size = Vector3(1.25, 2.5, 0.1)
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_0e0pl"]
data = PackedVector3Array(-0.625, 1.25, 0.05, 0.625, 1.25, 0.05, -0.625, -1.25, 0.05, 0.625, 1.25, 0.05, 0.625, -1.25, 0.05, -0.625, -1.25, 0.05, 0.625, 1.25, -0.05, -0.625, 1.25, -0.05, 0.625, -1.25, -0.05, -0.625, 1.25, -0.05, -0.625, -1.25, -0.05, 0.625, -1.25, -0.05, 0.625, 1.25, 0.05, 0.625, 1.25, -0.05, 0.625, -1.25, 0.05, 0.625, 1.25, -0.05, 0.625, -1.25, -0.05, 0.625, -1.25, 0.05, -0.625, 1.25, -0.05, -0.625, 1.25, 0.05, -0.625, -1.25, -0.05, -0.625, 1.25, 0.05, -0.625, -1.25, 0.05, -0.625, -1.25, -0.05, 0.625, 1.25, 0.05, -0.625, 1.25, 0.05, 0.625, 1.25, -0.05, -0.625, 1.25, 0.05, -0.625, 1.25, -0.05, 0.625, 1.25, -0.05, -0.625, -1.25, 0.05, 0.625, -1.25, 0.05, -0.625, -1.25, -0.05, 0.625, -1.25, 0.05, 0.625, -1.25, -0.05, -0.625, -1.25, -0.05)
[node name="PlayerShip" type="Node3D"]
script = ExtResource("1_0r2ng")
@ -238,6 +307,7 @@ shape = SubResource("ConcavePolygonShape3D_nafoa")
[node name="TankInteractor" type="StaticBody3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.85, 1.35, 4.5)
collision_layer = 2
collision_mask = 0
script = ExtResource("6_e4hmc")
@ -245,8 +315,15 @@ label = "GRUNK TANK"
verb = "deposit"
metadata/_custom_type_script = "uid://deg5xd87cy8rg"
[node name="GrunkPumpSFX" type="AudioStreamPlayer3D" parent="TankInteractor"]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.6)
stream = SubResource("AudioStreamRandomizer_53iah")
volume_db = -4.0
unit_size = 3.0
pitch_scale = 0.7
[node name="CollisionShape3D" type="CollisionShape3D" parent="TankInteractor"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.85, 1.35, 4.5)
shape = SubResource("SphereShape3D_e4hmc")
[node name="LiquidOffset" type="Node3D" parent="."]
@ -286,7 +363,7 @@ curve = SubResource("Curve3D_ta4yu")
script = ExtResource("13_i4yi7")
[node name="GrunkTerminal" parent="TerminalCable/Path3D" instance=ExtResource("13_3trrp")]
transform = Transform3D(-4.37114e-08, 0.258819, 0.965926, 0, 0.965926, -0.258819, -1, -1.13134e-08, -4.2222e-08, 0, -1.4, 0)
transform = Transform3D(-3.61999e-06, 0.25882, 0.965926, 0, 0.965926, -0.25882, -1, -9.36925e-07, -3.49664e-06, 0, -1.4, 0)
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="TerminalCable/Path3D/GrunkTerminal"]
stream = ExtResource("14_was05")
@ -299,4 +376,48 @@ libraries = {
&"": SubResource("AnimationLibrary_fw23o")
}
[node name="DoorArea" type="Area3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.55, -4.625)
collision_layer = 0
collision_mask = 8
script = ExtResource("16_kkevb")
[node name="CollisionShape3D" type="CollisionShape3D" parent="DoorArea"]
shape = SubResource("BoxShape3D_nps14")
[node name="DoorAnimation" type="AnimationPlayer" parent="DoorArea"]
unique_name_in_owner = true
libraries = {
&"": SubResource("AnimationLibrary_kkevb")
}
[node name="Door" type="MeshInstance3D" parent="DoorArea"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.3, 0)
mesh = SubResource("BoxMesh_i4yi7")
skeleton = NodePath("../..")
[node name="StaticBody3D" type="StaticBody3D" parent="DoorArea/Door"]
collision_layer = 5
[node name="CollisionShape3D" type="CollisionShape3D" parent="DoorArea/Door/StaticBody3D"]
shape = SubResource("ConcavePolygonShape3D_0e0pl")
[node name="OpenSFX" type="AudioStreamPlayer3D" parent="DoorArea/Door"]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.2, 0)
stream = ExtResource("20_3rulp")
volume_db = -20.0
unit_size = 3.0
bus = &"SFX"
[node name="CloseSFX" type="AudioStreamPlayer3D" parent="DoorArea/Door"]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.2, 0)
stream = ExtResource("21_bmg36")
volume_db = -16.0
unit_size = 4.0
bus = &"SFX"
[connection signal="activated" from="TankInteractor" to="." method="deposit_grunk"]
[connection signal="body_entered" from="DoorArea" to="DoorArea" method="_on_body_entered"]
[connection signal="body_exited" from="DoorArea" to="DoorArea" method="_on_body_exited"]

View File

@ -1,7 +1,9 @@
[gd_scene load_steps=17 format=3 uid="uid://xlt78xc1tmkl"]
[gd_scene load_steps=20 format=3 uid="uid://xlt78xc1tmkl"]
[ext_resource type="Texture2D" uid="uid://cgwgmxwjgwbwr" path="res://assets/particles/splatter_2.png" id="1_5xu2x"]
[ext_resource type="Texture2D" uid="uid://bhoai6xv53tqm" path="res://assets/particles/splatter_1.png" id="2_bt63p"]
[ext_resource type="AudioStream" uid="uid://di0j2xhgfc78s" path="res://assets/sfx/grunk/splat1.wav" id="3_t00bd"]
[ext_resource type="AudioStream" uid="uid://d1w5gfmjj7tjk" path="res://assets/sfx/grunk/splat2.wav" id="4_2iem1"]
[sub_resource type="Gradient" id="Gradient_5xu2x"]
offsets = PackedFloat32Array(0, 0.291304, 0.526087, 1)
@ -90,6 +92,13 @@ particles_anim_loop = false
material = SubResource("StandardMaterial3D_ckw5w")
size = Vector2(2, 2)
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_6adkd"]
playback_mode = 1
random_pitch = 1.2
streams_count = 2
stream_0/stream = ExtResource("3_t00bd")
stream_1/stream = ExtResource("4_2iem1")
[node name="GrunkSplatter" type="GPUParticles3D"]
sorting_offset = 9.0
amount = 64
@ -113,4 +122,11 @@ wait_time = 0.3
one_shot = true
autostart = true
[node name="SplatterSFX" type="AudioStreamPlayer3D" parent="."]
stream = SubResource("AudioStreamRandomizer_6adkd")
volume_db = -20.0
unit_size = 6.0
autoplay = true
bus = &"SFX"
[connection signal="timeout" from="FreeTimer" to="." method="queue_free"]

View File

@ -12,6 +12,8 @@ const CLEAN_THRESHOLD := 1400
@onready var light_animation: AnimationPlayer = %LightAnimation
@onready var gunk_body: GunkBody = %GunkBody
@onready var interactive: Interactive = %Interactive
@onready var action_sfx: AudioStreamPlayer3D = %ActionSFX
@onready var action_delay: Timer = %ActionDelay
# XXX I must have been smoking crack when I wrote this logic. Why so complicated?
@ -62,7 +64,8 @@ func _on_clean() -> void:
func _activate() -> void:
animation_player.play("activate")
activated.emit()
action_sfx.play()
action_delay.start()
# Disable while animation is playing
interactive.enabled = false
@ -75,3 +78,7 @@ func _animation_finished(anim_name: StringName) -> void:
func _on_gunk_body_clear_total_updated(clear_total: float) -> void:
if not clean and clear_total >= CLEAN_THRESHOLD:
_on_clean()
func _on_action_delay_timeout() -> void:
activated.emit()

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=29 format=4 uid="uid://b6eg8t04rkh0c"]
[gd_scene load_steps=30 format=4 uid="uid://b6eg8t04rkh0c"]
[ext_resource type="Script" uid="uid://bkmn5m47mt1gh" path="res://src/props/wall_switch/wall_switch.gd" id="2_kfvqd"]
[ext_resource type="Texture2D" uid="uid://1wjcyqynwlb6" path="res://assets/props/wall_switch/wall_switch_C.png" id="2_vufqs"]
@ -11,6 +11,7 @@
[ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="9_7shuc"]
[ext_resource type="Script" uid="uid://deg5xd87cy8rg" path="res://src/props/interactive.gd" id="10_qw6jt"]
[ext_resource type="AudioStream" uid="uid://bgayfws34lg7q" path="res://assets/sfx/click_electronic_04.wav" id="11_7shuc"]
[ext_resource type="AudioStream" uid="uid://cnje66wrijwxw" path="res://assets/sfx/wall_switch.wav" id="12_2qpft"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jtkkw"]
resource_local_to_scene = true
@ -300,6 +301,19 @@ script = ExtResource("10_qw6jt")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Interactive" index="0"]
shape = SubResource("BoxShape3D_6maql")
[node name="ActionSFX" type="AudioStreamPlayer3D" parent="." index="5"]
unique_name_in_owner = true
stream = ExtResource("12_2qpft")
volume_db = -12.0
unit_size = 3.0
bus = &"SFX"
[node name="ActionDelay" type="Timer" parent="." index="6"]
unique_name_in_owner = true
wait_time = 2.8
one_shot = true
[connection signal="animation_finished" from="AnimationPlayer" to="." method="_animation_finished"]
[connection signal="clear_total_updated" from="GunkBody" to="." method="_on_gunk_body_clear_total_updated"]
[connection signal="activated" from="Interactive" to="." method="_activate"]
[connection signal="timeout" from="ActionDelay" to="." method="_on_action_delay_timeout"]

View File

@ -1,11 +1,12 @@
[gd_scene load_steps=11 format=4 uid="uid://2yqi5u5eo025"]
[gd_scene load_steps=12 format=4 uid="uid://2yqi5u5eo025"]
[ext_resource type="Script" uid="uid://07t7yhijru8f" path="res://src/world/gunk_node/grunk_nodule.gd" id="1_iyr82"]
[ext_resource type="PackedScene" uid="uid://xlt78xc1tmkl" path="res://src/effects/grunk_splatter.tscn" id="2_m8r0a"]
[ext_resource type="Material" uid="uid://bmab6i16v748m" path="res://assets/materials/grunk_jittery.material" id="3_eu6j6"]
[ext_resource type="AudioStream" uid="uid://b288km80xeh0" path="res://assets/sfx/grunk/groan1.wav" id="4_ri4uq"]
[ext_resource type="AudioStream" uid="uid://bujyltdunajj4" path="res://assets/sfx/grunk/groan2.wav" id="5_7fplw"]
[ext_resource type="AudioStream" uid="uid://bvtopyke5d17x" path="res://assets/sfx/grunk/groan3.wav" id="6_omayi"]
[ext_resource type="AudioStream" uid="uid://bb560r2wvjfht" path="res://assets/sfx/grunk/greeble1.wav" id="4_7fplw"]
[ext_resource type="AudioStream" uid="uid://dunakapj3mb0h" path="res://assets/sfx/grunk/greeble2.wav" id="5_omayi"]
[ext_resource type="AudioStream" uid="uid://6bgyoaclmu8c" path="res://assets/sfx/grunk/greeble3.wav" id="6_yg8lg"]
[ext_resource type="AudioStream" uid="uid://7nj6bldnhos3" path="res://assets/sfx/grunk/greeble4.wav" id="7_4kci5"]
[sub_resource type="ArrayMesh" id="ArrayMesh_24j8i"]
_surfaces = [{
@ -44,10 +45,11 @@ data = PackedVector3Array(0.7236, -0.4472, 0.5257, 0, -1, 0, -0.2764, -0.4472, 0
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_yg8lg"]
random_pitch = 1.1
streams_count = 3
stream_0/stream = ExtResource("4_ri4uq")
stream_1/stream = ExtResource("5_7fplw")
stream_2/stream = ExtResource("6_omayi")
streams_count = 4
stream_0/stream = ExtResource("4_7fplw")
stream_1/stream = ExtResource("5_omayi")
stream_2/stream = ExtResource("6_yg8lg")
stream_3/stream = ExtResource("7_4kci5")
[node name="GrunkNodule" type="StaticBody3D"]
collision_layer = 5
@ -66,7 +68,9 @@ shape = SubResource("ConcavePolygonShape3D_530fq")
[node name="ChitterSFX" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
stream = SubResource("AudioStreamRandomizer_yg8lg")
volume_db = -20.0
volume_db = -14.0
unit_size = 4.0
panning_strength = 3.0
bus = &"SFX"
[node name="ChitterTimer" type="Timer" parent="."]

View File

@ -15,6 +15,7 @@ var _busy := false
@onready var pulse_listener_timer: Timer = %PulseListenerTimer
@onready var animation_player: AnimationPlayer = $FrameSkipper/AlarmMesh/AnimationPlayer
@onready var bud: MeshInstance3D = $FrameSkipper/AlarmMesh/Armature/Skeleton3D/Bud
@onready var alarm_sfx: AudioStreamPlayer3D = %AlarmSFX
## Trigger this alarm.
@ -25,6 +26,7 @@ func trigger() -> void:
_busy = true
Game.manager.raise_alert(ALERT_DELTA)
animation_player.play("trigger")
alarm_sfx.play()
## Pulse this alarm, resetting the pulse countdown until triggering.

View File

@ -1,10 +1,11 @@
[gd_scene load_steps=9 format=4 uid="uid://dgeg3kkogm71m"]
[gd_scene load_steps=10 format=4 uid="uid://dgeg3kkogm71m"]
[ext_resource type="Script" uid="uid://djb5tabjcvwkt" path="res://src/world/mechanics/alarm/gunk_alarm.gd" id="1_piaxx"]
[ext_resource type="PackedScene" uid="uid://60ks4l42qxia" path="res://assets/grunk/alarm/alarm.gltf" id="2_6vdvf"]
[ext_resource type="Script" uid="uid://bukihqt1lybnx" path="res://src/util/frame_skipper.gd" id="2_gujky"]
[ext_resource type="Material" uid="uid://bmab6i16v748m" path="res://assets/materials/grunk_jittery.material" id="3_g4yos"]
[ext_resource type="Material" uid="uid://cdpvcruywnp4x" path="res://src/world/mechanics/alarm/alarm_core.material" id="4_c5y52"]
[ext_resource type="AudioStream" uid="uid://ypk1d4adrcs" path="res://assets/sfx/grunk/alarm_screech.wav" id="6_6vdvf"]
[sub_resource type="ArrayMesh" id="ArrayMesh_c5y52"]
resource_local_to_scene = true
@ -99,7 +100,7 @@ bones/28/rotation = Quaternion(0.362943, -7.93195e-08, 1.03952e-07, 0.931811)
mesh = SubResource("ArrayMesh_c5y52")
[node name="AnimationPlayer" parent="FrameSkipper/AlarmMesh" index="1"]
speed_scale = 4.0
speed_scale = 7.4
[node name="CollisionMesh" type="MeshInstance3D" parent="."]
transform = Transform3D(0.906308, 0, -0.422618, 0, 1, 0, 0.422618, 0, 0.906308, 0, 0.2, 0)
@ -114,6 +115,11 @@ shape = SubResource("ConcavePolygonShape3D_bxx3m")
unique_name_in_owner = true
one_shot = true
[node name="AlarmSFX" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
stream = ExtResource("6_6vdvf")
pitch_scale = 1.1
[connection signal="timeout" from="PulseListenerTimer" to="." method="trigger"]
[editable path="FrameSkipper/AlarmMesh"]

View File

@ -1,7 +1,8 @@
[gd_scene load_steps=10 format=4 uid="uid://d0j20q65wnqsr"]
[gd_scene load_steps=11 format=4 uid="uid://d0j20q65wnqsr"]
[ext_resource type="Script" uid="uid://d2k75cyykkk0s" path="res://src/world/mechanics/heart/gunk_heart.gd" id="1_ftym0"]
[ext_resource type="Script" uid="uid://bukihqt1lybnx" path="res://src/util/frame_skipper.gd" id="2_xgyvt"]
[ext_resource type="AudioStream" uid="uid://0usonf3pjh3o" path="res://assets/sfx/grunk/heartbeat.wav" id="3_eu6st"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xgyvt"]
albedo_color = Color(0, 0.0313726, 0.101961, 1)
@ -69,6 +70,18 @@ tracks/1/keys = {
"update": 0,
"values": [0.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("HeartbeatSFX:playing")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_eu6st"]
resource_name = "pulse"
@ -97,6 +110,18 @@ tracks/1/keys = {
"update": 0,
"values": [0.0, 2.0, 0.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("HeartbeatSFX:playing")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_kv3oi"]
_data = {
@ -134,4 +159,9 @@ libraries = {
}
speed_scale = 4.0
[node name="HeartbeatSFX" type="AudioStreamPlayer3D" parent="."]
stream = ExtResource("3_eu6st")
unit_size = 0.4
bus = &"SFX"
[connection signal="timeout" from="PulseTimer" to="." method="pulse"]

View File

@ -49,8 +49,8 @@
- [ ] ui bonk
- [ ] prop clear glitter
- [x] computer bleep on reload
- [ ] grunk tank deposit schlorp
- [ ] player ship door
- [x] grunk tank deposit schlorp
- [x] player ship door
- [x] metal footsteps
- [x] plastic footsteps
- [x] grunk footsteps
@ -58,11 +58,13 @@
- [x] spray noises
- [ ] switch klaxon
- [x] switch OK
- [ ] switch activation
- [x] switch activation
- [x] bulkhead opening
- [ ] grunk alarm shriek
- [ ] grunk relay chitter
- [ ] grunk chittering
- [x] grunk nodule splatter
- [x] grunk alarm shriek
- [ ] grunk relay pulse
- [x] grunk heartbeat
- [x] grunk chittering
- [ ] grunkbeast???
- [x] grunk ambiance
- [x] spaceship ambiance

View File

@ -51,4 +51,50 @@
- CC0
- retrieved from https://freesound.org/people/Clagnar/sounds/547256/
- assets/sfx/computer_noise.wav
- modified
- modified
- "door future open.wav"
- author: speakingmusic
- CC0
- retrieved from https://freesound.org/people/speakingmusic/sounds/386073/
- assets/sfx/space_door*.wav
- modified
- "Slime Creature Movement (large and messy)"
- author: SilverIllusionist
- CC BY 4.0
- retrieved from https://freesound.org/people/SilverIllusionist/sounds/671112/
- assets/sfx/grunk/pump.wav
- modified
- "Alien_Monster_Scream.wav"
- author: audione
- CC0
- retrieved from https://freesound.org/people/audione/sounds/161404/
- assets/sfx/grunk/alarm_screech.wav
- modified
- "Breaker-1.wav"
- author: Deathscyp
- CC0
- retrieved from https://freesound.org/people/Deathscyp/sounds/404049/
- assets/sfx/wall_switch.wav
- modified
- "Pulling a lever.mp3"
- author: A_Kuha
- CC0
- retrieved from https://freesound.org/people/A_Kuha/sounds/676412/
- assets/sfx/wall_switch.wav
- modified
- "pulse tone echo" pack
- author: martian
- CC0
- retrieved from https://freesound.org/people/martian/packs/1173/
- assets/sfx/grunk/greeble*.wav
- modified
- "HeartBeatNEW.aif"
- author: Woodingp
- CC0
- retrieved from https://freesound.org/people/Woodingp/sounds/116642/
- assets/sfx/grunk/heartbeat.wav
- "splat.wav"
- author: zolopher
- CC0
- retrieved from https://freesound.org/people/zolopher/sounds/44203/
- assets/sfx/grunk/splat*.wav