Randoloot/tests/ships/laboratory_loot_test.gd
2026-10-27 22:20:01 +01:00

39 lines
1.8 KiB
GDScript

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