extends Node func _ready() -> void: GameState.start_new_run() var ship := preload("res://scenes/game/player_ship.tscn").instantiate() add_child(ship) ship.set_physics_process(false) ship.get_node("WeaponController").set_physics_process(false) var captain := GameState.captain captain.skills = {"reactor_overload": 1, "tactical_maneuver": 1} captain.equipped_skills = ["reactor_overload", "tactical_maneuver", "", "", ""] assert(captain.activate_skill("reactor_overload", ship)) assert(captain.activate_skill("tactical_maneuver", ship)) assert(captain.skill_durations.reactor_overload == 15.0) assert(captain.skill_cooldowns.reactor_overload == 30.0) captain.tick_skills(5.0) assert(captain.is_skill_active("reactor_overload") and not captain.is_skill_active("tactical_maneuver")) captain.tick_skills(9.9) assert(captain.is_skill_active("reactor_overload")) captain.tick_skills(0.11) assert(not captain.is_skill_active("reactor_overload")) assert(preload("res://scripts/captain/captain_skills.gd").description("reactor_overload", 1).contains("15 sekund")) for rank in range(1, 4): captain.skill_cooldowns.clear() captain.skills["power_redirect"] = rank assert(captain.equip_skill(2, "power_redirect")) ship.shields = ship.max_shields assert(captain.activate_skill("power_redirect", ship)) assert(ship.shields == 0.0) assert(captain.skill_durations.power_redirect == 7.0) assert(captain.skill_cooldowns.power_redirect == 30.0) assert(is_equal_approx(captain.energy_regeneration_multiplier(), 1.0 + [1.0, 1.8, 3.0][rank - 1])) captain.tick_skills(6.99) assert(captain.is_skill_active("power_redirect")) captain.tick_skills(0.02) assert(not captain.is_skill_active("power_redirect")) assert(is_equal_approx(captain.energy_regeneration_multiplier(), 1.0)) assert(preload("res://scripts/captain/captain_skills.gd").description("power_redirect", 3).contains("7 sekund")) print("REACTOR_DURATION_TEST: PASS overload 15s, redirection 7s at +100/180/300%, 30s cooldown, tactical maneuver 5s") get_tree().quit()