Files
aetherbound-guild/runtime/tools/dbgd_tmp.gd
T

54 lines
2.3 KiB
GDScript

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)