From 3feac39b511f586e89f7c0e53a5636d1430e3d8d Mon Sep 17 00:00:00 2001 From: slaguru666 <111923774+slaguru666@users.noreply.github.com> Date: Tue, 22 Sep 2026 22:47:55 +0100 Subject: [PATCH] WEAPONS: eight natural attacks, so an animal can fight as itself MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The catalogue had `punch` (1d3) and `grasp` (1d6+1 blunt) and nothing else a creature owns. Every biter and gorer in the bestiary therefore carried a grasping limb and stated its real damage in tactics prose, which simulate.mjs cannot read. Two silent consequences: the measured damage was the grasp's rather than the creature's, and because grasp is blunt, the edged and piercing wound paths never fired for any animal in the game — a boar's tusk, a wolf's bite and a gryphon's talon all resolved as blunt. bite 1d6 piercing gore 1d8+1 piercing claw 1d6 edged hoof 1d6+2 blunt talon 1d6+1 piercing trample 1d10 blunt beak 1d6+1 piercing constrict 1d6 blunt All fam "brawl", like punch and grasp, so they need no new skill family and arrive usable. Calibrated against the melee line already in the table: dagger 1d4+2, baton 1d6+2, machete 1d8+1, prybar 1d10. Reported independently by three of the four bestiary authors. All 23 guards pass. Nothing uses these yet — the creatures are re-pointed next. Co-Authored-By: Claude Opus 5 --- tools/content.mjs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/tools/content.mjs b/tools/content.mjs index 489b4e5..2ddd4b9 100644 --- a/tools/content.mjs +++ b/tools/content.mjs @@ -109,6 +109,29 @@ export const WEAPONS = [ // of them are Vesh; it is the generic heavy natural attack and now says so. The KEY is // unchanged, so every kit reference and every built pack still resolves. { key: "grasp", name: "Grasping limb", cls: "melee", fam: "brawl", spec: "", dmg: "1d6+1", wound: "blunt", mod: true, ranges: [0,0,0], fire: "", cap: 0, mass: 0 }, + + /* --- natural attacks --------------------------------------------------------- * + * Added because the bestiary could not express what an animal does. Until now the + * only natural attacks were `punch` (1d3) and `grasp` (1d6+1, blunt), so every + * biter and gorer in the book carried a grasping limb and stated its real damage + * in its tactics prose — which simulate.mjs cannot read. Two consequences, both + * silent: the measured damage was the grasp's and not the creature's, and because + * `grasp` is blunt, the edged and piercing wound paths never fired for any animal + * in the game. A boar's tusk, a wolf's bite and a gryphon's talon all resolved as + * blunt trauma. + * + * All of these are `fam: "brawl"` — a creature rolls its Brawl to use its own body, + * the same as `punch` and `grasp` — so they arrive with a skill every creature has + * and need no new skill family. Damage is calibrated against the melee line already + * in this table: dagger 1d4+2, baton 1d6+2, machete 1d8+1, prybar 1d10. */ + { key: "bite", name: "Bite", cls: "melee", fam: "brawl", spec: "", dmg: "1d6", wound: "piercing", mod: true, ranges: [0,0,0], fire: "", cap: 0, mass: 0 }, + { key: "claw", name: "Claw", cls: "melee", fam: "brawl", spec: "", dmg: "1d6", wound: "edged", mod: true, ranges: [0,0,0], fire: "", cap: 0, mass: 0 }, + { key: "talon", name: "Talon", cls: "melee", fam: "brawl", spec: "", dmg: "1d6+1", wound: "piercing", mod: true, ranges: [0,0,0], fire: "", cap: 0, mass: 0 }, + { key: "beak", name: "Beak", cls: "melee", fam: "brawl", spec: "", dmg: "1d6+1", wound: "piercing", mod: true, ranges: [0,0,0], fire: "", cap: 0, mass: 0 }, + { key: "gore", name: "Horn / tusk", cls: "melee", fam: "brawl", spec: "", dmg: "1d8+1", wound: "piercing", mod: true, ranges: [0,0,0], fire: "", cap: 0, mass: 0 }, + { key: "hoof", name: "Hoof / kick", cls: "melee", fam: "brawl", spec: "", dmg: "1d6+2", wound: "blunt", mod: true, ranges: [0,0,0], fire: "", cap: 0, mass: 0 }, + { key: "trample", name: "Trample", cls: "melee", fam: "brawl", spec: "", dmg: "1d10", wound: "blunt", mod: true, ranges: [0,0,0], fire: "", cap: 0, mass: 0 }, + { key: "constrict", name: "Constriction", cls: "melee", fam: "brawl", spec: "", dmg: "1d6", wound: "blunt", mod: true, ranges: [0,0,0], fire: "", cap: 0, mass: 0 }, { key: "shortbow", name: "Hunting bow", cls: "bow", fam: "missile_weapon",spec: "bow", dmg: "1d6+1", wound: "piercing", mod: false, ranges: [30,60,90], fire: "single", cap: 12, mass: 1 }, { key: "pistol_light", name: "Compact pistol", cls: "firearm", fam: "firearm", spec: "pistol", dmg: "1d6+2", wound: "piercing", mod: false, ranges: [10,30,90], fire: "rapid", cap: 8, mass: 0.7, trad: "tradition_agency" }, { key: "pistol_med", name: "Service pistol", cls: "firearm", fam: "firearm", spec: "pistol", dmg: "1d8+2", wound: "piercing", mod: false, ranges: [10,30,90], fire: "rapid", cap: 15, mass: 1.1, trad: "tradition_agency" },