extends Node const PROFILES := preload("res://scripts/planets/planet_profiles.gd") const GEAR := preload("res://scripts/planets/captain_equipment.gd") const EVENTS := preload("res://scripts/planets/surface_events.gd") const REWARDS := preload("res://scripts/planets/planet_rewards.gd") var captain: Resource func set_gear(levels: Array) -> void: for index in 3: captain.gear_items[index].level = int(levels[index]) captain.gear_slots[GEAR.KINDS[index]] = index+1 func _ready() -> void: captain = preload("res://scripts/captain/captain_progress.gd").new() var starter := PROFILES.generate(99,0,"Pierwsza planeta",1) set_gear([1,1,1]) assert(PROFILES.global_threat(starter,captain) == 0) assert(PROFILES.poi_loot_report(starter,captain).multiplier == 1.0) for stage in 3: assert(is_equal_approx(PROFILES.success_chance(starter,captain,stage),PROFILES.POI_SAFE_CHANCES[stage])) var extreme := {"id":"test","name":"Test","seed":1234,"system_level":120,"difficulty":1.0,"oxygen":0,"temperature":100,"flora":50,"landing_damage":15} set_gear([0,0,0]) assert(PROFILES.global_threat(extreme,captain) == 300) set_gear([156,0,0]) var report := PROFILES.threat_report(extreme,captain) assert(is_zero_approx(report.effective.oxygen) and report.effective.temperature == 100 and report.effective.biology == 100) set_gear([0,156,0]) report = PROFILES.threat_report(extreme,captain) assert(is_zero_approx(report.effective.temperature) and report.effective.oxygen == 100) set_gear([0,0,156]) report = PROFILES.threat_report(extreme,captain) assert(is_zero_approx(report.effective.biology) and report.effective.oxygen == 100) set_gear([50,50,50]) assert(PROFILES.global_threat(extreme,captain) > 150,"Level 50 is no longer global immunity") var previous := 301.0 for rank in range(0,180): set_gear([rank,rank,rank]) var pressure := PROFILES.global_threat(extreme,captain) assert(pressure <= previous+0.000001 and pressure >= 0) previous = pressure var loot := PROFILES.poi_loot_report(extreme,captain) assert(loot.multiplier >= 0.5 and loot.multiplier <= 1.100001) set_gear([0,0,0]) var state: Resource = captain.expedition captain.parts = 100 assert(state.begin_visit(extreme)) var event := {"kind":"evacuation","seed":1234,"complete":false} EVENTS.prepare(event,captain,state) event.stage = 2 assert(EVENTS.chance(event,captain,state) == 0) assert(EVENTS.resolve(event,"help",captain,state).blocked) set_gear([156,156,156]) assert(is_equal_approx(EVENTS.chance(event,captain,state),0.4)) var scan := PROFILES.scan_description(extreme,captain) assert(scan.contains("Poziom 120") and scan.contains("HP")) for unwanted in ["zagro","TLEN","TEMPERATURA","BIO","×","pp"]: assert(not scan.contains(unwanted),"Player-facing scan omits hidden hazard formulas") for index in 500: var early := PROFILES.generate(99,index,"Planeta",1) var late := PROFILES.generate(99,index,"Planeta",120) assert(early.easy and early.difficulty == 0) assert(late.difficulty > 0.75 and late.landing_damage > early.landing_damage) assert(REWARDS.material_multiplier(late) > REWARDS.material_multiplier(early)) print("PLANET THREATS PASS: progressive planets, relative independent equipment, no level-50 immunity, capped loot recovery, event guards, simple scan") get_tree().quit()