标准战斗流程
你的 Agent 要打一场战斗时,走这页的回路:开战时建立一次战斗目录,之后每个回合读上下文、执行动作、看回执,再决定下一步。
开战或接管一场已有战斗:
npm run fvtt:cdp -- --port 9230 --target-url autofvtt.criticalrole.top doctor
npm run fvtt:cdp -- --port 9230 --target-url autofvtt.criticalrole.top combat-snapshot
npm run fvtt:cdp -- --port 9230 --target-url autofvtt.criticalrole.top build-combat-catalog --out encounter.json
每个回合
npm run fvtt:cdp -- --port 9230 --target-url autofvtt.criticalrole.top combat-context --json '@encounter.json'
npm run fvtt:cdp -- --port 9230 --target-url autofvtt.criticalrole.top execute-turn --json '@turn.json' --include-context-after
推荐 turn.json:
{
"sourceTokenId": "pNPz2V5cFKYZmzds",
"actionKey": "greatsword.attack",
"targetTokenIds": ["SUnqlZmNomEYNOzh"],
"catalog": {
"version": 1,
"tokens": {}
}
}
execute-turn 默认不推进回合;需要在动作或动作序列结束后推进时,加 --advance 或在 JSON 顶层写 "advance": true。
多重攻击序列
多重攻击可以放在一个 actions 序列里,顶层 sourceTokenId、targetTokenIds 和 catalog 会作为每一下的默认值:
{
"sourceTokenId": "pNPz2V5cFKYZmzds",
"targetTokenIds": ["SUnqlZmNomEYNOzh"],
"catalog": {
"version": 1,
"tokens": {}
},
"actions": [
{ "actionKey": "claws.attack" },
{ "actionKey": "claws.attack" }
]
}
调试或临时调用时,也可以直接传真实 Foundry ID:
{
"sourceTokenId": "pNPz2V5cFKYZmzds",
"itemId": "CXwSa8DUIlIvjg9H",
"activityId": "dnd5eactivity000",
"targetTokenIds": ["SUnqlZmNomEYNOzh"],
"postDelayMs": 0
}
执行结果
执行结果会包含:
status:completed/no-workflow/erroritemCardIddamageRolledtokenDiffswarningstimings- 可选
combatAfter/contextAfter
序列模式会额外返回 sequence: true、actions[] 和 resolvedActions[];聚合 result 里包含整组的 status、actionCount、successCount、damageRolled、tokenDiffs、warnings 和 itemCardIds。
agent 判定结果时优先看 tokenDiffs,再看 chat flags。midi-qol raw damage 可能因为抗性、免疫、减半或 temp HP 和实际 HP diff 不一致。
