From fbc7b57b919f489ba4512533d81392f33bdfca90 Mon Sep 17 00:00:00 2001 From: Cal Corum Date: Sat, 20 Dec 2025 10:18:15 -0600 Subject: [PATCH] Add 13 Artificials creatures to bestiary compendium MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit New creatures: Crawling Wall, Dungeonheart, Flying Spellbook, Flying Sword, Joust Guardian, Golem Flesh, Homunculus, Living Statue Crystal, Necrophidius, Potead (Small/Medium/Large), Ripworm. Fixed ID collisions for Living Statue variants. Bestiary now contains 240 creatures total. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- packs/_source/bestiary/crawling-wall.json | 17 +++--- packs/_source/bestiary/dungeonheart.json | 17 +++--- packs/_source/bestiary/flying-spellbook.json | 10 ++-- packs/_source/bestiary/flying-sword.json | 53 +++++++++++++++++++ packs/_source/bestiary/golem-flesh.json | 51 ++++++++++++++++++ packs/_source/bestiary/homunculus.json | 8 +-- packs/_source/bestiary/joust-guardian.json | 10 ++-- .../bestiary/living-statue-crystal.json | 49 +++++++++++++++++ .../_source/bestiary/living-statue-iron.json | 4 +- packs/_source/bestiary/necrophidius.json | 51 ++++++++++++++++++ packs/_source/bestiary/potead-large.json | 6 +-- packs/_source/bestiary/potead-medium.json | 6 +-- packs/_source/bestiary/potead-small.json | 6 +-- packs/_source/bestiary/ripworm.json | 51 ++++++++++++++++++ 14 files changed, 302 insertions(+), 37 deletions(-) create mode 100644 packs/_source/bestiary/flying-sword.json create mode 100644 packs/_source/bestiary/golem-flesh.json create mode 100644 packs/_source/bestiary/living-statue-crystal.json create mode 100644 packs/_source/bestiary/necrophidius.json create mode 100644 packs/_source/bestiary/ripworm.json diff --git a/packs/_source/bestiary/crawling-wall.json b/packs/_source/bestiary/crawling-wall.json index 04f2d01..d88c878 100644 --- a/packs/_source/bestiary/crawling-wall.json +++ b/packs/_source/bestiary/crawling-wall.json @@ -12,7 +12,7 @@ }, "tl": 6.1, "armor": 3, - "morale": 7, + "morale": 12, "zone": "frontline", "size": "huge", "beingType": "artificial", @@ -22,13 +22,13 @@ "appearing": "1", "senses": {}, "movement": {}, - "immunities": [], - "weaknesses": [], + "immunities": ["poison"], + "weaknesses": ["blunt"], "resistances": [], "actions": [ { "name": "Actions", - "description": "Multi-Attack: 1\u00d7Grasp and 1\u00d7Crush Grasp [Melee Attack]: 4 (d8) and Restrained Crush [Rush]: Any Huge or smaller Being in its path is pushed in front of it for the Move. If there is no open space within Close for the Being to go when this happens, it takes 3 (d6) for every 5' of Speed this Being has remaining.\nImmutable: It can't be transformed.", + "description": "Multi-Attack: 1\u00d7Grasp and 1\u00d7Crush\nGrasp [Melee Attack]: 4 (d8) and Restrained\nCrush [Rush]: Any Huge or smaller Being in its path is pushed in front of it for the Move. If there is no open space within Close for the Being to go when this happens, it takes 3 (d6) for every 5' of Speed this Being has remaining.", "attackType": "special", "damage": "", "damageType": "", @@ -36,9 +36,14 @@ "properties": [] } ], - "abilities": [], + "abilities": [ + { + "name": "Abilities", + "description": "Immutable: It can't be transformed.\nStatus Immunities: Paralyzed, Sickened, Suffocating" + } + ], "loot": "", - "gmNotes": "" + "gmNotes": "A silent, moving wall that catches its prey by crushing it and soaking the pulp through its cracks. They may have arms and a mouth." }, "reviewed": false } diff --git a/packs/_source/bestiary/dungeonheart.json b/packs/_source/bestiary/dungeonheart.json index 19144e2..5169449 100644 --- a/packs/_source/bestiary/dungeonheart.json +++ b/packs/_source/bestiary/dungeonheart.json @@ -12,8 +12,8 @@ }, "tl": 1.7, "armor": 1, - "morale": 7, - "zone": "midline", + "morale": 12, + "zone": "backline", "size": "huge", "beingType": "artificial", "speed": { @@ -23,12 +23,12 @@ "senses": {}, "movement": {}, "immunities": [], - "weaknesses": [], + "weaknesses": ["pierce"], "resistances": [], "actions": [ { "name": "Actions", - "description": "Spawn: At the start of its Turn, roll d4. On a roll of 2 to 4, this Being spawns an Ally Being (d6, roll two and take the highest if this Being is at half HP or lower), which appears in the nearest open space:\n1\t\t Giant Spider (p. 132) 2\t\tBasilisk (p. 135) 3\t\t Owl Bear (p. 145) 4\t\t Rust Monster (p. 148) 5\t\t Warp Beast (p. 151) 6\t\t Gelatinous Cube (p. 172)", + "description": "Spawn: At the start of its Turn, roll d4. On a roll of 2 to 4, this Being spawns an Ally Being (d6, roll two and take the highest if this Being is at half HP or lower), which appears in the nearest open space:\n1 Giant Spider\n2 Basilisk\n3 Owl Bear\n4 Rust Monster\n5 Warp Beast\n6 Gelatinous Cube", "attackType": "special", "damage": "", "damageType": "", @@ -36,9 +36,14 @@ "properties": [] } ], - "abilities": [], + "abilities": [ + { + "name": "Abilities", + "description": "Status Immunities: Berserk, Charmed, Confused, Dazed, Frightened, Incapacitated, Suffocating, Unconscious" + } + ], "loot": "", - "gmNotes": "" + "gmNotes": "The creation of a dungeonheart involves opening a summoning portal within a living troll's heart. The troll must survive the initial process to guarantee its regeneration works. Over time, the troll's blood and tissue seeps through the portal, which spits out all manner of bizarre creatures." }, "reviewed": false } diff --git a/packs/_source/bestiary/flying-spellbook.json b/packs/_source/bestiary/flying-spellbook.json index 363e068..6f146b5 100644 --- a/packs/_source/bestiary/flying-spellbook.json +++ b/packs/_source/bestiary/flying-spellbook.json @@ -12,7 +12,7 @@ }, "tl": 0.7, "armor": 0, - "morale": 7, + "morale": 12, "zone": "backline", "size": "small", "beingType": "artificial", @@ -26,8 +26,8 @@ "movement": { "fly": true }, - "immunities": [], - "weaknesses": [], + "immunities": ["poison"], + "weaknesses": ["fire"], "resistances": [], "actions": [ { @@ -43,11 +43,11 @@ "abilities": [ { "name": "Abilities", - "description": "Antimagic Vulnerability: It is Dazed for Cd4 if affected by the Dispel Spell or other antimagic.\nNimble: Attacks against it can\u2019t be Favored if it can Move.\nBestiary Bestiary 118 118 Flying Sword TL: 2.3 Small Artificial An enchanted sword that dances through the air.\nHD: 1 (1 HP)\b Speed: 0' (Fly 50') Zone: Frontline Morale: -\b # Appearing: d4 Senses: Blindsight Armor: 3 [as Plate] Immune: Poison Status Immunities: Charmed, Frightened, Sickened, Suffocating ACTIONS Slash [Melee Attack]: 4 (d8) ABILITIES Antimagic Vulnerability: It is Dazed (Cd4) if affected by the Dispel Spell or other antimagic.\nNimble: Attacks against it can\u2019t be Favored if it can Move." + "description": "Antimagic Vulnerability: It is Dazed for Cd4 if affected by the Dispel Spell or other antimagic.\nNimble: Attacks against it can't be Favored if it can Move.\nStatus Immunities: Sickened, Suffocating\nFly Speed: 30'" } ], "loot": "", - "gmNotes": "" + "gmNotes": "An animated spellbook that flies like a bird, capable of casting the magic written on its pages." }, "reviewed": false } diff --git a/packs/_source/bestiary/flying-sword.json b/packs/_source/bestiary/flying-sword.json new file mode 100644 index 0000000..6118753 --- /dev/null +++ b/packs/_source/bestiary/flying-sword.json @@ -0,0 +1,53 @@ +{ + "_id": "vgbdBstflyingswo", + "_key": "!actors!vgbdBstflyingswo", + "name": "Flying Sword", + "type": "npc", + "img": "icons/svg/mystery-man.svg", + "system": { + "hd": 1, + "hp": { + "value": 1, + "max": 1 + }, + "tl": 2.3, + "armor": 3, + "morale": 12, + "zone": "frontline", + "size": "small", + "beingType": "artificial", + "speed": { + "value": 0 + }, + "appearing": "d4", + "senses": { + "blindsight": true + }, + "movement": { + "fly": true + }, + "immunities": ["poison"], + "weaknesses": [], + "resistances": [], + "actions": [ + { + "name": "Actions", + "description": "Slash [Melee Attack]: 4 (d8)", + "attackType": "special", + "damage": "", + "damageType": "", + "range": "", + "properties": [] + } + ], + "abilities": [ + { + "name": "Abilities", + "description": "Antimagic Vulnerability: It is Dazed (Cd4) if affected by the Dispel Spell or other antimagic.\nNimble: Attacks against it can't be Favored if it can Move.\nStatus Immunities: Charmed, Frightened, Sickened, Suffocating\nFly Speed: 50'" + } + ], + "loot": "", + "gmNotes": "An enchanted sword that dances through the air." + }, + "reviewed": false +} diff --git a/packs/_source/bestiary/golem-flesh.json b/packs/_source/bestiary/golem-flesh.json new file mode 100644 index 0000000..774d96d --- /dev/null +++ b/packs/_source/bestiary/golem-flesh.json @@ -0,0 +1,51 @@ +{ + "_id": "vgbdBstgolemfles", + "_key": "!actors!vgbdBstgolemfles", + "name": "Golem, Flesh", + "type": "npc", + "img": "icons/svg/mystery-man.svg", + "system": { + "hd": 9, + "hp": { + "value": 40, + "max": 40 + }, + "tl": 4.7, + "armor": 0, + "morale": 10, + "zone": "frontline", + "size": "large", + "beingType": "artificial", + "speed": { + "value": 20 + }, + "appearing": "1", + "senses": { + "darkvision": true + }, + "movement": {}, + "immunities": ["cold", "poison", "shock"], + "weaknesses": ["fire"], + "resistances": [], + "actions": [ + { + "name": "Actions", + "description": "Multi-Attack: 2\u00d7Slam\nSlam [Melee Attack]: 9 (2d8 (+2 if this Being is Berserk))", + "attackType": "special", + "damage": "", + "damageType": "", + "range": "", + "properties": [] + } + ], + "abilities": [ + { + "name": "Abilities", + "description": "Bloodied Rage: At 20 HP or less, it is Berserk.\nFlame-Averse: If it can see fire or takes damage from fire, it is Frightened (Cd4).\nShock-Absorber: Shock damage rolls heal it instead.\nStatus Immunities: Charmed, Fatigued, Paralyzed, Sickened\nImmune to Physical from non-Relics" + } + ], + "loot": "", + "gmNotes": "A living automoton of stitched-together flesh, given life through electric strikes." + }, + "reviewed": false +} diff --git a/packs/_source/bestiary/homunculus.json b/packs/_source/bestiary/homunculus.json index cfff2a2..719370b 100644 --- a/packs/_source/bestiary/homunculus.json +++ b/packs/_source/bestiary/homunculus.json @@ -27,13 +27,13 @@ "movement": { "fly": true }, - "immunities": [], + "immunities": ["poison"], "weaknesses": [], "resistances": [], "actions": [ { "name": "Actions", - "description": "Bite [Melee Attack]: 1 (d3) and (1/Day) pass [Endure] or become Sickened (Cd6 Rounds, Unconscious until it takes damage).\nSpit Acid [Ranged Attack, Near]: 2 (d4) and Burning (Cd4) Bestiary Bestiary 120 120 Living Statue, Crystal TL: 2.6 Medium Artificial An animated crystal statue, capable of moving and attacking.\nHD: 3 (13 HP)\b Speed: 30' Zone: Frontline Morale: 11\b # Appearing: d4 Armor: 3 [as (+1) Chain] Immune: Poison Weak: Blunt Status Immunities: Blinded, Fatigued, Suffocating, Unconscious ACTIONS Weapon [Melee Attack]: 4 (d8) or (by Weapon)", + "description": "Bite [Melee Attack]: 1 (d3) and (1/Day) pass [Endure] or become Sickened (Cd6 Rounds, Unconscious until it takes damage).\nSpit Acid [Ranged Attack, Near]: 2 (d4) and Burning (Cd4)", "attackType": "special", "damage": "", "damageType": "", @@ -44,11 +44,11 @@ "abilities": [ { "name": "Abilities", - "description": "Immutable: It can't be transformed." + "description": "Status Immunities: Charmed, Sickened\nFly Speed: 40'" } ], "loot": "", - "gmNotes": "" + "gmNotes": "A tiny artificial creature, often created as a familiar or servant." }, "reviewed": false } diff --git a/packs/_source/bestiary/joust-guardian.json b/packs/_source/bestiary/joust-guardian.json index 9e23179..7c6eade 100644 --- a/packs/_source/bestiary/joust-guardian.json +++ b/packs/_source/bestiary/joust-guardian.json @@ -12,7 +12,7 @@ }, "tl": 6.3, "armor": 3, - "morale": 7, + "morale": 12, "zone": "frontline", "size": "large", "beingType": "artificial", @@ -22,13 +22,13 @@ "appearing": "1", "senses": {}, "movement": {}, - "immunities": [], + "immunities": ["poison"], "weaknesses": [], "resistances": [], "actions": [ { "name": "Actions", - "description": "Assault [Multi-Attack]: Lance and Cannon attack.\nLance [Melee Attack, Near]: 13 (2d12) Cannon [Ranged Attack (Sphere 10 foot)]: 11 (3d6)", + "description": "Assault [Multi-Attack]: Lance and Cannon attack.\nLance [Melee Attack, Near]: 13 (2d12)\nCannon [Ranged Attack (Sphere 10 foot)]: 11 (3d6)", "attackType": "special", "damage": "", "damageType": "", @@ -39,11 +39,11 @@ "abilities": [ { "name": "Abilities", - "description": "Immutable: It can't be transformed." + "description": "Immutable: It can't be transformed.\nStatus Immunities: Berserk, Charmed, Confused, Fatigued, Frightened, Unconscious, Sickened, Suffocating" } ], "loot": "", - "gmNotes": "" + "gmNotes": "A mechanical warrior from eons past, typically found guarding ruins of fallen advanced societies." }, "reviewed": false } diff --git a/packs/_source/bestiary/living-statue-crystal.json b/packs/_source/bestiary/living-statue-crystal.json new file mode 100644 index 0000000..70ccfa4 --- /dev/null +++ b/packs/_source/bestiary/living-statue-crystal.json @@ -0,0 +1,49 @@ +{ + "_id": "vgbdBstlvstcryst", + "_key": "!actors!vgbdBstlvstcryst", + "name": "Living Statue, Crystal", + "type": "npc", + "img": "icons/svg/mystery-man.svg", + "system": { + "hd": 3, + "hp": { + "value": 13, + "max": 13 + }, + "tl": 2.6, + "armor": 3, + "morale": 11, + "zone": "frontline", + "size": "medium", + "beingType": "artificial", + "speed": { + "value": 30 + }, + "appearing": "d4", + "senses": {}, + "movement": {}, + "immunities": ["poison"], + "weaknesses": ["blunt"], + "resistances": [], + "actions": [ + { + "name": "Actions", + "description": "Weapon [Melee Attack]: 4 (d8) or (by Weapon)", + "attackType": "special", + "damage": "", + "damageType": "", + "range": "", + "properties": [] + } + ], + "abilities": [ + { + "name": "Abilities", + "description": "Immutable: It can't be transformed.\nStatus Immunities: Blinded, Fatigued, Suffocating, Unconscious" + } + ], + "loot": "", + "gmNotes": "An animated crystal statue, capable of moving and attacking." + }, + "reviewed": false +} diff --git a/packs/_source/bestiary/living-statue-iron.json b/packs/_source/bestiary/living-statue-iron.json index 61162a2..e52a6b1 100644 --- a/packs/_source/bestiary/living-statue-iron.json +++ b/packs/_source/bestiary/living-statue-iron.json @@ -1,6 +1,6 @@ { - "_id": "vgbdBstlivingsta", - "_key": "!actors!vgbdBstlivingsta", + "_id": "vgbdBstlvstiron0", + "_key": "!actors!vgbdBstlvstiron0", "name": "Living Statue, Iron", "type": "npc", "img": "icons/svg/mystery-man.svg", diff --git a/packs/_source/bestiary/necrophidius.json b/packs/_source/bestiary/necrophidius.json new file mode 100644 index 0000000..75cf655 --- /dev/null +++ b/packs/_source/bestiary/necrophidius.json @@ -0,0 +1,51 @@ +{ + "_id": "vgbdBstnecrophid", + "_key": "!actors!vgbdBstnecrophid", + "name": "Necrophidius", + "type": "npc", + "img": "icons/svg/mystery-man.svg", + "system": { + "hd": 2, + "hp": { + "value": 9, + "max": 9 + }, + "tl": 2.0, + "armor": 2, + "morale": 12, + "zone": "frontline", + "size": "large", + "beingType": "artificial", + "speed": { + "value": 25 + }, + "appearing": "1", + "senses": { + "blindsight": true + }, + "movement": {}, + "immunities": ["poison"], + "weaknesses": ["blunt"], + "resistances": [], + "actions": [ + { + "name": "Actions", + "description": "Dance of Death [Cast, Remote | Will]: Dazed (Cd4)\nBite [Melee Attack]: 4 (d8) and pass [Endure] or become Sickened (Cd4, Paralyzed)", + "attackType": "special", + "damage": "", + "damageType": "", + "range": "", + "properties": [] + } + ], + "abilities": [ + { + "name": "Abilities", + "description": "Immutable: It can't be transformed.\nStatus Immunities: Fatigued, Sickened, Suffocating" + } + ], + "loot": "", + "gmNotes": "Slithering, animated bones with a serpentine form and humanoid head." + }, + "reviewed": false +} diff --git a/packs/_source/bestiary/potead-large.json b/packs/_source/bestiary/potead-large.json index 7a163ed..c5c53fb 100644 --- a/packs/_source/bestiary/potead-large.json +++ b/packs/_source/bestiary/potead-large.json @@ -22,7 +22,7 @@ "appearing": "2d6", "senses": {}, "movement": {}, - "immunities": [], + "immunities": ["fire", "poison"], "weaknesses": [], "resistances": [], "actions": [ @@ -39,11 +39,11 @@ "abilities": [ { "name": "Abilities", - "description": "Immutable: It can't be transformed.\nBestiary Bestiary 122 122 Ripworm TL: 3.1 Medium Artificial Tunneling automatons known to wreak havoc on structures by undermining its foundation. They can cut through solid rock and earth with ease.\nHD: 4 (18 HP)\b Speed: 20' Zone: Frontline Morale: 10\b # Appearing: d4 Senses: Seismicsense 60' Armor: 3 [as Plate] Immune: Poison Status Immunities: Fatigued, Sickened, Suffocating ACTIONS Ripsaw [Melee Attack]: 7 (2d6) ABILITIES Immutable: It can't be transformed.\nTunneller: Can Move through solid rock and earth, leaving a 3-foot tunnel in its path." + "description": "Immutable: It can't be transformed.\nStatus Immunities: Fatigued, Sickened, Suffocating" } ], "loot": "", - "gmNotes": "" + "gmNotes": "A living planter, it could fit a tree." }, "reviewed": false } diff --git a/packs/_source/bestiary/potead-medium.json b/packs/_source/bestiary/potead-medium.json index 4065b47..6e60d6f 100644 --- a/packs/_source/bestiary/potead-medium.json +++ b/packs/_source/bestiary/potead-medium.json @@ -22,7 +22,7 @@ "appearing": "2d6", "senses": {}, "movement": {}, - "immunities": [], + "immunities": ["fire", "poison"], "weaknesses": [], "resistances": [], "actions": [ @@ -39,11 +39,11 @@ "abilities": [ { "name": "Abilities", - "description": "Immutable: It can't be transformed." + "description": "Immutable: It can't be transformed.\nStatus Immunities: Fatigued, Sickened, Suffocating" } ], "loot": "", - "gmNotes": "" + "gmNotes": "A living cauldron, possibly animated by a brew." }, "reviewed": false } diff --git a/packs/_source/bestiary/potead-small.json b/packs/_source/bestiary/potead-small.json index 44007b2..5fdc6a8 100644 --- a/packs/_source/bestiary/potead-small.json +++ b/packs/_source/bestiary/potead-small.json @@ -22,7 +22,7 @@ "appearing": "2d6", "senses": {}, "movement": {}, - "immunities": [], + "immunities": ["fire", "poison"], "weaknesses": [], "resistances": [], "actions": [ @@ -39,11 +39,11 @@ "abilities": [ { "name": "Abilities", - "description": "Immutable: It can't be transformed." + "description": "Immutable: It can't be transformed.\nStatus Immunities: Fatigued, Sickened, Suffocating" } ], "loot": "", - "gmNotes": "" + "gmNotes": "A living pot, likely once held soup." }, "reviewed": false } diff --git a/packs/_source/bestiary/ripworm.json b/packs/_source/bestiary/ripworm.json new file mode 100644 index 0000000..0339a17 --- /dev/null +++ b/packs/_source/bestiary/ripworm.json @@ -0,0 +1,51 @@ +{ + "_id": "vgbdBstripworm", + "_key": "!actors!vgbdBstripworm", + "name": "Ripworm", + "type": "npc", + "img": "icons/svg/mystery-man.svg", + "system": { + "hd": 4, + "hp": { + "value": 18, + "max": 18 + }, + "tl": 3.1, + "armor": 3, + "morale": 10, + "zone": "frontline", + "size": "medium", + "beingType": "artificial", + "speed": { + "value": 20 + }, + "appearing": "d4", + "senses": { + "seismicsense": true + }, + "movement": {}, + "immunities": ["poison"], + "weaknesses": [], + "resistances": [], + "actions": [ + { + "name": "Actions", + "description": "Ripsaw [Melee Attack]: 7 (2d6)", + "attackType": "special", + "damage": "", + "damageType": "", + "range": "", + "properties": [] + } + ], + "abilities": [ + { + "name": "Abilities", + "description": "Immutable: It can't be transformed.\nTunneller: Can Move through solid rock and earth, leaving a 3-foot tunnel in its path.\nStatus Immunities: Fatigued, Sickened, Suffocating" + } + ], + "loot": "", + "gmNotes": "Tunneling automatons known to wreak havoc on structures by undermining its foundation. They can cut through solid rock and earth with ease." + }, + "reviewed": false +}