2026-09-03 10:33:05 +02:00
|
|
|
extends Node2D
|
|
|
|
|
|
|
|
|
|
# Stable portrait composition for visually checking #188. The real surface,
|
|
|
|
|
# encounter, fleet, UI, minions, open eyes and laser telegraph are all used;
|
|
|
|
|
# only their timers are frozen once the representative second phase is laid
|
|
|
|
|
# out so a screenshot does not depend on capture timing.
|
|
|
|
|
|
|
|
|
|
var surface: Node
|
|
|
|
|
var laid_out: bool = false
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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"
|
|
|
|
|
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,
|
|
|
|
|
])
|
|
|
|
|
surface = load("res://surface/PlanetSurface.tscn").instantiate()
|
|
|
|
|
add_child(surface)
|
|
|
|
|
surface.get_node("FadeOverlay/FadeRect").visible = false
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func _process(_delta: float) -> void:
|
|
|
|
|
if laid_out:
|
|
|
|
|
return
|
|
|
|
|
laid_out = true
|
|
|
|
|
var encounter: Node = surface.get_node("SurfaceFeatures/BossEncounter")
|
|
|
|
|
var boss: Node2D = encounter.get_node("Boss")
|
|
|
|
|
boss.wave_timer = 999.0
|
|
|
|
|
boss.laser_timer = 999.0
|
|
|
|
|
for i in range(3):
|
|
|
|
|
boss.eyes[i].open_eye()
|
|
|
|
|
boss.eyes_opened += 1
|
2026-09-03 11:49:51 +02:00
|
|
|
boss.eyes[i].take_damage(999)
|
|
|
|
|
# Show one of the remaining weak points in its attackable state while the
|
|
|
|
|
# aggregate bar truthfully sits at half health.
|
|
|
|
|
boss.open_next_eye()
|
2026-09-03 10:33:05 +02:00
|
|
|
boss.spawn_wave()
|
|
|
|
|
for minion in get_tree().get_nodes_in_group("boss_minions"):
|
|
|
|
|
minion.speed = 0.0
|
|
|
|
|
minion.acceleration = 0.0
|
|
|
|
|
boss.laser_charge_time = 999.0
|
|
|
|
|
boss.fire_laser_volley()
|
2026-09-03 11:49:51 +02:00
|
|
|
encounter._refresh_status()
|
2026-09-03 10:33:05 +02:00
|
|
|
get_tree().paused = true
|