diff --git a/asset_dev/beast/slutch/face_nodule.xcf b/asset_dev/beast/slutch/face_nodule.xcf index f35433f..7f27899 100644 Binary files a/asset_dev/beast/slutch/face_nodule.xcf and b/asset_dev/beast/slutch/face_nodule.xcf differ 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"]