extends Node const BAL = preload("res://scripts/levels/level_balance.gd") func _ready() -> void: var outcomes: Array = [] for style in ["diverse", "random"]: for trial in 300: var captain := CaptainProgress.new() captain._skill_rng.seed = 81723 + trial var rng := RandomNumberGenerator.new() rng.seed = 55001 + trial var all_types := 0 var all_ranks := 0 for level in range(1, 51): for tier in BAL.enemy_tiers(level): captain.reward_enemy(level, tier, 1.0, 1.0) while captain.learning_points > 0: captain.prepare_skill_offers() if captain.skill_offers.is_empty(): break var pick: String = captain.skill_offers[rng.randi_range(0, captain.skill_offers.size() - 1)] if style == "diverse": for skill in captain.skill_offers: if captain.get_skill_rank(skill) < captain.get_skill_rank(pick): pick = skill assert(captain.train_skill(pick)) if captain.skills.size() == 9 and all_types == 0: all_types = level if captain.get_spent_learning_points() == 27 and all_ranks == 0: all_ranks = level outcomes.append({"style": style, "trial": trial, "all_types": all_types, "all_ranks": all_ranks}) var f := FileAccess.open("res://artifacts/balance_skill_paths.json", FileAccess.WRITE) f.store_string(JSON.stringify(outcomes)) f.close() print("BALANCE_SKILL_PATHS: PASS 600 seeded skill paths using actual offers, training and XP") get_tree().quit()