Files
aetherbound-guild/runtime/tmp_probe.gd
T

37 lines
2.2 KiB
GDScript

extends SceneTree
const Simulation = preload("res://domain/battle_simulation.gd")
func _initialize() -> void: call_deferred("_run")
func _ally(action: Dictionary) -> Dictionary:
return {"id": "ally-0", "position": 0, "level": 5, "profession_id": "", "trait_ids": [],
"might": 20, "finesse": 10, "insight": 8, "vigor": 14, "resolve": 9,
"profession_base_hp": 400, "profession_base_tempo": 60, "profession_base_initiative": 90,
"weapon_power": 10, "focus_power": 2, "armor_guard": 5, "armor_ward": 3, "action": action}
func _enemy(id: String, pos: int, extra := {}) -> Dictionary:
var row := {"id": id, "position": pos, "profession_id": "", "profession_table": {},
"profession_base_hp": 3000, "profession_base_tempo": 1, "profession_base_initiative": 1,
"weapon_power": 0, "focus_power": 0, "armor_guard": 0, "armor_ward": 0,
"might": 1, "finesse": 1, "insight": 1, "vigor": 1, "resolve": 1}
row.merge(extra, true)
return row
func _run() -> void:
var pull := {"id": "hook", "base": 0, "coefficient": 0.0, "power_source": "physical_power",
"kind": "damage", "reach": 1, "target": "rearmost", "pull": 1}
var mate := _ally({"id": "w", "base": 0, "coefficient": 0.0, "power_source": "physical_power",
"kind": "damage", "reach": 1, "target": "frontmost"})
mate["id"] = "ally-1"
var wearer := _ally({"id": "w", "base": 0, "coefficient": 0.0, "power_source": "physical_power",
"kind": "damage", "reach": 1, "target": "frontmost"})
wearer["profession_base_tempo"] = 1
wearer["profession_base_initiative"] = 1
wearer["equipment_hooks"] = [{"hook": "on_advance", "implemented": true,
"effect": {"kind": "status_apply", "value": 2, "scope": "t", "rule": "mark_frontmost_on_foremost"}}]
var s: ABGBattleSimulation = Simulation.new()
s.setup("foremost", [mate, wearer], [_enemy("front", 0, {"action": pull}), _enemy("rear", 1)])
s.enemies[0].action = pull
print("PRE positions ", s.allies[0].position, " ", s.allies[1].position, " enemy act ", s.enemies[0].action)
s.run()
for r in s.journal:
print("E ", r.get("kind"), " actor=", r.get("actor"), " target=", r.get("target"), " from=", r.get("from"), " to=", r.get("to"), " steps=", r.get("steps"))
print("POST positions ", s.allies[0].position, " ", s.allies[1].position, " statuses=", s.enemies[0].statuses)
quit(0)