extends Node var player_health: float = -1.0 var player_max_health: float = -1.0 var player_shield: float = -1.0 var player_max_shield: float = -1.0 var player_role: int = 1 var portal_position: Vector3 = Vector3.ZERO var returning_from_dungeon := false var dungeon_cleared := false func save_player(player: Node) -> void: var health: Node = player.get_node("Health") var shield: Node = player.get_node("Shield") var role: Node = player.get_node("Role") player_health = health.current_health player_max_health = health.max_health player_shield = shield.current_shield player_max_shield = shield.max_shield player_role = role.current_role func restore_player(player: Node) -> void: if player_health < 0: return var health: Node = player.get_node("Health") var shield: Node = player.get_node("Shield") var role: Node = player.get_node("Role") health.current_health = player_health shield.current_shield = player_shield role.set_role(player_role) EventBus.health_changed.emit(player, health.current_health, health.max_health) EventBus.shield_changed.emit(player, shield.current_shield, shield.max_shield) func clear_player() -> void: player_health = -1.0 player_shield = -1.0 func clear() -> void: clear_player() portal_position = Vector3.ZERO returning_from_dungeon = false dungeon_cleared = false