extends Node const LAB := preload("res://scripts/planets/laboratory.gd") const GEN := preload("res://scripts/items/item_generator.gd") func _ready() -> void: call_deferred("_run") func _run() -> void: var state := get_node("/root/GameState") state.start_new_run() state.captain.level = 30 var captain: Resource = state.captain var progress: Resource = captain.expedition var initial := GEN.available_definitions() for definition in initial: assert(definition.category != ItemDefinition.Category.ACTIVE_EXTENSION) assert(definition.category != ItemDefinition.Category.WEAPON or definition.item_id == "plasma_cannon") for definition in GEN.DEFINITIONS: if definition.category == ItemDefinition.Category.ACTIVE_EXTENSION or (definition.category == ItemDefinition.Category.WEAPON and definition.item_id != "plasma_cannon"): assert(definition.item_id in LAB.IDS) progress.freighter_rooms.expansion_1 = "laboratory" for cost in LAB.COSTS.values(): for key in cost: captain.minerals[key] = 10000 LAB.ensure_offers(progress) while not progress.laboratory_offers.is_empty(): var id: String = progress.laboratory_offers[0] assert(not GEN.available_definitions().has(LAB.definition(id))) var count := GEN.available_definitions().size() assert(LAB.start(captain,id)) assert(not GEN.available_definitions().has(LAB.definition(id))) LAB.advance(progress,LAB.DURATION) assert(GEN.available_definitions().has(LAB.definition(id))) assert(GEN.available_definitions().size() == count + 1) assert(progress.laboratory_unlocks.size() == LAB.IDS.size()) assert(GEN.available_definitions().size() == GEN.DEFINITIONS.size() + 3) print("LABORATORY_LOOT_TEST: PASS (plasma-only starting weapon, locked extensions, all research unlocks, no duplicate loot)") get_tree().quit()