WEAPONS: eight natural attacks, so an animal can fight as itself

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 <noreply@anthropic.com>
This commit is contained in:
slaguru666
2026-09-22 22:47:55 +01:00
co-authored by Claude Opus 5
parent 32eaee1eb0
commit 3feac39b51
+23
View File
@@ -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 // 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. // 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 }, { 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: "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_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" }, { 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" },