Files
RingBRP/system.json
T
slaguru666andClaude Opus 5 24b1aaa682 Development: skills improve from what beat you, not what worked
Reversed experience. A skill is marked when it FAILS - failure or fumble - and
never when it works, and the improvement roll is the same reversal: roll OVER
your rating and the skill goes up 1d6. Nobody learns anything from the lock that
opened first time.

The two halves pull against each other on purpose, so ratings converge instead of
running away. Simulated over 2000 campaigns: a 10% and an 85% skill start 75
points apart and are 11 apart after 60 cases.

- rules.mjs owns it: DEVELOPMENT, developmentMarksOn, developmentImproves,
  developmentCeiling, developmentGainFor
- trainingCap has been on the skill schema and the item sheet since it was
  written and nothing has ever read it. Development reads it now: a skill stops
  at its own cap, and everything else stops at DEVELOPMENT.ceiling, because a
  d6 gain could otherwise push a 98% skill past 100
- GM opens the phase from a GM-only toggle in the token controls; it posts a
  card naming every agent and their marked count, and puts a Development button
  on each sheet. Players press their own
- the toggle re-reads the setting on change, since getSceneControlButtons only
  fires at load and the button would otherwise lie if the phase were opened by
  the API or a second GM
- rules journal and player primer rewritten from the tables; the old text
  described the pre-reversal rule on both halves
- 7 spot-checks, 4 behaviour tests; verified end to end in a running Foundry

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 23:23:03 +01:00

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.5.0",
"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"
}