66 lines
3.2 KiB
GDScript
66 lines
3.2 KiB
GDScript
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()
|