From 2e3b08271f6e8d9a69714a53484355470a561fe5 Mon Sep 17 00:00:00 2001 From: Rob Kelly Date: Fri, 18 Apr 2025 14:44:24 -0600 Subject: [PATCH] Drone gets louder when beast is near --- asset_dev/beast/slutch/face_nodule.xcf | Bin 37401 -> 39612 bytes assets/npc/slutch_beast/face_nodule_E.png | 4 +-- levels/ghost_ship/ambient_drone.gd | 29 ++++++++++++++++++++-- levels/ghost_ship/ghost_ship.tscn | 1 - src/ui/hud/player_hud.tscn | 8 +++--- src/world/grunk_beast/grunk_beast.tscn | 4 +-- 6 files changed, 35 insertions(+), 11 deletions(-) diff --git a/asset_dev/beast/slutch/face_nodule.xcf b/asset_dev/beast/slutch/face_nodule.xcf index f35433f0548cbbca32aa00788143bb170ef79513..7f27899863a1943fbe85978c39753265c17dc050 100644 GIT binary patch delta 2241 zcma)-Uu;ul6u|Gjb}Mby+iq>|ZoAptc4M_&X=@w8`k?$3Vjzt9kAMnHAwpz~ZZjBJ z=0#W<-U45B zCgw<_1Y=DH!Gm-Y zELZPG*U_q@gRjvn{HiE-V3f?@iy~&=2$_LDdAWhP+L{jJRx|sU&*Ij`=g6W2!N>vmVC_P~l|(SEy@26N7EVCp zL#v$=h0s2sCu+x;r3&$JyR4V=J<1$g)Isf-XQ^##6nR7KLg%D53hwB56V6N)-gCS_-uP~jUwjLjTbbLL zJ2Ag{j<}uH$MWg_sr*VUs2D>~F+v`oz{U;nT;md(mzh_Y*PU9ohX;q=7~O7c9Tfo%A^~V&{BfDj~X)%=2SomhlUs2r1*~RK8Z7vg&WlU4S7=$kz$J9#uT5cl%L(r zbvEd8d1KAy3@_jZQ9MaXhdB`w$;qU9$(w#tB$MXTk>1J6yP2chH9!1j)Vm6GyBi75w59|3BVfFK#n$@r5qz;Pc z=)C<~GFf=X`P*pYC>SECLXb_nI5-MAv%SvpUsN97RVUGDEyEhTxm!6~6uRTAy zl=6GCG0MltIpw!wB+K8C`AiG(mA8rSZX`;QWh}bpLv^>o`gz&jwMw;pHdb{BT~s|G WHdE!(Q#E;cf_WG>(+amHpZFKTwpe!n delta 1849 zcma)7ZAepL6yCkg7W)+U;WlgDIcZI&bEc4meMmnt6Rn68D=JA)u(C*!G_ODU5hZM$ z`jMF|hzg4QSYna|MuJj7QdUsW2T~Cw{Sl!L=)L!x8w;BD!g-(byyv~=KIc8}?uG~W zbC>u~vGs{crLr+oGvk<9nLE|Dt)J(DQEkFHE@4@2E>x&<3iYC?qTj?;ir*eRG?wn~;*BqJ@h7JQj)Sk_{@PPCWsCgH7^LpQ)P z+qB~&MwHpPA3fJG`Oxh;q|O?aH^s3MnZ1;-nxb2xL3@Osr#3t2(-ubcsT+B&I_|kQ zV@73m8JQ=NQLU~#jJgiWwYv5YttG4{+()&}ckv}%SGmD>XP$io^C`2?$UKpZBnf9R zDoo0fgi)g7gpUX(Vvb)A;0v&i&oyYsOmez^;udB0bfD)wA@?C&KX-Fct+%vtuYV1~3# zlQt_AcLg3uNrWuA?f#Rv>_1Q8+lUa#zY>M~DK($_;ZKgB7K5RBSx9gN(h~Z4RlP*s oG8mmKEZD_|oBuo+zJQ_A2KmV_-JS4jTn>LF{KZO0fws<~-`E{K6#xJL diff --git a/assets/npc/slutch_beast/face_nodule_E.png b/assets/npc/slutch_beast/face_nodule_E.png index 27a166d..90ed7bb 100644 --- a/assets/npc/slutch_beast/face_nodule_E.png +++ b/assets/npc/slutch_beast/face_nodule_E.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8e5073910a29e1c2a93730cf9b4b640c97750606f552c7550cdff34e1ebe6705 -size 3037 +oid sha256:fbf3c0a878d6cfddb8abb9e156208dcd1aa41e25897e4553fa7f209fff0e48ff +size 1817 diff --git a/levels/ghost_ship/ambient_drone.gd b/levels/ghost_ship/ambient_drone.gd index b3c76b6..95a9234 100644 --- a/levels/ghost_ship/ambient_drone.gd +++ b/levels/ghost_ship/ambient_drone.gd @@ -3,9 +3,13 @@ extends AudioStreamPlayer const MUTE_VOLUME := -80.0 @export var volume_increment := 0.618 -@export var base_volume := -14.0 +@export var base_volume := -18.0 @export var boosted_volume := -2.0 +@export_category("Beast Proximity Boost") +@export var proximity_cutoff := 20.0 +@export var proximity_scale := 17.0 + var target_volume := MUTE_VOLUME var suppressed := false var boosted := false @@ -20,7 +24,28 @@ func get_target_volume() -> float: return MUTE_VOLUME if boosted: return boosted_volume - return target_volume + return target_volume + beast_proximity_boost(closest_beast_distance()) + + +## Calculate the volume gain from proximity to a beast +func beast_proximity_boost(distance: float) -> float: + return max(0.0, proximity_scale * (proximity_cutoff - distance) / proximity_cutoff) + + +## Get the distance from the player to the closest beast +func closest_beast_distance() -> float: + if not is_instance_valid(Player.instance): + return INF + + var min_dist_sq := INF + var nodes := get_tree().get_nodes_in_group("GrunkBeast") + for node: Node in nodes: + var n3d := node as Node3D + if is_instance_valid(n3d): + var dist_sq := n3d.global_position.distance_squared_to(Player.instance.global_position) + if dist_sq < min_dist_sq: + min_dist_sq = dist_sq + return sqrt(min_dist_sq) ## Temporarily suppress ambience diff --git a/levels/ghost_ship/ghost_ship.tscn b/levels/ghost_ship/ghost_ship.tscn index fccf5a1..dc6574c 100644 --- a/levels/ghost_ship/ghost_ship.tscn +++ b/levels/ghost_ship/ghost_ship.tscn @@ -71,7 +71,6 @@ volume_db = -80.0 autoplay = true bus = &"Music" script = ExtResource("5_jiowi") -base_volume = -18.0 [node name="AmbientSFX" type="Node3D" parent="."] diff --git a/src/ui/hud/player_hud.tscn b/src/ui/hud/player_hud.tscn index 6ae09b6..1423dac 100644 --- a/src/ui/hud/player_hud.tscn +++ b/src/ui/hud/player_hud.tscn @@ -215,10 +215,10 @@ anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 anchor_bottom = 0.5 -offset_left = -401.288 -offset_top = -299.409 -offset_right = -401.288 -offset_bottom = -299.409 +offset_left = -400.86 +offset_top = -300.741 +offset_right = -400.86 +offset_bottom = -300.741 grow_horizontal = 2 grow_vertical = 2 script = ExtResource("4_ud8na") diff --git a/src/world/grunk_beast/grunk_beast.tscn b/src/world/grunk_beast/grunk_beast.tscn index 7e2086e..d929908 100644 --- a/src/world/grunk_beast/grunk_beast.tscn +++ b/src/world/grunk_beast/grunk_beast.tscn @@ -226,7 +226,7 @@ metadata/_custom_type_script = "uid://om57w2acvgb7" script = ExtResource("11_mbqcc") mean_time = 4.0 st_dev_time = 0.6 -wait_time = 3.41713 +wait_time = 4.5275 metadata/_custom_type_script = "uid://beyk2xtbjrsg4" [node name="RandomStalkingBehavior" type="Node" parent="GrunkBeastBehavior/StateSelector/StalkingSequence/RandomDelay"] @@ -272,7 +272,7 @@ metadata/_custom_type_script = "uid://cg016dbe7gs1x" script = ExtResource("11_mbqcc") mean_time = 5.0 st_dev_time = 1.0 -wait_time = 4.96224 +wait_time = 6.19423 metadata/_custom_type_script = "uid://beyk2xtbjrsg4" [node name="PickRandomLurkTarget" type="Node" parent="GrunkBeastBehavior/StateSelector/LurkSequence/RandomDelay"]