45 lines
2.4 KiB
GDScript
45 lines
2.4 KiB
GDScript
@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.visit_offer(progress,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")
|
|
progress.distant_maps.clear()
|
|
if DATA.buy(progress,captain,profile,120): failures.append("Consumed map repurchased in same visit")
|
|
progress.visits[str(profile.id)] = 2
|
|
var next_map := DATA.visit_offer(progress,profile,120)
|
|
if next_map.id == map.id or next_map.seed == map.seed: failures.append("Revisit reused sector")
|
|
captain.credits = DATA.map_cost(next_map)
|
|
if not DATA.buy(progress,captain,profile,120): failures.append("Revisit purchase failed")
|
|
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}
|