Randoloot/tests/crew_level_checks.gd
2026-10-20 20:32:50 +02:00

18 lines
1004 B
GDScript

@tool
extends Node
func run_checks() -> Dictionary:
var network := preload("res://scripts/planets/mining_network.gd")
var failures: Array[String] = []
for level in [1,5,20,50,80,100,120]:
var center := clampi(level,1,100)
for seed_value in 1000:
var profile := {"id":"test:%d" % seed_value,"seed":seed_value,"name":"Test","difficulty":1.0,"system_level":level}
var candidate: Dictionary = network.recruit(profile)
if int(candidate.management) < maxi(1,center-5) or int(candidate.management) > mini(100,center+5): failures.append("Out of level bounds")
if candidate != network.recruit(profile): failures.append("Rerolled on revisit")
var safe := profile.duplicate()
safe.difficulty = 0.0
if candidate.management != network.recruit(safe).management: failures.append("Biome changed rating")
if network.recruitment_cost(candidate) != int(candidate.management)*1000: failures.append("Wrong price")
return {"failures":failures,"rolls_checked":7000,"passed":failures.is_empty()}