Every guard here reports a number per creature, and a number cannot say why a fight went the way it did. That gap is what produced R-258 through R-260: each written from a side harness built to watch a fight, each modelling something slightly different from the game, two of the three wrong in ways no guard could catch because no guard was involved. runFight takes an optional `say` sink. It reports what the simulator already decided — the attack roll and its target, a defence and the penalty it was made at, the landing level after a dodge downgrades it, damage against armour before and after armourAgainst, the location, major wounds, disablement, death. It never touches the generator, so a narrated fight and a silent one are the same fight; check-lethality and check-focus both still match their baselines exactly with the hook in place. tools/playthrough.mjs (npm run play) is its consumer, in the same commit deliberately: a hook with no reader is the exact defect this project keeps finding in its own rules, and adding one to the measurement pipeline with only a scratchpad file calling it would have been committing the thing I have spent the session removing. Pack size comes from focus-baseline.json so the fight you read is the fight check-focus measures; creatures recorded as pinned are played solo. Three redcaps, seed 20260913, same seed both ways. Spread fire: wiped in 10 rounds, 3 dead, and all three redcaps still standing — 39 hit points spread three ways so that none of it finished anything. Focus fire: same opening, diverging at one target choice in round 1, party wins in 20 with two up. The +13.2 points check-focus records, seen once instead of averaged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
29 lines
1.2 KiB
JSON
29 lines
1.2 KiB
JSON
{
|
|
"name": "ringbrp",
|
|
"version": "0.9.0",
|
|
"description": "The Custodians — a Basic Roleplaying game of crossings, for Foundry VTT",
|
|
"main": "ringbrp.mjs",
|
|
"scripts": {
|
|
"build": "node tools/build-packs.mjs && node tools/update-readme.mjs",
|
|
"icons": "node tools/make-icons.mjs",
|
|
"portraits": "node tools/make-portraits.mjs",
|
|
"bestiary": "node tools/bestiary.mjs",
|
|
"play": "node tools/playthrough.mjs",
|
|
"mj": "node tools/mj-queue.mjs",
|
|
"simulate": "node tools/simulate.mjs",
|
|
"check": "bun tools/check-rules.mjs && bun tools/check-kits.mjs && bun tools/check-lang.mjs && bun tools/check-templates.mjs && bun tools/check-behaviour.mjs && bun tools/check-scenarios.mjs && bun tools/check-rollable.mjs && bun tools/check-creatures.mjs && bun tools/check-anatomy.mjs && bun tools/check-lethality.mjs && bun tools/check-focus.mjs && bun tools/check-bestiary.mjs",
|
|
"test": "bun run check",
|
|
"readme": "bun tools/update-readme.mjs"
|
|
},
|
|
"keywords": [],
|
|
"author": "Tim Evans (slaguru666)",
|
|
"license": "SEE LICENSE.txt",
|
|
"type": "commonjs",
|
|
"dependencies": {
|
|
"classic-level": "^3.0.0"
|
|
},
|
|
"devDependencies": {
|
|
"handlebars": "^4.7.9"
|
|
}
|
|
}
|