From 66b314f51a50e5b0a6012368f58f237c3cabc3cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Wisniewski?= Date: Thu, 3 Sep 2026 22:00:26 +0200 Subject: [PATCH] Expand and stage boss encounter --- audio/Sfx.gd | 3 + audio/make_sfx.py | 23 ++++++ audio/sfx_boss_scream.wav | Bin 0 -> 145574 bytes audio/sfx_boss_scream.wav.import | 24 ++++++ boss/BossEncounter.gd | 118 +++++++++++++++++++++++++++- boss/BossEncounter.tscn | 53 +++++++++---- boss/BossEye.gd | 4 +- boss/BossMinion.gd | 76 +++++++++++++++--- boss/OctopusBoss.gd | 78 +++++++++++++++--- boss/OctopusBoss.tscn | 15 +++- controllers/GameController.gd | 2 +- core/GameState.gd | 5 ++ tests/_boss_approach_preview.gd | 25 ++++++ tests/_boss_approach_preview.gd.uid | 1 + tests/_boss_approach_preview.tscn | 6 ++ tests/_boss_planet_preview.gd | 7 ++ tests/test_boss_planet.gd | 109 ++++++++++++++++++++----- 17 files changed, 485 insertions(+), 64 deletions(-) create mode 100644 audio/sfx_boss_scream.wav create mode 100644 audio/sfx_boss_scream.wav.import create mode 100644 tests/_boss_approach_preview.gd create mode 100644 tests/_boss_approach_preview.gd.uid create mode 100644 tests/_boss_approach_preview.tscn diff --git a/audio/Sfx.gd b/audio/Sfx.gd index 18317b9..6da2c4b 100644 --- a/audio/Sfx.gd +++ b/audio/Sfx.gd @@ -27,6 +27,7 @@ const SHIP_DEATH: String = "ship_death" const ENEMY_DEATH: String = "enemy_death" const BUILDING_DEATH: String = "building_death" const DIALOG: String = "dialog" +const BOSS_SCREAM: String = "boss_scream" const SOUNDS: Dictionary = { SHOT: "res://audio/sfx_shot.wav", @@ -34,6 +35,7 @@ const SOUNDS: Dictionary = { ENEMY_DEATH: "res://audio/sfx_ship_death.wav", BUILDING_DEATH: "res://audio/sfx_building_death.wav", DIALOG: "res://audio/sfx_dialog.wav", + BOSS_SCREAM: "res://audio/sfx_boss_scream.wav", } # Per-sound level. A shot is fired constantly and a death happens once, so @@ -44,6 +46,7 @@ const LEVELS: Dictionary = { ENEMY_DEATH: -23.0, BUILDING_DEATH: -23.0, DIALOG: -19.0, + BOSS_SCREAM: -13.0, } # Shots vary a little in pitch so a stream of them does not turn into one diff --git a/audio/make_sfx.py b/audio/make_sfx.py index e9d0929..957cea1 100644 --- a/audio/make_sfx.py +++ b/audio/make_sfx.py @@ -183,9 +183,32 @@ def explosion(seconds, sub_from, sub_to, roar_seed, debris_level, drive): return [_saturate(v, drive) * _attack(i, 0.001) for i, v in enumerate(mixed)] +def boss_scream(seconds=1.65): + """A huge synthetic creature waking: a rough falling throat tone with + an unstable upper rasp. Long enough to carry the reveal shake, without + borrowing a human/animal recording whose licence would need tracking.""" + n = int(RATE * seconds) + throat = [0.0] * n + phase = 0.0 + for i in range(n): + t = i / n + hz = 118.0 * (52.0 / 118.0) ** (t ** 0.72) + hz *= 1.0 + 0.07 * math.sin(t * math.pi * 17.0) + phase += 2.0 * math.pi * hz / RATE + envelope = min(1.0, t / 0.06) * (1.0 - t) ** 0.75 + throat[i] = (math.sin(phase) * 0.75 + math.sin(phase * 2.03) * 0.32 + + math.sin(phase * 3.97) * 0.16) * envelope + rasp_noise = _noise(n, 189, lambda t: 0.34 * (1.0 - t) + 0.025) + rasp = [value * min(1.0, i / (RATE * 0.025)) * _decay(i, n, 1.15) * 0.68 + for i, value in enumerate(rasp_noise)] + mixed = _mix(throat, rasp) + return [_saturate(value, 3.2) for value in mixed] + + if __name__ == "__main__": _write("sfx_shot", shot()) _write("sfx_dialog", dialog()) + _write("sfx_boss_scream", boss_scream()) # A vessel coming apart: bright, fast, with real low end under it. _write("sfx_ship_death", explosion(1.45, 260.0, 38.0, 5, 0.16, 2.6)) # A structure: longer, deeper, and it keeps coming down afterwards. diff --git a/audio/sfx_boss_scream.wav b/audio/sfx_boss_scream.wav new file mode 100644 index 0000000000000000000000000000000000000000..dce2cfd37b71de3e1e3f030e2eacd830498e6118 GIT binary patch literal 145574 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 se`8qwpSWkBdsUC`9W#-el9m*E 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 P9qI?a+?r@WBoY4y0q7)F literal 0 HcmV?d00001 diff --git a/audio/sfx_boss_scream.wav.import b/audio/sfx_boss_scream.wav.import new file mode 100644 index 0000000..b92f13e --- /dev/null +++ b/audio/sfx_boss_scream.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://disto7xb3s8gx" +path="res://.godot/imported/sfx_boss_scream.wav-bf123df4e039686a30aabf3e3bb9dd12.sample" + +[deps] + +source_file="res://audio/sfx_boss_scream.wav" +dest_files=["res://.godot/imported/sfx_boss_scream.wav-bf123df4e039686a30aabf3e3bb9dd12.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 diff --git a/boss/BossEncounter.gd b/boss/BossEncounter.gd index 1552a65..65b3ef7 100644 --- a/boss/BossEncounter.gd +++ b/boss/BossEncounter.gd @@ -2,11 +2,24 @@ class_name BossEncounter extends Node2D @onready var boss: Node2D = $Boss +@onready var fleet: Node2D = get_node("../../Fleet") +@onready var camera: Camera2D = get_node("../../Camera2D") +@onready var health_caption: Label = $EncounterUI/HealthCaption @onready var status_label: Label = $EncounterUI/StatusLabel @onready var hint_label: Label = $EncounterUI/HintLabel @onready var health_bar: ProgressBar = $EncounterUI/HealthBar +@onready var indicator: Control = $EncounterUI/BossIndicator +@onready var indicator_label: Label = $EncounterUI/IndicatorLabel @onready var game_state: Node = get_node("/root/GameState") +const REVEAL_SECONDS: float = 1.15 +const REVEAL_SHAKE: float = 28.0 +const APPROACH_STANDOFF: float = 850.0 + +var reveal_started: bool = false +var reveal_left: float = 0.0 +var encounter_active: bool = false + func _ready() -> void: # One persistent objective lets boss victory flow through the same conquest @@ -18,6 +31,10 @@ func _ready() -> void: boss.suppress_as_defeated() health_bar.max_value = boss.max_health() health_bar.value = 0 + health_caption.visible = false + health_bar.visible = false + indicator.visible = false + indicator_label.visible = false status_label.text = "THE WARDEN IS DEAD" hint_label.text = "" return @@ -26,15 +43,108 @@ func _ready() -> void: boss.health_changed.connect(_on_boss_health_changed) health_bar.max_value = boss.max_health() health_bar.value = boss.current_health() + boss.set_combat_active(false) + _set_combat_ui_visible(false) + indicator.visible = true + indicator_label.visible = true + game_state.encounter_locks_movement = true + # The encounter introduces itself in the world: the fleet is drawn toward + # the signal until the Warden reaches the edge of view, then control is + # returned after the roar. No dialog or separate scene hides the approach. + _begin_approach.call_deferred() _refresh_status() +func _begin_approach() -> void: + # PlanetSurfaceController composes this encounter before it spawns the + # restored fleet. Waiting one call guarantees there are ships for the + # scripted move to steer. + if not reveal_started and not fleet.ships.is_empty(): + fleet.move_to(boss.global_position + Vector2(0.0, APPROACH_STANDOFF)) + + +func _exit_tree() -> void: + if game_state != null: + game_state.encounter_locks_movement = false + if camera != null: + camera.offset = Vector2.ZERO + + +func _process(delta: float) -> void: + if boss.phase == boss.Phase.DEFEATED: + return + if not reveal_started: + _update_indicator() + if _boss_reaches_view(): + begin_reveal() + return + if encounter_active: + return + reveal_left -= delta + var strength: float = REVEAL_SHAKE * clampf(reveal_left / REVEAL_SECONDS, 0.0, 1.0) + camera.offset = Vector2(randf_range(-strength, strength), randf_range(-strength, strength)) + if reveal_left <= 0.0: + camera.offset = Vector2.ZERO + encounter_active = true + boss.set_combat_active(true) + game_state.encounter_locks_movement = false + + +func begin_reveal() -> void: + if reveal_started or boss.phase == boss.Phase.DEFEATED: + return + reveal_started = true + reveal_left = REVEAL_SECONDS + fleet.stop() + indicator.visible = false + indicator_label.visible = false + _set_combat_ui_visible(true) + status_label.text = "THE WARDEN AWAKENS" + hint_label.text = "" + Sfx.play(get_tree(), Sfx.BOSS_SCREAM) + + +func _set_combat_ui_visible(shown: bool) -> void: + for control in [health_caption, health_bar, status_label, hint_label]: + control.visible = shown + + +func _boss_reaches_view() -> bool: + # World-space math is immediate. The viewport canvas transform trails a + # Camera2D assignment until the render server updates, which made a fast + # approach able to cross the threshold one frame before the detector saw + # it. Including the tentacle reach makes the reveal begin when the first + # part of the creature actually touches the view. + var half_view: Vector2 = get_viewport_rect().size * 0.5 / camera.zoom + var extent: float = boss.TENTACLE_LENGTH * boss.scale.x + var separation: Vector2 = (boss.global_position - camera.global_position).abs() + return separation.x <= half_view.x + extent \ + and separation.y <= half_view.y + extent + + +func _update_indicator() -> void: + var viewport_size: Vector2 = get_viewport_rect().size + var screen_at: Vector2 = get_viewport().get_canvas_transform() * boss.global_position + var from_center: Vector2 = screen_at - viewport_size * 0.5 + if from_center == Vector2.ZERO: + from_center = Vector2.UP + var half: Vector2 = indicator.size * 0.5 + indicator.position = Vector2( + clampf(screen_at.x - half.x, 24.0, viewport_size.x - indicator.size.x - 24.0), + clampf(screen_at.y - half.y, 170.0, viewport_size.y - indicator.size.y - 24.0)) + indicator.rotation = from_center.angle() + PI / 2.0 + indicator_label.position.x = clampf(indicator.position.x - 90.0, + 24.0, viewport_size.x - indicator_label.size.x - 24.0) + indicator_label.position.y = indicator.position.y + indicator.size.y + 8.0 + + func _refresh_status() -> void: - var phase_name: String = "PHASE II · LASER STORM" \ - if boss.phase == boss.Phase.LASER_STORM else "PHASE I · HATCHLINGS" + var phase_name: String = "PHASE III · EXPOSED CORE" if boss.phase == boss.Phase.CORE_EXPOSED \ + else ("PHASE II · LASER STORM" if boss.phase == boss.Phase.LASER_STORM \ + else "PHASE I · HATCHLINGS") status_label.text = "THE WARDEN · %s · EYES %d/%d" % [ phase_name, boss.eyes_destroyed, boss.EYE_COUNT] - hint_label.text = "DESTROY GOLDEN HATCHLINGS · FOLLOW THEIR LIGHT · BREAK THE OPEN EYES" + hint_label.text = "GOLDEN HATCHLINGS APPEAR EVERY THIRD WAVE · BREAK THE EYES, THEN THE CORE" func _on_boss_phase_changed(_phase: int) -> void: @@ -49,6 +159,8 @@ func _on_boss_health_changed(current: int, maximum: int) -> void: func _on_boss_defeated() -> void: + game_state.encounter_locks_movement = false + camera.offset = Vector2.ZERO game_state.mark_point_captured(game_state.planet_id, 0) health_bar.value = 0 status_label.text = "THE WARDEN IS DEAD · PLANET CONQUERED" diff --git a/boss/BossEncounter.tscn b/boss/BossEncounter.tscn index cb7a750..a31662c 100644 --- a/boss/BossEncounter.tscn +++ b/boss/BossEncounter.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=5 format=3] +[gd_scene load_steps=6 format=3] [ext_resource type="Script" path="res://boss/BossEncounter.gd" id="1"] [ext_resource type="PackedScene" path="res://boss/OctopusBoss.tscn" id="2"] +[ext_resource type="Script" path="res://ui/IconButton.gd" id="icon_button"] [sub_resource type="StyleBoxFlat" id="StyleBox_health_background"] bg_color = Color(0.08, 0.005, 0.055, 0.92) @@ -35,9 +36,9 @@ mouse_filter = 2 anchor_left = 0.5 anchor_right = 0.5 offset_left = -520.0 -offset_top = 280.0 +offset_top = 166.0 offset_right = 520.0 -offset_bottom = 310.0 +offset_bottom = 196.0 theme_override_colors/font_color = Color(1, 0.55, 0.76, 1) theme_override_colors/font_outline_color = Color(0.04, 0.005, 0.035, 0.95) theme_override_constants/outline_size = 4 @@ -50,9 +51,9 @@ mouse_filter = 2 anchor_left = 0.5 anchor_right = 0.5 offset_left = -520.0 -offset_top = 312.0 +offset_top = 198.0 offset_right = 520.0 -offset_bottom = 344.0 +offset_bottom = 230.0 theme_override_styles/background = SubResource("StyleBox_health_background") theme_override_styles/fill = SubResource("StyleBox_health_fill") max_value = 18.0 @@ -61,10 +62,12 @@ show_percentage = false [node name="StatusLabel" type="Label" parent="EncounterUI"] mouse_filter = 2 -offset_left = 20.0 -offset_top = 354.0 -offset_right = 700.0 -offset_bottom = 396.0 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -600.0 +offset_top = 240.0 +offset_right = 600.0 +offset_bottom = 282.0 theme_override_colors/font_color = Color(1, 0.45, 0.72, 1) theme_override_colors/font_outline_color = Color(0.04, 0.005, 0.035, 0.95) theme_override_constants/outline_size = 4 @@ -74,13 +77,35 @@ horizontal_alignment = 1 [node name="HintLabel" type="Label" parent="EncounterUI"] mouse_filter = 2 -offset_left = 20.0 -offset_top = 396.0 -offset_right = 700.0 -offset_bottom = 436.0 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -600.0 +offset_top = 282.0 +offset_right = 600.0 +offset_bottom = 322.0 theme_override_colors/font_color = Color(0.45, 0.9, 1, 1) theme_override_colors/font_outline_color = Color(0.04, 0.005, 0.035, 0.95) theme_override_constants/outline_size = 3 -theme_override_font_sizes/font_size = 17 +theme_override_font_sizes/font_size = 20 text = "DESTROY GOLDEN HATCHLINGS · FOLLOW THEIR LIGHT · BREAK THE OPEN EYES" horizontal_alignment = 1 + +[node name="BossIndicator" type="Control" parent="EncounterUI"] +mouse_filter = 2 +offset_right = 112.0 +offset_bottom = 112.0 +script = ExtResource("icon_button") +icon = 4 +glow_color = Color(1, 0.32, 0.66, 1) +round_frame = true + +[node name="IndicatorLabel" type="Label" parent="EncounterUI"] +mouse_filter = 2 +offset_right = 292.0 +offset_bottom = 42.0 +theme_override_colors/font_color = Color(1, 0.45, 0.72, 1) +theme_override_colors/font_outline_color = Color(0.04, 0.005, 0.035, 0.95) +theme_override_constants/outline_size = 4 +theme_override_font_sizes/font_size = 22 +text = "HOSTILE SIGNAL" +horizontal_alignment = 1 diff --git a/boss/BossEye.gd b/boss/BossEye.gd index a15a2bd..738d3ae 100644 --- a/boss/BossEye.gd +++ b/boss/BossEye.gd @@ -6,9 +6,9 @@ signal health_changed(current: int, maximum: int) const COMBAT_TARGET = preload("res://core/CombatTarget.gd") -@export var max_hp: int = 3 +@export var max_hp: int = 5 -var hp: int = 3 +var hp: int = 5 var opened: bool = false var phase: float = 0.0 var redraw_left: float = 0.0 diff --git a/boss/BossMinion.gd b/boss/BossMinion.gd index 3323527..8276d4a 100644 --- a/boss/BossMinion.gd +++ b/boss/BossMinion.gd @@ -9,9 +9,16 @@ const COMBAT_TARGET = preload("res://core/CombatTarget.gd") @export var max_hp: int = 5 @export var speed: float = 245.0 @export var acceleration: float = 520.0 +@export var expulsion_speed: float = 520.0 +@export var dash_speed: float = 760.0 var boss: Node2D const REDRAW_INTERVAL: float = 1.0 / 12.0 +const EXPULSION_SECONDS: float = 0.85 +const BRAKE_SECONDS: float = 0.42 +const DASH_SECONDS: float = 0.48 + +enum Motion { EXPELLED, CHASING, BRAKING, DASHING } var hp: int = 5 var velocity: Vector2 = Vector2.ZERO @@ -19,6 +26,11 @@ var phase: float = 0.0 var dead: bool = false var redraw_left: float = 0.0 var fleet: Node2D = null +var motion: int = Motion.CHASING +var motion_left: float = 0.0 +var dash_cooldown: float = 0.0 +var dash_direction: Vector2 = Vector2.ZERO +var uses_dash_pattern: bool = false func _ready() -> void: @@ -31,25 +43,71 @@ func _ready() -> void: queue_redraw() +# The boss throws hatchlings clear of its now much larger silhouette before +# they acquire the fleet. Every third hatchling also gets the stop-and-lunge +# rhythm requested in #189; the others remain steady pursuers so a wave is +# varied rather than uniformly twitchy. +func expel(direction: Vector2, dashes: bool) -> void: + var outward: Vector2 = direction.normalized() + uses_dash_pattern = dashes + motion = Motion.EXPELLED + motion_left = EXPULSION_SECONDS * randf_range(0.8, 1.2) + velocity = outward * expulsion_speed * randf_range(0.85, 1.15) + dash_cooldown = randf_range(1.2, 2.8) + + func _physics_process(delta: float) -> void: phase += delta if not is_instance_valid(fleet): fleet = get_tree().get_first_node_in_group("player_fleet") - if fleet != null and not fleet.ships.is_empty(): - var to_fleet: Vector2 = fleet.get_centroid() - global_position - if to_fleet.length() > 1.0: - velocity = velocity.move_toward(to_fleet.normalized() * speed, - acceleration * delta) - global_position += velocity * delta - if velocity.length() > 4.0: - rotation = lerp_angle(rotation, velocity.angle() + PI / 2.0, - 7.0 * delta) + _update_motion(delta) + global_position += velocity * delta + if velocity.length() > 4.0: + rotation = lerp_angle(rotation, velocity.angle() + PI / 2.0, + 7.0 * delta) redraw_left -= delta if redraw_left <= 0.0: redraw_left = REDRAW_INTERVAL queue_redraw() +func _update_motion(delta: float) -> void: + if motion == Motion.EXPELLED: + motion_left -= delta + if motion_left <= 0.0: + motion = Motion.CHASING + return + if fleet == null or fleet.ships.is_empty(): + velocity = velocity.move_toward(Vector2.ZERO, acceleration * delta) + return + var to_fleet: Vector2 = fleet.get_centroid() - global_position + if motion == Motion.BRAKING: + motion_left -= delta + velocity = velocity.move_toward(Vector2.ZERO, acceleration * 2.2 * delta) + if motion_left <= 0.0: + motion = Motion.DASHING + motion_left = DASH_SECONDS + dash_direction = to_fleet.normalized().rotated(randf_range(-0.42, 0.42)) + return + if motion == Motion.DASHING: + motion_left -= delta + velocity = velocity.move_toward(dash_direction * dash_speed, + acceleration * 4.0 * delta) + if motion_left <= 0.0: + motion = Motion.CHASING + dash_cooldown = randf_range(1.8, 3.8) + return + if uses_dash_pattern: + dash_cooldown -= delta + if dash_cooldown <= 0.0: + motion = Motion.BRAKING + motion_left = BRAKE_SECONDS + return + if to_fleet.length() > 1.0: + velocity = velocity.move_toward(to_fleet.normalized() * speed, + acceleration * delta) + + func take_damage(amount: int) -> bool: if dead: return false diff --git a/boss/OctopusBoss.gd b/boss/OctopusBoss.gd index 0f72931..c26f60b 100644 --- a/boss/OctopusBoss.gd +++ b/boss/OctopusBoss.gd @@ -9,19 +9,22 @@ const EYE_SCENE: PackedScene = preload("res://boss/BossEye.tscn") const MINION_SCENE: PackedScene = preload("res://boss/BossMinion.tscn") const RETURN_SCENE: PackedScene = preload("res://boss/BossReturnSignal.tscn") const LASER_SCENE: PackedScene = preload("res://enemies/EnemyBigLaserBeam.tscn") +const COMBAT_TARGET = preload("res://core/CombatTarget.gd") -enum Phase { MINION_WAVES, LASER_STORM, DEFEATED } +enum Phase { MINION_WAVES, LASER_STORM, CORE_EXPOSED, DEFEATED } const EYE_COUNT: int = 6 const PHASE_TWO_EYES: int = 3 const BODY_RADIUS: float = 86.0 const TENTACLE_LENGTH: float = 235.0 -const MAX_ACTIVE_MINIONS: int = 8 +const MAX_ACTIVE_MINIONS: int = 16 +const GOLDEN_WAVE_PERIOD: int = 3 +const CORE_MAX_HEALTH: int = 36 const REDRAW_INTERVAL: float = 1.0 / 12.0 @export var first_wave_delay: float = 1.5 @export var wave_interval: float = 6.0 -@export var minions_per_wave: int = 5 +@export var minions_per_wave: int = 7 @export var laser_interval: float = 3.5 @export var laser_charge_time: float = 0.85 @@ -36,7 +39,10 @@ var spawned_minions: Array = [] var return_signals: Array = [] var animation_phase: float = 0.0 var redraw_left: float = 0.0 -var total_max_health: int = 0 +var total_max_health: int = CORE_MAX_HEALTH +var core_health: int = CORE_MAX_HEALTH +var core_exposed: bool = false +var combat_active: bool = true func _ready() -> void: @@ -68,7 +74,7 @@ func eye_position(index: int) -> Vector2: func _process(delta: float) -> void: - if phase == Phase.DEFEATED: + if phase == Phase.DEFEATED or not combat_active: return animation_phase += delta @@ -89,16 +95,25 @@ func _process(delta: float) -> void: func spawn_wave() -> void: + if not combat_active or phase == Phase.CORE_EXPOSED or phase == Phase.DEFEATED: + return var fleet: Node2D = get_tree().get_first_node_in_group("player_fleet") if fleet == null or fleet.ships.is_empty() or get_parent() == null: return _prune_invalid(spawned_minions) - var wanted: int = maxi(3, + var wanted: int = maxi(5, minions_per_wave - (2 if phase == Phase.LASER_STORM else 0)) var count: int = mini(wanted, MAX_ACTIVE_MINIONS - spawned_minions.size()) if count <= 0: return - var marked_slot: int = wave_index % count + # One useful return every third ACTUAL wave. The first contains one so the + # mechanic teaches itself immediately; the two red-only waves afterwards + # make the gold target an event rather than permanent scenery. + var marked_slot: int = wave_index % GOLDEN_WAVE_PERIOD + if marked_slot != 0: + marked_slot = -1 + else: + marked_slot = wave_index % count for i in range(count): var minion: Area2D = MINION_SCENE.instantiate() minion.marked = i == marked_slot @@ -108,8 +123,10 @@ func spawn_wave() -> void: var angle: float = TAU * float(i) / float(count) + float(wave_index) * 0.47 # Minions are siblings rather than boss children, so account for the # encounter scene's imposing boss scale when placing them off its body. - var launch_radius: float = BODY_RADIUS * scale.x + 34.0 - minion.global_position = global_position + Vector2.from_angle(angle) * launch_radius + var launch_direction := Vector2.from_angle(angle) + var launch_radius: float = BODY_RADIUS * scale.x + 60.0 + minion.global_position = global_position + launch_direction * launch_radius + minion.expel(launch_direction, (i + wave_index) % 3 == 0) spawned_minions.append(minion) wave_index += 1 @@ -140,7 +157,7 @@ func _on_eye_destroyed(_index: int) -> void: eyes_destroyed += 1 health_changed.emit(current_health(), max_health()) if eyes_destroyed >= EYE_COUNT: - _defeat() + _expose_core() return if phase == Phase.MINION_WAVES and eyes_destroyed >= PHASE_TWO_EYES: phase = Phase.LASER_STORM @@ -154,7 +171,7 @@ func _on_eye_health_changed(_current: int, _maximum: int) -> void: func current_health() -> int: - var total: int = 0 + var total: int = core_health for eye in eyes: if is_instance_valid(eye): total += maxi(int(eye.hp), 0) @@ -187,6 +204,36 @@ func fire_laser_volley() -> void: beam.launch(global_position, toward.rotated(float(spread))) +func set_combat_active(active: bool) -> void: + combat_active = active + if active: + wave_timer = first_wave_delay + laser_timer = laser_interval + + +func _expose_core() -> void: + if core_exposed or phase == Phase.DEFEATED: + return + core_exposed = true + phase = Phase.CORE_EXPOSED + COMBAT_TARGET.register(self, COMBAT_TARGET.DANGER_PRIORITY) + $CoreCollision.set_deferred("disabled", false) + phase_changed.emit(phase) + queue_redraw() + + +func take_damage(amount: int) -> bool: + if not core_exposed or phase == Phase.DEFEATED: + return false + core_health = maxi(core_health - maxi(amount, 1), 0) + health_changed.emit(current_health(), max_health()) + if core_health > 0: + queue_redraw() + return false + _defeat() + return true + + func _forget_minion(minion: Node) -> void: spawned_minions.erase(minion) @@ -205,6 +252,9 @@ func _defeat() -> void: if phase == Phase.DEFEATED: return phase = Phase.DEFEATED + core_health = 0 + remove_from_group(COMBAT_TARGET.GROUP) + $CoreCollision.set_deferred("disabled", true) for minion in spawned_minions: if is_instance_valid(minion): minion.retire() @@ -220,6 +270,8 @@ func _defeat() -> void: func suppress_as_defeated() -> void: phase = Phase.DEFEATED + core_health = 0 + combat_active = false visible = false set_process(false) @@ -251,8 +303,10 @@ func _draw() -> void: # The central eye watches but is armoured; only tentacle eyes opened by a # returning marked minion join the combat-target group. draw_set_transform(Vector2.ZERO, 0.0, Vector2(0.72, 1.0)) + var core_color := Color(1.0, 0.78, 0.18) if core_exposed \ + else Color(0.28, 0.92, 1.0) NeonDraw.draw_glowing_circle(self, Vector2.ZERO, 31.0, - Color(0.28, 0.92, 1.0), 0.8 + 0.2 * sin(animation_phase * 3.0), dark) + core_color, 0.8 + 0.2 * sin(animation_phase * 3.0), dark) NeonDraw.draw_glowing_circle(self, Vector2.ZERO, 12.0, Color(1.0, 0.82, 0.2), 1.0, dark) draw_set_transform(Vector2.ZERO, 0.0, Vector2.ONE) diff --git a/boss/OctopusBoss.tscn b/boss/OctopusBoss.tscn index 9279ac1..4a4a0eb 100644 --- a/boss/OctopusBoss.tscn +++ b/boss/OctopusBoss.tscn @@ -1,9 +1,16 @@ -[gd_scene load_steps=2 format=3] +[gd_scene load_steps=3 format=3] [ext_resource type="Script" path="res://boss/OctopusBoss.gd" id="1"] -[node name="Boss" type="Node2D"] -position = Vector2(0, -560) -scale = Vector2(1.35, 1.35) +[sub_resource type="CircleShape2D" id="CircleShape_core"] +radius = 76.0 + +[node name="Boss" type="Area2D"] +position = Vector2(0, -3000) +scale = Vector2(2.7, 2.7) z_index = 2 script = ExtResource("1") + +[node name="CoreCollision" type="CollisionShape2D" parent="."] +disabled = true +shape = SubResource("CircleShape_core") diff --git a/controllers/GameController.gd b/controllers/GameController.gd index e018b60..ae222c6 100644 --- a/controllers/GameController.gd +++ b/controllers/GameController.gd @@ -298,7 +298,7 @@ func _process(delta: float) -> void: # #124: the breach drives. One check here covers the stick, the keyboard # and the released-again path together - three separate gates would be # three chances for one of them to keep steering. - if GameState.intro_locks_movement: + if GameState.intro_locks_movement or GameState.encounter_locks_movement: keyboard_steering = false else: _apply_steering() diff --git a/core/GameState.gd b/core/GameState.gd index f456287..161083a 100644 --- a/core/GameState.gd +++ b/core/GameState.gd @@ -47,6 +47,10 @@ var catalog_faults: PackedStringArray = PackedStringArray() # set, so the fleet goes where the script sends it rather than fighting the # player for the last few seconds of the prologue. var intro_locks_movement: bool = false +# Short in-world reveals (currently the boss arrival) use their own lock so +# they do not pretend the prologue is active merely to steer the fleet for a +# few seconds. +var encounter_locks_movement: bool = false # #123: the prologue's convoy is bigger than any fleet the player can field # yet - it is not their fleet, it is the one they are about to lose. An # explicit override rather than a fake doctrine, so nothing about the @@ -751,6 +755,7 @@ func reset_progression() -> void: func reset_new_game() -> void: intro_active = true intro_locks_movement = false + encounter_locks_movement = false intro_fleet_size = 0 has_return_position = false surviving_ship_count = STARTING_SHIP_COUNT diff --git a/tests/_boss_approach_preview.gd b/tests/_boss_approach_preview.gd new file mode 100644 index 0000000..4da1768 --- /dev/null +++ b/tests/_boss_approach_preview.gd @@ -0,0 +1,25 @@ +extends Node2D + +# Stable portrait view of #189's pre-fight state: the landed fleet is still +# below the unseen Warden, combat HUD is absent, and only the edge indicator +# gives away what is pulling the fleet upward. + + +func _ready() -> void: + GameState.reset_new_game() + GameState.intro_active = false + GameState.reset_quests(false) + GameState.planet_name = "Many-Eyed Deep" + GameState.planet_id = "preview:boss:approach" + GameState.planet_definition_id = "boss" + GameState.surviving_ship_count = 3 + GameState.surviving_vessel_types = PackedStringArray([ + GameState.VESSEL_INTERCEPTOR, + GameState.VESSEL_GAS_BOMBER, + GameState.VESSEL_LASER, + ]) + var surface: Node = load("res://surface/PlanetSurface.tscn").instantiate() + add_child(surface) + surface.get_node("FadeOverlay/FadeRect").visible = false + # Four screenshot frames are nowhere near enough for the automatic + # approach to cover 950 world units, so the signal remains off-screen. diff --git a/tests/_boss_approach_preview.gd.uid b/tests/_boss_approach_preview.gd.uid new file mode 100644 index 0000000..38d242c --- /dev/null +++ b/tests/_boss_approach_preview.gd.uid @@ -0,0 +1 @@ +uid://c50xlb8b4u84r diff --git a/tests/_boss_approach_preview.tscn b/tests/_boss_approach_preview.tscn new file mode 100644 index 0000000..c7c8ce7 --- /dev/null +++ b/tests/_boss_approach_preview.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3] + +[ext_resource type="Script" path="res://tests/_boss_approach_preview.gd" id="1"] + +[node name="BossApproachPreview" type="Node2D"] +script = ExtResource("1") diff --git a/tests/_boss_planet_preview.gd b/tests/_boss_planet_preview.gd index 8a77480..206f6a1 100644 --- a/tests/_boss_planet_preview.gd +++ b/tests/_boss_planet_preview.gd @@ -33,6 +33,11 @@ func _process(_delta: float) -> void: laid_out = true var encounter: Node = surface.get_node("SurfaceFeatures/BossEncounter") var boss: Node2D = encounter.get_node("Boss") + encounter.begin_reveal() + encounter._process(encounter.REVEAL_SECONDS + 0.1) + var fleet: Node2D = surface.get_node("Fleet") + fleet.teleport_to(boss.global_position + Vector2(0.0, 780.0)) + surface.get_node("Camera2D").global_position = fleet.get_centroid() boss.wave_timer = 999.0 boss.laser_timer = 999.0 for i in range(3): @@ -44,6 +49,8 @@ func _process(_delta: float) -> void: boss.open_next_eye() boss.spawn_wave() for minion in get_tree().get_nodes_in_group("boss_minions"): + # Let the authored expulsion fan complete before freezing the gallery. + minion._physics_process(0.65) minion.speed = 0.0 minion.acceleration = 0.0 boss.laser_charge_time = 999.0 diff --git a/tests/test_boss_planet.gd b/tests/test_boss_planet.gd index f52ad43..9280466 100644 --- a/tests/test_boss_planet.gd +++ b/tests/test_boss_planet.gd @@ -8,12 +8,13 @@ extends SceneTree # scripted profile is excluded from the map editor # B. landing composes BossEncounter instead of a PlanetSetup and does not # mark the world conquered for free -# C. phase one spawns an octopus wave with exactly one marked hatchling -# D. killing the marked hatchling sends a visible return to the boss and +# C. the off-screen approach locks movement and reveals with its own cue +# D. waves are larger, expelled outward, varied, and golden only 1/3 times +# E. killing the marked hatchling sends a visible return to the boss and # opens an attackable tentacle eye -# E. three destroyed eyes start the three-lane laser phase -# F. destroying every eye defeats the boss, persists conquest, and a second -# landing does not resurrect it +# F. three destroyed eyes start the three-lane laser phase +# G. eyes expose a separate core; destroying it persists conquest, and a +# second landing does not resurrect the boss const COMBAT_TARGET = preload("res://core/CombatTarget.gd") const BOSS_SCRIPT = preload("res://boss/OctopusBoss.gd") @@ -110,6 +111,37 @@ func _process(delta: float) -> bool: if surface.get_node("UI/CaptureLabel").visible: return _fail("ordinary capture-point status is visible during the boss encounter") boss = encounter.get_node("Boss") + if not (boss is Area2D) or boss.get_node_or_null("CoreCollision") == null: + return _fail("the boss core has no projectile collision target") + if boss.position.y > -2400.0 or boss.scale.x < 2.7: + return _fail("the boss is not far above the landing point and at least twice its old size") + if encounter.health_bar.visible or encounter.status_label.visible: + return _fail("boss combat UI is visible before the boss enters view") + if not encounter.indicator.visible or not encounter.indicator_label.visible: + return _fail("the off-screen boss has no directional border indicator") + if not state.encounter_locks_movement or boss.combat_active: + return _fail("the approach did not take temporary control or already started combat") + # Put the camera where the automatic approach eventually carries it; + # the encounter itself must detect the boss crossing into view. + surface.get_node("Camera2D").global_position = boss.global_position + Vector2(0.0, 1000.0) + encounter._process(0.0) + if not encounter.reveal_started: + return _fail("bringing the boss into view did not trigger its reveal") + if not encounter.health_bar.visible or encounter.indicator.visible: + return _fail("the reveal did not exchange the indicator for the health UI") + var scream_heard: bool = false + var sfx_pool: Node = root.get_node_or_null(Sfx.NODE_NAME) + if sfx_pool != null: + for voice in sfx_pool.get_children(): + if voice.stream != null and voice.stream.resource_path.ends_with("sfx_boss_scream.wav"): + scream_heard = true + if not scream_heard: + return _fail("the on-screen reveal played no boss scream") + encounter._process(encounter.REVEAL_SECONDS + 0.1) + if not encounter.encounter_active or not boss.combat_active \ + or state.encounter_locks_movement: + return _fail("the reveal did not start combat and return fleet control") + print("off-screen signal led into a roar, shake, health reveal and player control") boss.wave_timer = 999.0 boss.laser_timer = 999.0 var health_bar: ProgressBar = encounter.get_node("EncounterUI/HealthBar") @@ -123,14 +155,17 @@ func _process(delta: float) -> bool: if eye.opened or eye.is_in_group(COMBAT_TARGET.GROUP): return _fail("a tentacle eye starts open and attackable") - # --- C. phase-one wave ---------------------------------------- + # --- D. larger, varied, one-in-three waves -------------------- boss.spawn_wave() var minions: Array = get_nodes_in_group("boss_minions") if minions.size() != boss.minions_per_wave: return _fail("phase one spawned %d hatchlings, expected %d" \ % [minions.size(), boss.minions_per_wave]) var marked: Node = null + var dashers: int = 0 for minion in minions: + if minion.uses_dash_pattern: + dashers += 1 if minion.marked: if marked != null: return _fail("one wave contains more than one marked hatchling") @@ -139,6 +174,25 @@ func _process(delta: float) -> bool: minion.take_damage(999) if marked == null: return _fail("phase-one wave has no marked hatchling") + if minions.size() < 7 or dashers < 2: + return _fail("the boss wave is not larger and behaviorally mixed") + var launch_distance: float = marked.global_position.distance_to(boss.global_position) + var launch_velocity: Vector2 = marked.velocity + if launch_distance <= boss.BODY_RADIUS * boss.scale.x \ + or launch_velocity.dot(marked.global_position - boss.global_position) <= 0.0: + return _fail("a hatchling was not expelled outward from the boss") + marked._physics_process(0.4) + if marked.global_position.distance_to(boss.global_position) <= launch_distance + 100.0: + return _fail("the outward launch did not spread a hatchling before it targeted the fleet") + marked._physics_process(1.0) + marked.dash_cooldown = 0.0 + marked._physics_process(0.01) + if marked.motion != marked.Motion.BRAKING: + return _fail("a dash-pattern hatchling never stops before lunging") + marked._physics_process(marked.BRAKE_SECONDS + 0.01) + marked._physics_process(0.2) + if marked.motion != marked.Motion.DASHING or marked.velocity.length() <= marked.speed: + return _fail("a stopped hatchling did not accelerate into its random dash") if marked.max_hp < 5: return _fail("boss hatchlings still have only %d health" % marked.max_hp) marked.take_damage(1) @@ -151,7 +205,20 @@ func _process(delta: float) -> bool: if returns.size() != 1: return _fail("marked death launched %d returns, expected one" % returns.size()) returns[0].speed = 4000.0 - print("phase one spawned a wave; the marked kill returned toward the boss") + for expected_marked in [0, 0, 1]: + boss.spawn_wave() + var spawned: Array = get_nodes_in_group("boss_minions") + var marked_count: int = 0 + for minion in spawned: + if minion.is_queued_for_deletion(): + continue + if minion.marked: + marked_count += 1 + minion.retire() + if marked_count != expected_marked: + return _fail("golden cadence produced %d marked hatchlings, expected %d" \ + % [marked_count, expected_marked]) + print("larger waves launch outward with dashers; only one of three is golden") stage = 1 elapsed = 0.0 return false @@ -180,6 +247,8 @@ func _process(delta: float) -> bool: eye.take_damage(999) if boss.eyes_destroyed != 1: return _fail("destroying the first eye did not damage the boss") + if boss.max_health() - boss.current_health() >= boss.max_health() / boss.EYE_COUNT: + return _fail("one eye still removes a full sixth of the total encounter health") print("return opened a tentacle eye; the eye accepted damage and broke") _open_return() stage = 2 @@ -224,15 +293,6 @@ func _process(delta: float) -> bool: return _fail("boss laser extends backwards through its source") beam.queue_free() boss.spawn_wave() - var phase_two_minions: Array = get_nodes_in_group("boss_minions") - var phase_two_marked: int = 0 - for minion in phase_two_minions: - if minion.marked: - phase_two_marked += 1 - minion.retire() - if phase_two_minions.size() != 3 or phase_two_marked != 1: - return _fail("laser phase no longer supplies one marked target to open remaining eyes") - boss.spawn_wave() boss.spawn_wave() boss.spawn_wave() if boss.spawned_minions.size() > boss.MAX_ACTIVE_MINIONS: @@ -242,18 +302,29 @@ func _process(delta: float) -> bool: minion.retire() print("three broken eyes started a telegraphed three-lane laser phase") - # --- F. all eyes -> persistent victory ------------------------ + # --- G. all eyes -> exposed core -> persistent victory -------- for i in range(3, boss.EYE_COUNT): boss.eyes[i].open_eye() boss.eyes[i].take_damage(999) + if boss.phase != BOSS_SCRIPT.Phase.CORE_EXPOSED or not boss.visible: + return _fail("breaking every eye did not expose a still-living core") + if state.is_planet_conquered(state.planet_id): + return _fail("breaking the eyes conquered the planet before the core died") + if not boss.is_in_group(COMBAT_TARGET.GROUP): + return _fail("the exposed core is not an attackable combat target") + var core_before: int = boss.core_health + boss.take_damage(1) + if boss.core_health != core_before - 1 or boss.phase == BOSS_SCRIPT.Phase.DEFEATED: + return _fail("the exposed core did not provide a separate final health pool") + boss.take_damage(999) if boss.phase != BOSS_SCRIPT.Phase.DEFEATED or boss.visible: - return _fail("breaking every eye did not defeat and hide the boss") + return _fail("destroying the core did not defeat and hide the boss") if not state.is_planet_conquered(state.planet_id): return _fail("boss victory did not persist through planet conquest state") if encounter.health_bar.value != 0 \ or encounter.health_bar.max_value != boss.max_health(): return _fail("boss health bar did not end empty with a stable total") - print("all eyes broken: boss defeated and planet conquest persisted") + print("all eyes exposed a durable core; destroying it persisted planet conquest") surface.free() surface = load("res://surface/PlanetSurface.tscn").instantiate()