@tool extends Node const DATA := preload("res://scripts/planets/distant_expeditions.gd") func run_checks() -> Dictionary: var failures: Array[String] = [] var profile := {} for seed_value in 1000: var candidate := {"id":"test:%d" % seed_value,"seed":seed_value,"name":"Test"} if DATA.has_hermit(candidate): profile = candidate break for source in [1,120,125,130,500]: for seed_value in 100: var candidate := {"id":"test:%d" % seed_value,"seed":seed_value,"name":"Test"} var map := DATA.offer(candidate,source) if int(map.level) < source+1 or int(map.level) > source+5: failures.append("Wrong destination range") if map != DATA.offer(candidate,source): failures.append("Offer rerolled") if DATA.map_cost(map) != int(map.level)*1000: failures.append("Wrong credits") if DATA.fuel_cost(map) != int(map.level)*1000: failures.append("Wrong fuel") var captain = preload("res://scripts/captain/captain_progress.gd").new() var progress: Resource = captain.expedition var map := DATA.offer(profile,120) var price := DATA.map_cost(map) captain.credits = price-1 if DATA.buy(progress,captain,profile,120): failures.append("Bought without credits") if captain.credits != price-1 or not progress.distant_maps.is_empty(): failures.append("Failed purchase mutated state") captain.credits = price progress.deuter = 500000 if not DATA.buy(progress,captain,profile,120): failures.append("Purchase failed") if captain.credits != 0 or progress.distant_maps.size() != 1: failures.append("Wrong payment or archive") captain.credits = price if DATA.buy(progress,captain,profile,120): failures.append("Duplicate purchase") if captain.credits != price: failures.append("Duplicate charged") if progress.deuter != 500000: failures.append("Purchase consumed fuel") var clone: Resource = progress.duplicate(true) if clone.distant_maps != progress.distant_maps: failures.append("Archive not preserved") return {"failures":failures,"offers_checked":500,"beyond_120_supported":true}