Randoloot/tests/captain/reactor_duration_test.gd
2026-10-17 21:28:08 +02:00

40 lines
2.0 KiB
GDScript

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()