Files
RingBRP/template.json
T
slaguru666andClaude Opus 5 6ed9ded362 Armour covers what it covers, and Coherence moves to the vitals
Asking for the type of armour per location turned out not to be a display request.
Every equipped piece added its points to EVERY location, so a Brodie helmet protected
your shins and a cuirass protected your skull — with a catalogue containing sallets,
lobster-tail helmets and three cuirasses, that could not be printed without the sheet
saying something visibly false.

Armour now declares coverage as a named set rather than a list of locations, because a
piece has to fit whatever body wears it: all, torso, torsoArms, torsoLimbs, head. The
sets expand to location KINDS, so a cuirass covers a baseline torso and a vesh trunk
and ridge without either knowing the other exists. Unstated coverage is `all`, so
anything that does not declare behaves as everything did before. Eighteen of the
twenty-five catalogue pieces are not whole-body and now say so.

The trap was double counting: hitLocationRoll subtracted the global worn total PLUS
the body's own armour at that location, which was right while armour was global and
becomes a double count the moment a location knows its own pieces. It reads the
location's total and nothing else, verified by firing fourteen hits of 10 damage
across every location and asserting damage applied == 10 - that location's armour.

A single ARMOUR number no longer exists, so the header shows the torso with "0-8 by
location" beside it when the rest of you is not that. This is a real difficulty
change: limbs are frequently bare and limbs are 12 of 20 on the melee table.

Coherence moves out of the derived strip into the vitals at hit-point size, with its
band under it and the box reddening as it falls.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 10:33:04 +01:00

467 lines
9.6 KiB
JSON

{
"Actor": {
"types": [
"character",
"npc",
"expedition"
],
"templates": {
"creature": {
"characteristics": {
"str": {
"value": 13
},
"siz": {
"value": 13
},
"con": {
"value": 13
},
"int": {
"value": 13
},
"pow": {
"value": 13
},
"dex": {
"value": 13
},
"cha": {
"value": 13
},
"edu": {
"value": 13
}
},
"marksmanship": {
"style": "reflex",
"chosenStyle": "reflex"
},
"speciesProfile": "baseline",
"locationDamage": {},
"hp": {
"value": 26,
"max": 26
},
"majorWound": {
"value": 9
},
"wounds": [],
"familiarities": {
"traditions": [
"tradition_home"
],
"environments": []
},
"combat": {
"defencesThisRound": 0,
"defenceTypeLock": "",
"stance": "normal",
"secondAttackUsed": false,
"aiming": {
"active": false,
"targetUuid": "",
"bonus": 0
}
},
"notes": "",
"coherence": {
"value": 10,
"max": 10,
"drift": []
}
}
},
"character": {
"templates": [
"creature"
],
"age": {
"chronological": 30,
"physiological": 30
},
"pursuits": [],
"biography": "",
"rank": "",
"dying": {
"rounds": 0,
"stabilised": false,
"dead": false,
"lastEntry": ""
}
},
"npc": {
"templates": [
"creature"
],
"role": "",
"morale": {
"downThreshold": 2,
"note": ""
},
"naturalArmour": {
"value": 0
},
"tactics": "",
"dying": {
"rounds": 0,
"stabilised": false,
"dead": false,
"lastEntry": ""
}
},
"expedition": {
"supply": {
"value": 8,
"max": 10
},
"power": {
"value": 6,
"max": 10
},
"integrity": {
"value": 10,
"max": 10
},
"integrityMode": "abstract",
"assets": [],
"members": [],
"journey": {
"destinationId": "",
"destinationName": "",
"destinationKnowledge": "rumoured",
"currentLeg": 0,
"elapsedDays": 0,
"siteTableId": "",
"hazardTableId": "",
"legs": [],
"returnClock": 0
},
"standings": [],
"notes": "",
"across": false,
"crossingModifier": 0,
"salvageEra": "modern"
}
},
"Item": {
"types": [
"skill",
"weapon",
"armour",
"gear",
"device",
"discovery",
"project",
"material",
"group",
"talent",
"power",
"vehicle",
"authority"
],
"templates": {
"physical": {
"massKg": 0,
"quantity": 1,
"equipped": false,
"carried": true,
"traditionIds": [
"tradition_home"
],
"description": ""
},
"describable": {
"description": ""
}
},
"skill": {
"templates": [
"describable"
],
"familyId": "",
"specialisationId": "",
"categoryId": "mental",
"base": {
"mode": "flat",
"value": 5,
"formula": ""
},
"value": 5,
"trainingCap": null,
"transferGroup": "",
"experienceTicked": false,
"experienceEligible": true,
"canBeTaught": true
},
"weapon": {
"templates": [
"physical"
],
"weaponClass": "melee",
"skillFamilyId": "",
"skillSpecialisationId": "",
"damage": {
"mode": "single",
"formula": "1d6",
"short": "",
"medium": "",
"long": ""
},
"appliesDamageModifier": true,
"woundType": "blunt",
"monofilament": false,
"fireMode": "",
"ranges": {
"short": 0,
"medium": 0,
"long": 0
},
"ammo": {
"capacity": 0,
"loaded": 0,
"reserve": 0,
"reloadRounds": 1
},
"energyPerShot": 0,
"damageTags": [
"kinetic"
],
"coherenceCost": 0
},
"armour": {
"templates": [
"physical"
],
"points": 1,
"coverage": "all",
"ignoredBy": [],
"degradation": {
"current": 0,
"max": 4
},
"coherenceCost": 0
},
"gear": {
"templates": [
"physical"
],
"powerDraw": 0,
"skillBonus": {
"skillFamilyId": "",
"value": 0
},
"researchFacility": "",
"coherenceCost": 0,
"optic": {
"kind": "",
"fits": "any"
},
"lightSource": false,
"lightReachM": 0
},
"device": {
"templates": [
"physical"
],
"documentId": "",
"materialId": "standard",
"integrity": {
"value": 0,
"max": 3
},
"functions": {
"operate": {
"skillFamilyId": "",
"skillSpecialisationId": "",
"difficulty": "average",
"difficultyAfterDiscovery": "",
"analogueIn": [],
"requiredDiscoveryIds": [],
"familiarityAfterDiscovery": -20,
"requiresIntegrity": 0,
"powerCost": 0,
"powerCostAfterDiscovery": null,
"powerCostOnFailure": 0,
"powerCostOnFumble": 0,
"hoursPerAttempt": 0,
"effect": "",
"onFailure": "",
"onFumble": ""
},
"diagnose": {
"skillFamilyId": "",
"skillSpecialisationId": "",
"difficulty": "average",
"difficultyAfterDiscovery": "",
"analogueIn": [],
"requiredDiscoveryIds": [],
"familiarityAfterDiscovery": -20,
"requiresIntegrity": 0,
"powerCost": 0,
"powerCostAfterDiscovery": null,
"powerCostOnFailure": 0,
"powerCostOnFumble": 0,
"hoursPerAttempt": 0,
"effect": "",
"onFailure": "",
"onFumble": ""
},
"repair": {
"skillFamilyId": "",
"skillSpecialisationId": "",
"difficulty": "difficult",
"difficultyAfterDiscovery": "",
"analogueIn": [],
"requiredDiscoveryIds": [],
"familiarityAfterDiscovery": -20,
"requiresIntegrity": 0,
"powerCost": 0,
"powerCostAfterDiscovery": null,
"powerCostOnFailure": 0,
"powerCostOnFumble": 0,
"hoursPerAttempt": 4,
"effect": "",
"onFailure": "",
"onFumble": ""
}
},
"coherenceCost": 0
},
"discovery": {
"templates": [
"describable"
],
"discoveryId": "",
"question": "",
"unlocks": [],
"publishable": true,
"published": false,
"earned": false
},
"project": {
"templates": [
"describable"
],
"projectId": "",
"question": "",
"status": "proposed",
"maxResearchers": 3,
"currentStep": 0,
"yieldsDiscoveryId": "",
"steps": [],
"complications": []
},
"material": {
"templates": [
"describable"
],
"materialId": "standard",
"immuneTo": [],
"slowTo": [],
"blocksSensors": [],
"neutrinoAbsorption": 0
},
"group": {
"templates": [
"describable"
],
"groupId": "",
"speciesId": "",
"population": 0,
"npcTemplateId": "",
"taboos": [],
"desires": [],
"correctOfferForm": "",
"rewardsByStanding": {
"1": [],
"2": [],
"3": []
}
},
"talent": {
"templates": [
"describable"
],
"talentId": "",
"category": "agency",
"summary": "",
"rule": "",
"skillBonus": {
"skillFamilyId": "",
"value": 0
},
"grantsAction": "",
"coherenceCost": 0,
"usesPerCase": 0,
"usedThisCase": 0
},
"power": {
"templates": [
"describable"
],
"artId": "",
"summary": "",
"rule": "",
"value": 0,
"coherenceCost": 1,
"pushCost": 2,
"pushRule": "",
"origin": "",
"experienceTicked": false
},
"vehicle": {
"templates": [
"physical"
],
"skillFamilyId": "pilot",
"skillSpecialisationId": "ground_car",
"crew": 1,
"seats": 4,
"cargoKg": 200,
"speedBand": "road",
"rangeKm": 400,
"hull": {
"value": 0,
"max": 20
},
"armourPoints": 0,
"terrain": [],
"powerDraw": 0,
"coherenceCost": 0,
"era": "modern",
"notes": "",
"hullMax": 20,
"heat": 0,
"signature": 0,
"stations": [],
"spacecraft": false,
"band": "close"
},
"authority": {
"templates": [
"describable"
],
"holderName": "",
"holderRole": "",
"issuer": "",
"scope": "read",
"scopeNote": "",
"trust": {
"value": 1,
"max": 4
},
"expires": "",
"redFlags": [],
"dossier": [],
"establishesRemit": false,
"timesWidened": 0,
"mergeSteps": 0,
"burned": false,
"suspect": false,
"aiPosture": "",
"notes": ""
}
}
}