39 lines
1.8 KiB
GDScript
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()
|