Files
dwroller/public/deathwatch-bestiary-extracted.json.backup.1755435777279.json
Alex caf8a03553 feat: Add scripts for upserting and validating bestiary data
- Implemented `upsert-allewis-from-5001.js` to fetch and update Allewis data from API.
- Created `upsert-missing-movement-from-5001.js` to fill missing movement and wounds data from API.
- Developed `upsert-missing-movement-from-pdfs.js` to extract movement and wounds from PDF text.
- Added `upsert-missing-profiles-from-pdfs.js` to fill missing profiles from PDF data.
- Introduced `upsert-missing-wounds-from-pdfs.js` to update wounds data from PDF sources.
- Created `validate-bestiary.js` to validate the structure of the bestiary JSON.
- Updated `BestiaryTab.jsx` component to display bestiary data with improved structure and search functionality.
- Added tests for `BestiaryTab` to ensure proper rendering and functionality.
2025-08-17 16:21:00 +02:00

2 lines
13 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{ "generatedAt": "2025-08-16T21:13:28.799Z", "count": 28, "results": [ { "bestiaryName": "Battle Servitor (Erioch-Pattern)", "book": "Deathwatch Core Rulebook", "page": "376", "pdf": "Deathwatch - Core Rulebook.pdf", "pageText": "tide. Indeed, the Genestealer, long an insidious threat that has troubled Mankind for millennia appears now to be a harbinger of the Tyranids, and the dim secrets of the ancient past hint at past threats, but never so widespread or potentially catastrophic as at present. In battle, the Tyranids are a horror beyond comprehension, a monstrous tide of merciless claw, venom, and fang that cannot be bargained with, reasoned with, or surrendered to. It strikes with the relentless fury of a rabid beast, yet it is driven by a cold and alien intelligence that makes every component of the swarm—from lowly flesh-boring parasites to gargantuan war-creatures the size of a Battle Titan—far more dangerous than any mere animal could ever be. Carried through the void on immense living bioships, the seemingly numberless and inexhaustible hive fleets are attracted to worlds rich with life like a great ocean predator may be drawn to blood in the water. They descend upon their prey-world, raining upon the prey...", "stats": { "profile": { "ws": 18, "bs": 15, "s": 14, "t": 78, "ag": 33, "int": 60, "per": 53, "wp": 45, "fel": 45 }, "movement": "7/14/21/42", "wounds": 120, "toughness": null, "skills": "Awareness (Per), Climb (S), Swim (S). Talents: Ambidextrous, Combat Master, Crushing Blow, Fearless, Heightened Senses (All), Psy Rating (8), Two Weapon Wielder (Melee), Swift Attack, Lightning Attack. Traits: Brutal Charge, Dark Sight, Fear 4 (Terrifying), Natural Armour (Bonded Exoskeleton), Multiple Arms, Unnatural Strength (×3), Unnatural Toughness (×3), Improved Natural Weapons (Scything Talons), Shadow in the Warp, Size (Massive), Synapse Creature, Tyranid. Armour: Bonded Exoskeleton (All 10). Weapons: Scything Talons (1d10+22 R; Pen 3). Gear: None. Special Rules Biomorph...", "talents": "Ambidextrous, Combat Master, Crushing Blow, Fearless, Heightened Senses (All), Psy Rating (8), Two Weapon Wielder (Melee), Swift Attack, Lightning Attack. Traits: Brutal Charge, Dark Sight, Fear 4 (Terrifying), Natural Armour (Bonded Exoskeleton), Multiple Arms, Unnatural Strength (×3), Unnatural Toughness (×3), Improved Natural Weapons (Scything Talons), Shadow in the Warp, Size (Massive), Synapse Creature, Tyranid. Armour: Bonded Exoskeleton (All 10). Weapons: Scything Talons (1d10+22 R; Pen 3). Gear: None. Special Rules Biomorph...", "traits": "Brutal Charge, Dark Sight, Fear 4 (Terrifying), Natural Armour (Bonded Exoskeleton), Multiple Arms, Unnatural Strength (×3), Unnatural Toughness (×3), Improved Natural Weapons (Scything Talons), Shadow in the Warp, Size (Massive), Synapse Creature, Tyranid. Armour: Bonded Exoskeleton (All 10). Weapons: Scything Talons (1d10+22 R; Pen 3). Gear: None. Special Rules Biomorph...", "armour": "Bonded Exoskeleton (All 10). Weapons: Scything Talons (1d10+22 R; Pen 3). Gear: None. Special Rules Biomorph...", "weapons": "Scything Talons (1d10+22 R; Pen 3). Gear: None. Special Rules Biomorph...", "gear": "None. Special Rules Biomorph...", "snippet": "tide. Indeed, the Genestealer, long an insidious threat that has troubled Mankind for millennia appears now to be a harbinger of the Tyranids...", "chosenOffset": -2 } }, { "bestiaryName": "Chaos Heretic", "book": "Deathwatch Core Rulebook", "page": "364", "pdf": "Deathwatch - Core Rulebook.pdf", "pageText": "e 248). Instead, the Hordes sheer weight of numbers is represented by the fact that its target may not Dodge or Parry...", "stats": { "profile": { "ws": 35, "bs": 25, "s": 30, "t": 30, "ag": 30, "int": 20, "per": 30, "wp": 40, "fel": 20 }, "movement": "3/6/9/18", "wounds": null, "toughness": null, "skills": "Awareness (Per), Climb (S), Speak Language (Low Gothic, Unholy Tongue) (Int), Swim (S), Survival (Int). Talents: Berserk Charge, Furious Assault, Melee Weapon Training (Primitive), Pistol Training (SP). Traits: Blood Soaked Tide (Horde), Size (Massive). Armour: Flak Robes and Brazen Carapace Armour (Horde 5) Weapons: Monoedged blade (1d10+3 R; Pen 2), Autopistol (30m; S/—/6;1d10+2 I; Pen 0; Clip 18; Reload Full).Gear: Respirator, 3 reloads for autopistol...", "talents": "Berserk Charge, Furious Assault, Melee Weapon Training (Primitive), Pistol Training (SP). Traits: Blood Soaked Tide (Horde), Size (Massive). Armour: Flak Robes and Brazen Carapace Armour (Horde 5) Weapons: Monoedged blade (1d10+3 R; Pen 2), Autopistol (30m; S/—/6;1d10+2 I; Pen 0; Clip 18; Reload Full).Gear: Respirator, 3 reloads for autopistol...", "traits": "Blood Soaked Tide (Horde), Size (Massive). Armour: Flak Robes and Brazen Carapace Armour (Horde 5) Weapons: Monoedged blade (1d10+3 R; Pen 2), Autopistol...", "armour": "Flak Robes and Brazen Carapace Armour (Horde 5) Weapons: Monoedged blade...", "weapons": "Monoedged blade (1d10+3 R; Pen 2), Autopistol (30m; S/—/6;1d10+2 I; Pen 0; Clip 18; Reload Full).Gear: Respirator, 3 reloads for autopistol...", "gear": "Respirator, 3 reloads for autopistol...", "snippet": "e 248). Instead, the Hordes sheer weight of numbers is represented by the fact that its target may not Dodge or Parry...", "chosenOffset": 1 } }, { "bestiaryName": "Chaos Space Marine", "book": "Deathwatch Core Rulebook", "page": "363", "pdf": "deathwatch-bestiary-extracted.backup.1755378403365.json", "pageText": " equal numbers, Elites can pose a deadly threat to a squad of Battle-Brothers...", "stats": { "profile": { "ws": 14, "bs": 8, "s": 50, "t": 50, "ag": 65, "int": 45, "per": 40, "wp": 35, "fel": 40 }, "movement": "5/10/15/30", "wounds": 29, "toughness": null, "skills": "Awareness (Per), Climb (S), Command (Fel) +10, Dodge (Ag) +10, Forbidden Lore (Daemons, Warp) (Int), Intimidate (S) +20, Literacy (Int), Scrutiny (Per), Speak Language (Low Gothic, Unholy Tongue) (Int), Survival (Int), Swim (S). Talents: Astartes Weapon Training, Bolter Drill, Die Hard, Fearless, Hatred (Loyalist Space Marines), Heightened Senses (Sight, Sound, Smell), Jaded, Killing Strike, Quick Draw, Rapid Reload, Swift Attack, True Grit. Traits: Dark Sight, Size (Hulking), Unnatural Strength (x2), Unnatural Toughness (x2). Armour: Astartes Power Armour (Head 8, Arms 8, Body 10, Legs 8). Weapons: Astartes Bolt Pistol (30m; S/3/—; 2d10+5 X; Pen 5; Clip 12; Rld Full, Tearing), Astartes Bolter (100m; S/2/4; 2d10+5 X; Pen 5; Clip 28; Rld Full, Tearing), Astartes Combat Blade (1d10+14 R; Pen 2), Astartes Chainsword (1d10+14 R; Pen 4; Balanced, Tearing). Gear: 2 bolt pistol magazines, 4 bolter magazines...", "talents": "Astartes Weapon Training, Bolter Drill, Die Hard, Fearless, Hatred (Loyalist Space Marines), Heightened Senses (Sight, Sound, Smell), Jaded, Killing Strike, Quick Draw, Rapid Reload, Swift Attack, True Grit. Traits: Dark Sight, Size (Hulking), Unnatural Strength (x2), Unnatural Toughness (x2). Armour: Astartes Power Armour (Head 8, Arms 8, Body 10, Legs 8). Weapons: Astartes Bolt Pistol..., "chosenOffset": 0 } }, { "bestiaryName": "Chapter Serf", "book": "Deathwatch Core Rulebook", "page": "374", "pdf": "Deathwatch - Core Rulebook.pdf", "pageText": "tide. Indeed, the Genestealer...", "stats": { "profile": { "ws": 18, "bs": 15, "s": 14, "t": 78, "ag": 33, "int": 60, "per": 53, "wp": 45, "fel": 45 }, "movement": "7/14/21/42", "wounds": 120, "toughness": null, "skills": "Awareness (Per), Climb (S), Swim (S). Talents: Ambidextrous, Combat Master, Crushing Blow, Fearless, Heightened Senses (All), Psy Rating (8), Two Weapon Wielder (Melee), Swift Attack, Lightning Attack. Traits: Brutal Charge, Dark Sight, Fear 4 (Terrifying), Natural Armour (Bonded Exoskeleton), Multiple Arms, Unnatural Strength (×3), Unnatural Toughness (×3), Improved Natural Weapons (Scything Talons), Shadow in the Warp, Size (Massive), Synapse Creature, Tyranid. Armour: Bonded Exoskeleton (All 10). Weapons: Scything Talons (1d10+22 R; Pen 3). Gear: None...", "chosenOffset": 0 } }, { "bestiaryName": "Civilian", "book": "Deathwatch Core Rulebook", "page": "374", "pdf": "Deathwatch - Core Rulebook.pdf", "pageText": "tide. Indeed, the Genestealer...", "stats": { "profile": { "ws": 18, "bs": 15, "s": 14, "t": 78, "ag": 33, "int": 60, "per": 53, "wp": 45, "fel": 45 }, "movement": "7/14/21/42", "wounds": 120, "toughness": null, "skills": "Awareness (Per), Climb (S), Swim (S). Talents: Ambidextrous...", "chosenOffset": -2 } }, { "bestiaryName": "Daemon Prince", "book": "Deathwatch Core Rulebook", "page": "362", "pdf": "deathwatch-bestiary-extracted.backup.1755378403365.json", "pageText": " equal numbers, Elites can pose a deadly threat...", "stats": { "profile": { "ws": 18, "bs": 12, "s": 75, "t": 60, "ag": 66, "int": 45, "per": 48, "wp": 48, "fel": 48 }, "movement": "7/14/21/42", "wounds": 80, "toughness": null, "skills": "Awareness (Per) +10, Climb (S), Command (Fel) +20, Dodge (Ag) +10, Forbidden Lore (Daemons, Psykers, Warp) (Int) +20, Intimidate (S) +20, Literacy (Int), Scrutiny (Per) +20, Speak Language (Low Gothic, Unholy Tongue) (Int). Talents: Ambidextrous,...", "chosenOffset": 1 } }, { "bestiaryName": "Gun Drone", "book": "Deathwatch Core Rulebook", "page": "367", "pdf": "Deathwatch - Core Rulebook.pdf", "pageText": "e 248). Instead, the Hordes sheer weight of numbers is represented by the fact that its target may not Dodge or Parry...", "stats": { "profile": { "ws": 35, "bs": 25, "s": 30, "t": 30, "ag": 30, "int": 20, "per": 30, "wp": 40, "fel": 20 }, "movement": "3/6/9/18", "wounds": null, "toughness": null, "skills": "Awareness (Per), Climb (S), Speak Language (Low Gothic, Unholy Tongue) (Int), Swim (S), Survival (Int). Talents: Berserk Charge, Furious Assault,...", "chosenOffset": -2 } }, { "bestiaryName": "Hive Tyrant", "book": "Deathwatch Core Rulebook", "page": "369", "pdf": "Deathwatch - Core Rulebook.pdf", "pageText": "vered by Dark Apostle Bellephrades Daemon Princes are incredibly powerful entities of the warp...", "stats": { "profile": { "ws": 18, "bs": 12, "s": 75, "t": 60, "ag": 66, "int": 45, "per": 48, "wp": 48, "fel": 48 }, "movement": "7/14/21/42", "wounds": 80, "toughness": null, "skills": "Awareness (Per) +10, Climb (S), Command (Fel) +20, Dodge (Ag) +10, Forbidden Lore (Daemons, Psykers, Warp) (Int) +20, Intimidate (S) +20, Literacy (Int), Scrutiny (Per) +20, Speak Language (Low Gothic, Unholy Tongue) (Int). Talents: Ambidextrous,...", "chosenOffset": -1 } }, { "bestiaryName": "Hormagaunt", "book": "Deathwatch Core Rulebook", "page": "371", "pdf": "Deathwatch - Core Rulebook.pdf", "pageText": "es boltgun in its destructive capability. All Tau are born into one of five castes...", "stats": { "profile": { "ws": 10, "bs": 10, "s": 35, "t": 55, "ag": 50, "int": 57, "per": 45, "wp": 40, "fel": 55 }, "movement": "12/24/36/72", "wounds": 90, "toughness": null, "skills": "Acrobatic (Ag), Awareness (Per), Command (+20), Common Lore (Tau Empire) (Int), Dodge (Ag), Speak Language (Tau, Kroot, Low Gothic) (Int). Talents: Air of Authority, Ambidextrous, Dual Shot, Independent Targeting, Meditation, Rapid Reaction, Sprint. Traits: Auto-stabilised, Dark-sight, Flier (12), Size (Enormous), Unnatural Strength (x2), Unnatural Toughness (x2). Armour: XV8 Crisis Suit (All 9). Weapons: Plasma rifle, missile pod. Gear: Crisis Battlesuit,...", "chosenOffset": -1 } }, { "bestiaryName": "Imperial Agent", "book": "Deathwatch Core Rulebook", "page": "374", "pdf": "Deathwatch - Core Rulebook.pdf", "pageText": "tide. Indeed, the Genestealer...", "stats": { "profile": { "ws": 18, "bs": 15, "s": 14, "t": 78, "ag": 33, "int": 60, "per": 53, "wp": 45, "fel": 45 }, "movement": "7/14/21/42", "wounds": 120, "toughness": null, "skills": "Awareness (Per), Climb (S), Swim (S). Talents: Ambidextrous, Combat Master,...", "chosenOffset": -1 } }, { "bestiaryName": "Imperial Guard Field Officer", "book": "Deathwatch Core Rulebook", "page": "375", "pdf": "Deathwatch - Core Rulebook.pdf", "pageText": "tide. Indeed, the Genestealer...", "stats": { "profile": { "ws": 18, "bs": 15, "s": 14, "t": 78, "ag": 33, "int": 60, "per": 53, "wp": 45, "fel": 45 }, "movement": "7/14/21/42", "wounds": 120, "toughness": null, "skills": "Awareness (Per), Climb (S), Swim (S). Talents: Ambidextrous, Combat Master,...", "chosenOffset": -1 } }, { "bestiaryName": "Imperial Guardsman", "book": "Deathwatch Core Rulebook", "page": "375", "pdf": "Deathwatch - Core Rulebook.pdf", "pageText": "tide. Indeed, the Genestealer...", "stats": { "profile": { "ws": 18, "bs": 15, "s": 14, "t": 78, "ag": 33, "int": 60, "per": 53, "wp": 45, "fel": 45 }, "movement": "7/14/21/42", "wounds": 120, "toughness": null, "skills": "Awareness (Per), Climb (S), Swim (S). Talents: Ambidextrous, Combat Master,...", "chosenOffset": -1 } }, { "bestiaryName": "Monotask Servitor (Erioch-Pattern)", "book": "Deathwatch Core Rulebook", "page": "376", "pdf": "Deathwatch - Core Rulebook.pdf", "pageText": "tide. Indeed, the Genestealer...", "stats": { "profile": { "ws": 18, "bs": 15, "s": 14, "t": 78, "ag": 33, "int": 60, "per": 53, "wp": 45, "fel": 45 }, "movement": "7/14/21/42", "wounds": 120, "toughness": null, "skills": "Awareness (Per), Climb (S), Swim (S). Talents: Ambidextrous, Combat Master,...", "chosenOffset": -1 } } ] }