1.7.1 carried wounds across a change of body plan by moving the raw points. Playing it showed that is the wrong invariant. A location is disabled at its maximum and destroyed at twice it, those maxima come from `frac`, and the plans disagree — an arm is 0.35 of the body and a foreleg 0.42 — so moving the number silently changed the meaning. Measured across the 20 plan changes: 234 severity flips, 138 of them turning a location that was merely disabled into a destroyed one. A destroyed arm arrived as a working-ish foreleg; two disabled arms stacked onto one Vesh grasping limb and arrived destroyed. So severity is now the invariant. A hurt location arrives hurt, a disabled one disabled, a destroyed one destroyed; the points are rescaled to the destination's own maximum to keep that true, and two wounds sharing one location take the worse rather than the sum, because relabelling a creature's anatomy must not destroy a limb that nothing in play destroyed. Correspondence is now stated rather than inferred. Every location gains a plan-independent `slot` (lowerR, upperL, vital, head...), and the remap matches on slot first. The previous version inferred it from `kind` plus table order, which inverted left and right on every crossing: a wounded right arm came back as the opposite hind leg. Where a destination has no matching slot the fallback prefers the same side and the same height, so a wing becomes a foreleg rather than a hind leg and a left wing becomes a LEFT arm. The vesh and the cadence are not bilateral — one grasping limb, five interchangeable units — so their slots carry no side, which is a fix to my own first pass: giving them sided slots was a category error the side guard caught. check-anatomy now proves all four promises over every ordered pair and severity band: nothing is stranded, severity is preserved, left never becomes right and fore never becomes hind between bilateral plans, and no update deletes a wound it is also setting. 432 carried wounds, 0 flips, down from 234. Five induced failures confirm each assertion fires; two of my first attempts at those did NOT fire and were sharpened until they did. Played through in a live world: a church grim filed as a humanoid with a destroyed right arm, a disabled left arm and a hurt chest becomes a dog with a destroyed right foreleg, a disabled left foreleg and hurt forequarters, and converts back to exactly the wounds it started with. Its penalties correctly stop being manipulation and start being movement — a man with two ruined arms drops his weapon, a dog with two ruined forelegs cannot run. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
240 lines
5.5 KiB
JSON
240 lines
5.5 KiB
JSON
{
|
|
"id": "ringbrp",
|
|
"title": "The Custodians",
|
|
"description": "A Basic Roleplaying game of agents who cross the crossing to contain what should not be there — and who come back a little less from here each time.",
|
|
"version": "1.7.2",
|
|
"compatibility": {
|
|
"minimum": 13,
|
|
"verified": "14.364"
|
|
},
|
|
"authors": [
|
|
{
|
|
"name": "Tim Evans (slaguru666)"
|
|
}
|
|
],
|
|
"esmodules": [
|
|
"ringbrp.mjs"
|
|
],
|
|
"styles": [
|
|
"styles/ringbrp.css"
|
|
],
|
|
"languages": [
|
|
{
|
|
"lang": "en",
|
|
"name": "English",
|
|
"path": "lang/en.json"
|
|
}
|
|
],
|
|
"socket": false,
|
|
"initiative": "@characteristics.dex.value",
|
|
"grid": {
|
|
"distance": 3,
|
|
"units": "m"
|
|
},
|
|
"primaryTokenAttribute": "hp",
|
|
"secondaryTokenAttribute": null,
|
|
"packs": [
|
|
{
|
|
"name": "pregens",
|
|
"label": "The Custodians · Agents",
|
|
"path": "packs/pregens",
|
|
"type": "Actor",
|
|
"system": "ringbrp",
|
|
"ownership": {
|
|
"PLAYER": "OBSERVER",
|
|
"ASSISTANT": "OWNER"
|
|
}
|
|
},
|
|
{
|
|
"name": "npcs",
|
|
"label": "The Custodians · Natives & Threats",
|
|
"path": "packs/npcs",
|
|
"type": "Actor",
|
|
"system": "ringbrp",
|
|
"ownership": {
|
|
"PLAYER": "NONE",
|
|
"ASSISTANT": "OWNER"
|
|
}
|
|
},
|
|
{
|
|
"name": "skills",
|
|
"label": "The Custodians · Skill List",
|
|
"path": "packs/skills",
|
|
"type": "Item",
|
|
"system": "ringbrp"
|
|
},
|
|
{
|
|
"name": "talents",
|
|
"label": "The Custodians · Talents",
|
|
"path": "packs/talents",
|
|
"type": "Item",
|
|
"system": "ringbrp",
|
|
"ownership": {
|
|
"PLAYER": "OBSERVER",
|
|
"ASSISTANT": "OWNER"
|
|
}
|
|
},
|
|
{
|
|
"name": "powers",
|
|
"label": "The Custodians · The Quiet Arts",
|
|
"path": "packs/powers",
|
|
"type": "Item",
|
|
"system": "ringbrp",
|
|
"ownership": {
|
|
"PLAYER": "OBSERVER",
|
|
"ASSISTANT": "OWNER"
|
|
}
|
|
},
|
|
{
|
|
"name": "weapons",
|
|
"label": "The Custodians · Weapons",
|
|
"path": "packs/weapons",
|
|
"type": "Item",
|
|
"system": "ringbrp"
|
|
},
|
|
{
|
|
"name": "armour",
|
|
"label": "The Custodians · Armour",
|
|
"path": "packs/armour",
|
|
"type": "Item",
|
|
"system": "ringbrp"
|
|
},
|
|
{
|
|
"name": "gear",
|
|
"label": "The Custodians · Gear & Devices",
|
|
"path": "packs/gear",
|
|
"type": "Item",
|
|
"system": "ringbrp"
|
|
},
|
|
{
|
|
"name": "vehicles",
|
|
"label": "The Custodians · Transport",
|
|
"path": "packs/vehicles",
|
|
"type": "Item",
|
|
"system": "ringbrp"
|
|
},
|
|
{
|
|
"name": "primer",
|
|
"label": "The Custodians · Read this first (players)",
|
|
"path": "packs/primer",
|
|
"type": "JournalEntry",
|
|
"system": "ringbrp"
|
|
},
|
|
{
|
|
"name": "rules",
|
|
"label": "The Custodians · Rules",
|
|
"path": "packs/rules",
|
|
"type": "JournalEntry",
|
|
"system": "ringbrp"
|
|
},
|
|
{
|
|
"name": "throughtrain",
|
|
"label": "The Custodians · THROUGH TRAIN (crossing starter)",
|
|
"path": "packs/throughtrain",
|
|
"type": "Adventure",
|
|
"system": "ringbrp"
|
|
},
|
|
{
|
|
"name": "starter",
|
|
"label": "The Custodians · BLACK PLATFORM (starter case)",
|
|
"path": "packs/starter",
|
|
"type": "Adventure",
|
|
"system": "ringbrp"
|
|
},
|
|
{
|
|
"name": "lastadmission",
|
|
"label": "The Custodians · LAST ADMISSION (prologue)",
|
|
"path": "packs/lastadmission",
|
|
"type": "Adventure",
|
|
"system": "ringbrp"
|
|
},
|
|
{
|
|
"name": "prologue",
|
|
"label": "The Custodians · OPEN DAY (prologue)",
|
|
"path": "packs/prologue",
|
|
"type": "Adventure",
|
|
"system": "ringbrp"
|
|
},
|
|
{
|
|
"name": "slice",
|
|
"label": "The Custodians · The Ilfracombe Crossing",
|
|
"path": "packs/slice",
|
|
"type": "JournalEntry",
|
|
"system": "ringbrp"
|
|
},
|
|
{
|
|
"name": "tables",
|
|
"label": "The Custodians · Site & Hazard Tables",
|
|
"path": "packs/tables",
|
|
"type": "RollTable",
|
|
"system": "ringbrp"
|
|
},
|
|
{
|
|
"name": "expedition",
|
|
"label": "The Custodians · Case File: ILFRACOMBE",
|
|
"path": "packs/expedition",
|
|
"type": "Actor",
|
|
"system": "ringbrp",
|
|
"ownership": {
|
|
"PLAYER": "OBSERVER",
|
|
"ASSISTANT": "OWNER"
|
|
}
|
|
}
|
|
],
|
|
"packFolders": [
|
|
{
|
|
"name": "The Custodians",
|
|
"sorting": "m",
|
|
"color": "#18268d",
|
|
"folders": [
|
|
{
|
|
"name": "Scenarios",
|
|
"sorting": "m",
|
|
"packs": [
|
|
"throughtrain",
|
|
"lastadmission",
|
|
"prologue",
|
|
"starter",
|
|
"expedition",
|
|
"slice"
|
|
]
|
|
},
|
|
{
|
|
"name": "Characters",
|
|
"sorting": "m",
|
|
"packs": [
|
|
"pregens",
|
|
"npcs"
|
|
]
|
|
},
|
|
{
|
|
"name": "Equipment",
|
|
"sorting": "m",
|
|
"packs": [
|
|
"weapons",
|
|
"armour",
|
|
"gear",
|
|
"vehicles"
|
|
]
|
|
},
|
|
{
|
|
"name": "Rules & reference",
|
|
"sorting": "m",
|
|
"packs": [
|
|
"primer",
|
|
"rules",
|
|
"skills",
|
|
"talents",
|
|
"powers",
|
|
"tables"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"url": "https://gitea.timevans.uk/slaguru666/RingBRP",
|
|
"manifest": "https://gitea.timevans.uk/slaguru666/RingBRP/raw/branch/main/system.json",
|
|
"download": "https://gitea.timevans.uk/slaguru666/RingBRP/archive/main.zip",
|
|
"license": "LICENSE.txt"
|
|
}
|