CREATURE_FORGE_PLAN Part 3. `new` prints a spec as source in the shape the bestiary files are written in, `explain` prints the rule behind every value, `measure` fights it against the party check-lethality freezes, and `list` shows the knobs. The derivation is forge.mjs at the ROOT, beside rules.mjs and postings.mjs and under the same law: pure, no Foundry, no catalogues. Part 5 asks for an in-Foundry panel that forges a variant at the table and says it must not diverge from the CLI. One derivation in a module both import is the only way to guarantee that rather than argue it. Natural attacks now declare which body plans can make them, in the weapon catalogue, for the same reason a weapon already names the skill that fires it: the weapon is the thing that knows. Anatomy cannot answer it — a body plan records that a creature has a head, not that the head has horns. `explain` earned itself on the first run. A large brute derived with a baseline body could not gore, trample or hoof, and the trace said so; the finished statblock alone would have shipped bulls that bite. The role picks the body now, a non-baseline species overrides it, and --body beats both. check-forge (guard 26) derives all 450 combinations of role, size, tier and species and puts each through the bestiary's own validate(). Three mutations were planted in the forge to test it, and it caught one. Dropping the seed was caught. Dropping the brawl grant was a genuine no-op, since every role already lists brawl. Dropping the body-plan filter left all 450 rows green while the success line read "armed with something its body can use" — the guard read the location table and never used it. It checks each issued weapon against the catalogue's own declaration now, and the same mutation produces 500 failures. check-rules' inline-armour pattern matched any clamp containing the word, and false-positived three times in one evening on counts that were never damage. damageAfterArmour is a subtraction, so the pattern requires one. A guard that makes people contort working code to keep it quiet is training them badly. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
30 lines
1.7 KiB
JSON
30 lines
1.7 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-seam.mjs && bun tools/check-generator.mjs && bun tools/check-forge.mjs && 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-outcomes.mjs && bun tools/check-creatures.mjs && bun tools/check-powers.mjs && bun tools/check-anatomy.mjs && bun tools/check-lethality.mjs && bun tools/check-focus.mjs && bun tools/check-firstblood.mjs && bun tools/check-attackers.mjs && bun tools/check-fight-tail.mjs && bun tools/check-packs.mjs && bun tools/detention-tables.mjs --check && bun tools/bellhouse-plans.mjs --check && bun tools/check-cited.mjs && bun tools/check-figures.mjs && bun tools/check-handouts.mjs && bun tools/check-bestiary.mjs",
|
|
"test": "bun run check",
|
|
"readme": "bun tools/update-readme.mjs",
|
|
"tokens": "python3 tools/make-tokens.py"
|
|
},
|
|
"keywords": [],
|
|
"author": "Tim Evans (slaguru666)",
|
|
"license": "SEE LICENSE.txt",
|
|
"type": "commonjs",
|
|
"dependencies": {
|
|
"classic-level": "^3.0.0"
|
|
},
|
|
"devDependencies": {
|
|
"handlebars": "^4.7.9"
|
|
}
|
|
}
|