Randoloot/tests/items/retired_orb_test.gd
2026-10-31 16:08:17 +01:00

40 lines
1.9 KiB
GDScript

extends Node
const ORBS := preload("res://scripts/items/special_orbs.gd")
func _ready() -> void:
GameState.start_new_run()
assert(not ORBS.IDS.has("booster") and not ORBS.COMMON_IDS.has("booster"))
assert(ORBS.create_item("booster") == null and ORBS.icon("booster") == null)
var player := preload("res://scenes/game/player_ship.tscn").instantiate()
add_child(player)
player.set_physics_process(false)
player.get_node("WeaponController").set_physics_process(false)
var inventory: ShipInventory = player.get_node("ShipInventory")
var engine := ItemInstance.new()
engine.definition = preload("res://resources/items/engine_extension.tres")
inventory.module_slots[2] = engine
var base_cost: float = player.get_mini_boost_energy_cost()
engine.special_orbs.assign(["booster","atomic_engine"])
assert(is_equal_approx(player.get_mini_boost_energy_cost(),base_cost*0.5))
var old := ItemInstance.new()
old.definition = ItemDefinition.new()
old.definition.category = ItemDefinition.Category.CONSUMABLE
old.definition.orb_id = "booster"
inventory.cargo[0] = old
GameState.captain.expedition.orbs = {"booster":10}
GameState.captain.expedition.freighter_storage.append(old)
GameState.captain.expedition.delivered_modules.append(old)
inventory.migrate_orbs()
assert(inventory.cargo[0] == null)
assert(not engine.special_orbs.has("booster") and engine.special_orbs.has("atomic_engine"))
assert(not GameState.captain.expedition.orbs.has("booster"))
assert(GameState.captain.expedition.freighter_storage.is_empty())
assert(GameState.captain.expedition.delivered_modules.is_empty())
assert(not ORBS.apply(GameState.captain.expedition,inventory,engine,"booster"))
player.energy = 0
Input.action_press("ship_mini_boost")
player._update_mini_boost(0.1)
Input.action_release("ship_mini_boost")
assert(not player._mini_boost_active)
print("RETIRED_ORB_TEST: PASS (removed orb, legacy cleanup, atomic engine retained, no free boost)")
get_tree().quit()