Randoloot/tests/abilities/hud_cooldown_reset_test.gd
2026-10-16 22:04:36 +02:00

62 lines
3.0 KiB
GDScript

extends Node
const GAME := preload("res://scenes/game/game.tscn")
func _ready() -> void:
GameState.start_new_run()
GameState.captain.skills["reactor_overload"] = 1
GameState.captain.equipped_skills[0] = "reactor_overload"
GameState.captain.skill_cooldowns["reactor_overload"] = 25.0
GameState.captain.skill_durations["reactor_overload"] = 3.0
var game := GAME.instantiate() as Node2D
add_child(game)
await get_tree().process_frame
game.set_physics_process(false)
var ship := game.get_node("PlayerShip") as CharacterBody2D
ship.set_physics_process(false)
ship.get_node("WeaponController").set_physics_process(false)
for enemy in get_tree().get_nodes_in_group("enemies"):
enemy.set_physics_process(false)
assert(GameState.captain.skill_cooldowns.is_empty())
assert(GameState.captain.skill_durations.is_empty())
var hud := game.get_node("HUD")
var captain := hud.get_node("HUDRoot/CaptainPanel") as PanelContainer
assert(captain.size.x <= 250)
assert(captain.get_theme_stylebox("panel").bg_color.a == 0.0)
assert(captain.get_node("Contents/PortraitRow/AvatarFrame/CaptainAvatar").custom_minimum_size == Vector2(54, 54))
assert(hud.get_node("HUDRoot/TopNavigation").get_child_count() == 2)
assert(hud.get_node("HUDRoot/TopNavigation").get_child(0).get_node("RoundedArtwork").texture != null)
var inventory := ship.get_node("ShipInventory") as ShipInventory
var item := ItemInstance.new()
item.definition = preload("res://resources/items/cloak.tres")
assert(inventory.add_item(item))
assert(inventory.move_item("cargo", inventory.cargo.find(item), "extension", 0))
assert(ship.call("activate_ability", 0))
assert(ship.call("is_cloaked"))
assert(GameState.captain.activate_skill("reactor_overload", ship))
assert(ship.call("get_ability_cooldown", 0) > 0.0)
assert(not GameState.captain.skill_cooldowns.is_empty())
ship.call("take_damage", 100000.0)
assert(ship.get("_is_destroyed"))
assert(not ship.call("is_cloaked"))
assert(ship.call("get_ability_cooldown", 0) == 0.0)
assert(GameState.captain.skill_cooldowns.is_empty())
assert(GameState.captain.skill_durations.is_empty())
inventory.preserve_for_restart()
game.free()
GameState.system_level += 1
GameState.system_seed = GameState.create_system_seed()
GameState.captain.skill_cooldowns["reactor_overload"] = 12.0
GameState.captain.skill_durations["reactor_overload"] = 2.0
var next_game := GAME.instantiate() as Node2D
add_child(next_game)
await get_tree().process_frame
var next_ship := next_game.get_node("PlayerShip")
assert(next_ship.call("get_ability_cooldown", 0) == 0.0)
assert(GameState.captain.skill_cooldowns.is_empty())
assert(GameState.captain.skill_durations.is_empty())
assert(GameState.captain.get_skill_rank("reactor_overload") == 1)
assert(next_ship.get_node("ShipInventory").extension_slots[0].definition == item.definition)
print("HUD_COOLDOWN_RESET_TEST: PASS (death/new board reset captain and extension cooldowns/effects, equipment and learned skills retained, compact transparent captain, new artwork)")
get_tree().quit()