extends SceneTree const Bridge = preload("res://entry/battle_sim_bridge.gd") const CR = preload("res://p10_0/content_registry.gd") const ContractRun = preload("res://domain/contract_run.gd") func _initialize() -> void: call_deferred("_run") func _run() -> void: var catalog: Dictionary = CR.snapshot() var enemy_ids: Array = [] for row in Array(catalog.get("enemies", [])): if int(Dictionary(row).get("region", 0)) == 8: enemy_ids.append(str(Dictionary(row).get("id", ""))) var meta := {} for eid in enemy_ids: meta[eid] = {"class": "elite", "level": 23} var professions := ["PF-B01", "PF-B02", "PF-B05", "PF-B04", "PF-B03", "PF-B09", "PF-B08", "PF-B07", "PF-B06"] var recruits: Array = [] var pool := {"front": [], "rear": []} for row in Array(catalog.get("equipment", [])): var entry: Dictionary = Dictionary(row) var fit := str(entry.get("fit", "any")).to_lower() var key := "front" if fit.contains("front") else ("rear" if fit.contains("rear") else "") if key != "" and Array(pool[key]).size() < 3: pool[key].append(str(entry.get("id", ""))) for index in range(professions.size()): var fit := "front" if index < 5 else "rear" recruits.append({"recruit_id": "R-%d" % (index+1), "profession_id": professions[index], "level": 23, "trait_id": "", "might": 31, "finesse": 30, "insight": 29, "vigor": 32, "resolve": 30, "equipped_item_id": str(Array(pool[fit])[0])}) var formation: Array = [] for recruit in recruits: formation.append(str(Dictionary(recruit).get("recruit_id", ""))) var encounter := ContractRun.ordinary_encounter(8, enemy_ids, 12, 0, 10) var ids: Array = [] for entry in encounter: ids.append(str(Dictionary(entry).get("enemy_id", ""))) print("encounter: ", ", ".join(ids)) var result: Dictionary = Bridge.run("dbg-late", formation, recruits, ids, 8, meta) print("outcome=%s ticks=%s" % [str(result.get("outcome")), str(result.get("ticks"))]) var seen := {} for record in Array(result.get("journal", [])): var entry: Dictionary = Dictionary(record) var key := "%s:%s:%s" % [str(entry.get("side")), str(entry.get("actor")), str(entry.get("action"))] if str(entry.get("kind", "")) == "damage": var dmg_key := "DMG " + key + " amount=" + str(entry.get("amount")) seen[dmg_key] = int(seen.get(dmg_key, 0)) + 1 var keys: Array = seen.keys() keys.sort() for k in keys.slice(0, 25): print(k) quit(0)