Add the Bond: 10 animal companions, with sheet support and rules

Companions were a single line on the Ranger's edge; now they are a real
subsystem, rollable or pickable, with art, tokens and a place on the sheet.

- New compendium "companions" (VANITY · Animal Companions): 10 beasts as full
  NPC actors with painted core artwork, droppable as tokens — wolf, hawk, owl,
  raven, hound, lynx, serpent, stag, great bat, ram. Each keeps the printed
  baseline (Grit 3, attacks at 3 dice) and differs in dodge (2-4d), senses and
  one distinctive trick, plus which companion action it favours.
- New d10 roll table, "The Bond — Animal Companions".
- Ranger sheet: the companion block is now a card — art, name, kind, attack,
  dodge, Grit (with a DOWNED flag), its trick, and one-click Help / Harry /
  Guard (each posting what it does to chat) plus Attack and Dodge rolls.
  "Roll the Bond" rolls the d10 and binds the beast straight onto the sheet.
- template.json: companion gains kind, img, dodge, trick.
- Rules updated in both places: §9a in the Draft 13 source (so the in-world
  journal carries it) and a new Bond section in the player rulebook, which is
  regenerated to HTML + PDF (39pp).
- Version -> 0.9.6; README/FOUNDRY/system description updated (13 compendia).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-15 13:57:14 +01:00
co-authored by Claude Opus 4.8
parent b8ab9b4d97
commit 87ae980435
30 changed files with 316 additions and 109 deletions
+100 -27
View File
@@ -1,27 +1,65 @@
{
"Actor": {
"types": ["character", "npc"],
"types": [
"character",
"npc"
],
"character": {
"attributes": {
"brawn": { "value": 2 },
"flair": { "value": 2 },
"wits": { "value": 2 },
"poise": { "value": 2 }
"brawn": {
"value": 2
},
"flair": {
"value": 2
},
"wits": {
"value": 2
},
"poise": {
"value": 2
}
},
"grit": {
"value": 8,
"max": 8
},
"vanity": {
"value": 3
},
"karma": {
"value": 0
},
"glory": {
"value": 0
},
"grit": { "value": 8, "max": 8 },
"vanity": { "value": 3 },
"karma": { "value": 0 },
"glory": { "value": 0 },
"knacks": {
"fight": { "rank": 0 },
"shoot": { "rank": 0 },
"athletics": { "rank": 0 },
"stealth": { "rank": 0 },
"notice": { "rank": 0 },
"lore": { "rank": 0 },
"survive": { "rank": 0 },
"charm": { "rank": 0 },
"command": { "rank": 0 }
"fight": {
"rank": 0
},
"shoot": {
"rank": 0
},
"athletics": {
"rank": 0
},
"stealth": {
"rank": 0
},
"notice": {
"rank": 0
},
"lore": {
"rank": 0
},
"survive": {
"rank": 0
},
"charm": {
"rank": 0
},
"command": {
"rank": 0
}
},
"locked": {
"name": "",
@@ -32,12 +70,23 @@
"class": "",
"concept": "",
"fightingStyle": "",
"coin": { "cp": 0, "sp": 0, "gp": 15 }
"coin": {
"cp": 0,
"sp": 0,
"gp": 15
}
},
"companion": {
"name": "",
"grit": { "value": 3, "max": 3 },
"kind": "",
"img": "",
"grit": {
"value": 3,
"max": 3
},
"pool": 3,
"dodge": 3,
"trick": "",
"notes": ""
},
"notes": "",
@@ -45,18 +94,42 @@
},
"npc": {
"category": "mook",
"attack1": { "name": "Attack", "pool": 3, "note": "" },
"attack2": { "name": "", "pool": 0, "note": "" },
"defence": { "pool": 2, "note": "" },
"grit": { "value": 1, "max": 1 },
"resolve": { "value": 0, "max": 0 },
"attack1": {
"name": "Attack",
"pool": 3,
"note": ""
},
"attack2": {
"name": "",
"pool": 0,
"note": ""
},
"defence": {
"pool": 2,
"note": ""
},
"grit": {
"value": 1,
"max": 1
},
"resolve": {
"value": 0,
"max": 0
},
"nerve": 2,
"trick": "",
"notes": ""
}
},
"Item": {
"types": ["weapon", "armour", "gear", "spell", "edge", "vice"],
"types": [
"weapon",
"armour",
"gear",
"spell",
"edge",
"vice"
],
"weapon": {
"dice": 0,
"hands": 1,
@@ -98,4 +171,4 @@
"description": ""
}
}
}
}