mirror of
https://gitlab.com/jrmiller82/pathfinder-2-sqlite.git
synced 2026-10-12 22:29:44 -04:00
MAJOR DIRECTORY OVERHAUL
This commit is contained in:
1 parent
71ed03b165
commit
34ef5a6025
138 files changed
+48
-6
No files matched your search
@@ -0,0 +1,846 @@
|
||||
name,name_aon,level,url_search,url_aon,match
|
||||
Refocus,Arcane School Spell,4,https://2e.aonprd.com/Search.aspx?query=Refocus,https://2e.aonprd.com/Feats.aspx?ID=743,False
|
||||
Call on Ancient Blood,Call of the Wild,2,https://2e.aonprd.com/Search.aspx?query=Call on Ancient Blood,https://2e.aonprd.com/Feats.aspx?ID=317,False
|
||||
Dwarven Lore,Dwarven Lore,1,https://2e.aonprd.com/Search.aspx?query=Dwarven Lore,https://2e.aonprd.com/Feats.aspx?ID=1,True
|
||||
Dwarven Weapon Familiarity,Dwarven Weapon Familiarity,1,https://2e.aonprd.com/Search.aspx?query=Dwarven Weapon Familiarity,https://2e.aonprd.com/Feats.aspx?ID=2,True
|
||||
Rock Runner,Rock Runner,1,https://2e.aonprd.com/Search.aspx?query=Rock Runner,https://2e.aonprd.com/Feats.aspx?ID=3,True
|
||||
Stonecunning,Stonecunning,1,https://2e.aonprd.com/Search.aspx?query=Stonecunning,https://2e.aonprd.com/Feats.aspx?ID=4,True
|
||||
Unburdened Iron,Unburdened Iron,1,https://2e.aonprd.com/Search.aspx?query=Unburdened Iron,https://2e.aonprd.com/Feats.aspx?ID=5,True
|
||||
Vengeful Hatred,Vengeful Hatred,1,https://2e.aonprd.com/Search.aspx?query=Vengeful Hatred,https://2e.aonprd.com/Feats.aspx?ID=6,True
|
||||
Boulder Roll,Boulder Roll,5,https://2e.aonprd.com/Search.aspx?query=Boulder Roll,https://2e.aonprd.com/Feats.aspx?ID=7,True
|
||||
Dwarven Weapon Cunning,Dwarven Weapon Cunning,5,https://2e.aonprd.com/Search.aspx?query=Dwarven Weapon Cunning,https://2e.aonprd.com/Feats.aspx?ID=8,True
|
||||
Mountain's Stoutness,Mountain's Stoutness,9,https://2e.aonprd.com/Search.aspx?query=Mountain's Stoutness,https://2e.aonprd.com/Feats.aspx?ID=9,True
|
||||
Stonewalker,Stonewalker,9,https://2e.aonprd.com/Search.aspx?query=Stonewalker,https://2e.aonprd.com/Feats.aspx?ID=10,True
|
||||
Dwarven Weapon Expertise,Dwarven Weapon Expertise,13,https://2e.aonprd.com/Search.aspx?query=Dwarven Weapon Expertise,https://2e.aonprd.com/Feats.aspx?ID=11,True
|
||||
Ancestral Longevity,Ancestral Longevity,1,https://2e.aonprd.com/Search.aspx?query=Ancestral Longevity,https://2e.aonprd.com/Feats.aspx?ID=12,True
|
||||
Elven Lore,Elven Lore,1,https://2e.aonprd.com/Search.aspx?query=Elven Lore,https://2e.aonprd.com/Feats.aspx?ID=13,True
|
||||
Elven Weapon Familiarity,Elven Weapon Familiarity,1,https://2e.aonprd.com/Search.aspx?query=Elven Weapon Familiarity,https://2e.aonprd.com/Feats.aspx?ID=14,True
|
||||
Forlorn,Forlorn,1,https://2e.aonprd.com/Search.aspx?query=Forlorn,https://2e.aonprd.com/Feats.aspx?ID=15,True
|
||||
Nimble Elf,Nimble Elf,1,https://2e.aonprd.com/Search.aspx?query=Nimble Elf,https://2e.aonprd.com/Feats.aspx?ID=16,True
|
||||
Otherworldly Magic,Otherworldly Magic,1,https://2e.aonprd.com/Search.aspx?query=Otherworldly Magic,https://2e.aonprd.com/Feats.aspx?ID=17,True
|
||||
Unwavering Mien,Unwavering Mien,1,https://2e.aonprd.com/Search.aspx?query=Unwavering Mien,https://2e.aonprd.com/Feats.aspx?ID=18,True
|
||||
Ageless Patience,Ageless Patience,5,https://2e.aonprd.com/Search.aspx?query=Ageless Patience,https://2e.aonprd.com/Feats.aspx?ID=19,True
|
||||
Elven Weapon Elegance,Elven Weapon Elegance,5,https://2e.aonprd.com/Search.aspx?query=Elven Weapon Elegance,https://2e.aonprd.com/Feats.aspx?ID=20,True
|
||||
Elf Step,Elf Step,9,https://2e.aonprd.com/Search.aspx?query=Elf Step,https://2e.aonprd.com/Feats.aspx?ID=21,True
|
||||
Expert Longevity,Expert Longevity,9,https://2e.aonprd.com/Search.aspx?query=Expert Longevity,https://2e.aonprd.com/Feats.aspx?ID=22,True
|
||||
Universal Longevity,Universal Longevity,13,https://2e.aonprd.com/Search.aspx?query=Universal Longevity,https://2e.aonprd.com/Feats.aspx?ID=23,True
|
||||
Elven Weapon Expertise,Elven Weapon Expertise,13,https://2e.aonprd.com/Search.aspx?query=Elven Weapon Expertise,https://2e.aonprd.com/Feats.aspx?ID=24,True
|
||||
Animal Accomplice,Animal Accomplice,1,https://2e.aonprd.com/Search.aspx?query=Animal Accomplice,https://2e.aonprd.com/Feats.aspx?ID=25,True
|
||||
Burrow Elocutionist,Burrow Elocutionist,1,https://2e.aonprd.com/Search.aspx?query=Burrow Elocutionist,https://2e.aonprd.com/Feats.aspx?ID=26,True
|
||||
Fey Fellowship,Fey Fellowship,1,https://2e.aonprd.com/Search.aspx?query=Fey Fellowship,https://2e.aonprd.com/Feats.aspx?ID=27,True
|
||||
First World Magic,First World Magic,1,https://2e.aonprd.com/Search.aspx?query=First World Magic,https://2e.aonprd.com/Feats.aspx?ID=28,True
|
||||
Gnome Obsession,Gnome Obsession,1,https://2e.aonprd.com/Search.aspx?query=Gnome Obsession,https://2e.aonprd.com/Feats.aspx?ID=29,True
|
||||
Gnome Weapon Familiarity,Gnome Weapon Familiarity,1,https://2e.aonprd.com/Search.aspx?query=Gnome Weapon Familiarity,https://2e.aonprd.com/Feats.aspx?ID=30,True
|
||||
Illusion Sense,Illusion Sense,1,https://2e.aonprd.com/Search.aspx?query=Illusion Sense,https://2e.aonprd.com/Feats.aspx?ID=31,True
|
||||
Animal Elocutionist,Animal Elocutionist,5,https://2e.aonprd.com/Search.aspx?query=Animal Elocutionist,https://2e.aonprd.com/Feats.aspx?ID=32,True
|
||||
Energized Font,Energized Font,5,https://2e.aonprd.com/Search.aspx?query=Energized Font,https://2e.aonprd.com/Feats.aspx?ID=33,True
|
||||
Gnome Weapon Innovator,Gnome Weapon Innovator,5,https://2e.aonprd.com/Search.aspx?query=Gnome Weapon Innovator,https://2e.aonprd.com/Feats.aspx?ID=34,True
|
||||
First World Adept,First World Adept,9,https://2e.aonprd.com/Search.aspx?query=First World Adept,https://2e.aonprd.com/Feats.aspx?ID=35,True
|
||||
Vivacious Conduit,Vivacious Conduit,9,https://2e.aonprd.com/Search.aspx?query=Vivacious Conduit,https://2e.aonprd.com/Feats.aspx?ID=36,True
|
||||
Gnome Weapon Expertise,Gnome Weapon Expertise,13,https://2e.aonprd.com/Search.aspx?query=Gnome Weapon Expertise,https://2e.aonprd.com/Feats.aspx?ID=37,True
|
||||
Burn It!,,-1,https://2e.aonprd.com/Search.aspx?query=Burn It!,https://2e.aonprd.com/Search.aspx?query=Burn+It!,False
|
||||
City Scavenger,City Scavenger,1,https://2e.aonprd.com/Search.aspx?query=City Scavenger,https://2e.aonprd.com/Feats.aspx?ID=39,True
|
||||
Goblin Lore,Goblin Lore,1,https://2e.aonprd.com/Search.aspx?query=Goblin Lore,https://2e.aonprd.com/Feats.aspx?ID=40,True
|
||||
Goblin Scuttle,Goblin Scuttle,1,https://2e.aonprd.com/Search.aspx?query=Goblin Scuttle,https://2e.aonprd.com/Feats.aspx?ID=41,True
|
||||
Goblin Song,Goblin Song,1,https://2e.aonprd.com/Search.aspx?query=Goblin Song,https://2e.aonprd.com/Feats.aspx?ID=42,True
|
||||
Goblin Weapon Familiarity,Goblin Weapon Familiarity,1,https://2e.aonprd.com/Search.aspx?query=Goblin Weapon Familiarity,https://2e.aonprd.com/Feats.aspx?ID=43,True
|
||||
Junk Tinker,Junk Tinker,1,https://2e.aonprd.com/Search.aspx?query=Junk Tinker,https://2e.aonprd.com/Feats.aspx?ID=44,True
|
||||
Rough Rider,Rough Rider,1,https://2e.aonprd.com/Search.aspx?query=Rough Rider,https://2e.aonprd.com/Feats.aspx?ID=45,True
|
||||
Very Sneaky,Very Sneaky,1,https://2e.aonprd.com/Search.aspx?query=Very Sneaky,https://2e.aonprd.com/Feats.aspx?ID=46,True
|
||||
Goblin Weapon Frenzy,Goblin Weapon Frenzy,5,https://2e.aonprd.com/Search.aspx?query=Goblin Weapon Frenzy,https://2e.aonprd.com/Feats.aspx?ID=47,True
|
||||
Cave Climber,Cave Climber,9,https://2e.aonprd.com/Search.aspx?query=Cave Climber,https://2e.aonprd.com/Feats.aspx?ID=48,True
|
||||
Skittering Scuttle,Skittering Scuttle,9,https://2e.aonprd.com/Search.aspx?query=Skittering Scuttle,https://2e.aonprd.com/Feats.aspx?ID=49,True
|
||||
Goblin Weapon Expertise,Goblin Weapon Expertise,13,https://2e.aonprd.com/Search.aspx?query=Goblin Weapon Expertise,https://2e.aonprd.com/Feats.aspx?ID=50,True
|
||||
"Very, Very Sneaky",,-1,"https://2e.aonprd.com/Search.aspx?query=Very, Very Sneaky",https://2e.aonprd.com/Search.aspx?query=Very%2c+Very+Sneaky,False
|
||||
Distracting Shadows,Distracting Shadows,1,https://2e.aonprd.com/Search.aspx?query=Distracting Shadows,https://2e.aonprd.com/Feats.aspx?ID=52,True
|
||||
Halfling Lore,Halfling Lore,1,https://2e.aonprd.com/Search.aspx?query=Halfling Lore,https://2e.aonprd.com/Feats.aspx?ID=53,True
|
||||
Halfling Luck,Halfling Luck,1,https://2e.aonprd.com/Search.aspx?query=Halfling Luck,https://2e.aonprd.com/Feats.aspx?ID=54,True
|
||||
Halfling Weapon Familiarity,Halfling Weapon Familiarity,1,https://2e.aonprd.com/Search.aspx?query=Halfling Weapon Familiarity,https://2e.aonprd.com/Feats.aspx?ID=55,True
|
||||
Sure Feet,Sure Feet,1,https://2e.aonprd.com/Search.aspx?query=Sure Feet,https://2e.aonprd.com/Feats.aspx?ID=56,True
|
||||
Titan Slinger,Titan Slinger,1,https://2e.aonprd.com/Search.aspx?query=Titan Slinger,https://2e.aonprd.com/Feats.aspx?ID=57,True
|
||||
Unfettered Halfling,Unfettered Halfling,1,https://2e.aonprd.com/Search.aspx?query=Unfettered Halfling,https://2e.aonprd.com/Feats.aspx?ID=58,True
|
||||
Watchful Halfling,Watchful Halfling,1,https://2e.aonprd.com/Search.aspx?query=Watchful Halfling,https://2e.aonprd.com/Feats.aspx?ID=59,True
|
||||
Cultural Adaptability,Cultural Adaptability,5,https://2e.aonprd.com/Search.aspx?query=Cultural Adaptability,https://2e.aonprd.com/Feats.aspx?ID=60,True
|
||||
Halfling Weapon Trickster,Halfling Weapon Trickster,5,https://2e.aonprd.com/Search.aspx?query=Halfling Weapon Trickster,https://2e.aonprd.com/Feats.aspx?ID=61,True
|
||||
Guiding Luck,Guiding Luck,9,https://2e.aonprd.com/Search.aspx?query=Guiding Luck,https://2e.aonprd.com/Feats.aspx?ID=62,True
|
||||
Irrepressible,Irrepressible,9,https://2e.aonprd.com/Search.aspx?query=Irrepressible,https://2e.aonprd.com/Feats.aspx?ID=63,True
|
||||
Ceaseless Shadows,Ceaseless Shadows,13,https://2e.aonprd.com/Search.aspx?query=Ceaseless Shadows,https://2e.aonprd.com/Feats.aspx?ID=64,True
|
||||
Halfling Weapon Expertise,Halfling Weapon Expertise,13,https://2e.aonprd.com/Search.aspx?query=Halfling Weapon Expertise,https://2e.aonprd.com/Feats.aspx?ID=65,True
|
||||
Adapted Cantrip,Adapted Cantrip,1,https://2e.aonprd.com/Search.aspx?query=Adapted Cantrip,https://2e.aonprd.com/Feats.aspx?ID=66,True
|
||||
Cooperative Nature,Cooperative Nature,1,https://2e.aonprd.com/Search.aspx?query=Cooperative Nature,https://2e.aonprd.com/Feats.aspx?ID=67,True
|
||||
General Training,General Training,1,https://2e.aonprd.com/Search.aspx?query=General Training,https://2e.aonprd.com/Feats.aspx?ID=68,True
|
||||
Haughty Obstinacy,Haughty Obstinacy,1,https://2e.aonprd.com/Search.aspx?query=Haughty Obstinacy,https://2e.aonprd.com/Feats.aspx?ID=69,True
|
||||
Natural Ambition,Natural Ambition,1,https://2e.aonprd.com/Search.aspx?query=Natural Ambition,https://2e.aonprd.com/Feats.aspx?ID=70,True
|
||||
Natural Skill,Natural Skill,1,https://2e.aonprd.com/Search.aspx?query=Natural Skill,https://2e.aonprd.com/Feats.aspx?ID=71,True
|
||||
Unconventional Weaponry,Unconventional Weaponry,1,https://2e.aonprd.com/Search.aspx?query=Unconventional Weaponry,https://2e.aonprd.com/Feats.aspx?ID=72,True
|
||||
Adaptive Adept,Adaptive Adept,5,https://2e.aonprd.com/Search.aspx?query=Adaptive Adept,https://2e.aonprd.com/Feats.aspx?ID=73,True
|
||||
Clever Improviser,Clever Improviser,5,https://2e.aonprd.com/Search.aspx?query=Clever Improviser,https://2e.aonprd.com/Feats.aspx?ID=74,True
|
||||
Cooperataive Soul,,9,https://2e.aonprd.com/Search.aspx?query=Cooperataive Soul,https://2e.aonprd.com/Spells.aspx?ID=21,False
|
||||
Incredible Improvisation,Incredible Improvisation,9,https://2e.aonprd.com/Search.aspx?query=Incredible Improvisation,https://2e.aonprd.com/Feats.aspx?ID=76,True
|
||||
Multitalented,Multitalented,9,https://2e.aonprd.com/Search.aspx?query=Multitalented,https://2e.aonprd.com/Feats.aspx?ID=77,True
|
||||
Unconventional Expertise,Unconventional Expertise,13,https://2e.aonprd.com/Search.aspx?query=Unconventional Expertise,https://2e.aonprd.com/Feats.aspx?ID=78,True
|
||||
Elf Atavism,Elf Atavism,1,https://2e.aonprd.com/Search.aspx?query=Elf Atavism,https://2e.aonprd.com/Feats.aspx?ID=79,True
|
||||
Inspire Imitation,Inspire Imitation,5,https://2e.aonprd.com/Search.aspx?query=Inspire Imitation,https://2e.aonprd.com/Feats.aspx?ID=80,True
|
||||
Supernatural Charm,Supernatural Charm,5,https://2e.aonprd.com/Search.aspx?query=Supernatural Charm,https://2e.aonprd.com/Feats.aspx?ID=81,True
|
||||
Monstrous Peacemaker,Monstrous Peacemaker,1,https://2e.aonprd.com/Search.aspx?query=Monstrous Peacemaker,https://2e.aonprd.com/Feats.aspx?ID=82,True
|
||||
Orc Ferocity,Orc Ferocity,1,https://2e.aonprd.com/Search.aspx?query=Orc Ferocity,https://2e.aonprd.com/Feats.aspx?ID=83,True
|
||||
Orc Sight,Orc Sight,1,https://2e.aonprd.com/Search.aspx?query=Orc Sight,https://2e.aonprd.com/Feats.aspx?ID=84,True
|
||||
Orc Superstition,Orc Superstition,1,https://2e.aonprd.com/Search.aspx?query=Orc Superstition,https://2e.aonprd.com/Feats.aspx?ID=85,True
|
||||
Orc Weapon Famailiarity,Orc Weapon Famailiarity,1,https://2e.aonprd.com/Search.aspx?query=Orc Weapon Famailiarity,https://2e.aonprd.com/Feats.aspx?ID=86,True
|
||||
Orc Weapon Carnage,Orc Weapon Carnage,5,https://2e.aonprd.com/Search.aspx?query=Orc Weapon Carnage,https://2e.aonprd.com/Feats.aspx?ID=87,True
|
||||
Victorious Vigor,Victorious Vigor,5,https://2e.aonprd.com/Search.aspx?query=Victorious Vigor,https://2e.aonprd.com/Feats.aspx?ID=88,True
|
||||
Pervasive Superstition,Pervasive Superstition,9,https://2e.aonprd.com/Search.aspx?query=Pervasive Superstition,https://2e.aonprd.com/Feats.aspx?ID=89,True
|
||||
Incredible Ferocity,Incredible Ferocity,13,https://2e.aonprd.com/Search.aspx?query=Incredible Ferocity,https://2e.aonprd.com/Feats.aspx?ID=90,True
|
||||
Orc Weapon Expertise,Orc Weapon Expertise,13,https://2e.aonprd.com/Search.aspx?query=Orc Weapon Expertise,https://2e.aonprd.com/Feats.aspx?ID=91,True
|
||||
Alchemical Familiar,Alchemical Familiar,1,https://2e.aonprd.com/Search.aspx?query=Alchemical Familiar,https://2e.aonprd.com/Feats.aspx?ID=92,True
|
||||
Alchemical Savant,Alchemical Savant,1,https://2e.aonprd.com/Search.aspx?query=Alchemical Savant,https://2e.aonprd.com/Feats.aspx?ID=93,True
|
||||
Far Lobber,Far Lobber,1,https://2e.aonprd.com/Search.aspx?query=Far Lobber,https://2e.aonprd.com/Feats.aspx?ID=94,True
|
||||
Quick Bomber,Quick Bomber,1,https://2e.aonprd.com/Search.aspx?query=Quick Bomber,https://2e.aonprd.com/Feats.aspx?ID=95,True
|
||||
Poison Resistance (Alchemist),Poison Resistance,2,https://2e.aonprd.com/Search.aspx?query=Poison Resistance,https://2e.aonprd.com/Feats.aspx?ID=96,True
|
||||
Revivifying Mutagen,Revivifying Mutagen,2,https://2e.aonprd.com/Search.aspx?query=Revivifying Mutagen,https://2e.aonprd.com/Feats.aspx?ID=97,True
|
||||
Smoke Bomb,Smoke Bomb,2,https://2e.aonprd.com/Search.aspx?query=Smoke Bomb,https://2e.aonprd.com/Feats.aspx?ID=98,True
|
||||
Calculated Splash,Calculated Splash,4,https://2e.aonprd.com/Search.aspx?query=Calculated Splash,https://2e.aonprd.com/Feats.aspx?ID=99,True
|
||||
Efficient Alchemy,Efficient Alchemy,4,https://2e.aonprd.com/Search.aspx?query=Efficient Alchemy,https://2e.aonprd.com/Feats.aspx?ID=100,True
|
||||
Enduring Alchemy,Enduring Alchemy,4,https://2e.aonprd.com/Search.aspx?query=Enduring Alchemy,https://2e.aonprd.com/Feats.aspx?ID=101,True
|
||||
Combine Elixirs,Combine Elixirs,6,https://2e.aonprd.com/Search.aspx?query=Combine Elixirs,https://2e.aonprd.com/Feats.aspx?ID=102,True
|
||||
Debilitating Bomb,Debilitating Bomb,6,https://2e.aonprd.com/Search.aspx?query=Debilitating Bomb,https://2e.aonprd.com/Feats.aspx?ID=103,True
|
||||
Directional Bombs,Directional Bombs,6,https://2e.aonprd.com/Search.aspx?query=Directional Bombs,https://2e.aonprd.com/Feats.aspx?ID=104,True
|
||||
Feral Mutagen,Feral Mutagen,8,https://2e.aonprd.com/Search.aspx?query=Feral Mutagen,https://2e.aonprd.com/Feats.aspx?ID=105,True
|
||||
Powerful Alchemy,Powerful Alchemy,8,https://2e.aonprd.com/Search.aspx?query=Powerful Alchemy,https://2e.aonprd.com/Feats.aspx?ID=106,True
|
||||
Sticky Bomb,Sticky Bomb,8,https://2e.aonprd.com/Search.aspx?query=Sticky Bomb,https://2e.aonprd.com/Feats.aspx?ID=107,True
|
||||
Elastic Mutagen,Elastic Mutagen,10,https://2e.aonprd.com/Search.aspx?query=Elastic Mutagen,https://2e.aonprd.com/Feats.aspx?ID=108,True
|
||||
Expanded Splash,Expanded Splash,10,https://2e.aonprd.com/Search.aspx?query=Expanded Splash,https://2e.aonprd.com/Feats.aspx?ID=109,True
|
||||
Greater Debilitating Bomb,Greater Debilitating Bomb,10,https://2e.aonprd.com/Search.aspx?query=Greater Debilitating Bomb,https://2e.aonprd.com/Feats.aspx?ID=110,True
|
||||
Merciful Elixir,Merciful Elixir,10,https://2e.aonprd.com/Search.aspx?query=Merciful Elixir,https://2e.aonprd.com/Feats.aspx?ID=111,True
|
||||
Potent Poisoner,Potent Poisoner,10,https://2e.aonprd.com/Search.aspx?query=Potent Poisoner,https://2e.aonprd.com/Feats.aspx?ID=112,True
|
||||
Extend Elixir,Extend Elixir,12,https://2e.aonprd.com/Search.aspx?query=Extend Elixir,https://2e.aonprd.com/Feats.aspx?ID=113,True
|
||||
Invincible Mutagen,Invincible Mutagen,12,https://2e.aonprd.com/Search.aspx?query=Invincible Mutagen,https://2e.aonprd.com/Feats.aspx?ID=114,True
|
||||
Uncanny Bombs,Uncanny Bombs,12,https://2e.aonprd.com/Search.aspx?query=Uncanny Bombs,https://2e.aonprd.com/Feats.aspx?ID=115,True
|
||||
Glib Mutagen,Glib Mutagen,14,https://2e.aonprd.com/Search.aspx?query=Glib Mutagen,https://2e.aonprd.com/Feats.aspx?ID=116,True
|
||||
Greater Merciful Elixir,Greater Merciful Elixir,14,https://2e.aonprd.com/Search.aspx?query=Greater Merciful Elixir,https://2e.aonprd.com/Feats.aspx?ID=117,True
|
||||
True Debilitating Bomb,True Debilitating Bomb,14,https://2e.aonprd.com/Search.aspx?query=True Debilitating Bomb,https://2e.aonprd.com/Feats.aspx?ID=118,True
|
||||
Eternal Elixir,Eternal Elixir,16,https://2e.aonprd.com/Search.aspx?query=Eternal Elixir,https://2e.aonprd.com/Feats.aspx?ID=119,True
|
||||
Exploitive Bomb,Exploitive Bomb,16,https://2e.aonprd.com/Search.aspx?query=Exploitive Bomb,https://2e.aonprd.com/Feats.aspx?ID=120,True
|
||||
Genius Mutagen,Genius Mutagen,16,https://2e.aonprd.com/Search.aspx?query=Genius Mutagen,https://2e.aonprd.com/Feats.aspx?ID=121,True
|
||||
Persistent Mutagen,Persistent Mutagen,16,https://2e.aonprd.com/Search.aspx?query=Persistent Mutagen,https://2e.aonprd.com/Feats.aspx?ID=122,True
|
||||
Improbable Elixirs,Improbable Elixirs,18,https://2e.aonprd.com/Search.aspx?query=Improbable Elixirs,https://2e.aonprd.com/Feats.aspx?ID=123,True
|
||||
Mindblank Mutagen,Mindblank Mutagen,18,https://2e.aonprd.com/Search.aspx?query=Mindblank Mutagen,https://2e.aonprd.com/Feats.aspx?ID=124,True
|
||||
Miracle Worker,Miracle Worker,18,https://2e.aonprd.com/Search.aspx?query=Miracle Worker,https://2e.aonprd.com/Feats.aspx?ID=125,True
|
||||
Perfect Debilitation,Perfect Debilitation,18,https://2e.aonprd.com/Search.aspx?query=Perfect Debilitation,https://2e.aonprd.com/Feats.aspx?ID=126,True
|
||||
Craft Philosopher's Stone,,-1,https://2e.aonprd.com/Search.aspx?query=Craft Philosopher’s Stone,https://2e.aonprd.com/Search.aspx?query=Craft+Philosopher%u2019s+Stone,False
|
||||
Mega Bomb,Mega Bomb,20,https://2e.aonprd.com/Search.aspx?query=Mega Bomb,https://2e.aonprd.com/Feats.aspx?ID=128,True
|
||||
Perfect Mutagen,Perfect Mutagen,20,https://2e.aonprd.com/Search.aspx?query=Perfect Mutagen,https://2e.aonprd.com/Feats.aspx?ID=129,True
|
||||
Acute Vision,Acute Vision,1,https://2e.aonprd.com/Search.aspx?query=Acute Vision,https://2e.aonprd.com/Feats.aspx?ID=130,True
|
||||
Moment of Clarity,Moment of Clarity,1,https://2e.aonprd.com/Search.aspx?query=Moment of Clarity,https://2e.aonprd.com/Feats.aspx?ID=131,True
|
||||
Raging Intimidation,Raging Intimidation,1,https://2e.aonprd.com/Search.aspx?query=Raging Intimidation,https://2e.aonprd.com/Feats.aspx?ID=132,True
|
||||
Raging Thrower,Raging Thrower,1,https://2e.aonprd.com/Search.aspx?query=Raging Thrower,https://2e.aonprd.com/Feats.aspx?ID=133,True
|
||||
Sudden Charge,Sudden Charge,1,https://2e.aonprd.com/Search.aspx?query=Sudden Charge,https://2e.aonprd.com/Feats.aspx?ID=134,True
|
||||
Acute Scent,Acute Scent,2,https://2e.aonprd.com/Search.aspx?query=Acute Scent,https://2e.aonprd.com/Feats.aspx?ID=135,True
|
||||
Furious Finish,Furious Finish,2,https://2e.aonprd.com/Search.aspx?query=Furious Finish,https://2e.aonprd.com/Feats.aspx?ID=136,True
|
||||
No Escape,No Escape,2,https://2e.aonprd.com/Search.aspx?query=No Escape,https://2e.aonprd.com/Feats.aspx?ID=137,True
|
||||
Second Wind,Second Wind,2,https://2e.aonprd.com/Search.aspx?query=Second Wind,https://2e.aonprd.com/Feats.aspx?ID=138,True
|
||||
Shake it Off,Shake it Off,2,https://2e.aonprd.com/Search.aspx?query=Shake it Off,https://2e.aonprd.com/Feats.aspx?ID=139,True
|
||||
Fast Movement,Fast Movement,4,https://2e.aonprd.com/Search.aspx?query=Fast Movement,https://2e.aonprd.com/Feats.aspx?ID=140,True
|
||||
Raging Athlete,Raging Athlete,4,https://2e.aonprd.com/Search.aspx?query=Raging Athlete,https://2e.aonprd.com/Feats.aspx?ID=141,True
|
||||
Swipe,Swipe,4,https://2e.aonprd.com/Search.aspx?query=Swipe,https://2e.aonprd.com/Feats.aspx?ID=142,True
|
||||
Wounded Rage,Wounded Rage,4,https://2e.aonprd.com/Search.aspx?query=Wounded Rage,https://2e.aonprd.com/Feats.aspx?ID=143,True
|
||||
Animal Skin,Animal Skin,6,https://2e.aonprd.com/Search.aspx?query=Animal Skin,https://2e.aonprd.com/Feats.aspx?ID=144,True
|
||||
Attack of Opportunity (Barbarian),Attack of Opportunity,6,https://2e.aonprd.com/Search.aspx?query=Attack of Opportunity,https://2e.aonprd.com/Feats.aspx?ID=145,True
|
||||
Brutal Bully,Brutal Bully,6,https://2e.aonprd.com/Search.aspx?query=Brutal Bully,https://2e.aonprd.com/Feats.aspx?ID=146,True
|
||||
Cleave,Cleave,6,https://2e.aonprd.com/Search.aspx?query=Cleave,https://2e.aonprd.com/Feats.aspx?ID=147,True
|
||||
Dragon’s Rage Breath,,-1,https://2e.aonprd.com/Search.aspx?query=Dragon’s Rage Breath,https://2e.aonprd.com/Search.aspx?query=Dragon%u2019s+Rage+Breath,False
|
||||
Giant’s Stature,,-1,https://2e.aonprd.com/Search.aspx?query=Giant’s Stature,https://2e.aonprd.com/Search.aspx?query=Giant%u2019s+Stature,False
|
||||
Spirits’ Interference,,-1,https://2e.aonprd.com/Search.aspx?query=Spirits’ Interference,https://2e.aonprd.com/Search.aspx?query=Spirits%u2019+Interference,False
|
||||
Animal Rage,Animal Rage,8,https://2e.aonprd.com/Search.aspx?query=Animal Rage,https://2e.aonprd.com/Feats.aspx?ID=151,True
|
||||
Furious Bully,Furious Bully,8,https://2e.aonprd.com/Search.aspx?query=Furious Bully,https://2e.aonprd.com/Feats.aspx?ID=152,True
|
||||
Renewed Vigor,Renewed Vigor,8,https://2e.aonprd.com/Search.aspx?query=Renewed Vigor,https://2e.aonprd.com/Feats.aspx?ID=153,True
|
||||
Share Rage,Share Rage,8,https://2e.aonprd.com/Search.aspx?query=Share Rage,https://2e.aonprd.com/Feats.aspx?ID=154,True
|
||||
Sudden Leap (Barbarian),Sudden Leap,8,https://2e.aonprd.com/Search.aspx?query=Sudden Leap,https://2e.aonprd.com/Feats.aspx?ID=155,True
|
||||
Thrash,Thrash,8,https://2e.aonprd.com/Search.aspx?query=Thrash,https://2e.aonprd.com/Feats.aspx?ID=156,True
|
||||
Come and Get Me,,-1,https://2e.aonprd.com/Search.aspx?query=Come and Get Me,https://2e.aonprd.com/Search.aspx?query=Come+and+Get+Me,False
|
||||
Furious Sprint,Furious Sprint,10,https://2e.aonprd.com/Search.aspx?query=Furious Sprint,https://2e.aonprd.com/Feats.aspx?ID=158,True
|
||||
Great Cleave,Great Cleave,10,https://2e.aonprd.com/Search.aspx?query=Great Cleave,https://2e.aonprd.com/Feats.aspx?ID=159,True
|
||||
Knockback,Knockback,10,https://2e.aonprd.com/Search.aspx?query=Knockback,https://2e.aonprd.com/Feats.aspx?ID=160,True
|
||||
Terrifying Howl,Terrifying Howl,10,https://2e.aonprd.com/Search.aspx?query=Terrifying Howl,https://2e.aonprd.com/Feats.aspx?ID=161,True
|
||||
Dragon’s Rage Wings,,-1,https://2e.aonprd.com/Search.aspx?query=Dragon’s Rage Wings,https://2e.aonprd.com/Search.aspx?query=Dragon%u2019s+Rage+Wings,False
|
||||
Furious Grab,Furious Grab,12,https://2e.aonprd.com/Search.aspx?query=Furious Grab,https://2e.aonprd.com/Feats.aspx?ID=163,True
|
||||
Predator’s Pounce,,-1,https://2e.aonprd.com/Search.aspx?query=Predator’s Pounce,https://2e.aonprd.com/Search.aspx?query=Predator%u2019s+Pounce,False
|
||||
Spirit’s Wrath,,-1,https://2e.aonprd.com/Search.aspx?query=Spirit’s Wrath,https://2e.aonprd.com/Search.aspx?query=Spirit%u2019s+Wrath,False
|
||||
Titan’s Stature,,-1,https://2e.aonprd.com/Search.aspx?query=Titan’s Stature,https://2e.aonprd.com/Search.aspx?query=Titan%u2019s+Stature,False
|
||||
Awesome Blow,Awesome Blow,14,https://2e.aonprd.com/Search.aspx?query=Awesome Blow,https://2e.aonprd.com/Feats.aspx?ID=167,True
|
||||
Giant’s Lunge,,-1,https://2e.aonprd.com/Search.aspx?query=Giant’s Lunge,https://2e.aonprd.com/Search.aspx?query=Giant%u2019s+Lunge,False
|
||||
Vengeful Strike,Vengeful Strike,14,https://2e.aonprd.com/Search.aspx?query=Vengeful Strike,https://2e.aonprd.com/Feats.aspx?ID=169,True
|
||||
Whirlwind Strike,Whirlwind Strike,14,https://2e.aonprd.com/Search.aspx?query=Whirlwind Strike,https://2e.aonprd.com/Feats.aspx?ID=170,True
|
||||
Collateral Thrash,Collateral Thrash,16,https://2e.aonprd.com/Search.aspx?query=Collateral Thrash,https://2e.aonprd.com/Feats.aspx?ID=171,True
|
||||
Dragon Transformation,Dragon Transformation,16,https://2e.aonprd.com/Search.aspx?query=Dragon Transformation,https://2e.aonprd.com/Feats.aspx?ID=172,True
|
||||
Reckless Abandon,Reckless Abandon,16,https://2e.aonprd.com/Search.aspx?query=Reckless Abandon,https://2e.aonprd.com/Feats.aspx?ID=173,True
|
||||
Brutal Critical,Brutal Critical,18,https://2e.aonprd.com/Search.aspx?query=Brutal Critical,https://2e.aonprd.com/Feats.aspx?ID=174,True
|
||||
Perfect Clarity,Perfect Clarity,18,https://2e.aonprd.com/Search.aspx?query=Perfect Clarity,https://2e.aonprd.com/Feats.aspx?ID=175,True
|
||||
Vicious Evisceration,Vicious Evisceration,18,https://2e.aonprd.com/Search.aspx?query=Vicious Evisceration,https://2e.aonprd.com/Feats.aspx?ID=176,True
|
||||
Contagious Rage,Contagious Rage,20,https://2e.aonprd.com/Search.aspx?query=Contagious Rage,https://2e.aonprd.com/Feats.aspx?ID=177,True
|
||||
Quaking Stomp,Quaking Stomp,20,https://2e.aonprd.com/Search.aspx?query=Quaking Stomp,https://2e.aonprd.com/Feats.aspx?ID=178,True
|
||||
Bardic Lore,Bardic Lore,1,https://2e.aonprd.com/Search.aspx?query=Bardic Lore,https://2e.aonprd.com/Feats.aspx?ID=179,True
|
||||
Lingering Composition,,1,https://2e.aonprd.com/Search.aspx?query=Lingering Composition,https://2e.aonprd.com/Spells.aspx?ID=389,False
|
||||
Reach Spell,Reach Spell,1,https://2e.aonprd.com/Search.aspx?query=Reach Spell,https://2e.aonprd.com/Feats.aspx?ID=181,True
|
||||
Versatile Performance,Versatile Performance,1,https://2e.aonprd.com/Search.aspx?query=Versatile Performance,https://2e.aonprd.com/Feats.aspx?ID=182,True
|
||||
Cantrip Expansion (Bard),Cantrip Expansion,2,https://2e.aonprd.com/Search.aspx?query=Cantrip Expansion,https://2e.aonprd.com/Feats.aspx?ID=183,True
|
||||
Esoteric Polymath,Esoteric Polymath,2,https://2e.aonprd.com/Search.aspx?query=Esoteric Polymath,https://2e.aonprd.com/Feats.aspx?ID=184,True
|
||||
Inspire Competence,Inspire Competence,2,https://2e.aonprd.com/Search.aspx?query=Inspire Competence,https://2e.aonprd.com/Feats.aspx?ID=185,True
|
||||
Loremaster’s Etude,,-1,https://2e.aonprd.com/Search.aspx?query=Loremaster’s Etude,https://2e.aonprd.com/Search.aspx?query=Loremaster%u2019s+Etude,False
|
||||
Multifarious Muse,Multifarious Muse,2,https://2e.aonprd.com/Search.aspx?query=Multifarious Muse,https://2e.aonprd.com/Feats.aspx?ID=187,True
|
||||
Inspire Defense,,2,https://2e.aonprd.com/Search.aspx?query=Inspire Defense,https://2e.aonprd.com/Spells.aspx?ID=387,False
|
||||
Melodious Spell,Melodious Spell,4,https://2e.aonprd.com/Search.aspx?query=Melodious Spell,https://2e.aonprd.com/Feats.aspx?ID=189,True
|
||||
Triple Time,Triple Time,4,https://2e.aonprd.com/Search.aspx?query=Triple Time,https://2e.aonprd.com/Feats.aspx?ID=190,True
|
||||
Versatile Signature,Versatile Signature,4,https://2e.aonprd.com/Search.aspx?query=Versatile Signature,https://2e.aonprd.com/Feats.aspx?ID=191,True
|
||||
Dirge of Doom,Dirge of Doom,6,https://2e.aonprd.com/Search.aspx?query=Dirge of Doom,https://2e.aonprd.com/Feats.aspx?ID=192,True
|
||||
Harmonize,Harmonize,6,https://2e.aonprd.com/Search.aspx?query=Harmonize,https://2e.aonprd.com/Feats.aspx?ID=193,True
|
||||
Steady Spellcasting (Bard),Steady Spellcasting,6,https://2e.aonprd.com/Search.aspx?query=Steady Spellcasting,https://2e.aonprd.com/Feats.aspx?ID=194,True
|
||||
Eclectic Skill,Eclectic Skill,8,https://2e.aonprd.com/Search.aspx?query=Eclectic Skill,https://2e.aonprd.com/Feats.aspx?ID=195,True
|
||||
Inspire Heroics,,4,https://2e.aonprd.com/Search.aspx?query=Inspire Heroics,https://2e.aonprd.com/Spells.aspx?ID=388,False
|
||||
Know-It-All,Know-It-All,8,https://2e.aonprd.com/Search.aspx?query=Know-It-All,https://2e.aonprd.com/Feats.aspx?ID=197,True
|
||||
House of Imaginary Walls,House of Imaginary Walls,10,https://2e.aonprd.com/Search.aspx?query=House of Imaginary Walls,https://2e.aonprd.com/Feats.aspx?ID=198,True
|
||||
Quickened Casting (Bard),Quickened Casting,10,https://2e.aonprd.com/Search.aspx?query=Quickened Casting,https://2e.aonprd.com/Feats.aspx?ID=199,True
|
||||
Unusual Composition,Unusual Composition,10,https://2e.aonprd.com/Search.aspx?query=Unusual Composition,https://2e.aonprd.com/Feats.aspx?ID=200,True
|
||||
Eclectic Polymath,Eclectic Polymath,12,https://2e.aonprd.com/Search.aspx?query=Eclectic Polymath,https://2e.aonprd.com/Feats.aspx?ID=201,True
|
||||
Inspirational Focus,Inspirational Focus,12,https://2e.aonprd.com/Search.aspx?query=Inspirational Focus,https://2e.aonprd.com/Feats.aspx?ID=202,True
|
||||
Allegro,Allegro,14,https://2e.aonprd.com/Search.aspx?query=Allegro,https://2e.aonprd.com/Feats.aspx?ID=203,True
|
||||
Soothing Ballad,Soothing Ballad,14,https://2e.aonprd.com/Search.aspx?query=Soothing Ballad,https://2e.aonprd.com/Feats.aspx?ID=204,True
|
||||
True Hypercognition,True Hypercognition,14,https://2e.aonprd.com/Search.aspx?query=True Hypercognition,https://2e.aonprd.com/Feats.aspx?ID=205,True
|
||||
Effortless Concentration,Effortless Concentration,16,https://2e.aonprd.com/Search.aspx?query=Effortless Concentration,https://2e.aonprd.com/Feats.aspx?ID=206,True
|
||||
Studious Capacity,Studious Capacity,16,https://2e.aonprd.com/Search.aspx?query=Studious Capacity,https://2e.aonprd.com/Feats.aspx?ID=207,True
|
||||
Deep Lore,Deep Lore,18,https://2e.aonprd.com/Search.aspx?query=Deep Lore,https://2e.aonprd.com/Feats.aspx?ID=208,True
|
||||
Eternal Composition,Eternal Composition,18,https://2e.aonprd.com/Search.aspx?query=Eternal Composition,https://2e.aonprd.com/Feats.aspx?ID=209,True
|
||||
Impossible Polymath,Impossible Polymath,18,https://2e.aonprd.com/Search.aspx?query=Impossible Polymath,https://2e.aonprd.com/Feats.aspx?ID=210,True
|
||||
Fatal Aria,Fatal Aria,20,https://2e.aonprd.com/Search.aspx?query=Fatal Aria,https://2e.aonprd.com/Feats.aspx?ID=211,True
|
||||
Perfect Encore,Perfect Encore,20,https://2e.aonprd.com/Search.aspx?query=Perfect Encore,https://2e.aonprd.com/Feats.aspx?ID=212,True
|
||||
Symphony of the Muse,Symphony of the Muses,20,https://2e.aonprd.com/Search.aspx?query=Symphony of the Muse,https://2e.aonprd.com/Feats.aspx?ID=213,False
|
||||
Deity’s Domain,,-1,https://2e.aonprd.com/Search.aspx?query=Deity’s Domain,https://2e.aonprd.com/Search.aspx?query=Deity%u2019s+Domain,False
|
||||
Ranged Reprisal,Ranged Reprisal,1,https://2e.aonprd.com/Search.aspx?query=Ranged Reprisal,https://2e.aonprd.com/Feats.aspx?ID=215,True
|
||||
Unimpeded Step,Unimpeded Step,1,https://2e.aonprd.com/Search.aspx?query=Unimpeded Step,https://2e.aonprd.com/Feats.aspx?ID=216,True
|
||||
Weight of Guilt,Weight of Guilt,1,https://2e.aonprd.com/Search.aspx?query=Weight of Guilt,https://2e.aonprd.com/Feats.aspx?ID=217,True
|
||||
Divine Grace,Divine Grace,2,https://2e.aonprd.com/Search.aspx?query=Divine Grace,https://2e.aonprd.com/Feats.aspx?ID=218,True
|
||||
Dragonslayer Oath,Dragonslayer Oath,2,https://2e.aonprd.com/Search.aspx?query=Dragonslayer Oath,https://2e.aonprd.com/Feats.aspx?ID=219,True
|
||||
Fiendsbane Oath,Fiendsbane Oath,2,https://2e.aonprd.com/Search.aspx?query=Fiendsbane Oath,https://2e.aonprd.com/Feats.aspx?ID=220,True
|
||||
Shining Oath,Shining Oath,2,https://2e.aonprd.com/Search.aspx?query=Shining Oath,https://2e.aonprd.com/Feats.aspx?ID=221,True
|
||||
Vengeful Oath,Vengeful Oath,2,https://2e.aonprd.com/Search.aspx?query=Vengeful Oath,https://2e.aonprd.com/Feats.aspx?ID=222,True
|
||||
Aura of Courage,Aura of Courage,4,https://2e.aonprd.com/Search.aspx?query=Aura of Courage,https://2e.aonprd.com/Feats.aspx?ID=223,True
|
||||
Divine Health,Divine Health,4,https://2e.aonprd.com/Search.aspx?query=Divine Health,https://2e.aonprd.com/Feats.aspx?ID=224,True
|
||||
Mercy,Mercy,4,https://2e.aonprd.com/Search.aspx?query=Mercy,https://2e.aonprd.com/Feats.aspx?ID=225,True
|
||||
Attack of Opportunity,Attack of Opportunity,6,https://2e.aonprd.com/Search.aspx?query=Attack of Opportunity,https://2e.aonprd.com/Feats.aspx?ID=145,True
|
||||
Litany Against Wrath,,3,https://2e.aonprd.com/Search.aspx?query=Litany Against Wrath,https://2e.aonprd.com/Spells.aspx?ID=397,False
|
||||
Loyal Warhouse,Loyal Warhorse,6,https://2e.aonprd.com/Search.aspx?query=Loyal Warhouse,https://2e.aonprd.com/Feats.aspx?ID=228,False
|
||||
Shield Warden (Champion),Shield Warden,6,https://2e.aonprd.com/Search.aspx?query=Shield Warden,https://2e.aonprd.com/Feats.aspx?ID=229,True
|
||||
Smite Evil,Smite Evil,6,https://2e.aonprd.com/Search.aspx?query=Smite Evil,https://2e.aonprd.com/Feats.aspx?ID=230,True
|
||||
Advanced Deity’s Domain,,-1,https://2e.aonprd.com/Search.aspx?query=Advanced Deity’s Domain,https://2e.aonprd.com/Search.aspx?query=Advanced+Deity%u2019s+Domain,False
|
||||
Greater Mercy,Greater Mercy,8,https://2e.aonprd.com/Search.aspx?query=Greater Mercy,https://2e.aonprd.com/Feats.aspx?ID=232,True
|
||||
Heal Mount,Heal Mount,8,https://2e.aonprd.com/Search.aspx?query=Heal Mount,https://2e.aonprd.com/Feats.aspx?ID=233,True
|
||||
Quick Block,Quick Block,8,https://2e.aonprd.com/Search.aspx?query=Quick Block,https://2e.aonprd.com/Feats.aspx?ID=234,True
|
||||
Second Ally,Second Ally,8,https://2e.aonprd.com/Search.aspx?query=Second Ally,https://2e.aonprd.com/Feats.aspx?ID=235,True
|
||||
Sense Evil,Sense Evil,8,https://2e.aonprd.com/Search.aspx?query=Sense Evil,https://2e.aonprd.com/Feats.aspx?ID=236,True
|
||||
Devoted Focus,Devoted Focus,10,https://2e.aonprd.com/Search.aspx?query=Devoted Focus,https://2e.aonprd.com/Feats.aspx?ID=237,True
|
||||
Imposing Destrier,Imposing Destrier,10,https://2e.aonprd.com/Search.aspx?query=Imposing Destrier,https://2e.aonprd.com/Feats.aspx?ID=238,True
|
||||
Litany Against Sloth,Litany Against Sloth,10,https://2e.aonprd.com/Search.aspx?query=Litany Against Sloth,https://2e.aonprd.com/Feats.aspx?ID=239,True
|
||||
Radiant Blade Spirit,Radiant Blade Spirit,10,https://2e.aonprd.com/Search.aspx?query=Radiant Blade Spirit,https://2e.aonprd.com/Feats.aspx?ID=240,True
|
||||
Shield of Reckoning,Shield of Reckoning,10,https://2e.aonprd.com/Search.aspx?query=Shield of Reckoning,https://2e.aonprd.com/Feats.aspx?ID=241,True
|
||||
Affliction Mercy,Affliction Mercy,12,https://2e.aonprd.com/Search.aspx?query=Affliction Mercy,https://2e.aonprd.com/Feats.aspx?ID=242,True
|
||||
Aura of Faith,Aura of Faith,12,https://2e.aonprd.com/Search.aspx?query=Aura of Faith,https://2e.aonprd.com/Feats.aspx?ID=243,True
|
||||
Blade of Justice,Blade of Justice,12,https://2e.aonprd.com/Search.aspx?query=Blade of Justice,https://2e.aonprd.com/Feats.aspx?ID=244,True
|
||||
Champion’s Sacrifice,,-1,https://2e.aonprd.com/Search.aspx?query=Champion’s Sacrifice,https://2e.aonprd.com/Search.aspx?query=Champion%u2019s+Sacrifice,False
|
||||
Divine Wall,Divine Wall,12,https://2e.aonprd.com/Search.aspx?query=Divine Wall,https://2e.aonprd.com/Feats.aspx?ID=246,True
|
||||
Lasting Doubt,Lasting Doubt,12,https://2e.aonprd.com/Search.aspx?query=Lasting Doubt,https://2e.aonprd.com/Feats.aspx?ID=247,True
|
||||
Liberating Stride,Liberating Stride,12,https://2e.aonprd.com/Search.aspx?query=Liberating Stride,https://2e.aonprd.com/Feats.aspx?ID=248,True
|
||||
Anchoring Aura,Anchoring Aura,14,https://2e.aonprd.com/Search.aspx?query=Anchoring Aura,https://2e.aonprd.com/Feats.aspx?ID=249,True
|
||||
Aura of Life,Aura of Life,14,https://2e.aonprd.com/Search.aspx?query=Aura of Life,https://2e.aonprd.com/Feats.aspx?ID=250,True
|
||||
Aura of Righteousness,Aura of Righteousness,14,https://2e.aonprd.com/Search.aspx?query=Aura of Righteousness,https://2e.aonprd.com/Feats.aspx?ID=251,True
|
||||
Aura of Vengeance,Aura of Vengeance,14,https://2e.aonprd.com/Search.aspx?query=Aura of Vengeance,https://2e.aonprd.com/Feats.aspx?ID=252,True
|
||||
Divine Reflexes,Divine Reflexes,14,https://2e.aonprd.com/Search.aspx?query=Divine Reflexes,https://2e.aonprd.com/Feats.aspx?ID=253,True
|
||||
Litany of Righteousness,Litany of Righteousness,14,https://2e.aonprd.com/Search.aspx?query=Litany of Righteousness,https://2e.aonprd.com/Feats.aspx?ID=254,True
|
||||
Wyrmbane Aura,Wyrmbane Aura,14,https://2e.aonprd.com/Search.aspx?query=Wyrmbane Aura,https://2e.aonprd.com/Feats.aspx?ID=255,True
|
||||
Auspicious Mount,Auspicious Mount,16,https://2e.aonprd.com/Search.aspx?query=Auspicious Mount,https://2e.aonprd.com/Feats.aspx?ID=256,True
|
||||
Instrument of Zeal,Instrument of Zeal,16,https://2e.aonprd.com/Search.aspx?query=Instrument of Zeal,https://2e.aonprd.com/Feats.aspx?ID=257,True
|
||||
Shield of Grace,Shield of Grace,16,https://2e.aonprd.com/Search.aspx?query=Shield of Grace,https://2e.aonprd.com/Feats.aspx?ID=258,True
|
||||
Celestial Form,Celestial Form,18,https://2e.aonprd.com/Search.aspx?query=Celestial Form,https://2e.aonprd.com/Feats.aspx?ID=259,True
|
||||
Ultimate Mercy,Ultimate Mercy,18,https://2e.aonprd.com/Search.aspx?query=Ultimate Mercy,https://2e.aonprd.com/Feats.aspx?ID=260,True
|
||||
Celestial Mount,Celestial Mount,20,https://2e.aonprd.com/Search.aspx?query=Celestial Mount,https://2e.aonprd.com/Feats.aspx?ID=261,True
|
||||
Radiant Blade Master,Radiant Blade Master,20,https://2e.aonprd.com/Search.aspx?query=Radiant Blade Master,https://2e.aonprd.com/Feats.aspx?ID=262,True
|
||||
Shield Paragon,Shield Paragon,20,https://2e.aonprd.com/Search.aspx?query=Shield Paragon,https://2e.aonprd.com/Feats.aspx?ID=263,True
|
||||
Deadly Simplicity,Deadly Simplicity,1,https://2e.aonprd.com/Search.aspx?query=Deadly Simplicity,https://2e.aonprd.com/Feats.aspx?ID=264,True
|
||||
Domain Initiate,Domain Initiate,1,https://2e.aonprd.com/Search.aspx?query=Domain Initiate,https://2e.aonprd.com/Feats.aspx?ID=265,True
|
||||
Harming Hands,Harming Hands,1,https://2e.aonprd.com/Search.aspx?query=Harming Hands,https://2e.aonprd.com/Feats.aspx?ID=266,True
|
||||
Healing Hands,Healing Hands,1,https://2e.aonprd.com/Search.aspx?query=Healing Hands,https://2e.aonprd.com/Feats.aspx?ID=267,True
|
||||
Holy Castigation,Holy Castigation,1,https://2e.aonprd.com/Search.aspx?query=Holy Castigation,https://2e.aonprd.com/Feats.aspx?ID=268,True
|
||||
Cantrip Expansion (Cleric),Cantrip Expansion,2,https://2e.aonprd.com/Search.aspx?query=Cantrip Expansion,https://2e.aonprd.com/Feats.aspx?ID=183,True
|
||||
Communal Healing,Communal Healing,2,https://2e.aonprd.com/Search.aspx?query=Communal Healing,https://2e.aonprd.com/Feats.aspx?ID=271,True
|
||||
Emblazon Armament,Emblazon Armament,2,https://2e.aonprd.com/Search.aspx?query=Emblazon Armament,https://2e.aonprd.com/Feats.aspx?ID=272,True
|
||||
Sap Life,Sap Life,2,https://2e.aonprd.com/Search.aspx?query=Sap Life,https://2e.aonprd.com/Feats.aspx?ID=273,True
|
||||
Turn Undead,Turn Undead,2,https://2e.aonprd.com/Search.aspx?query=Turn Undead,https://2e.aonprd.com/Feats.aspx?ID=274,True
|
||||
Versatile Font,Versatile Font,2,https://2e.aonprd.com/Search.aspx?query=Versatile Font,https://2e.aonprd.com/Feats.aspx?ID=275,True
|
||||
Channel Smite,Channel Smite,4,https://2e.aonprd.com/Search.aspx?query=Channel Smite,https://2e.aonprd.com/Feats.aspx?ID=276,True
|
||||
Command Undead,Command Undead,4,https://2e.aonprd.com/Search.aspx?query=Command Undead,https://2e.aonprd.com/Feats.aspx?ID=277,True
|
||||
Directed Channel,Directed Channel,4,https://2e.aonprd.com/Search.aspx?query=Directed Channel,https://2e.aonprd.com/Feats.aspx?ID=278,True
|
||||
Improved Communal Healing,Improved Communal Healing,4,https://2e.aonprd.com/Search.aspx?query=Improved Communal Healing,https://2e.aonprd.com/Feats.aspx?ID=279,True
|
||||
Necrotic Infusion,Necrotic Infusion,4,https://2e.aonprd.com/Search.aspx?query=Necrotic Infusion,https://2e.aonprd.com/Feats.aspx?ID=280,True
|
||||
Cast Down,Cast Down,6,https://2e.aonprd.com/Search.aspx?query=Cast Down,https://2e.aonprd.com/Feats.aspx?ID=281,True
|
||||
Divine Weapon,Divine Weapon,6,https://2e.aonprd.com/Search.aspx?query=Divine Weapon,https://2e.aonprd.com/Feats.aspx?ID=282,True
|
||||
Selective Energy,Selective Energy,6,https://2e.aonprd.com/Search.aspx?query=Selective Energy,https://2e.aonprd.com/Feats.aspx?ID=283,True
|
||||
Steady Spellcasting,Steady Spellcasting,6,https://2e.aonprd.com/Search.aspx?query=Steady Spellcasting,https://2e.aonprd.com/Feats.aspx?ID=194,True
|
||||
Advanced Domain,Advanced Domain,8,https://2e.aonprd.com/Search.aspx?query=Advanced Domain,https://2e.aonprd.com/Feats.aspx?ID=285,True
|
||||
Align Armament,Align Armament,8,https://2e.aonprd.com/Search.aspx?query=Align Armament,https://2e.aonprd.com/Feats.aspx?ID=286,True
|
||||
Channeled Succor,Channeled Succor,8,https://2e.aonprd.com/Search.aspx?query=Channeled Succor,https://2e.aonprd.com/Feats.aspx?ID=287,True
|
||||
Cremate Undead,Cremate Undead,8,https://2e.aonprd.com/Search.aspx?query=Cremate Undead,https://2e.aonprd.com/Feats.aspx?ID=288,True
|
||||
Emblazon Energy,Emblazon Energy,8,https://2e.aonprd.com/Search.aspx?query=Emblazon Energy,https://2e.aonprd.com/Feats.aspx?ID=289,True
|
||||
Castigating Weapon,Castigating Weapon,10,https://2e.aonprd.com/Search.aspx?query=Castigating Weapon,https://2e.aonprd.com/Feats.aspx?ID=290,True
|
||||
Heroic Recovery,Heroic Recovery,10,https://2e.aonprd.com/Search.aspx?query=Heroic Recovery,https://2e.aonprd.com/Feats.aspx?ID=291,True
|
||||
Improved Command Undead,Improved Command Undead,10,https://2e.aonprd.com/Search.aspx?query=Improved Command Undead,https://2e.aonprd.com/Feats.aspx?ID=292,True
|
||||
Replenishment of War,Replenishment of War,10,https://2e.aonprd.com/Search.aspx?query=Replenishment of War,https://2e.aonprd.com/Feats.aspx?ID=293,True
|
||||
Defensive Recovery,Defensive Recovery,12,https://2e.aonprd.com/Search.aspx?query=Defensive Recovery,https://2e.aonprd.com/Feats.aspx?ID=294,True
|
||||
Domain Focus,Domain Focus,12,https://2e.aonprd.com/Search.aspx?query=Domain Focus,https://2e.aonprd.com/Feats.aspx?ID=295,True
|
||||
Emblazon Antimagic,Emblazon Antimagic,12,https://2e.aonprd.com/Search.aspx?query=Emblazon Antimagic,https://2e.aonprd.com/Feats.aspx?ID=296,True
|
||||
Shared Replenishment,Shared Replenishment,12,https://2e.aonprd.com/Search.aspx?query=Shared Replenishment,https://2e.aonprd.com/Feats.aspx?ID=297,True
|
||||
Deity’s Protection,,-1,https://2e.aonprd.com/Search.aspx?query=Deity’s Protection,https://2e.aonprd.com/Search.aspx?query=Deity%u2019s+Protection,False
|
||||
Extend Armament Alignment,Extend Armament Alignment,14,https://2e.aonprd.com/Search.aspx?query=Extend Armament Alignment,https://2e.aonprd.com/Feats.aspx?ID=299,True
|
||||
Fast Channel,Fast Channel,14,https://2e.aonprd.com/Search.aspx?query=Fast Channel,https://2e.aonprd.com/Feats.aspx?ID=300,True
|
||||
Swift Banishment,Swift Banishment,14,https://2e.aonprd.com/Search.aspx?query=Swift Banishment,https://2e.aonprd.com/Feats.aspx?ID=301,True
|
||||
Eternal Bane,Eternal Bane,16,https://2e.aonprd.com/Search.aspx?query=Eternal Bane,https://2e.aonprd.com/Feats.aspx?ID=302,True
|
||||
Eternal Blessing,Eternal Blessing,16,https://2e.aonprd.com/Search.aspx?query=Eternal Blessing,https://2e.aonprd.com/Feats.aspx?ID=303,True
|
||||
Resurrectionist,Resurrectionist,16,https://2e.aonprd.com/Search.aspx?query=Resurrectionist,https://2e.aonprd.com/Feats.aspx?ID=304,True
|
||||
Domain Wellspring,Domain Wellspring,18,https://2e.aonprd.com/Search.aspx?query=Domain Wellspring,https://2e.aonprd.com/Feats.aspx?ID=305,True
|
||||
Echoing Channel,Echoing Channel,18,https://2e.aonprd.com/Search.aspx?query=Echoing Channel,https://2e.aonprd.com/Feats.aspx?ID=306,True
|
||||
Improved Swift Banishment,Improved Swift Banishment,18,https://2e.aonprd.com/Search.aspx?query=Improved Swift Banishment,https://2e.aonprd.com/Feats.aspx?ID=307,True
|
||||
Avatar’s Audience,,-1,https://2e.aonprd.com/Search.aspx?query=Avatar’s Audience,https://2e.aonprd.com/Search.aspx?query=Avatar%u2019s+Audience,False
|
||||
Maker of Miracles,Maker of Miracles,20,https://2e.aonprd.com/Search.aspx?query=Maker of Miracles,https://2e.aonprd.com/Feats.aspx?ID=309,True
|
||||
Metamagic Channel,Metamagic Channel,20,https://2e.aonprd.com/Search.aspx?query=Metamagic Channel,https://2e.aonprd.com/Feats.aspx?ID=310,True
|
||||
Animal Companion (Druid),Animal Companion,1,https://2e.aonprd.com/Search.aspx?query=Animal Companion,https://2e.aonprd.com/Feats.aspx?ID=311,True
|
||||
Leshy Familiar,Leshy Familiar,1,https://2e.aonprd.com/Search.aspx?query=Leshy Familiar,https://2e.aonprd.com/Feats.aspx?ID=312,True
|
||||
Storm Born,Storm Born,1,https://2e.aonprd.com/Search.aspx?query=Storm Born,https://2e.aonprd.com/Feats.aspx?ID=314,True
|
||||
Widen Spell,Widen Spell,1,https://2e.aonprd.com/Search.aspx?query=Widen Spell,https://2e.aonprd.com/Feats.aspx?ID=315,True
|
||||
Wild Shape,Wild Shape,1,https://2e.aonprd.com/Search.aspx?query=Wild Shape,https://2e.aonprd.com/Feats.aspx?ID=316,True
|
||||
Call of the Wild,Call of the Wild,2,https://2e.aonprd.com/Search.aspx?query=Call of the Wild,https://2e.aonprd.com/Feats.aspx?ID=317,True
|
||||
Enhanced Familiar (Druid),Enhanced Familiar,2,https://2e.aonprd.com/Search.aspx?query=Enhanced Familiar,https://2e.aonprd.com/Feats.aspx?ID=318,True
|
||||
Order Explorer,Order Explorer,2,https://2e.aonprd.com/Search.aspx?query=Order Explorer,https://2e.aonprd.com/Feats.aspx?ID=319,True
|
||||
Poison Resistance (Druid),Poison Resistance,2,https://2e.aonprd.com/Search.aspx?query=Poison Resistance,https://2e.aonprd.com/Feats.aspx?ID=96,True
|
||||
Form Control,Form Control,4,https://2e.aonprd.com/Search.aspx?query=Form Control,https://2e.aonprd.com/Feats.aspx?ID=321,True
|
||||
Mature Animal Companion (Druid),Mature Animal Companion (Druid),4,https://2e.aonprd.com/Search.aspx?query=Mature Animal Companion,https://2e.aonprd.com/Feats.aspx?ID=322,False
|
||||
Order Magic,Order Magic,4,https://2e.aonprd.com/Search.aspx?query=Order Magic,https://2e.aonprd.com/Feats.aspx?ID=323,True
|
||||
Thousand Faces,Thousand Faces,4,https://2e.aonprd.com/Search.aspx?query=Thousand Faces,https://2e.aonprd.com/Feats.aspx?ID=324,True
|
||||
Woodland Stride,Woodland Stride,4,https://2e.aonprd.com/Search.aspx?query=Woodland Stride,https://2e.aonprd.com/Feats.aspx?ID=325,True
|
||||
Green Empathy,Green Empathy,6,https://2e.aonprd.com/Search.aspx?query=Green Empathy,https://2e.aonprd.com/Feats.aspx?ID=326,True
|
||||
Insect Shape,Insect Shape,6,https://2e.aonprd.com/Search.aspx?query=Insect Shape,https://2e.aonprd.com/Feats.aspx?ID=327,True
|
||||
Storm Retribution,Storm Retribution,6,https://2e.aonprd.com/Search.aspx?query=Storm Retribution,https://2e.aonprd.com/Feats.aspx?ID=329,True
|
||||
Ferocious Shape,Ferocious Shape,8,https://2e.aonprd.com/Search.aspx?query=Ferocious Shape,https://2e.aonprd.com/Feats.aspx?ID=330,True
|
||||
Fey Caller,Fey Caller,8,https://2e.aonprd.com/Search.aspx?query=Fey Caller,https://2e.aonprd.com/Feats.aspx?ID=331,True
|
||||
Incredible Companion (Druid),Incredible Companion (Druid),8,https://2e.aonprd.com/Search.aspx?query=Incredible Companion,https://2e.aonprd.com/Feats.aspx?ID=332,False
|
||||
Soaring Shape,Soaring Shape,8,https://2e.aonprd.com/Search.aspx?query=Soaring Shape,https://2e.aonprd.com/Feats.aspx?ID=333,True
|
||||
Wind Caller,Wind Caller,8,https://2e.aonprd.com/Search.aspx?query=Wind Caller,https://2e.aonprd.com/Feats.aspx?ID=334,True
|
||||
Elemental Shape,Elemental Shape,10,https://2e.aonprd.com/Search.aspx?query=Elemental Shape,https://2e.aonprd.com/Feats.aspx?ID=335,True
|
||||
Healing Transformation,Healing Transformation,10,https://2e.aonprd.com/Search.aspx?query=Healing Transformation,https://2e.aonprd.com/Feats.aspx?ID=336,True
|
||||
Overwhelming Energy (Druid),Overwhelming Energy,10,https://2e.aonprd.com/Search.aspx?query=Overwhelming Energy,https://2e.aonprd.com/Feats.aspx?ID=337,True
|
||||
Plant Shape,Plant Shape,10,https://2e.aonprd.com/Search.aspx?query=Plant Shape,https://2e.aonprd.com/Feats.aspx?ID=338,True
|
||||
Side by Side (Druid),Side by Side (Druid),10,https://2e.aonprd.com/Search.aspx?query=Side by Side,https://2e.aonprd.com/Feats.aspx?ID=339,False
|
||||
Dragon Shape,Dragon Shape,12,https://2e.aonprd.com/Search.aspx?query=Dragon Shape,https://2e.aonprd.com/Feats.aspx?ID=340,True
|
||||
Green Tongue,Green Tongue,12,https://2e.aonprd.com/Search.aspx?query=Green Tongue,https://2e.aonprd.com/Feats.aspx?ID=341,True
|
||||
Primal Focus,Primal Focus,12,https://2e.aonprd.com/Search.aspx?query=Primal Focus,https://2e.aonprd.com/Feats.aspx?ID=342,True
|
||||
Primal Summons,Primal Summons,12,https://2e.aonprd.com/Search.aspx?query=Primal Summons,https://2e.aonprd.com/Feats.aspx?ID=343,True
|
||||
Specialized Companion (Druid),Specialized Companion (Druid),14,https://2e.aonprd.com/Search.aspx?query=Specialized Companion,https://2e.aonprd.com/Feats.aspx?ID=344,False
|
||||
Timeless Nature,Timeless Nature,14,https://2e.aonprd.com/Search.aspx?query=Timeless Nature,https://2e.aonprd.com/Feats.aspx?ID=345,True
|
||||
Verdant Metamorphosis,Verdant Metamorphosis,14,https://2e.aonprd.com/Search.aspx?query=Verdant Metamorphosis,https://2e.aonprd.com/Feats.aspx?ID=346,True
|
||||
Impaling Briars,,8,https://2e.aonprd.com/Search.aspx?query=Impaling Briars,https://2e.aonprd.com/Spells.aspx?ID=475,False
|
||||
Monstrosity Shape,Monstrosity Shape,16,https://2e.aonprd.com/Search.aspx?query=Monstrosity Shape,https://2e.aonprd.com/Feats.aspx?ID=349,True
|
||||
Invoke Disaster,Invoke Disaster,18,https://2e.aonprd.com/Search.aspx?query=Invoke Disaster,https://2e.aonprd.com/Feats.aspx?ID=350,True
|
||||
Perfect Form Control,Perfect Form Control,18,https://2e.aonprd.com/Search.aspx?query=Perfect Form Control,https://2e.aonprd.com/Feats.aspx?ID=351,True
|
||||
Primal Wellspring,Primal Wellspring,18,https://2e.aonprd.com/Search.aspx?query=Primal Wellspring,https://2e.aonprd.com/Feats.aspx?ID=352,True
|
||||
Hierophant’s Power,,-1,https://2e.aonprd.com/Search.aspx?query=Hierophant’s Power,https://2e.aonprd.com/Search.aspx?query=Hierophant%u2019s+Power,False
|
||||
Leyline Conduit,Leyline Conduit,20,https://2e.aonprd.com/Search.aspx?query=Leyline Conduit,https://2e.aonprd.com/Feats.aspx?ID=354,True
|
||||
True Shapeshifter,True Shapeshifter,20,https://2e.aonprd.com/Search.aspx?query=True Shapeshifter,https://2e.aonprd.com/Feats.aspx?ID=355,True
|
||||
Double Slice,Double Slice,1,https://2e.aonprd.com/Search.aspx?query=Double Slice,https://2e.aonprd.com/Feats.aspx?ID=356,True
|
||||
Exacting Strike,Exacting Strike,1,https://2e.aonprd.com/Search.aspx?query=Exacting Strike,https://2e.aonprd.com/Feats.aspx?ID=357,True
|
||||
Point-Blank Shot,Point-Blank Shot,1,https://2e.aonprd.com/Search.aspx?query=Point-Blank Shot,https://2e.aonprd.com/Feats.aspx?ID=358,True
|
||||
Power Attack,Power Attack,1,https://2e.aonprd.com/Search.aspx?query=Power Attack,https://2e.aonprd.com/Feats.aspx?ID=359,True
|
||||
Reactive Shield,Reactive Shield,1,https://2e.aonprd.com/Search.aspx?query=Reactive Shield,https://2e.aonprd.com/Feats.aspx?ID=360,True
|
||||
Snagging Strike,Snagging Strike,1,https://2e.aonprd.com/Search.aspx?query=Snagging Strike,https://2e.aonprd.com/Feats.aspx?ID=361,True
|
||||
Aggressive Block,Aggressive Block,2,https://2e.aonprd.com/Search.aspx?query=Aggressive Block,https://2e.aonprd.com/Feats.aspx?ID=363,True
|
||||
Assisting Shot,Assisting Shot,2,https://2e.aonprd.com/Search.aspx?query=Assisting Shot,https://2e.aonprd.com/Feats.aspx?ID=364,True
|
||||
Brutish Shove,Brutish Shove,2,https://2e.aonprd.com/Search.aspx?query=Brutish Shove,https://2e.aonprd.com/Feats.aspx?ID=365,True
|
||||
Combat Grab,Combat Grab,2,https://2e.aonprd.com/Search.aspx?query=Combat Grab,https://2e.aonprd.com/Feats.aspx?ID=366,True
|
||||
Dueling Parry,Dueling Parry,2,https://2e.aonprd.com/Search.aspx?query=Dueling Parry,https://2e.aonprd.com/Feats.aspx?ID=367,True
|
||||
Intimidating Strike,Intimidating Strike,2,https://2e.aonprd.com/Search.aspx?query=Intimidating Strike,https://2e.aonprd.com/Feats.aspx?ID=368,True
|
||||
Lunge,Lunge,2,https://2e.aonprd.com/Search.aspx?query=Lunge,https://2e.aonprd.com/Feats.aspx?ID=369,True
|
||||
Double Shot,Double Shot,4,https://2e.aonprd.com/Search.aspx?query=Double Shot,https://2e.aonprd.com/Feats.aspx?ID=370,True
|
||||
Dual-Handed Assault,Dual-Handed Assault,4,https://2e.aonprd.com/Search.aspx?query=Dual-Handed Assault,https://2e.aonprd.com/Feats.aspx?ID=371,True
|
||||
Knockdown,Knockdown,4,https://2e.aonprd.com/Search.aspx?query=Knockdown,https://2e.aonprd.com/Feats.aspx?ID=372,True
|
||||
Powerful Shove,Powerful Shove,4,https://2e.aonprd.com/Search.aspx?query=Powerful Shove,https://2e.aonprd.com/Feats.aspx?ID=373,True
|
||||
Quick Reversal,Quick Reversal,4,https://2e.aonprd.com/Search.aspx?query=Quick Reversal,https://2e.aonprd.com/Feats.aspx?ID=374,True
|
||||
Shielded Stride,Shielded Stride,4,https://2e.aonprd.com/Search.aspx?query=Shielded Stride,https://2e.aonprd.com/Feats.aspx?ID=375,True
|
||||
Twin Parry,Twin Parry,4,https://2e.aonprd.com/Search.aspx?query=Twin Parry,https://2e.aonprd.com/Feats.aspx?ID=377,True
|
||||
Advanced Weapon Training,Advanced Weapon Training,6,https://2e.aonprd.com/Search.aspx?query=Advanced Weapon Training,https://2e.aonprd.com/Feats.aspx?ID=378,True
|
||||
Advantageous Assault,Advantageous Assault,6,https://2e.aonprd.com/Search.aspx?query=Advantageous Assault,https://2e.aonprd.com/Feats.aspx?ID=379,True
|
||||
Disarming Stance,Disarming Stance,6,https://2e.aonprd.com/Search.aspx?query=Disarming Stance,https://2e.aonprd.com/Feats.aspx?ID=380,True
|
||||
Furious Focus,Furious Focus,6,https://2e.aonprd.com/Search.aspx?query=Furious Focus,https://2e.aonprd.com/Feats.aspx?ID=381,True
|
||||
Guardian’s Deflection,,-1,https://2e.aonprd.com/Search.aspx?query=Guardian’s Deflection,https://2e.aonprd.com/Search.aspx?query=Guardian%u2019s+Deflection,False
|
||||
Reflexive Shield,Reflexive Shield,6,https://2e.aonprd.com/Search.aspx?query=Reflexive Shield,https://2e.aonprd.com/Feats.aspx?ID=383,True
|
||||
Revealing Stab,Revealing Stab,6,https://2e.aonprd.com/Search.aspx?query=Revealing Stab,https://2e.aonprd.com/Feats.aspx?ID=384,True
|
||||
Shatter Defenses,Shatter Defenses,6,https://2e.aonprd.com/Search.aspx?query=Shatter Defenses,https://2e.aonprd.com/Feats.aspx?ID=385,True
|
||||
Shield Warden (Fighter),Shield Warden,6,https://2e.aonprd.com/Search.aspx?query=Shield Warden,https://2e.aonprd.com/Feats.aspx?ID=229,True
|
||||
Triple Shot,Triple Shot,6,https://2e.aonprd.com/Search.aspx?query=Triple Shot,https://2e.aonprd.com/Feats.aspx?ID=387,True
|
||||
Blind-Fight,Blind-Fight,8,https://2e.aonprd.com/Search.aspx?query=Blind-Fight,https://2e.aonprd.com/Feats.aspx?ID=388,True
|
||||
Dueling Riposte,Dueling Riposte,8,https://2e.aonprd.com/Search.aspx?query=Dueling Riposte,https://2e.aonprd.com/Feats.aspx?ID=389,True
|
||||
Felling Strike,Felling Strike,8,https://2e.aonprd.com/Search.aspx?query=Felling Strike,https://2e.aonprd.com/Feats.aspx?ID=390,True
|
||||
Incredible Aim,Incredible Aim,8,https://2e.aonprd.com/Search.aspx?query=Incredible Aim,https://2e.aonprd.com/Feats.aspx?ID=391,True
|
||||
Mobile Shot Stance,Mobile Shot Stance,8,https://2e.aonprd.com/Search.aspx?query=Mobile Shot Stance,https://2e.aonprd.com/Feats.aspx?ID=392,True
|
||||
Positioning Assault,Positioning Assault,8,https://2e.aonprd.com/Search.aspx?query=Positioning Assault,https://2e.aonprd.com/Feats.aspx?ID=393,True
|
||||
Quick Shield Block,Quick Shield Block,8,https://2e.aonprd.com/Search.aspx?query=Quick Shield Block,https://2e.aonprd.com/Feats.aspx?ID=394,True
|
||||
Sudden Leap (Fighter),Sudden Leap,8,https://2e.aonprd.com/Search.aspx?query=Sudden Leap,https://2e.aonprd.com/Feats.aspx?ID=155,True
|
||||
Agile Grace,Agile Grace,10,https://2e.aonprd.com/Search.aspx?query=Agile Grace,https://2e.aonprd.com/Feats.aspx?ID=396,True
|
||||
Certain Strike,Certain Strike,10,https://2e.aonprd.com/Search.aspx?query=Certain Strike,https://2e.aonprd.com/Feats.aspx?ID=397,True
|
||||
Combat Reflexes,Combat Reflexes,10,https://2e.aonprd.com/Search.aspx?query=Combat Reflexes,https://2e.aonprd.com/Feats.aspx?ID=398,True
|
||||
Debilitating Shot,Debilitating Shot,10,https://2e.aonprd.com/Search.aspx?query=Debilitating Shot,https://2e.aonprd.com/Feats.aspx?ID=399,True
|
||||
Disarming Twist,Disarming Twist,10,https://2e.aonprd.com/Search.aspx?query=Disarming Twist,https://2e.aonprd.com/Feats.aspx?ID=400,True
|
||||
Disruptive Stance,Disruptive Stance,10,https://2e.aonprd.com/Search.aspx?query=Disruptive Stance,https://2e.aonprd.com/Feats.aspx?ID=401,True
|
||||
Fearsome Brute,Fearsome Brute,10,https://2e.aonprd.com/Search.aspx?query=Fearsome Brute,https://2e.aonprd.com/Feats.aspx?ID=402,True
|
||||
Improved Knockdown,Improved Knockdown,10,https://2e.aonprd.com/Search.aspx?query=Improved Knockdown,https://2e.aonprd.com/Feats.aspx?ID=403,True
|
||||
Mirror Shield,Mirror Shield,10,https://2e.aonprd.com/Search.aspx?query=Mirror Shield,https://2e.aonprd.com/Feats.aspx?ID=404,True
|
||||
Brutal Finish,Brutal Finish,12,https://2e.aonprd.com/Search.aspx?query=Brutal Finish,https://2e.aonprd.com/Feats.aspx?ID=406,True
|
||||
Dueling Dance,Dueling Dance,12,https://2e.aonprd.com/Search.aspx?query=Dueling Dance,https://2e.aonprd.com/Feats.aspx?ID=407,True
|
||||
Flinging Shove,Flinging Shove,12,https://2e.aonprd.com/Search.aspx?query=Flinging Shove,https://2e.aonprd.com/Feats.aspx?ID=408,True
|
||||
Improved Dueling Riposte,Improved Dueling Riposte,12,https://2e.aonprd.com/Search.aspx?query=Improved Dueling Riposte,https://2e.aonprd.com/Feats.aspx?ID=409,True
|
||||
Incredible Ricochet,Incredible Ricochet,12,https://2e.aonprd.com/Search.aspx?query=Incredible Ricochet,https://2e.aonprd.com/Feats.aspx?ID=410,True
|
||||
Lunging Stance,Lunging Stance,12,https://2e.aonprd.com/Search.aspx?query=Lunging Stance,https://2e.aonprd.com/Feats.aspx?ID=411,True
|
||||
Paragon’s Guard,,-1,https://2e.aonprd.com/Search.aspx?query=Paragon’s Guard,https://2e.aonprd.com/Search.aspx?query=Paragon%u2019s+Guard,False
|
||||
Spring Attack,Spring Attack,12,https://2e.aonprd.com/Search.aspx?query=Spring Attack,https://2e.aonprd.com/Feats.aspx?ID=413,True
|
||||
Desperate Finisher,Desperate Finisher,14,https://2e.aonprd.com/Search.aspx?query=Desperate Finisher,https://2e.aonprd.com/Feats.aspx?ID=414,True
|
||||
Determination,Determination,14,https://2e.aonprd.com/Search.aspx?query=Determination,https://2e.aonprd.com/Feats.aspx?ID=415,True
|
||||
Guiding Finish,Guiding Finish,14,https://2e.aonprd.com/Search.aspx?query=Guiding Finish,https://2e.aonprd.com/Feats.aspx?ID=416,True
|
||||
Guiding Riposte,Guiding Riposte,14,https://2e.aonprd.com/Search.aspx?query=Guiding Riposte,https://2e.aonprd.com/Feats.aspx?ID=417,True
|
||||
Improved Twin Riposte (Fighter),Improved Twin Riposte (Fighter),14,https://2e.aonprd.com/Search.aspx?query=Improved Twin Riposte,https://2e.aonprd.com/Feats.aspx?ID=418,False
|
||||
Stance Savant (Fighter),Stance Savant (Fighter),14,https://2e.aonprd.com/Search.aspx?query=Stance Savant,https://2e.aonprd.com/Feats.aspx?ID=419,False
|
||||
Two-Weapon Flurry,Two-Weapon Flurry,14,https://2e.aonprd.com/Search.aspx?query=Two-Weapon Flurry,https://2e.aonprd.com/Feats.aspx?ID=420,True
|
||||
Graceful Poise,Graceful Poise,16,https://2e.aonprd.com/Search.aspx?query=Graceful Poise,https://2e.aonprd.com/Feats.aspx?ID=422,True
|
||||
Improved Reflexive Shield,Improved Reflexive Shield,16,https://2e.aonprd.com/Search.aspx?query=Improved Reflexive Shield,https://2e.aonprd.com/Feats.aspx?ID=423,True
|
||||
Multishot Stance,Multishot Stance,16,https://2e.aonprd.com/Search.aspx?query=Multishot Stance,https://2e.aonprd.com/Feats.aspx?ID=424,True
|
||||
Twinned Defense,Twinned Defense,16,https://2e.aonprd.com/Search.aspx?query=Twinned Defense,https://2e.aonprd.com/Feats.aspx?ID=425,True
|
||||
Impossible Volley,Impossible Volley,18,https://2e.aonprd.com/Search.aspx?query=Impossible Volley,https://2e.aonprd.com/Feats.aspx?ID=426,True
|
||||
Savage Critical,Savage Critical,18,https://2e.aonprd.com/Search.aspx?query=Savage Critical,https://2e.aonprd.com/Feats.aspx?ID=427,True
|
||||
Boudless Reprisals,Boundless Reprisals,20,https://2e.aonprd.com/Search.aspx?query=Boudless Reprisals,https://2e.aonprd.com/Feats.aspx?ID=428,False
|
||||
Weapon Supremacy,Weapon Supremacy,20,https://2e.aonprd.com/Search.aspx?query=Weapon Supremacy,https://2e.aonprd.com/Feats.aspx?ID=429,True
|
||||
Crane Stance,Crane Stance,1,https://2e.aonprd.com/Search.aspx?query=Crane Stance,https://2e.aonprd.com/Feats.aspx?ID=430,True
|
||||
Dragon Stance,Dragon Stance,1,https://2e.aonprd.com/Search.aspx?query=Dragon Stance,https://2e.aonprd.com/Feats.aspx?ID=431,True
|
||||
Ki Rush,Ki Rush,1,https://2e.aonprd.com/Search.aspx?query=Ki Rush,https://2e.aonprd.com/Feats.aspx?ID=432,True
|
||||
Ki Strike,,1,https://2e.aonprd.com/Search.aspx?query=Ki Strike,https://2e.aonprd.com/Spells.aspx?ID=486,False
|
||||
Monastic Weaponry,Monastic Weaponry,1,https://2e.aonprd.com/Search.aspx?query=Monastic Weaponry,https://2e.aonprd.com/Feats.aspx?ID=434,True
|
||||
Mountain Stance,Mountain Stance,1,https://2e.aonprd.com/Search.aspx?query=Mountain Stance,https://2e.aonprd.com/Feats.aspx?ID=435,True
|
||||
Tiger Stance,Tiger Stance,1,https://2e.aonprd.com/Search.aspx?query=Tiger Stance,https://2e.aonprd.com/Feats.aspx?ID=436,True
|
||||
Wolf Stance,Wolf Stance,1,https://2e.aonprd.com/Search.aspx?query=Wolf Stance,https://2e.aonprd.com/Feats.aspx?ID=437,True
|
||||
Brawling Focus,Brawling Focus,2,https://2e.aonprd.com/Search.aspx?query=Brawling Focus,https://2e.aonprd.com/Feats.aspx?ID=438,True
|
||||
Crushing Grab,Crushing Grab,2,https://2e.aonprd.com/Search.aspx?query=Crushing Grab,https://2e.aonprd.com/Feats.aspx?ID=439,True
|
||||
Dancing Leaf,Dancing Leaf,2,https://2e.aonprd.com/Search.aspx?query=Dancing Leaf,https://2e.aonprd.com/Feats.aspx?ID=440,True
|
||||
Elemental Fist,Elemental Fist,2,https://2e.aonprd.com/Search.aspx?query=Elemental Fist,https://2e.aonprd.com/Feats.aspx?ID=441,True
|
||||
Stunning Fist,Stunning Fist,2,https://2e.aonprd.com/Search.aspx?query=Stunning Fist,https://2e.aonprd.com/Feats.aspx?ID=442,True
|
||||
Deflect Arrows,Deflect Arrows,4,https://2e.aonprd.com/Search.aspx?query=Deflect Arrows,https://2e.aonprd.com/Feats.aspx?ID=443,True
|
||||
Flurry of Maneuvers,Flurry of Maneuvers,4,https://2e.aonprd.com/Search.aspx?query=Flurry of Maneuvers,https://2e.aonprd.com/Feats.aspx?ID=444,True
|
||||
Flying Kick,Flying Kick,4,https://2e.aonprd.com/Search.aspx?query=Flying Kick,https://2e.aonprd.com/Feats.aspx?ID=445,True
|
||||
Guarded Movement,Guarded Movement,4,https://2e.aonprd.com/Search.aspx?query=Guarded Movement,https://2e.aonprd.com/Feats.aspx?ID=446,True
|
||||
Stand Still,Stand Still,4,https://2e.aonprd.com/Search.aspx?query=Stand Still,https://2e.aonprd.com/Feats.aspx?ID=447,True
|
||||
Wholeness of Body,Wholeness of Body,4,https://2e.aonprd.com/Search.aspx?query=Wholeness of Body,https://2e.aonprd.com/Feats.aspx?ID=448,True
|
||||
Abundant Step,Abundant Step,6,https://2e.aonprd.com/Search.aspx?query=Abundant Step,https://2e.aonprd.com/Feats.aspx?ID=449,True
|
||||
Crane Flutter,Crane Flutter,6,https://2e.aonprd.com/Search.aspx?query=Crane Flutter,https://2e.aonprd.com/Feats.aspx?ID=450,True
|
||||
Dragon Roar,Dragon Roar,6,https://2e.aonprd.com/Search.aspx?query=Dragon Roar,https://2e.aonprd.com/Feats.aspx?ID=451,True
|
||||
Ki Blast,,3,https://2e.aonprd.com/Search.aspx?query=Ki Blast,https://2e.aonprd.com/Spells.aspx?ID=484,False
|
||||
Mountain Stronghold,Mountain Stronghold,6,https://2e.aonprd.com/Search.aspx?query=Mountain Stronghold,https://2e.aonprd.com/Feats.aspx?ID=453,True
|
||||
Tiger Slash,Tiger Slash,6,https://2e.aonprd.com/Search.aspx?query=Tiger Slash,https://2e.aonprd.com/Feats.aspx?ID=454,True
|
||||
Water Step,Water Step,6,https://2e.aonprd.com/Search.aspx?query=Water Step,https://2e.aonprd.com/Feats.aspx?ID=455,True
|
||||
Whirling Throw,Whirling Throw,6,https://2e.aonprd.com/Search.aspx?query=Whirling Throw,https://2e.aonprd.com/Feats.aspx?ID=456,True
|
||||
Wolf Drag,Wolf Drag,6,https://2e.aonprd.com/Search.aspx?query=Wolf Drag,https://2e.aonprd.com/Feats.aspx?ID=457,True
|
||||
Arrow Snatching ,Arrow Snatching ,8,https://2e.aonprd.com/Search.aspx?query=Arrow Snatching ,https://2e.aonprd.com/Feats.aspx?ID=458,True
|
||||
Ironblood Stance,Ironblood Stance,8,https://2e.aonprd.com/Search.aspx?query=Ironblood Stance,https://2e.aonprd.com/Feats.aspx?ID=459,True
|
||||
Mixed Maneuver,Mixed Maneuver,8,https://2e.aonprd.com/Search.aspx?query=Mixed Maneuver,https://2e.aonprd.com/Feats.aspx?ID=460,True
|
||||
Tangled Forest Stance,Tangled Forest Stance,8,https://2e.aonprd.com/Search.aspx?query=Tangled Forest Stance,https://2e.aonprd.com/Feats.aspx?ID=461,True
|
||||
Wall Run,Wall Run,8,https://2e.aonprd.com/Search.aspx?query=Wall Run,https://2e.aonprd.com/Feats.aspx?ID=462,True
|
||||
Wild Winds Initiate,Wild Winds Initiate,8,https://2e.aonprd.com/Search.aspx?query=Wild Winds Initiate,https://2e.aonprd.com/Feats.aspx?ID=463,True
|
||||
Knockback Strike,Knockback Strike,10,https://2e.aonprd.com/Search.aspx?query=Knockback Strike,https://2e.aonprd.com/Feats.aspx?ID=464,True
|
||||
Sleeper Hold,Sleeper Hold,10,https://2e.aonprd.com/Search.aspx?query=Sleeper Hold,https://2e.aonprd.com/Feats.aspx?ID=465,True
|
||||
Wind Jump,Wind Jump,10,https://2e.aonprd.com/Search.aspx?query=Wind Jump,https://2e.aonprd.com/Feats.aspx?ID=466,True
|
||||
Winding Flow,Winding Flow,10,https://2e.aonprd.com/Search.aspx?query=Winding Flow,https://2e.aonprd.com/Feats.aspx?ID=467,True
|
||||
Diamond Soul,Diamond Soul,12,https://2e.aonprd.com/Search.aspx?query=Diamond Soul,https://2e.aonprd.com/Feats.aspx?ID=468,True
|
||||
Disrupt Ki,Disrupt Ki,12,https://2e.aonprd.com/Search.aspx?query=Disrupt Ki,https://2e.aonprd.com/Feats.aspx?ID=469,True
|
||||
Improved Knockback,Improved Knockback,12,https://2e.aonprd.com/Search.aspx?query=Improved Knockback,https://2e.aonprd.com/Feats.aspx?ID=470,True
|
||||
Meditative Focus,Meditative Focus,12,https://2e.aonprd.com/Search.aspx?query=Meditative Focus,https://2e.aonprd.com/Feats.aspx?ID=471,True
|
||||
Stance Savant (Monk),Stance Savant (Fighter),14,https://2e.aonprd.com/Search.aspx?query=Stance Savant,https://2e.aonprd.com/Feats.aspx?ID=419,False
|
||||
Ironblood Surge,Ironblood Surge,14,https://2e.aonprd.com/Search.aspx?query=Ironblood Surge,https://2e.aonprd.com/Feats.aspx?ID=473,True
|
||||
Moutain Quake,Moutain Quake,14,https://2e.aonprd.com/Search.aspx?query=Moutain Quake,https://2e.aonprd.com/Feats.aspx?ID=474,True
|
||||
Tangled Forest Rake,Tangled Forest Rake,14,https://2e.aonprd.com/Search.aspx?query=Tangled Forest Rake,https://2e.aonprd.com/Feats.aspx?ID=475,True
|
||||
Timeless Body,Timeless Body,14,https://2e.aonprd.com/Search.aspx?query=Timeless Body,https://2e.aonprd.com/Feats.aspx?ID=476,True
|
||||
Tongue of the Sun and Moon,Tongue of the Sun and Moon,14,https://2e.aonprd.com/Search.aspx?query=Tongue of the Sun and Moon,https://2e.aonprd.com/Feats.aspx?ID=477,True
|
||||
Wild Winds Gust,Wild Winds Gust,16,https://2e.aonprd.com/Search.aspx?query=Wild Winds Gust,https://2e.aonprd.com/Feats.aspx?ID=478,True
|
||||
Enlightened Presence,Enlightened Presence,16,https://2e.aonprd.com/Search.aspx?query=Enlightened Presence,https://2e.aonprd.com/Feats.aspx?ID=479,True
|
||||
Master of Many Styles,Master of Many Styles,16,https://2e.aonprd.com/Search.aspx?query=Master of Many Styles,https://2e.aonprd.com/Feats.aspx?ID=480,True
|
||||
Quivering Palm,,8,https://2e.aonprd.com/Search.aspx?query=Quivering Palm,https://2e.aonprd.com/Spells.aspx?ID=487,False
|
||||
Shattering Strike,Shattering Strike,16,https://2e.aonprd.com/Search.aspx?query=Shattering Strike,https://2e.aonprd.com/Feats.aspx?ID=482,True
|
||||
Diamond Fists,Diamond Fists,18,https://2e.aonprd.com/Search.aspx?query=Diamond Fists,https://2e.aonprd.com/Feats.aspx?ID=483,True
|
||||
Empty Body,Empty Body,18,https://2e.aonprd.com/Search.aspx?query=Empty Body,https://2e.aonprd.com/Feats.aspx?ID=484,True
|
||||
Meditative Wellspring,Meditative Wellspring,18,https://2e.aonprd.com/Search.aspx?query=Meditative Wellspring,https://2e.aonprd.com/Feats.aspx?ID=485,True
|
||||
Swift River,Swift River,18,https://2e.aonprd.com/Search.aspx?query=Swift River,https://2e.aonprd.com/Feats.aspx?ID=486,True
|
||||
Enduring Quickness,Enduring Quickness,20,https://2e.aonprd.com/Search.aspx?query=Enduring Quickness,https://2e.aonprd.com/Feats.aspx?ID=487,True
|
||||
Fuse Stance,Fuse Stance,20,https://2e.aonprd.com/Search.aspx?query=Fuse Stance,https://2e.aonprd.com/Feats.aspx?ID=488,True
|
||||
Impossible Technique,Impossible Technique,20,https://2e.aonprd.com/Search.aspx?query=Impossible Technique,https://2e.aonprd.com/Feats.aspx?ID=489,True
|
||||
Animal Companion (Ranger),Animal Companion,1,https://2e.aonprd.com/Search.aspx?query=Animal Companion,https://2e.aonprd.com/Feats.aspx?ID=311,True
|
||||
Crossbow Ace,Crossbow Ace,1,https://2e.aonprd.com/Search.aspx?query=Crossbow Ace,https://2e.aonprd.com/Feats.aspx?ID=491,True
|
||||
Hunted Shot,Hunted Shot,1,https://2e.aonprd.com/Search.aspx?query=Hunted Shot,https://2e.aonprd.com/Feats.aspx?ID=492,True
|
||||
Monster Hunter,Monster Hunter,1,https://2e.aonprd.com/Search.aspx?query=Monster Hunter,https://2e.aonprd.com/Feats.aspx?ID=493,True
|
||||
Twin Takedown,Twin Takedown,1,https://2e.aonprd.com/Search.aspx?query=Twin Takedown,https://2e.aonprd.com/Feats.aspx?ID=494,True
|
||||
Favored Terrain,Favored Terrain,2,https://2e.aonprd.com/Search.aspx?query=Favored Terrain,https://2e.aonprd.com/Feats.aspx?ID=495,True
|
||||
Hunter’s Aim,,-1,https://2e.aonprd.com/Search.aspx?query=Hunter’s Aim,https://2e.aonprd.com/Search.aspx?query=Hunter%u2019s+Aim,False
|
||||
Monster Warden,Monster Warden,2,https://2e.aonprd.com/Search.aspx?query=Monster Warden,https://2e.aonprd.com/Feats.aspx?ID=497,True
|
||||
Quick Draw,Quick Draw,2,https://2e.aonprd.com/Search.aspx?query=Quick Draw,https://2e.aonprd.com/Feats.aspx?ID=498,True
|
||||
Wild Empathy,Wild Empathy,2,https://2e.aonprd.com/Search.aspx?query=Wild Empathy,https://2e.aonprd.com/Feats.aspx?ID=499,True
|
||||
Companion’s Cry,,-1,https://2e.aonprd.com/Search.aspx?query=Companion’s Cry,https://2e.aonprd.com/Search.aspx?query=Companion%u2019s+Cry,False
|
||||
Disrupt Prey,Disrupt Prey,4,https://2e.aonprd.com/Search.aspx?query=Disrupt Prey,https://2e.aonprd.com/Feats.aspx?ID=501,True
|
||||
Far Shot,Far Shot,4,https://2e.aonprd.com/Search.aspx?query=Far Shot,https://2e.aonprd.com/Feats.aspx?ID=502,True
|
||||
Favored Enemy,Favored Enemy,4,https://2e.aonprd.com/Search.aspx?query=Favored Enemy,https://2e.aonprd.com/Feats.aspx?ID=503,True
|
||||
Running Reload,Running Reload,4,https://2e.aonprd.com/Search.aspx?query=Running Reload,https://2e.aonprd.com/Feats.aspx?ID=504,True
|
||||
Scout’s Warning,,-1,https://2e.aonprd.com/Search.aspx?query=Scout’s Warning,https://2e.aonprd.com/Search.aspx?query=Scout%u2019s+Warning,False
|
||||
Snare Specialist,Snare Specialist,4,https://2e.aonprd.com/Search.aspx?query=Snare Specialist,https://2e.aonprd.com/Feats.aspx?ID=506,True
|
||||
Twin Parry (Ranger),Twin Parry,4,https://2e.aonprd.com/Search.aspx?query=Twin Parry,https://2e.aonprd.com/Feats.aspx?ID=377,True
|
||||
Mature Animal Companion (Ranger),Mature Animal Companion (Druid),4,https://2e.aonprd.com/Search.aspx?query=Mature Animal Companion,https://2e.aonprd.com/Feats.aspx?ID=322,False
|
||||
Quick Snares,Quick Snares,6,https://2e.aonprd.com/Search.aspx?query=Quick Snares,https://2e.aonprd.com/Feats.aspx?ID=509,True
|
||||
Skirmish Strike,Skirmish Strike,6,https://2e.aonprd.com/Search.aspx?query=Skirmish Strike,https://2e.aonprd.com/Feats.aspx?ID=510,True
|
||||
Snap Shot,Snap Shot,6,https://2e.aonprd.com/Search.aspx?query=Snap Shot,https://2e.aonprd.com/Feats.aspx?ID=511,True
|
||||
Swift Tracker,Swift Tracker,6,https://2e.aonprd.com/Search.aspx?query=Swift Tracker,https://2e.aonprd.com/Feats.aspx?ID=512,True
|
||||
Deadly Aim,Deadly Aim,8,https://2e.aonprd.com/Search.aspx?query=Deadly Aim,https://2e.aonprd.com/Feats.aspx?ID=514,True
|
||||
Hazard Finder,Hazard Finder,8,https://2e.aonprd.com/Search.aspx?query=Hazard Finder,https://2e.aonprd.com/Feats.aspx?ID=515,True
|
||||
Powerful Snares,Powerful Snares,8,https://2e.aonprd.com/Search.aspx?query=Powerful Snares,https://2e.aonprd.com/Feats.aspx?ID=516,True
|
||||
Terrain Master,Terrain Master,8,https://2e.aonprd.com/Search.aspx?query=Terrain Master,https://2e.aonprd.com/Feats.aspx?ID=517,True
|
||||
Warden’s Boon,,-1,https://2e.aonprd.com/Search.aspx?query=Warden’s Boon,https://2e.aonprd.com/Search.aspx?query=Warden%u2019s+Boon,False
|
||||
Camouflage,Camouflage,10,https://2e.aonprd.com/Search.aspx?query=Camouflage,https://2e.aonprd.com/Feats.aspx?ID=519,True
|
||||
Incredible Companion (Ranger),Incredible Companion (Druid),8,https://2e.aonprd.com/Search.aspx?query=Incredible Companion,https://2e.aonprd.com/Feats.aspx?ID=332,False
|
||||
Master Monster Hunter,Master Monster Hunter,10,https://2e.aonprd.com/Search.aspx?query=Master Monster Hunter,https://2e.aonprd.com/Feats.aspx?ID=521,True
|
||||
Penetrating Shot,Penetrating Shot,10,https://2e.aonprd.com/Search.aspx?query=Penetrating Shot,https://2e.aonprd.com/Feats.aspx?ID=522,True
|
||||
Twin Riposte,Twin Riposte,10,https://2e.aonprd.com/Search.aspx?query=Twin Riposte,https://2e.aonprd.com/Feats.aspx?ID=523,True
|
||||
Warden’s Step,,-1,https://2e.aonprd.com/Search.aspx?query=Warden’s Step,https://2e.aonprd.com/Search.aspx?query=Warden%u2019s+Step,False
|
||||
Distracting Shot,Distracting Shot,12,https://2e.aonprd.com/Search.aspx?query=Distracting Shot,https://2e.aonprd.com/Feats.aspx?ID=525,True
|
||||
Double Prey,Double Prey,12,https://2e.aonprd.com/Search.aspx?query=Double Prey,https://2e.aonprd.com/Feats.aspx?ID=526,True
|
||||
Lightning Snares,Lightning Snares,12,https://2e.aonprd.com/Search.aspx?query=Lightning Snares,https://2e.aonprd.com/Feats.aspx?ID=527,True
|
||||
Second Sting,Second Sting,12,https://2e.aonprd.com/Search.aspx?query=Second Sting,https://2e.aonprd.com/Feats.aspx?ID=528,True
|
||||
Side by Side (Ranger),Side by Side (Druid),10,https://2e.aonprd.com/Search.aspx?query=Side by Side,https://2e.aonprd.com/Feats.aspx?ID=339,False
|
||||
Sense the Unseen (Ranger),Sense the Unseen,14,https://2e.aonprd.com/Search.aspx?query=Sense the Unseen,https://2e.aonprd.com/Feats.aspx?ID=530,True
|
||||
Shared Prey,Shared Prey,14,https://2e.aonprd.com/Search.aspx?query=Shared Prey,https://2e.aonprd.com/Feats.aspx?ID=531,True
|
||||
Stealthy Companion,Stealthy Companion,14,https://2e.aonprd.com/Search.aspx?query=Stealthy Companion,https://2e.aonprd.com/Feats.aspx?ID=532,True
|
||||
Targeting Shot,Targeting Shot,14,https://2e.aonprd.com/Search.aspx?query=Targeting Shot,https://2e.aonprd.com/Feats.aspx?ID=533,True
|
||||
Warden’s Guidance,,-1,https://2e.aonprd.com/Search.aspx?query=Warden’s Guidance,https://2e.aonprd.com/Search.aspx?query=Warden%u2019s+Guidance,False
|
||||
Greater Distracting Shot,Greater Distracting Shot,16,https://2e.aonprd.com/Search.aspx?query=Greater Distracting Shot,https://2e.aonprd.com/Feats.aspx?ID=535,True
|
||||
Improved Twin Riposte (Ranger),Improved Twin Riposte (Fighter),14,https://2e.aonprd.com/Search.aspx?query=Improved Twin Riposte,https://2e.aonprd.com/Feats.aspx?ID=418,False
|
||||
Legendary Monster Hunter,Legendary Monster Hunter,16,https://2e.aonprd.com/Search.aspx?query=Legendary Monster Hunter,https://2e.aonprd.com/Feats.aspx?ID=537,True
|
||||
Specialized Companion (Ranger),Specialized Companion (Druid),14,https://2e.aonprd.com/Search.aspx?query=Specialized Companion,https://2e.aonprd.com/Feats.aspx?ID=344,False
|
||||
Ubiquitous Snares,Ubiquitous Snares,16,https://2e.aonprd.com/Search.aspx?query=Ubiquitous Snares,https://2e.aonprd.com/Feats.aspx?ID=539,True
|
||||
Impossible Flurry,Impossible Flurry,18,https://2e.aonprd.com/Search.aspx?query=Impossible Flurry,https://2e.aonprd.com/Feats.aspx?ID=540,True
|
||||
Manifold Edge,Manifold Edge,18,https://2e.aonprd.com/Search.aspx?query=Manifold Edge,https://2e.aonprd.com/Feats.aspx?ID=542,True
|
||||
Masterful Companion,Masterful Companion,18,https://2e.aonprd.com/Search.aspx?query=Masterful Companion,https://2e.aonprd.com/Feats.aspx?ID=543,True
|
||||
Perfect Shot,Perfect Shot,18,https://2e.aonprd.com/Search.aspx?query=Perfect Shot,https://2e.aonprd.com/Feats.aspx?ID=544,True
|
||||
Shadow Hunter,Shadow Hunter,18,https://2e.aonprd.com/Search.aspx?query=Shadow Hunter,https://2e.aonprd.com/Feats.aspx?ID=545,True
|
||||
Legendary Shot,Legendary Shot,20,https://2e.aonprd.com/Search.aspx?query=Legendary Shot,https://2e.aonprd.com/Feats.aspx?ID=546,True
|
||||
To the Ends of the Earth,To the Ends of the Earth,20,https://2e.aonprd.com/Search.aspx?query=To the Ends of the Earth,https://2e.aonprd.com/Feats.aspx?ID=547,True
|
||||
Triple Threat,Triple Threat,20,https://2e.aonprd.com/Search.aspx?query=Triple Threat,https://2e.aonprd.com/Feats.aspx?ID=548,True
|
||||
Ultimate Skirmisher,Ultimate Skirmisher,20,https://2e.aonprd.com/Search.aspx?query=Ultimate Skirmisher,https://2e.aonprd.com/Feats.aspx?ID=549,True
|
||||
Nimble Dodge,Nimble Dodge,1,https://2e.aonprd.com/Search.aspx?query=Nimble Dodge,https://2e.aonprd.com/Feats.aspx?ID=550,True
|
||||
Trap Finder,Trap Finder,1,https://2e.aonprd.com/Search.aspx?query=Trap Finder,https://2e.aonprd.com/Feats.aspx?ID=551,True
|
||||
Twin Feint,Twin Feint,1,https://2e.aonprd.com/Search.aspx?query=Twin Feint,https://2e.aonprd.com/Feats.aspx?ID=552,True
|
||||
You’re Next,,-1,https://2e.aonprd.com/Search.aspx?query=You’re Next,https://2e.aonprd.com/Search.aspx?query=You%u2019re+Next,False
|
||||
Brutal Beating,Brutal Beating,2,https://2e.aonprd.com/Search.aspx?query=Brutal Beating,https://2e.aonprd.com/Feats.aspx?ID=554,True
|
||||
Distracting Feint,Distracting Feint,2,https://2e.aonprd.com/Search.aspx?query=Distracting Feint,https://2e.aonprd.com/Feats.aspx?ID=555,True
|
||||
Minor Magic,Minor Magic,2,https://2e.aonprd.com/Search.aspx?query=Minor Magic,https://2e.aonprd.com/Feats.aspx?ID=556,True
|
||||
Mobility,Mobility,2,https://2e.aonprd.com/Search.aspx?query=Mobility,https://2e.aonprd.com/Feats.aspx?ID=557,True
|
||||
Unbalancing Blow,Unbalancing Blow,2,https://2e.aonprd.com/Search.aspx?query=Unbalancing Blow,https://2e.aonprd.com/Feats.aspx?ID=559,True
|
||||
Battle Assessment,Battle Assessment,4,https://2e.aonprd.com/Search.aspx?query=Battle Assessment,https://2e.aonprd.com/Feats.aspx?ID=560,True
|
||||
Dread Striker,Dread Striker,4,https://2e.aonprd.com/Search.aspx?query=Dread Striker,https://2e.aonprd.com/Feats.aspx?ID=561,True
|
||||
Magical Trickster,Magical Trickster,4,https://2e.aonprd.com/Search.aspx?query=Magical Trickster,https://2e.aonprd.com/Feats.aspx?ID=562,True
|
||||
Poison Weapon,Poison Weapon,4,https://2e.aonprd.com/Search.aspx?query=Poison Weapon,https://2e.aonprd.com/Feats.aspx?ID=563,True
|
||||
Reactive Pursuit,Reactive Pursuit,4,https://2e.aonprd.com/Search.aspx?query=Reactive Pursuit,https://2e.aonprd.com/Feats.aspx?ID=564,True
|
||||
Sabotage,Sabotage,4,https://2e.aonprd.com/Search.aspx?query=Sabotage,https://2e.aonprd.com/Feats.aspx?ID=565,True
|
||||
Gang Up,,-1,https://2e.aonprd.com/Search.aspx?query=Gang Up,https://2e.aonprd.com/Search.aspx?query=Gang+Up,False
|
||||
Light Step,Light Step,6,https://2e.aonprd.com/Search.aspx?query=Light Step,https://2e.aonprd.com/Feats.aspx?ID=568,True
|
||||
Twist the Knife,Twist the Knife,6,https://2e.aonprd.com/Search.aspx?query=Twist the Knife,https://2e.aonprd.com/Feats.aspx?ID=570,True
|
||||
Delay Trap,Delay Trap,8,https://2e.aonprd.com/Search.aspx?query=Delay Trap,https://2e.aonprd.com/Feats.aspx?ID=572,True
|
||||
Improved Poison Weapon,Improved Poison Weapon,8,https://2e.aonprd.com/Search.aspx?query=Improved Poison Weapon,https://2e.aonprd.com/Feats.aspx?ID=573,True
|
||||
Nimble Roll,Nimble Roll,8,https://2e.aonprd.com/Search.aspx?query=Nimble Roll,https://2e.aonprd.com/Feats.aspx?ID=574,True
|
||||
Opportune Backstab,Opportune Backstab,8,https://2e.aonprd.com/Search.aspx?query=Opportune Backstab,https://2e.aonprd.com/Feats.aspx?ID=575,True
|
||||
Sidestep,Sidestep,8,https://2e.aonprd.com/Search.aspx?query=Sidestep,https://2e.aonprd.com/Feats.aspx?ID=576,True
|
||||
Sly Striker,Impossible Striker,20,https://2e.aonprd.com/Search.aspx?query=Sly Striker,https://2e.aonprd.com/Feats.aspx?ID=600,False
|
||||
Precise Debilitation,Precise Debilitation,10,https://2e.aonprd.com/Search.aspx?query=Precise Debilitation,https://2e.aonprd.com/Feats.aspx?ID=578,True
|
||||
Sneak Savant,Sneak Savant,10,https://2e.aonprd.com/Search.aspx?query=Sneak Savant,https://2e.aonprd.com/Feats.aspx?ID=579,True
|
||||
Tactical Debilitations,Tactical Debilitations,10,https://2e.aonprd.com/Search.aspx?query=Tactical Debilitations,https://2e.aonprd.com/Feats.aspx?ID=580,True
|
||||
Vicious Debilitations,Vicious Debilitations,10,https://2e.aonprd.com/Search.aspx?query=Vicious Debilitations,https://2e.aonprd.com/Feats.aspx?ID=581,True
|
||||
Critical Debilitations,Critical Debilitations,12,https://2e.aonprd.com/Search.aspx?query=Critical Debilitations,https://2e.aonprd.com/Feats.aspx?ID=582,True
|
||||
Fantastic Leap,Fantastic Leap,12,https://2e.aonprd.com/Search.aspx?query=Fantastic Leap,https://2e.aonprd.com/Feats.aspx?ID=583,True
|
||||
Felling Shot,Felling Shot,12,https://2e.aonprd.com/Search.aspx?query=Felling Shot,https://2e.aonprd.com/Feats.aspx?ID=584,True
|
||||
Reactive Interference,Reactive Interference,12,https://2e.aonprd.com/Search.aspx?query=Reactive Interference,https://2e.aonprd.com/Feats.aspx?ID=585,True
|
||||
Spring from the Shadows,Spring from the Shadows,12,https://2e.aonprd.com/Search.aspx?query=Spring from the Shadows,https://2e.aonprd.com/Feats.aspx?ID=586,True
|
||||
Defensive Roll,Defensive Roll,14,https://2e.aonprd.com/Search.aspx?query=Defensive Roll,https://2e.aonprd.com/Feats.aspx?ID=587,True
|
||||
Instant Opening,Instant Opening,14,https://2e.aonprd.com/Search.aspx?query=Instant Opening,https://2e.aonprd.com/Feats.aspx?ID=588,True
|
||||
Leave an Opening,Leave an Opening,14,https://2e.aonprd.com/Search.aspx?query=Leave an Opening,https://2e.aonprd.com/Feats.aspx?ID=589,True
|
||||
Sense the Unseen (Rogue),Sense the Unseen,14,https://2e.aonprd.com/Search.aspx?query=Sense the Unseen,https://2e.aonprd.com/Feats.aspx?ID=530,True
|
||||
Blank Slate,Blank Slate,16,https://2e.aonprd.com/Search.aspx?query=Blank Slate,https://2e.aonprd.com/Feats.aspx?ID=591,True
|
||||
Cloud Step,Cloud Step,16,https://2e.aonprd.com/Search.aspx?query=Cloud Step,https://2e.aonprd.com/Feats.aspx?ID=592,True
|
||||
Cognitive Loophole,Cognitive Loophole,16,https://2e.aonprd.com/Search.aspx?query=Cognitive Loophole,https://2e.aonprd.com/Feats.aspx?ID=593,True
|
||||
Dispelling Slice,Dispelling Slice,16,https://2e.aonprd.com/Search.aspx?query=Dispelling Slice,https://2e.aonprd.com/Feats.aspx?ID=594,True
|
||||
Perfect Distraction,Perfect Distraction,16,https://2e.aonprd.com/Search.aspx?query=Perfect Distraction,https://2e.aonprd.com/Feats.aspx?ID=595,True
|
||||
Implausible Infiltration,Implausible Infiltration,18,https://2e.aonprd.com/Search.aspx?query=Implausible Infiltration,https://2e.aonprd.com/Feats.aspx?ID=596,True
|
||||
Powerful Sneak,Powerful Sneak,18,https://2e.aonprd.com/Search.aspx?query=Powerful Sneak,https://2e.aonprd.com/Feats.aspx?ID=597,True
|
||||
Trickster’s Ace,,-1,https://2e.aonprd.com/Search.aspx?query=Trickster’s Ace,https://2e.aonprd.com/Search.aspx?query=Trickster%u2019s+Ace,False
|
||||
Hidden Paragon,Hidden Paragon,20,https://2e.aonprd.com/Search.aspx?query=Hidden Paragon,https://2e.aonprd.com/Feats.aspx?ID=599,True
|
||||
Impossible Striker,Impossible Striker,20,https://2e.aonprd.com/Search.aspx?query=Impossible Striker,https://2e.aonprd.com/Feats.aspx?ID=600,True
|
||||
Reactive Distraction,Reactive Distraction,20,https://2e.aonprd.com/Search.aspx?query=Reactive Distraction,https://2e.aonprd.com/Feats.aspx?ID=601,True
|
||||
Counterspell (Spontaneous),Clever Counterspell,12,https://2e.aonprd.com/Search.aspx?query=Counterspell,https://2e.aonprd.com/Feats.aspx?ID=653,False
|
||||
Dangerous Sorcery,Dangerous Sorcery,1,https://2e.aonprd.com/Search.aspx?query=Dangerous Sorcery,https://2e.aonprd.com/Feats.aspx?ID=603,True
|
||||
Familiar (Sorcerer),Familiar,1,https://2e.aonprd.com/Search.aspx?query=Familiar,https://2e.aonprd.com/Feats.aspx?ID=604,True
|
||||
Cantrip Expansion (Sorcerer),Cantrip Expansion,2,https://2e.aonprd.com/Search.aspx?query=Cantrip Expansion,https://2e.aonprd.com/Feats.aspx?ID=183,True
|
||||
Enhanced Familiar (Sorcerer),Enhanced Familiar,2,https://2e.aonprd.com/Search.aspx?query=Enhanced Familiar,https://2e.aonprd.com/Feats.aspx?ID=318,True
|
||||
Arcane Evolution,Arcane Evolution,4,https://2e.aonprd.com/Search.aspx?query=Arcane Evolution,https://2e.aonprd.com/Feats.aspx?ID=609,True
|
||||
Bespell Weapon,Bespell Weapon,4,https://2e.aonprd.com/Search.aspx?query=Bespell Weapon,https://2e.aonprd.com/Feats.aspx?ID=610,True
|
||||
Divine Evolution,Divine Evolution,4,https://2e.aonprd.com/Search.aspx?query=Divine Evolution,https://2e.aonprd.com/Feats.aspx?ID=611,True
|
||||
Occult Evolution,Occult Evolution,4,https://2e.aonprd.com/Search.aspx?query=Occult Evolution,https://2e.aonprd.com/Feats.aspx?ID=612,True
|
||||
Primal Evolution,Primal Evolution,4,https://2e.aonprd.com/Search.aspx?query=Primal Evolution,https://2e.aonprd.com/Feats.aspx?ID=613,True
|
||||
Advanced Bloodline,Advanced Bloodline,6,https://2e.aonprd.com/Search.aspx?query=Advanced Bloodline,https://2e.aonprd.com/Feats.aspx?ID=614,True
|
||||
Steady Spellcasting (Sorcerer),Steady Spellcasting,6,https://2e.aonprd.com/Search.aspx?query=Steady Spellcasting,https://2e.aonprd.com/Feats.aspx?ID=194,True
|
||||
Bloodline Resistance,Bloodline Resistance,8,https://2e.aonprd.com/Search.aspx?query=Bloodline Resistance,https://2e.aonprd.com/Feats.aspx?ID=616,True
|
||||
Crossblooded Evolution,Crossblooded Evolution,8,https://2e.aonprd.com/Search.aspx?query=Crossblooded Evolution,https://2e.aonprd.com/Feats.aspx?ID=617,True
|
||||
Greater Bloodline,Greater Bloodline,10,https://2e.aonprd.com/Search.aspx?query=Greater Bloodline,https://2e.aonprd.com/Feats.aspx?ID=618,True
|
||||
Overwhelming Energy (Sorcerer),Overwhelming Energy,10,https://2e.aonprd.com/Search.aspx?query=Overwhelming Energy,https://2e.aonprd.com/Feats.aspx?ID=337,True
|
||||
Quickened Casting (Sorcerer),Quickened Casting,10,https://2e.aonprd.com/Search.aspx?query=Quickened Casting,https://2e.aonprd.com/Feats.aspx?ID=199,True
|
||||
Bloodline Focus,Bloodline Focus,12,https://2e.aonprd.com/Search.aspx?query=Bloodline Focus,https://2e.aonprd.com/Feats.aspx?ID=621,True
|
||||
Magic Sense,Magic Sense,12,https://2e.aonprd.com/Search.aspx?query=Magic Sense,https://2e.aonprd.com/Feats.aspx?ID=622,True
|
||||
Interweave Dispel,Interweave Dispel,14,https://2e.aonprd.com/Search.aspx?query=Interweave Dispel,https://2e.aonprd.com/Feats.aspx?ID=623,True
|
||||
Reflect Spell,Reflect Spell,14,https://2e.aonprd.com/Search.aspx?query=Reflect Spell,https://2e.aonprd.com/Feats.aspx?ID=624,True
|
||||
Greater Mental Evolution,Greater Mental Evolution,16,https://2e.aonprd.com/Search.aspx?query=Greater Mental Evolution,https://2e.aonprd.com/Feats.aspx?ID=626,True
|
||||
Greater Vital Evolution,Greater Vital Evolution,16,https://2e.aonprd.com/Search.aspx?query=Greater Vital Evolution,https://2e.aonprd.com/Feats.aspx?ID=627,True
|
||||
Bloodline Wellspring,Bloodline Wellspring,18,https://2e.aonprd.com/Search.aspx?query=Bloodline Wellspring,https://2e.aonprd.com/Feats.aspx?ID=628,True
|
||||
Greater Crossblooded Evolution,Greater Crossblooded Evolution,18,https://2e.aonprd.com/Search.aspx?query=Greater Crossblooded Evolution,https://2e.aonprd.com/Feats.aspx?ID=629,True
|
||||
Bloodline Conduit,Bloodline Conduit,20,https://2e.aonprd.com/Search.aspx?query=Bloodline Conduit,https://2e.aonprd.com/Feats.aspx?ID=630,True
|
||||
Bloodline Perfection,Bloodline Perfection,20,https://2e.aonprd.com/Search.aspx?query=Bloodline Perfection,https://2e.aonprd.com/Feats.aspx?ID=631,True
|
||||
Metamagic Mastery,Metamagic Mastery,20,https://2e.aonprd.com/Search.aspx?query=Metamagic Mastery,https://2e.aonprd.com/Feats.aspx?ID=632,True
|
||||
Counterspell (Prepared),Clever Counterspell,12,https://2e.aonprd.com/Search.aspx?query=Counterspell,https://2e.aonprd.com/Feats.aspx?ID=653,False
|
||||
Eschew Materials,Eschew Materials,1,https://2e.aonprd.com/Search.aspx?query=Eschew Materials,https://2e.aonprd.com/Feats.aspx?ID=634,True
|
||||
Familiar (Wizard),Familiar,1,https://2e.aonprd.com/Search.aspx?query=Familiar,https://2e.aonprd.com/Feats.aspx?ID=604,True
|
||||
Hand of the Apprentice,Hand of the Apprentice,1,https://2e.aonprd.com/Search.aspx?query=Hand of the Apprentice,https://2e.aonprd.com/Feats.aspx?ID=636,True
|
||||
Cantrip Expansion (Wizard),Cantrip Expansion,2,https://2e.aonprd.com/Search.aspx?query=Cantrip Expansion,https://2e.aonprd.com/Feats.aspx?ID=183,True
|
||||
Conceal Spell,Conceal Spell,2,https://2e.aonprd.com/Search.aspx?query=Conceal Spell,https://2e.aonprd.com/Feats.aspx?ID=640,True
|
||||
Enhanced Familiar (Wizard),Enhanced Familiar,2,https://2e.aonprd.com/Search.aspx?query=Enhanced Familiar,https://2e.aonprd.com/Feats.aspx?ID=318,True
|
||||
Linked Focus,Linked Focus,4,https://2e.aonprd.com/Search.aspx?query=Linked Focus,https://2e.aonprd.com/Feats.aspx?ID=643,True
|
||||
Silent Spell,Silent Spell,4,https://2e.aonprd.com/Search.aspx?query=Silent Spell,https://2e.aonprd.com/Feats.aspx?ID=644,True
|
||||
Spell Penetration,Spell Penetration,6,https://2e.aonprd.com/Search.aspx?query=Spell Penetration,https://2e.aonprd.com/Feats.aspx?ID=645,True
|
||||
Advanced School Spell,Advanced School Spell,8,https://2e.aonprd.com/Search.aspx?query=Advanced School Spell,https://2e.aonprd.com/Feats.aspx?ID=647,True
|
||||
Bond Conservation,Bond Conservation,8,https://2e.aonprd.com/Search.aspx?query=Bond Conservation,https://2e.aonprd.com/Feats.aspx?ID=648,True
|
||||
Universal Versatility,Universal Versatility,8,https://2e.aonprd.com/Search.aspx?query=Universal Versatility,https://2e.aonprd.com/Feats.aspx?ID=649,True
|
||||
Overwhelming Energy (Wizard),Overwhelming Energy,10,https://2e.aonprd.com/Search.aspx?query=Overwhelming Energy,https://2e.aonprd.com/Feats.aspx?ID=337,True
|
||||
Quickened Casting (Wizard),Quickened Casting,10,https://2e.aonprd.com/Search.aspx?query=Quickened Casting,https://2e.aonprd.com/Feats.aspx?ID=199,True
|
||||
Scroll Savant,Scroll Savant,10,https://2e.aonprd.com/Search.aspx?query=Scroll Savant,https://2e.aonprd.com/Feats.aspx?ID=652,True
|
||||
Clever Counterspell,Clever Counterspell,12,https://2e.aonprd.com/Search.aspx?query=Clever Counterspell,https://2e.aonprd.com/Feats.aspx?ID=653,True
|
||||
Bonded Focus,Bonded Focus,14,https://2e.aonprd.com/Search.aspx?query=Bonded Focus,https://2e.aonprd.com/Feats.aspx?ID=655,True
|
||||
Superior Bond,Superior Bond,14,https://2e.aonprd.com/Search.aspx?query=Superior Bond,https://2e.aonprd.com/Feats.aspx?ID=657,True
|
||||
Spell Tinker,Spell Tinker,16,https://2e.aonprd.com/Search.aspx?query=Spell Tinker,https://2e.aonprd.com/Feats.aspx?ID=659,True
|
||||
Infinite Possibilities,Infinite Possibilities,18,https://2e.aonprd.com/Search.aspx?query=Infinite Possibilities,https://2e.aonprd.com/Feats.aspx?ID=660,True
|
||||
Reprepare Spell,Reprepare Spell,18,https://2e.aonprd.com/Search.aspx?query=Reprepare Spell,https://2e.aonprd.com/Feats.aspx?ID=661,True
|
||||
Archwizard’s Might,,-1,https://2e.aonprd.com/Search.aspx?query=Archwizard’s Might,https://2e.aonprd.com/Search.aspx?query=Archwizard%u2019s+Might,False
|
||||
Spell Combination,Spell Combination,20,https://2e.aonprd.com/Search.aspx?query=Spell Combination,https://2e.aonprd.com/Feats.aspx?ID=664,True
|
||||
Alchemist Dedication,Alchemist Dedication,2,https://2e.aonprd.com/Search.aspx?query=Alchemist Dedication,https://2e.aonprd.com/Feats.aspx?ID=665,True
|
||||
Basic Concoction,Basic Concoction,4,https://2e.aonprd.com/Search.aspx?query=Basic Concoction,https://2e.aonprd.com/Feats.aspx?ID=666,True
|
||||
Quick Alchemy,Quick Alchemy,4,https://2e.aonprd.com/Search.aspx?query=Quick Alchemy,https://2e.aonprd.com/Feats.aspx?ID=667,True
|
||||
Advanced Conoction,Advanced Weapon Training,6,https://2e.aonprd.com/Search.aspx?query=Advanced Conoction,https://2e.aonprd.com/Feats.aspx?ID=378,False
|
||||
Expert Alchemy,Expert Alchemy,6,https://2e.aonprd.com/Search.aspx?query=Expert Alchemy,https://2e.aonprd.com/Feats.aspx?ID=669,True
|
||||
Mastery Alchemy,Mastery Alchemy,12,https://2e.aonprd.com/Search.aspx?query=Mastery Alchemy,https://2e.aonprd.com/Feats.aspx?ID=670,True
|
||||
Barbarian Dedication,Barbarian Dedication,2,https://2e.aonprd.com/Search.aspx?query=Barbarian Dedication,https://2e.aonprd.com/Feats.aspx?ID=671,True
|
||||
Barbarian Resiliency,Barbarian Resiliency,4,https://2e.aonprd.com/Search.aspx?query=Barbarian Resiliency,https://2e.aonprd.com/Feats.aspx?ID=672,True
|
||||
Basic Fury,Basic Fury,4,https://2e.aonprd.com/Search.aspx?query=Basic Fury,https://2e.aonprd.com/Feats.aspx?ID=673,True
|
||||
Advanced Fury,Advanced Fury,6,https://2e.aonprd.com/Search.aspx?query=Advanced Fury,https://2e.aonprd.com/Feats.aspx?ID=674,True
|
||||
Instinct Ability,Instinct Ability,6,https://2e.aonprd.com/Search.aspx?query=Instinct Ability,https://2e.aonprd.com/Feats.aspx?ID=675,True
|
||||
Juggernaut’s Fortitude,,-1,https://2e.aonprd.com/Search.aspx?query=Juggernaut’s Fortitude,https://2e.aonprd.com/Search.aspx?query=Juggernaut%u2019s+Fortitude,False
|
||||
Bard Dedication,Bard Dedication,2,https://2e.aonprd.com/Search.aspx?query=Bard Dedication,https://2e.aonprd.com/Feats.aspx?ID=677,True
|
||||
Basic Bard Spellcasting,Basic Bard Spellcasting,4,https://2e.aonprd.com/Search.aspx?query=Basic Bard Spellcasting,https://2e.aonprd.com/Feats.aspx?ID=678,True
|
||||
Basic Muse’s Whispers,,-1,https://2e.aonprd.com/Search.aspx?query=Basic Muse’s Whispers,https://2e.aonprd.com/Search.aspx?query=Basic+Muse%u2019s+Whispers,False
|
||||
Advanced Muse’s Whispers,,-1,https://2e.aonprd.com/Search.aspx?query=Advanced Muse’s Whispers,https://2e.aonprd.com/Search.aspx?query=Advanced+Muse%u2019s+Whispers,False
|
||||
Counter Perform,Counter Perform,6,https://2e.aonprd.com/Search.aspx?query=Counter Perform,https://2e.aonprd.com/Feats.aspx?ID=681,True
|
||||
Inspirational Performance,Inspirational Performance,8,https://2e.aonprd.com/Search.aspx?query=Inspirational Performance,https://2e.aonprd.com/Feats.aspx?ID=682,True
|
||||
Occult Breadth,Occult Breadth,8,https://2e.aonprd.com/Search.aspx?query=Occult Breadth,https://2e.aonprd.com/Feats.aspx?ID=683,True
|
||||
Expert Bard Spellcasting,Expert Bard Spellcasting,12,https://2e.aonprd.com/Search.aspx?query=Expert Bard Spellcasting,https://2e.aonprd.com/Feats.aspx?ID=684,True
|
||||
Master Bard Spellcasting,Master Bard Spellcasting,18,https://2e.aonprd.com/Search.aspx?query=Master Bard Spellcasting,https://2e.aonprd.com/Feats.aspx?ID=685,True
|
||||
Champion Dedication,Champion Dedication,2,https://2e.aonprd.com/Search.aspx?query=Champion Dedication,https://2e.aonprd.com/Feats.aspx?ID=686,True
|
||||
Basic Devotion,Basic Devotion,4,https://2e.aonprd.com/Search.aspx?query=Basic Devotion,https://2e.aonprd.com/Feats.aspx?ID=687,True
|
||||
Champion Resiliencey,Champion Resiliencey,4,https://2e.aonprd.com/Search.aspx?query=Champion Resiliencey,https://2e.aonprd.com/Feats.aspx?ID=688,True
|
||||
Healing Touch,Healing Touch,4,https://2e.aonprd.com/Search.aspx?query=Healing Touch,https://2e.aonprd.com/Feats.aspx?ID=689,True
|
||||
Advanced Devotion,Advanced Devotion,6,https://2e.aonprd.com/Search.aspx?query=Advanced Devotion,https://2e.aonprd.com/Feats.aspx?ID=690,True
|
||||
Champion’s Reaction,,-1,https://2e.aonprd.com/Search.aspx?query=Champion’s Reaction,https://2e.aonprd.com/Search.aspx?query=Champion%u2019s+Reaction,False
|
||||
Divine Ally,Divine Ally,6,https://2e.aonprd.com/Search.aspx?query=Divine Ally,https://2e.aonprd.com/Feats.aspx?ID=692,True
|
||||
Diverse Armor Expert,Diverse Armor Expert,14,https://2e.aonprd.com/Search.aspx?query=Diverse Armor Expert,https://2e.aonprd.com/Feats.aspx?ID=693,True
|
||||
Cleric Dedication,Cleric Dedication,2,https://2e.aonprd.com/Search.aspx?query=Cleric Dedication,https://2e.aonprd.com/Feats.aspx?ID=694,True
|
||||
Basic Cleric Spellcasting,Basic Cleric Spellcasting,4,https://2e.aonprd.com/Search.aspx?query=Basic Cleric Spellcasting,https://2e.aonprd.com/Feats.aspx?ID=695,True
|
||||
Basic Dogma,Basic Dogma,4,https://2e.aonprd.com/Search.aspx?query=Basic Dogma,https://2e.aonprd.com/Feats.aspx?ID=696,True
|
||||
Advanced Dogma,Advanced Dogma,6,https://2e.aonprd.com/Search.aspx?query=Advanced Dogma,https://2e.aonprd.com/Feats.aspx?ID=697,True
|
||||
Divine Breadth,Divine Breadth,8,https://2e.aonprd.com/Search.aspx?query=Divine Breadth,https://2e.aonprd.com/Feats.aspx?ID=698,True
|
||||
Expert Cleric Spellcasting,Expert Cleric Spellcasting,12,https://2e.aonprd.com/Search.aspx?query=Expert Cleric Spellcasting,https://2e.aonprd.com/Feats.aspx?ID=699,True
|
||||
Master Cleric Spellcasting,Master Cleric Spellcasting,18,https://2e.aonprd.com/Search.aspx?query=Master Cleric Spellcasting,https://2e.aonprd.com/Feats.aspx?ID=700,True
|
||||
Druid Dedication,Druid Dedication,2,https://2e.aonprd.com/Search.aspx?query=Druid Dedication,https://2e.aonprd.com/Feats.aspx?ID=701,True
|
||||
Basic Druid Spellcasting,Basic Druid Spellcasting,4,https://2e.aonprd.com/Search.aspx?query=Basic Druid Spellcasting,https://2e.aonprd.com/Feats.aspx?ID=702,True
|
||||
Basic Wilding,Basic Wilding,4,https://2e.aonprd.com/Search.aspx?query=Basic Wilding,https://2e.aonprd.com/Feats.aspx?ID=703,True
|
||||
Order Spell,Order Spell,4,https://2e.aonprd.com/Search.aspx?query=Order Spell,https://2e.aonprd.com/Feats.aspx?ID=704,True
|
||||
Advanced Wilding,Advanced Wilding,6,https://2e.aonprd.com/Search.aspx?query=Advanced Wilding,https://2e.aonprd.com/Feats.aspx?ID=705,True
|
||||
Primal Breadth,Primal Breadth,8,https://2e.aonprd.com/Search.aspx?query=Primal Breadth,https://2e.aonprd.com/Feats.aspx?ID=706,True
|
||||
Expert Druid Spellcasting,Expert Druid Spellcasting,12,https://2e.aonprd.com/Search.aspx?query=Expert Druid Spellcasting,https://2e.aonprd.com/Feats.aspx?ID=707,True
|
||||
Master Druid Spellcasting,Master Druid Spellcasting,18,https://2e.aonprd.com/Search.aspx?query=Master Druid Spellcasting,https://2e.aonprd.com/Feats.aspx?ID=708,True
|
||||
Fighter Dedication,Fighter Dedication,2,https://2e.aonprd.com/Search.aspx?query=Fighter Dedication,https://2e.aonprd.com/Feats.aspx?ID=709,True
|
||||
Basic Maneuver,Basic Maneuver,4,https://2e.aonprd.com/Search.aspx?query=Basic Maneuver,https://2e.aonprd.com/Feats.aspx?ID=710,True
|
||||
Fighter Resiliency,Fighter Resiliency,4,https://2e.aonprd.com/Search.aspx?query=Fighter Resiliency,https://2e.aonprd.com/Feats.aspx?ID=711,True
|
||||
Opportunist,Opportunist,4,https://2e.aonprd.com/Search.aspx?query=Opportunist,https://2e.aonprd.com/Feats.aspx?ID=712,True
|
||||
Advanced Maneuver,Advanced Maneuver,6,https://2e.aonprd.com/Search.aspx?query=Advanced Maneuver,https://2e.aonprd.com/Feats.aspx?ID=713,True
|
||||
Diverse Weapon Expert,Diverse Weapon Expert,12,https://2e.aonprd.com/Search.aspx?query=Diverse Weapon Expert,https://2e.aonprd.com/Feats.aspx?ID=714,True
|
||||
Monk Dedication,Monk Dedication,2,https://2e.aonprd.com/Search.aspx?query=Monk Dedication,https://2e.aonprd.com/Feats.aspx?ID=715,True
|
||||
Basic Kata,Basic Kata,4,https://2e.aonprd.com/Search.aspx?query=Basic Kata,https://2e.aonprd.com/Feats.aspx?ID=716,True
|
||||
Monk Resiliency,Monk Resiliency,4,https://2e.aonprd.com/Search.aspx?query=Monk Resiliency,https://2e.aonprd.com/Feats.aspx?ID=717,True
|
||||
Advanced Kata,Advanced Kata,6,https://2e.aonprd.com/Search.aspx?query=Advanced Kata,https://2e.aonprd.com/Feats.aspx?ID=718,True
|
||||
Monk Moves,Monk Moves,8,https://2e.aonprd.com/Search.aspx?query=Monk Moves,https://2e.aonprd.com/Feats.aspx?ID=719,True
|
||||
Monk’s Flurry,,-1,https://2e.aonprd.com/Search.aspx?query=Monk’s Flurry,https://2e.aonprd.com/Search.aspx?query=Monk%u2019s+Flurry,False
|
||||
Perfection’s Path,,-1,https://2e.aonprd.com/Search.aspx?query=Perfection’s Path,https://2e.aonprd.com/Search.aspx?query=Perfection%u2019s+Path,False
|
||||
Ranger Dedication,Ranger Dedication,2,https://2e.aonprd.com/Search.aspx?query=Ranger Dedication,https://2e.aonprd.com/Feats.aspx?ID=722,True
|
||||
Basic Hunter’s Trick,,-1,https://2e.aonprd.com/Search.aspx?query=Basic Hunter’s Trick,https://2e.aonprd.com/Search.aspx?query=Basic+Hunter%u2019s+Trick,False
|
||||
Ranger Resiliency,Ranger Resiliency,4,https://2e.aonprd.com/Search.aspx?query=Ranger Resiliency,https://2e.aonprd.com/Feats.aspx?ID=724,True
|
||||
Advanced Hunter’s Trick,,-1,https://2e.aonprd.com/Search.aspx?query=Advanced Hunter’s Trick,https://2e.aonprd.com/Search.aspx?query=Advanced+Hunter%u2019s+Trick,False
|
||||
Master Spotter,Master Spotter,12,https://2e.aonprd.com/Search.aspx?query=Master Spotter,https://2e.aonprd.com/Feats.aspx?ID=726,True
|
||||
Rogue Dedication,Rogue Dedication,2,https://2e.aonprd.com/Search.aspx?query=Rogue Dedication,https://2e.aonprd.com/Feats.aspx?ID=727,True
|
||||
Basic Trickery,Basic Trickery,4,https://2e.aonprd.com/Search.aspx?query=Basic Trickery,https://2e.aonprd.com/Feats.aspx?ID=728,True
|
||||
Sneak Attacker,Sneak Attacker,4,https://2e.aonprd.com/Search.aspx?query=Sneak Attacker,https://2e.aonprd.com/Feats.aspx?ID=729,True
|
||||
Advanced Trickery,Advanced Trickery,6,https://2e.aonprd.com/Search.aspx?query=Advanced Trickery,https://2e.aonprd.com/Feats.aspx?ID=730,True
|
||||
Skill Mastery,Skill Mastery,8,https://2e.aonprd.com/Search.aspx?query=Skill Mastery,https://2e.aonprd.com/Feats.aspx?ID=731,True
|
||||
Uncanny Dodge,Uncanny Dodge,10,https://2e.aonprd.com/Search.aspx?query=Uncanny Dodge,https://2e.aonprd.com/Feats.aspx?ID=732,True
|
||||
Evasiveness,Evasiveness,12,https://2e.aonprd.com/Search.aspx?query=Evasiveness,https://2e.aonprd.com/Feats.aspx?ID=733,True
|
||||
Sorcerer Dedication,Sorcerer Dedication,2,https://2e.aonprd.com/Search.aspx?query=Sorcerer Dedication,https://2e.aonprd.com/Feats.aspx?ID=734,True
|
||||
Basic Sorcerer Spellcasting,Basic Sorcerer Spellcasting,4,https://2e.aonprd.com/Search.aspx?query=Basic Sorcerer Spellcasting,https://2e.aonprd.com/Feats.aspx?ID=735,True
|
||||
Basic Blood Potency,Basic Blood Potency,4,https://2e.aonprd.com/Search.aspx?query=Basic Blood Potency,https://2e.aonprd.com/Feats.aspx?ID=736,True
|
||||
Basic Bloodline Spell,Basic Bloodline Spell,4,https://2e.aonprd.com/Search.aspx?query=Basic Bloodline Spell,https://2e.aonprd.com/Feats.aspx?ID=737,True
|
||||
Advanced Blood Potency,Advanced Blood Potency,6,https://2e.aonprd.com/Search.aspx?query=Advanced Blood Potency,https://2e.aonprd.com/Feats.aspx?ID=738,True
|
||||
Bloodline Breadth,Bloodline Breadth,8,https://2e.aonprd.com/Search.aspx?query=Bloodline Breadth,https://2e.aonprd.com/Feats.aspx?ID=739,True
|
||||
Expert Sorcerer Spellcasting,Expert Sorcerer Spellcasting,12,https://2e.aonprd.com/Search.aspx?query=Expert Sorcerer Spellcasting,https://2e.aonprd.com/Feats.aspx?ID=740,True
|
||||
Master Sorcerer Spellcasting,Master Sorcerer Spellcasting,18,https://2e.aonprd.com/Search.aspx?query=Master Sorcerer Spellcasting,https://2e.aonprd.com/Feats.aspx?ID=741,True
|
||||
Wizard Dedication,Wizard Dedication,2,https://2e.aonprd.com/Search.aspx?query=Wizard Dedication,https://2e.aonprd.com/Feats.aspx?ID=742,True
|
||||
Arcane School Spell,Arcane School Spell,4,https://2e.aonprd.com/Search.aspx?query=Arcane School Spell,https://2e.aonprd.com/Feats.aspx?ID=743,True
|
||||
Basic Arcana,Basic Arcana,4,https://2e.aonprd.com/Search.aspx?query=Basic Arcana,https://2e.aonprd.com/Feats.aspx?ID=744,True
|
||||
Basic Wizard Spellcasting,Basic Wizard Spellcasting,4,https://2e.aonprd.com/Search.aspx?query=Basic Wizard Spellcasting,https://2e.aonprd.com/Feats.aspx?ID=745,True
|
||||
Advanced Arcana,Advanced Arcana,6,https://2e.aonprd.com/Search.aspx?query=Advanced Arcana,https://2e.aonprd.com/Feats.aspx?ID=746,True
|
||||
Arcane Breadth,Arcane Breadth,8,https://2e.aonprd.com/Search.aspx?query=Arcane Breadth,https://2e.aonprd.com/Feats.aspx?ID=747,True
|
||||
Expert Wizard Spellcasting,Expert Wizard Spellcasting,12,https://2e.aonprd.com/Search.aspx?query=Expert Wizard Spellcasting,https://2e.aonprd.com/Feats.aspx?ID=748,True
|
||||
Master Wizard Spellcasting,Master Wizard Spellcasting,18,https://2e.aonprd.com/Search.aspx?query=Master Wizard Spellcasting,https://2e.aonprd.com/Feats.aspx?ID=749,True
|
||||
Additional Lore,Additional Lore,1,https://2e.aonprd.com/Search.aspx?query=Additional Lore,https://2e.aonprd.com/Feats.aspx?ID=750,True
|
||||
Adopted Ancestry,Adopted Ancestry,1,https://2e.aonprd.com/Search.aspx?query=Adopted Ancestry,https://2e.aonprd.com/Feats.aspx?ID=751,True
|
||||
Alchemical Crafting,Alchemical Crafting,1,https://2e.aonprd.com/Search.aspx?query=Alchemical Crafting,https://2e.aonprd.com/Feats.aspx?ID=752,True
|
||||
Ancestral Paragon,Ancestral Paragon,3,https://2e.aonprd.com/Search.aspx?query=Ancestral Paragon,https://2e.aonprd.com/Feats.aspx?ID=753,True
|
||||
Arcane Sense,Arcane Sense,1,https://2e.aonprd.com/Search.aspx?query=Arcane Sense,https://2e.aonprd.com/Feats.aspx?ID=754,True
|
||||
Armor Proficiency,Armor Proficiency,1,https://2e.aonprd.com/Search.aspx?query=Armor Proficiency,https://2e.aonprd.com/Feats.aspx?ID=755,True
|
||||
Assurance,Assurance,1,https://2e.aonprd.com/Search.aspx?query=Assurance,https://2e.aonprd.com/Feats.aspx?ID=756,True
|
||||
Automatic Knowledge,Automatic Knowledge,2,https://2e.aonprd.com/Search.aspx?query=Automatic Knowledge,https://2e.aonprd.com/Feats.aspx?ID=757,True
|
||||
Bargain Hunter,Bargain Hunter,1,https://2e.aonprd.com/Search.aspx?query=Bargain Hunter,https://2e.aonprd.com/Feats.aspx?ID=758,True
|
||||
Battle Cry,Battle Cry,7,https://2e.aonprd.com/Search.aspx?query=Battle Cry,https://2e.aonprd.com/Feats.aspx?ID=759,True
|
||||
Battle Medicine,Battle Medicine,1,https://2e.aonprd.com/Search.aspx?query=Battle Medicine,https://2e.aonprd.com/Feats.aspx?ID=760,True
|
||||
Bizarre Magic,Bizarre Magic,7,https://2e.aonprd.com/Search.aspx?query=Bizarre Magic,https://2e.aonprd.com/Feats.aspx?ID=761,True
|
||||
Bonded Animal,Bonded Animal,2,https://2e.aonprd.com/Search.aspx?query=Bonded Animal,https://2e.aonprd.com/Feats.aspx?ID=762,True
|
||||
Breath Control,Breath Control,1,https://2e.aonprd.com/Search.aspx?query=Breath Control,https://2e.aonprd.com/Feats.aspx?ID=763,True
|
||||
Canny Acumen,Canny Acumen,1,https://2e.aonprd.com/Search.aspx?query=Canny Acumen,https://2e.aonprd.com/Feats.aspx?ID=764,True
|
||||
Cat Fall,Cat Fall,1,https://2e.aonprd.com/Search.aspx?query=Cat Fall,https://2e.aonprd.com/Feats.aspx?ID=765,True
|
||||
Charming Liar,Charming Liar,1,https://2e.aonprd.com/Search.aspx?query=Charming Liar,https://2e.aonprd.com/Feats.aspx?ID=766,True
|
||||
Cloud Jump,Cloud Jump,15,https://2e.aonprd.com/Search.aspx?query=Cloud Jump,https://2e.aonprd.com/Feats.aspx?ID=767,True
|
||||
Combat Climber,Combat Climber,1,https://2e.aonprd.com/Search.aspx?query=Combat Climber,https://2e.aonprd.com/Feats.aspx?ID=768,True
|
||||
Confabulator,Confabulator,2,https://2e.aonprd.com/Search.aspx?query=Confabulator,https://2e.aonprd.com/Feats.aspx?ID=769,True
|
||||
Connections,Connections,2,https://2e.aonprd.com/Search.aspx?query=Connections,https://2e.aonprd.com/Feats.aspx?ID=770,True
|
||||
Continual Recovery,Continual Recovery,2,https://2e.aonprd.com/Search.aspx?query=Continual Recovery,https://2e.aonprd.com/Feats.aspx?ID=771,True
|
||||
Courtly Graces,Courtly Graces,1,https://2e.aonprd.com/Search.aspx?query=Courtly Graces,https://2e.aonprd.com/Feats.aspx?ID=772,True
|
||||
Craft Anything,Craft Anything,15,https://2e.aonprd.com/Search.aspx?query=Craft Anything,https://2e.aonprd.com/Feats.aspx?ID=773,True
|
||||
Diehard,Diehard,1,https://2e.aonprd.com/Search.aspx?query=Diehard,https://2e.aonprd.com/Feats.aspx?ID=774,True
|
||||
Divine Guidance,Divine Guidance,15,https://2e.aonprd.com/Search.aspx?query=Divine Guidance,https://2e.aonprd.com/Feats.aspx?ID=775,True
|
||||
Dubious Knowledge,Dubious Knowledge,1,https://2e.aonprd.com/Search.aspx?query=Dubious Knowledge,https://2e.aonprd.com/Feats.aspx?ID=776,True
|
||||
Expeditious Search,Expeditious Search,7,https://2e.aonprd.com/Search.aspx?query=Expeditious Search,https://2e.aonprd.com/Feats.aspx?ID=777,True
|
||||
Experienced Professional,Experienced Professional,1,https://2e.aonprd.com/Search.aspx?query=Experienced Professional,https://2e.aonprd.com/Feats.aspx?ID=778,True
|
||||
Experienced Smuggler,Experienced Smuggler,1,https://2e.aonprd.com/Search.aspx?query=Experienced Smuggler,https://2e.aonprd.com/Feats.aspx?ID=779,True
|
||||
Experienced Tracker,Experienced Tracker,1,https://2e.aonprd.com/Search.aspx?query=Experienced Tracker,https://2e.aonprd.com/Feats.aspx?ID=780,True
|
||||
Fascinating Performance,Fascinating Performance,1,https://2e.aonprd.com/Search.aspx?query=Fascinating Performance,https://2e.aonprd.com/Feats.aspx?ID=781,True
|
||||
Fast Recovery,Fast Recovery,1,https://2e.aonprd.com/Search.aspx?query=Fast Recovery,https://2e.aonprd.com/Feats.aspx?ID=782,True
|
||||
Feather Step,Feather Step,1,https://2e.aonprd.com/Search.aspx?query=Feather Step,https://2e.aonprd.com/Feats.aspx?ID=783,True
|
||||
Fleet,Fleet,1,https://2e.aonprd.com/Search.aspx?query=Fleet,https://2e.aonprd.com/Feats.aspx?ID=784,True
|
||||
Foil Senses,Foil Senses,7,https://2e.aonprd.com/Search.aspx?query=Foil Senses,https://2e.aonprd.com/Feats.aspx?ID=785,True
|
||||
Forager,Forager,1,https://2e.aonprd.com/Search.aspx?query=Forager,https://2e.aonprd.com/Feats.aspx?ID=786,True
|
||||
Glad-Hand,Glad-Hand,2,https://2e.aonprd.com/Search.aspx?query=Glad-Hand,https://2e.aonprd.com/Feats.aspx?ID=787,True
|
||||
Group Coercion,Group Coercion,1,https://2e.aonprd.com/Search.aspx?query=Group Coercion,https://2e.aonprd.com/Feats.aspx?ID=788,True
|
||||
Group Impression,Group Impression,1,https://2e.aonprd.com/Search.aspx?query=Group Impression,https://2e.aonprd.com/Feats.aspx?ID=789,True
|
||||
Hefty Hauler,Hefty Hauler,1,https://2e.aonprd.com/Search.aspx?query=Hefty Hauler,https://2e.aonprd.com/Feats.aspx?ID=790,True
|
||||
Hobnobber,Hobnobber,1,https://2e.aonprd.com/Search.aspx?query=Hobnobber,https://2e.aonprd.com/Feats.aspx?ID=791,True
|
||||
Impeccable Crafter,Impeccable Crafter,7,https://2e.aonprd.com/Search.aspx?query=Impeccable Crafter,https://2e.aonprd.com/Feats.aspx?ID=792,True
|
||||
Impressive Performance,Impressive Performance,1,https://2e.aonprd.com/Search.aspx?query=Impressive Performance,https://2e.aonprd.com/Feats.aspx?ID=793,True
|
||||
Incredible Initiative,Incredible Initiative,1,https://2e.aonprd.com/Search.aspx?query=Incredible Initiative,https://2e.aonprd.com/Feats.aspx?ID=794,True
|
||||
Incredible Investiture,Incredible Investiture,11,https://2e.aonprd.com/Search.aspx?query=Incredible Investiture,https://2e.aonprd.com/Feats.aspx?ID=795,True
|
||||
Intimidating Glare,Intimidating Glare,1,https://2e.aonprd.com/Search.aspx?query=Intimidating Glare,https://2e.aonprd.com/Feats.aspx?ID=796,True
|
||||
Intimidating Prowess,Intimidating Prowess,2,https://2e.aonprd.com/Search.aspx?query=Intimidating Prowess,https://2e.aonprd.com/Feats.aspx?ID=797,True
|
||||
Inventor,Inventor,7,https://2e.aonprd.com/Search.aspx?query=Inventor,https://2e.aonprd.com/Feats.aspx?ID=798,True
|
||||
Kip Up,Kip Up,7,https://2e.aonprd.com/Search.aspx?query=Kip Up,https://2e.aonprd.com/Feats.aspx?ID=799,True
|
||||
Lasting Coercion,Lasting Coercion,2,https://2e.aonprd.com/Search.aspx?query=Lasting Coercion,https://2e.aonprd.com/Feats.aspx?ID=800,True
|
||||
Legendary Codebreaker,Legendary Codebreaker,15,https://2e.aonprd.com/Search.aspx?query=Legendary Codebreaker,https://2e.aonprd.com/Feats.aspx?ID=801,True
|
||||
Legendary Linguist,Legendary Linguist,15,https://2e.aonprd.com/Search.aspx?query=Legendary Linguist,https://2e.aonprd.com/Feats.aspx?ID=802,True
|
||||
Legendary Medic,Legendary Medic,15,https://2e.aonprd.com/Search.aspx?query=Legendary Medic,https://2e.aonprd.com/Feats.aspx?ID=803,True
|
||||
Legendary Negotiation,Legendary Negotiation,15,https://2e.aonprd.com/Search.aspx?query=Legendary Negotiation,https://2e.aonprd.com/Feats.aspx?ID=804,True
|
||||
Legendary Performer,Legendary Performer,15,https://2e.aonprd.com/Search.aspx?query=Legendary Performer,https://2e.aonprd.com/Feats.aspx?ID=805,True
|
||||
Legendary Professional,Legendary Professional,15,https://2e.aonprd.com/Search.aspx?query=Legendary Professional,https://2e.aonprd.com/Feats.aspx?ID=806,True
|
||||
Legendary Sneak,Legendary Sneak,15,https://2e.aonprd.com/Search.aspx?query=Legendary Sneak,https://2e.aonprd.com/Feats.aspx?ID=807,True
|
||||
Legendary Survivalist,Legendary Survivalist,15,https://2e.aonprd.com/Search.aspx?query=Legendary Survivalist,https://2e.aonprd.com/Feats.aspx?ID=808,True
|
||||
Legendary Thief,Legendary Thief,15,https://2e.aonprd.com/Search.aspx?query=Legendary Thief,https://2e.aonprd.com/Feats.aspx?ID=809,True
|
||||
Lengthy Diversion,Lengthy Diversion,1,https://2e.aonprd.com/Search.aspx?query=Lengthy Diversion,https://2e.aonprd.com/Feats.aspx?ID=810,True
|
||||
Lie To Me,Lie to Me,1,https://2e.aonprd.com/Search.aspx?query=Lie To Me,https://2e.aonprd.com/Feats.aspx?ID=811,False
|
||||
Magical Crafting,Magical Crafting,2,https://2e.aonprd.com/Search.aspx?query=Magical Crafting,https://2e.aonprd.com/Feats.aspx?ID=812,True
|
||||
Magical Shorthand,Magical Shorthand,2,https://2e.aonprd.com/Search.aspx?query=Magical Shorthand,https://2e.aonprd.com/Feats.aspx?ID=813,True
|
||||
Multilingual,Multilingual,1,https://2e.aonprd.com/Search.aspx?query=Multilingual,https://2e.aonprd.com/Feats.aspx?ID=814,True
|
||||
Natural Medicine,Natural Medicine,1,https://2e.aonprd.com/Search.aspx?query=Natural Medicine,https://2e.aonprd.com/Feats.aspx?ID=815,True
|
||||
Nimble Crawl,Nimble Crawl,2,https://2e.aonprd.com/Search.aspx?query=Nimble Crawl,https://2e.aonprd.com/Feats.aspx?ID=816,True
|
||||
Oddity Identification,Oddity Identification,1,https://2e.aonprd.com/Search.aspx?query=Oddity Identification,https://2e.aonprd.com/Feats.aspx?ID=817,True
|
||||
Pickpocket,Pickpocket,1,https://2e.aonprd.com/Search.aspx?query=Pickpocket,https://2e.aonprd.com/Feats.aspx?ID=818,True
|
||||
Planar Survival,Planar Survival,7,https://2e.aonprd.com/Search.aspx?query=Planar Survival,https://2e.aonprd.com/Feats.aspx?ID=819,True
|
||||
Powerful Leap,Powerful Leap,2,https://2e.aonprd.com/Search.aspx?query=Powerful Leap,https://2e.aonprd.com/Feats.aspx?ID=820,True
|
||||
Quick Climber,Quick Climber,7,https://2e.aonprd.com/Search.aspx?query=Quick Climber,https://2e.aonprd.com/Feats.aspx?ID=821,True
|
||||
Quick Coercion,Quick Coercion,1,https://2e.aonprd.com/Search.aspx?query=Quick Coercion,https://2e.aonprd.com/Feats.aspx?ID=822,True
|
||||
Quick Disguise,Quick Disguise,2,https://2e.aonprd.com/Search.aspx?query=Quick Disguise,https://2e.aonprd.com/Feats.aspx?ID=823,True
|
||||
Quick Identification,Quick Identification,1,https://2e.aonprd.com/Search.aspx?query=Quick Identification,https://2e.aonprd.com/Feats.aspx?ID=824,True
|
||||
Quick Jump,Quick Jump,1,https://2e.aonprd.com/Search.aspx?query=Quick Jump,https://2e.aonprd.com/Feats.aspx?ID=825,True
|
||||
Quick Recognition,Quick Recognition,7,https://2e.aonprd.com/Search.aspx?query=Quick Recognition,https://2e.aonprd.com/Feats.aspx?ID=826,True
|
||||
Quick Repair,Quick Repair,1,https://2e.aonprd.com/Search.aspx?query=Quick Repair,https://2e.aonprd.com/Feats.aspx?ID=827,True
|
||||
Quick Squeeze,Quick Squeeze,1,https://2e.aonprd.com/Search.aspx?query=Quick Squeeze,https://2e.aonprd.com/Feats.aspx?ID=828,True
|
||||
Quick Swim,Quick Swim,7,https://2e.aonprd.com/Search.aspx?query=Quick Swim,https://2e.aonprd.com/Feats.aspx?ID=829,True
|
||||
Quick Unlock,Quick Unlock,7,https://2e.aonprd.com/Search.aspx?query=Quick Unlock,https://2e.aonprd.com/Feats.aspx?ID=830,True
|
||||
Quiet Allies,Quiet Allies,2,https://2e.aonprd.com/Search.aspx?query=Quiet Allies,https://2e.aonprd.com/Feats.aspx?ID=831,True
|
||||
Rapid Mantel,Rapid Mantel,2,https://2e.aonprd.com/Search.aspx?query=Rapid Mantel,https://2e.aonprd.com/Feats.aspx?ID=832,True
|
||||
Read Lips,Read Lips,1,https://2e.aonprd.com/Search.aspx?query=Read Lips,https://2e.aonprd.com/Feats.aspx?ID=833,True
|
||||
Recognize Spell,Recognize Spell,1,https://2e.aonprd.com/Search.aspx?query=Recognize Spell,https://2e.aonprd.com/Feats.aspx?ID=834,True
|
||||
Ride,Ride,1,https://2e.aonprd.com/Search.aspx?query=Ride,https://2e.aonprd.com/Feats.aspx?ID=835,True
|
||||
Robust Recovery,Robust Recovery,2,https://2e.aonprd.com/Search.aspx?query=Robust Recovery,https://2e.aonprd.com/Feats.aspx?ID=836,True
|
||||
Scare to Death,Scare to Death,15,https://2e.aonprd.com/Search.aspx?query=Scare to Death,https://2e.aonprd.com/Feats.aspx?ID=837,True
|
||||
Shameless Request,Shameless Request,7,https://2e.aonprd.com/Search.aspx?query=Shameless Request,https://2e.aonprd.com/Feats.aspx?ID=838,True
|
||||
Shield Block,Shield Block,1,https://2e.aonprd.com/Search.aspx?query=Shield Block,https://2e.aonprd.com/Feats.aspx?ID=839,True
|
||||
Sign Language,Sign Language,1,https://2e.aonprd.com/Search.aspx?query=Sign Language,https://2e.aonprd.com/Feats.aspx?ID=840,True
|
||||
Skill Training,Skill Training,1,https://2e.aonprd.com/Search.aspx?query=Skill Training,https://2e.aonprd.com/Feats.aspx?ID=841,True
|
||||
Slippery Secrets,Slippery Secrets,7,https://2e.aonprd.com/Search.aspx?query=Slippery Secrets,https://2e.aonprd.com/Feats.aspx?ID=842,True
|
||||
Snare Crafting,Snare Crafting,1,https://2e.aonprd.com/Search.aspx?query=Snare Crafting,https://2e.aonprd.com/Feats.aspx?ID=843,True
|
||||
Specialty Crafting,Specialty Crafting,1,https://2e.aonprd.com/Search.aspx?query=Specialty Crafting,https://2e.aonprd.com/Feats.aspx?ID=844,True
|
||||
Steady Balance,Steady Balance,1,https://2e.aonprd.com/Search.aspx?query=Steady Balance,https://2e.aonprd.com/Feats.aspx?ID=845,True
|
||||
Streetwise,Streetwise,1,https://2e.aonprd.com/Search.aspx?query=Streetwise,https://2e.aonprd.com/Feats.aspx?ID=846,True
|
||||
Student of the Canon,Student of the Canon,1,https://2e.aonprd.com/Search.aspx?query=Student of the Canon,https://2e.aonprd.com/Feats.aspx?ID=847,True
|
||||
Subtle Theft,Subtle Theft,1,https://2e.aonprd.com/Search.aspx?query=Subtle Theft,https://2e.aonprd.com/Feats.aspx?ID=848,True
|
||||
Survey Wildlife,Survey Wildlife,1,https://2e.aonprd.com/Search.aspx?query=Survey Wildlife,https://2e.aonprd.com/Feats.aspx?ID=849,True
|
||||
Swift Sneak,Swift Sneak,7,https://2e.aonprd.com/Search.aspx?query=Swift Sneak,https://2e.aonprd.com/Feats.aspx?ID=850,True
|
||||
Terrain Expertise,Terrain Expertise,1,https://2e.aonprd.com/Search.aspx?query=Terrain Expertise,https://2e.aonprd.com/Feats.aspx?ID=851,True
|
||||
Terrain Stalker,Terrain Stalker,1,https://2e.aonprd.com/Search.aspx?query=Terrain Stalker,https://2e.aonprd.com/Feats.aspx?ID=852,True
|
||||
Terrified Retreat,Terrified Retreat,7,https://2e.aonprd.com/Search.aspx?query=Terrified Retreat,https://2e.aonprd.com/Feats.aspx?ID=853,True
|
||||
Titan Wrestler,Titan Wrestler,1,https://2e.aonprd.com/Search.aspx?query=Titan Wrestler,https://2e.aonprd.com/Feats.aspx?ID=854,True
|
||||
Toughness,Toughness,1,https://2e.aonprd.com/Search.aspx?query=Toughness,https://2e.aonprd.com/Feats.aspx?ID=855,True
|
||||
Train Animal,Train Animal,1,https://2e.aonprd.com/Search.aspx?query=Train Animal,https://2e.aonprd.com/Feats.aspx?ID=856,True
|
||||
Trick Magic Item,Trick Magic Item,1,https://2e.aonprd.com/Search.aspx?query=Trick Magic Item,https://2e.aonprd.com/Feats.aspx?ID=857,True
|
||||
Underwater Marauder,Underwater Marauder,1,https://2e.aonprd.com/Search.aspx?query=Underwater Marauder,https://2e.aonprd.com/Feats.aspx?ID=858,True
|
||||
Unified Theory,Unified Theory,15,https://2e.aonprd.com/Search.aspx?query=Unified Theory,https://2e.aonprd.com/Feats.aspx?ID=859,True
|
||||
Unmistakable Lore,Unmistakable Lore,2,https://2e.aonprd.com/Search.aspx?query=Unmistakable Lore,https://2e.aonprd.com/Feats.aspx?ID=860,True
|
||||
Untrained Improvisation,Untrained Improvisation,3,https://2e.aonprd.com/Search.aspx?query=Untrained Improvisation,https://2e.aonprd.com/Feats.aspx?ID=861,True
|
||||
Virtuosic Performer,Virtuosic Performer,1,https://2e.aonprd.com/Search.aspx?query=Virtuosic Performer,https://2e.aonprd.com/Feats.aspx?ID=862,True
|
||||
Wall Jump,Wall Jump,7,https://2e.aonprd.com/Search.aspx?query=Wall Jump,https://2e.aonprd.com/Feats.aspx?ID=863,True
|
||||
Ward Medic,Ward Medic,2,https://2e.aonprd.com/Search.aspx?query=Ward Medic,https://2e.aonprd.com/Feats.aspx?ID=864,True
|
||||
Wary Disarmament,Wary Disarmament,2,https://2e.aonprd.com/Search.aspx?query=Wary Disarmament,https://2e.aonprd.com/Feats.aspx?ID=865,True
|
||||
Weapon Proficiency,Weapon Proficiency,1,https://2e.aonprd.com/Search.aspx?query=Weapon Proficiency,https://2e.aonprd.com/Feats.aspx?ID=866,True
|
||||
Relentless Stalker,Relentless Stalker,2,https://2e.aonprd.com/Search.aspx?query=Relentless Stalker,https://2e.aonprd.com/Feats.aspx?ID=867,True
|
||||
Wilderness Spotter,Wilderness Spotter,2,https://2e.aonprd.com/Search.aspx?query=Wilderness Spotter,https://2e.aonprd.com/Feats.aspx?ID=868,True
|
||||
|
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,141 @@
|
||||
#!/usr/bin/env python
|
||||
# coding: utf-8
|
||||
|
||||
# In[28]:
|
||||
|
||||
|
||||
from bs4 import BeautifulSoup as bs
|
||||
from bs4 import NavigableString, Tag
|
||||
import csv
|
||||
from dataclasses import dataclass
|
||||
from os import path
|
||||
import pandas as pd
|
||||
import re
|
||||
# import requests
|
||||
from ruamel import yaml
|
||||
from splinter import Browser
|
||||
from typing import List # Dict
|
||||
get_ipython().run_line_magic('autosave', '300')
|
||||
|
||||
|
||||
# ## Dataclasses
|
||||
|
||||
# In[2]:
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class Feat:
|
||||
name_yaml: str
|
||||
name_aon: str
|
||||
level: int
|
||||
url_search: str
|
||||
url_aon: str
|
||||
match: bool
|
||||
|
||||
|
||||
# ## Functions
|
||||
|
||||
# In[3]:
|
||||
|
||||
|
||||
def feat_names(path: str) -> List:
|
||||
"""Accepts a string path to a yaml file and returns a list of the feat names."""
|
||||
with open(path, 'r', encoding='utf8') as file:
|
||||
feats = pd.io.json.json_normalize(yaml.safe_load(file), 'feat')
|
||||
return feats['name'].to_list()
|
||||
|
||||
|
||||
# In[4]:
|
||||
|
||||
|
||||
def feat_level(name_yaml: str) -> Feat:
|
||||
"""Accepts the name of a feat and returns a Feat dataclass."""
|
||||
name_clean: str = re.sub(' \([A-Z, a-z]*\)$', '', name_yaml)
|
||||
url_search: str = 'https://2e.aonprd.com/Search.aspx?query=' + name_clean
|
||||
browser.visit(url_search)
|
||||
for number in range(0, 13):
|
||||
if number != 6:
|
||||
browser.uncheck(f'ctl00$MainContent$TableList${number}')
|
||||
else:
|
||||
continue
|
||||
browser.click_link_by_id('ctl00_MainContent_btnBestMatch')
|
||||
url_aon: str = browser.url
|
||||
soup: bs = bs(browser.html)
|
||||
try:
|
||||
name_aon: str = soup.find('h1', 'title').a.text
|
||||
except AttributeError:
|
||||
name_aon: str = ''
|
||||
match: bool = True if name_aon == name_clean else False
|
||||
try:
|
||||
level: int = int(soup.find('h1', 'title').span.text.split(' ')[1].strip())
|
||||
except AttributeError:
|
||||
level:int = -1
|
||||
return Feat(name_yaml, name_aon, level, url_search, url_aon, match)
|
||||
|
||||
|
||||
# ## Execution
|
||||
|
||||
# In[5]:
|
||||
|
||||
|
||||
names = feat_names(path.join('..', 'data', 'yaml', 'feats.yaml'))
|
||||
feats = []
|
||||
counter: int = 0
|
||||
executable_path = {'executable_path': 'chromedriver.exe'}
|
||||
browser = Browser('chrome', **executable_path, headless=True)
|
||||
print('############################################################')
|
||||
print(f'Beginning level scraping')
|
||||
print('############################################################')
|
||||
for name in names:
|
||||
counter += 1
|
||||
print(f'Name: {name} {counter}/{len(names)}')
|
||||
feats.append(feat_level(name))
|
||||
print(f'AON name: {feats[-1].name_aon}')
|
||||
print(f'Level: {feats[-1].level}')
|
||||
print(f'Match: {feats[-1].match}')
|
||||
print(f'AON url: {feats[-1].url_aon}')
|
||||
print(f'Search url: {feats[-1].url_search}')
|
||||
print('############################################################')
|
||||
print(f'End of level scraping')
|
||||
browser.quit()
|
||||
|
||||
|
||||
# In[21]:
|
||||
|
||||
|
||||
names2 = names[len(feats):]
|
||||
if names2:
|
||||
counter2: int = 0
|
||||
browser = Browser('chrome', **executable_path, headless=True)
|
||||
print('############################################################')
|
||||
print(f'Beginning level scraping')
|
||||
print('############################################################')
|
||||
for name in names2:
|
||||
counter2 += 1
|
||||
print(f'Name: {name} {counter2}/{len(names2)}')
|
||||
feats.append(feat_level(name))
|
||||
print(f'AON name: {feats[-1].name_aon}')
|
||||
print(f'Level: {feats[-1].level}')
|
||||
print(f'Match: {feats[-1].match}')
|
||||
print(f'AON url: {feats[-1].url_aon}')
|
||||
print(f'Search url: {feats[-1].url_search}')
|
||||
print('############################################################')
|
||||
print(f'End of level scraping')
|
||||
browser.quit()
|
||||
|
||||
|
||||
# In[31]:
|
||||
|
||||
|
||||
with open('feat_level.csv', mode='w', newline='') as csv_file:
|
||||
csv_writer = writer(csv_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
|
||||
csv_writer.writerow(['name', 'name_aon', 'level', 'url_search', 'url_aon', 'match'])
|
||||
for feat in feats:
|
||||
csv_writer.writerow([feat.name_yaml, feat.name_aon, feat.level, feat.url_search, feat.url_aon, feat.match])
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
|
||||
INSERT INTO abilityscores (abilityscores_id, flag_rep, short_name, long_name)
|
||||
VALUES
|
||||
(1, 1, 'STR', 'Strength'),
|
||||
(2, 2, 'DEX', 'Dexterity'),
|
||||
(3, 4, 'CON', 'Constitution'),
|
||||
(4, 8, 'INT', 'Intelligence'),
|
||||
(5, 16, 'WIS', 'Wisdom'),
|
||||
(6, 32, 'CHA', 'Charisma'),
|
||||
(7, 64, 'Free1', 'Free 1'),
|
||||
(8, 128, 'Free2', 'Free 2');
|
||||
@@ -0,0 +1,94 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
|
||||
INSERT INTO actioncosts (
|
||||
actioncosts_id,
|
||||
name,
|
||||
abbr
|
||||
)
|
||||
VALUES
|
||||
(0, 'Varies', 'Varies'),
|
||||
(1, 'Single Action', '1'),
|
||||
(2, 'Two Actions', '2'),
|
||||
(3, 'Three Actions', '3'),
|
||||
(4, 'Free Action', 'free'),
|
||||
(5, 'Reaction', 'reaction');
|
||||
|
||||
INSERT INTO actioncategories (actioncategories_id, sources_id, sources_pages, name, descr)
|
||||
VALUES
|
||||
(1, 1, '469', 'Basic', 'Basic actions represent common tasks like moving around, attacking, and helping others. As such, every creature can use basic actions except in some extreme circumstances, and many of those actions are used very frequently. Most notably, you’ll use Interact, Step, Stride, and Strike a great deal. Many feats and other actions call upon you to use one of these basic actions or modify them to produce different effects. For example, a more complex action might let you Stride up to double your Speed instead of just up to your Speed, and a large number of activities include a Strike.'),
|
||||
(2, 1, '472', 'Specialty Basic', 'These actions are useful under specific circumstances. Some require you to have a special movement type.');
|
||||
|
||||
INSERT INTO actions
|
||||
(actions_id,
|
||||
sources_id,
|
||||
sources_pages,
|
||||
actioncategories_id,
|
||||
actioncosts_id,
|
||||
name,
|
||||
req,
|
||||
trigger,
|
||||
descr
|
||||
)
|
||||
VALUES
|
||||
-- BASIC ACTIONS FROM CRB
|
||||
(1, 1, '470', 1, 5, 'Aid', 'The ally is willing to accept your aid, and you have prepared to help (see description).', 'An ally is about to use an action that requires a skill check or attack roll.', 'You try to help your ally with a task. To use this reaction, you must first prepare to help, usually by using an action during your turn. You must explain to the GM exactly how you’re trying to help, and they determine whether you can Aid your ally.\n\nWhen you use your Aid reaction, attempt a skill check or attack roll of a type decided by the GM. The typical DC is 20, but the GM might adjust this DC for particularly hard or easy tasks. The GM can add any relevant traits to your preparatory action or to your Aid reaction depending on the situation, or even allow you to Aid checks other than skill checks and attack rolls.\n\n**Critical Success** You grant your ally a +2 circumstance bonus to,the triggering check. If you’re a master with the check you,attempted, the bonus is +3, and if you’re legendary, it’s +4.\n**Success** You grant your ally a +1 circumstance bonus to the triggering check.\n**Critical Failure** Your ally takes a 1 circumstance penalty to the triggering check.'),
|
||||
(2, 1, '470', 1, 1, 'Crawl', 'You are prone and your Speed is at least 10 feet.', NULL, 'You move 5 feet by crawling and continue to stay prone.'),
|
||||
(3, 1, '470', 1, 4, 'Delay', NULL, 'Your turn begins.', 'You wait for the right moment to act. The rest of your turn doesn’t happen yet. Instead, you’re removed from the initiative order. You can return to the initiative order as a free action triggered by the end of any other creature’s turn. This permanently changes your initiative to the new position. You can’t use reactions until you return to the initiative order. If you Delay an entire round without returning to the initiative order, the actions from the Delayed turn are lost, your initiative doesn’t change, and your next turn occurs at your original position in the initiative order.\n\nWhen you Delay, any persistent damage or other negative effects that normally occur at the start or end of your turn occur immediately when you use the Delay action. Any beneficial effects that would end at any point during your turn also end. The GM might determine that other effects end when you Delay as well. Essentially, you can’t Delay to avoid negative consequences that would happen on your turn or to extend beneficial effects that would end on your turn.'),
|
||||
(4, 1, '470', 1, 1, 'Drop Prone', NULL, NULL, 'You fall prone.'),
|
||||
(5, 1, '470', 1, 1, 'Escape', NULL, NULL, 'You attempt to escape from being grabbed, immobilized, or restrained. Choose one creature, object, spell effect, hazard, or other impediment imposing any of those conditions on you. Attempt a check using your unarmed attack modifier against the DC of the effect. This is typically the Athletics DC of a creature grabbing you, the Thievery DC of a creature who tied you up, the spell DC for a spell effect, or the listed Escape DC of an object, hazard, or other impediment. You can attempt an Acrobatics or Athletics check instead of using your attack modifier if you choose (but this action still has the attack trait).\n\n**Critical Success** You get free and remove the grabbed, immobilized, and restrained conditions imposed by your chosen target. You can then Stride up to 5 feet.\n**Success** You get free and remove the grabbed, immobilized, and restrained conditions imposed by your chosen target.\n**Critical Failure** You don’t get free, and you can’t attempt to Escape again until your next turn.'),
|
||||
(6, 1, '470', 1, 1, 'Interact', NULL, NULL, 'You use your hand or hands to manipulate an object or the terrain. You can grab an unattended or stored object, open a door, or produce some similar effect. You might have to attempt a skill check to determine if your Interact action was successful.'),
|
||||
(7, 1, '531', 1, NULL, 'Invest an Item', NULL, NULL, 'You invest your energy in an item with the invested trait as you don it. This process requires 1 or more Interact actions, usually taking the same amount of time it takes to don the item. Once you’ve Invested the Item, you benefit from its constant magical abilities as long as you meet its other requirements (for most invested items, the only other requirement is that you must be wearing the item). This investiture lasts until you remove the item.\n\n You can invest no more than 10 items per day. If you remove an invested item, it loses its investiture. The item still counts against your daily limit after it loses its investiture. You reset the limit during your daily preparations, at which point you Invest your Items anew. If you’re still wearing items you had invested the previous day, you can typically keep them invested on the new day, but they still count against your limit. '),
|
||||
(8, 1, '470', 1, 1, 'Leap', NULL, NULL, 'You take a careful, short jump. You can Leap up to 10 feet horizontally if your Speed is at least 15 feet, or up to 15 feet horizontally if your Speed is at least 30 feet. You land in the space where your Leap ends (meaning you can typically clear a 5-foot gap, or a 10-foot gap if your Speed is 30 feet or more).\n\nIf you Leap vertically, you can move up to 3 feet vertically and 5 feet horizontally onto an elevated surface.\n\nJumping a greater distance requires using the Athletics skill.'),
|
||||
(9, 1, '470', 1, 2, 'Ready', NULL, NULL, 'You prepare to use an action that will occur outside your turn. Choose a single action or free action you can use, and designate a trigger. Your turn then ends. If the trigger you designated occurs before the start of your next turn, you can use the chosen action as a reaction (provided you still meet the requirements to use it). You can’t Ready a free action that already has a trigger.\n\nIf you have a multiple attack penalty and your readied action is an attack action, your readied attack takes the multiple attack penalty you had at the time you used Ready. This is one of the few times the multiple attack penalty applies when it’s not your turn.'),
|
||||
(10, 1, '470', 1, 4, 'Release', NULL, NULL, 'You release something you’re holding in your hand or hands. This might mean dropping an item, removing one hand from your weapon while continuing to hold it in another hand, releasing a rope suspending a chandelier, or performing a similar action. Unlike most manipulate actions, Release does not trigger reactions that can be triggered by actions with the manipulate trait (such as Attack of Opportunity).\n\nIf you want to prepare to Release something outside of your turn, use the Ready activity.'),
|
||||
(11, 1, '471', 1, 1, 'Seek', NULL, NULL, 'You scan an area for signs of creatures or objects. If you’re looking for creatures, choose an area you’re scanning. If precision is necessary, the GM can have you select a 30-foot cone or a 15-foot burst within line of sight. You might take a penalty if you choose an area that’s far away.\n\nIf you’re using Seek to search for objects (including secret doors and hazards), you search up to a 10-foot square adjacent to you. The GM might determine you need to Seek as an activity, taking more actions or even minutes or hours if you’re searching a particularly cluttered area.\n\nThe GM attempts a single secret Perception check for you and compares the result to the Stealth DCs of any undetected or hidden creatures in the area or the DC to detect each object in the area (as determined by the GM or by someone Concealing the Object). A creature you detect might remain hidden, rather than becoming observed, if you’re using an imprecise sense or if an effect (such as invisibility) prevents the subject from being observed.\n\n**Critical Success** If you were searching for creatures, any undetected or hidden creature you critically succeeded against becomes observed by you. If you were searching for an object, you learn its location.\n**Success** If you were searching for creatures, any undetected creature you succeeded against becomes hidden from you instead of undetected, and any hidden creature you succeeded against becomes observed by you. If you were searching for an object, you learn its location or get a clue to its whereabouts, as determined by the GM.'),
|
||||
(12, 1, '471', 1, 1, 'Sense Motive', NULL, NULL, 'You try to tell whether a creature’s behavior is abnormal. Choose one creature, and assess it for odd body language, signs of nervousness, and other indicators that it might be trying to deceive someone. The GM attempts a single secret Perception check for you and compares the result to the Deception DC of the creature, the DC of a spell af ecting the creature’s mental state, or another appropriate DC determined by the GM. You typically can’t try to Sense the Motive of the same creature again until the situation changes significantly.\n\n**Critical Success** You determine the creature’s true intentions and get a solid idea of any mental magic affecting it.\n**Success** You can tell whether the creature is behaving normally, but you don’t know its exact intentions or what magic might be affecting it.\n**Failure** You detect what a deceptive creature wants you to believe. If they’re not being deceptive, you believe they’re behaving normally.\n**Critical Failure** You get a false sense of the creature’s intentions.'),
|
||||
(13, 1, '471', 1, 1, 'Stand', NULL, NULL, 'You stand up from prone.'),
|
||||
(14, 1, '471', 1, 1, 'Step', 'Your Speed is at least 10 feet.', NULL, 'You carefully move 5 feet. Unlike most types of movement, Stepping doesn’t trigger reactions, such as Attacks of Opportunity, that can be triggered by move actions or upon leaving or entering a square.\n\nYou can’t Step into difficult terrain (page 475 CRB), and you can’t Step using a Speed other than your land Speed.'),
|
||||
(15, 1, '471', 1, 1, 'Stride', NULL, NULL, 'You move up to your Speed (page 463 CRB)'),
|
||||
(16, 1, '471', 1, 1, 'Strike', NULL, NULL, 'You attack with a weapon you’re wielding or with an unarmed attack, targeting one creature within your reach (for a melee attack) or within range (for a ranged attack). Roll the attack roll for the weapon or unarmed attack you are using, and compare the result to the target creature’s AC to determine the effect. See Attack Rolls on page 446 CRB and Damage on page 450 CRB for details on calculating your attack and damage rolls.'),
|
||||
(17, 1, '471', 1, 1, 'Take Cover', 'You are benfitting from cover, are near a feature that allows you to take cover, or you are prone.', NULL, 'You press yourself against a wall or duck behind an obstacle to take better advantage of cover (page 477 CRB). If you would have standard cover, you instead gain greater cover, which provides a +4 circumstance bonus to AC; to Reflex saves against area effects; and to Stealth checks to Hide, Sneak, or otherwise avoid detection. Otherwise, you gain the benefits of standard cover (a +2 circumstance bonus instead). This lasts until you move from your current space, use an attack action, become unconscious, or end this effect as a free action.'),
|
||||
-- Specialty Basic Actions from CRB
|
||||
(18, 1, '532', 2, NULL, 'Activate an Item', 'You can Activate an Item with the invested trait only if it’s invested by you. If the item requires you to Interact with it, you must be wielding it (if it’s a held item) or touching it with a free hand (if it’s another type of item).', NULL, 'You call forth the effect of an item by properly activating it. This is a special activity that takes a variable number of actions, as listed in the item’s stat block.\n\nSome items can be activated as a reaction or free action. In this case, you Activate the Item as a reaction or free action (as appropriate) instead of as an activity. Such cases are noted in the item’s Activate entry in its stat blockfor example, “Activate Reaction command.”\n\n**Long Activation Times** Some items take minutes or hours to activate. The Activate an Item activity for these items includes a mix of the listed activation components, but it’s not necessary to break down which one you’re providing at a given time. You can’t use other actions or reactions while activating such an item, though at the GM’s discretion, you might be able to speak a few sentences. As with other activities that take a long time, these activations have the exploration trait, and you can’t activate them in an encounter. If combat breaks out while you’re activating one, your activation is disrupted (see the Disrupting Activations sidebar).\n\n**Activation Components** Each activation entry lists any components involved in the activation after the action icons or text, such as “Single Action command.” The activation components, described below, add traits (listed in parentheses) and requirements to the activation. If you can’t provide the components, you fail to Activate the Item.\n\n- Command (auditory, concentrate)\n- Envision (concentrate)\n- Interact (manipulate)\n- Cast a Spell\n\n#### Activation Components\n\nAn item’s activate entry lists the components required to activate its abilities. Each component adds certain traits to the Activate an Item activity, and some components have special requirements. The components that appear in this book are listed below.\n\n#####Command\n\nThis component is a specific utterance you must make in a loud and strong voice. Activate an Item gains the auditory and concentrate traits. You must be able to speak to provide this component.\n\n##### Envision\n\nThis component is a specific image or phenomenon you need to imagine. Activate an Item gains the concentrate trait.\n\n##### Interact\n\nThis component works like the Interact basic action. Activate an Item gains the manipulate trait and requires you to use your hands, just like with any Interact action.\n\n##### Cast a Spell\n\nIf an item lists “Cast a Spell” after “Activate,” the activation requires you to use the Cast a Spell activity to Activate the Item. This happens when the item replicates a spell. You must have a spellcasting class feature to Activate an Item with this activation component. If the item can be used for a specific spell, the action icon for that spell is provided. If it’s an item like a staff, which can be used for many spells, the icon is omitted, and you must refer to each spell to determine which actions you must spend to Activate the Item to cast it.\n\n In this case, Activate an Item gains all the traits from the relevant components of the Cast a Spell activity.'), -- TODO there's a Reaction icon in here; need to swap for unicode and TODO there are some markdwon headings in here; maybe change those out
|
||||
(19, 1, '472', 2, 5, 'Arrest a Fall', 'You have a fly Speed.', 'You fall.', 'You attempt an Acrobatics check to slow your fall. The DC is typically 15, but it might be higher due to air turbulence or other circumstances.\n\nSuccess You fall gently, taking no damage from the fall.'),
|
||||
(20, 1, '472', 2, 1, 'Avert Gaze', NULL, NULL, 'You avert your gaze from danger. You gain a +2 circumstance bonus to saves against visual abilities that require you to look at a creature or object, such as a medusa’s petrifying gaze. Your gaze remains averted until the start of your next turn.'),
|
||||
(21, 1, '472', 2, 1, 'Burrow', 'You have a burrow Speed.', NULL, 'You dig your way through dirt, sand, or a similar loose material at a rate up to your burrow Speed. You can’t burrow through rock or other substances denser than dirt unless you have an ability that allows you to do so.'),
|
||||
(22, 1, '302', 2, NULL, 'Cast a Spell', NULL, NULL, 'You cast a spell you have prepared or in your repertoire. Casting a Spell is a special activity that takes a variable number of actions depending on the spell, as listed in each spell’s stat block. As soon as the spellcasting actions are complete, the spell effect occurs.\n\nSome spells are cast as a reaction or free action. In those cases, you Cast the Spell as a reaction or free action (as appropriate) instead of as an activity. Such cases will be noted in the spell’s stat blockfor example, “[reaction] verbal.”\n\n**Long Casting Times** Some spells take minutes or hours to cast. The Cast a Spell activity for these spells includes a mix of the listed spell components, but it’s not necessary to break down which one you’re providing at a given time. You can’t use other actions or reactions while casting such a spell, though at the GM’s discretion, you might be able to speak a few sentences. As with other activities that take a long time, these spells have the exploration trait, and you can’t cast them in an encounter. If combat breaks out while you’re casting one, your spell is disrupted (see Disrupted and Lost Spells on page 303 CRB).\n\n**Spell Components** Each spell lists the spell components required to cast it after the action icons or text, such as “[three-actions] material, somatic, verbal." The spell components, described in detail below, add traits and requirements to the Cast a Spell activity. If you can’t provide the components, you fail to Cast the Spell.\n\n- Material (manipulate)\n- Somatic (manipulate)\n- Verbal (concentrate)\n- Focus (manipulate)\n\n**Disrupted and Lost Spells** Some abilities and spells can disrupt a spell, causing it to have no effect and be lost. When you lose a spell, you’ve already expended the spell slot, spent the spell’s costs and actions, and used the Cast a Spell activity. If a spell is disrupted during a Sustain a Spell action, the spell immediately ends. The full rules for disrupting actions appear on page 462 CRB.'), --TODO had actions and reactions in here; need to substitute unicode
|
||||
(23, 1, '305', 2, 1, 'Dismiss', NULL, NULL, 'You end one spell effect or magic item effect. This must be an effect you are allowed to dismiss, as defined by the spell or item. Dismissal might end the effect entirely or might end it just for a certain target or targets, depending on the spell or item.'),
|
||||
(24, 1, '472', 2, 1, 'Fly', 'You have a fly Speed.', NULL, 'You move through the air up to your fly Speed. Moving upward (straight up or diagonally) uses the rules for moving through difficult terrain. You can move straight down 10 feet for every 5 feet of movement you spend. If you Fly to the ground, you don’t take falling damage. You can use an action to Fly 0 feet to hover in place. If you’re airborne at the end of your turn and didn’t use a Fly action this round, you fall.'),
|
||||
(25, 1, '472', 2, 5, 'Grab an Edge', 'Your hands are not tied behind your back or otherwise restrained.', 'You fall from or past an edge or handhold.', 'When you fall off or past an edge or other handhold, you can try to grab it, potentially stopping your fall. You must succeed at a Reflex save, usually at the Climb DC. If you grab the edge or handhold, you can then Climb up using Athletics.\n\n**Critical Success** You grab the edge or handhold, whether or not you have a hand free, typically by using a suitable held item to catch yourself (catching a battle axe on a ledge, for example). You still take damage from the distance fallen so far, but you treat the fall as though it were 30 feet shorter.\n**Success** If you have at least one hand free, you grab the edge or handhold, stopping your fall. You still take damage from the distance fallen so far, but you treat the fall as though it were 20 feet shorter. If you have no hands free, you continue to fall as if you had failed the check.\n**Critical Failure** You continue to fall, and if you’ve fallen 20 feet or more before you use this reaction, you take 10 bludgeoning damage from the impact for every 20 feet fallen.'),
|
||||
(26, 1, '472', 2, 1, 'Mount', 'You are adjacent to a creature that is at least one size larger than you and is willing to be your mount.', NULL, 'You move onto the creature and ride it. If you’re already mounted, you can instead use this action to dismount, moving of the mount into a space adjacent to it.'),
|
||||
(27, 1, '472', 2, 1, 'Point Out', 'A creature is undetected by one or more of your allies but isn''t undetected by you.', NULL, 'You indicate a creature that you can see to one or more allies, gesturing in a direction and describing the distance verbally. That creature is hidden to your allies, rather than undetected (page 466 CRB). This works only for allies who can see you and are in a position where they could potentially detect the target. If your allies can’t hear or understand you, they must succeed at a Perception check against the creature’s Stealth DC or they misunderstand and believe the target is in a different location.'),
|
||||
(28, 1, '472', 2, 1, 'Raise a Shield', 'You are wielding a shield.', NULL, 'You position your shield to protect yourself. When you have Raised a Shield, you gain its listed circumstance bonus to AC. Your shield remains raised until the start of your next turn.'),
|
||||
(29, 1, '304', 2, 1, 'Sustain a Spell', 'You have at least one spell active with a sustained duration, and you are not fatigued.', NULL, 'Choose one spell with a sustained duration you have in effect. The duration of that spell continues until the end of your next turn. Some spells might have slightly different or expanded effects if you sustain them. Sustaining a Spell for more than 10 minutes (100 rounds) ends the spell and makes you fatigued unless the spell lists a different maximum duration (such as “sustained up to 1 minute” or “sustained up to 1 hour”).\n\nIf your Sustain a Spell action is disrupted, the spell immediately ends.'),
|
||||
(30, 1, '534', 2, 1, 'Sustain an Activation', 'You have at least one magic item activation that you can sustain and you are not fatigued.', NULL, 'Choose one magic item activation with a sustained duration you have in effect. The duration of that activation continues until the end of your next turn. Some activations may have slightly different or expanded effects if you sustain them. Sustaining an Activation for more than 10 minutes (100 rounds) ends the activation and makes you fatigued unless the item’s description states a different maximum duration (such as “up to 1 minute” or “up to 1 hour”).\n\nIf your Sustain an Activation action is disrupted, the item’s effect immediately ends.');
|
||||
|
||||
INSERT INTO actions_traits (actions_id, traits_id)
|
||||
VALUES
|
||||
(2, 49), -- Crawl -> Move
|
||||
(4, 49), -- Drop Prone -> Move
|
||||
(5, 6), -- Escape -> Attack
|
||||
(6, 42), -- Interact -> Manipulate
|
||||
(8, 49), -- Leap -> Move
|
||||
(9, 14), -- Ready -> Concentrate
|
||||
(10, 42), -- Release -> Manipulate
|
||||
(11, 14), -- Seek -> Concentrate
|
||||
(11, 63), -- Seek -> Secret
|
||||
(12, 14), -- Sense Motive -> Concentrate
|
||||
(12, 63), -- Sense Motive -> Secret
|
||||
(13, 49), -- Stand -> Move
|
||||
(14, 49), -- Step -> Move
|
||||
(15, 49), -- Stride -> Move
|
||||
(16, 6), -- Strike -> Attack
|
||||
(21, 49), -- Burrow -> Move
|
||||
(23, 14), -- Dismiss -> Concentrate
|
||||
(24, 49), -- Fly -> Move
|
||||
(25, 42), -- Grab an Edge -> Manipulate
|
||||
(26, 49), -- Mount -> Move
|
||||
(27, 7), -- Point Out -> Auditory
|
||||
(27, 42), -- Point Out -> Manipulate
|
||||
(27, 74), -- Point Out -> Visual
|
||||
(29, 14); -- Sustain a Spell -> Concentrate
|
||||
@@ -0,0 +1,16 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON;
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
INSERT INTO alignments VALUES(1,'Lawful Good','LG');
|
||||
INSERT INTO alignments VALUES(2,'Neutral Good','NG');
|
||||
INSERT INTO alignments VALUES(3,'Chaotic Good','CG');
|
||||
INSERT INTO alignments VALUES(4,'Lawful Neutral','LN');
|
||||
INSERT INTO alignments VALUES(5,'True Neutral','N'); -- per CRB they use 'True
|
||||
-- Neutral' and 'N' only
|
||||
INSERT INTO alignments VALUES(6,'Chaotic Neutral','CN');
|
||||
INSERT INTO alignments VALUES(7,'Lawful Evil','LE');
|
||||
INSERT INTO alignments VALUES(8,'Neutral Evil','NE');
|
||||
INSERT INTO alignments VALUES(9,'Chaotic Evil','CE');
|
||||
COMMIT;
|
||||
@@ -0,0 +1,11 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
INSERT INTO ammunition VALUES(1,1,'282','Arrows',0.1,10,0.1,'These projectiles are the ammunition for bows. The shaft of an arrow is made of wood. It is stabilized in flight by fletching at one end and bears a metal head on the other.');
|
||||
INSERT INTO ammunition VALUES(2,1,'281','Blowgun Darts',0.05,10,0.1,'These thin, light darts are typically made of hardwood and stabilized with fletching of down or fur. They are often hollow so they can be used to deliver poison.');
|
||||
INSERT INTO ammunition VALUES(3,1,'281','Bolts',0.1,10,0.1,'Shorter than traditional arrows but similar in construction, bolts are the ammunition used by crossbows.');
|
||||
INSERT INTO ammunition VALUES(4,1,'281','Sling Bullets',0.01,10,0.1,'These are small metal balls, typically either iron or lead, designed to be used as ammunition in slings.');
|
||||
COMMIT;
|
||||
@@ -0,0 +1,83 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
/* TODO decide on what goes in this flavor text. I'm thinking the small
|
||||
one-paragraph at the top of the section, and we put in all the extra details as
|
||||
a field with markdown formatted text. Need to think on it. */
|
||||
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
|
||||
INSERT INTO ancestries (ancestry_id, short_name, flavor_text, hp, size_id, speed, vision_id,sources_id,sources_pages)
|
||||
VALUES
|
||||
(1, 'Dwarf', 'TODO', 10, 3, 20, 1,1,'35'),
|
||||
(2, 'Elf', 'TODO', 6, 3, 30, 2,1,'39'),
|
||||
(3, 'Gnome', 'TODO', 8, 2, 25, 2,1,'43'),
|
||||
(4, 'Goblin', 'TODO', 6, 2, 25, 1,1,'47'),
|
||||
(5, 'Halfling', 'TODO', 6, 2, 25, 3,1,'51'),
|
||||
(6, 'Human', 'TODO', 8, 3, 25, 4,1,'55'),
|
||||
(7, 'Half-Elf', 'TODO', 8, 3, 25, 4,1,'55'),
|
||||
(8, 'Half-Orc', 'TODO', 8, 3, 25, 4,1,'55');
|
||||
|
||||
|
||||
/* TODO insert remaining data into ancestries_boosts and ancestries_flaws */
|
||||
|
||||
/* Example Query to get boosts in text representation:
|
||||
|
||||
sqlite> select ancestries.short_name, abilityscores.short_name FROM ancestries INNER JOIN ancestries_boosts on ancestries_boosts.ancestry_id = ancestries.ancestry_id INNER JOIN abilityscores on ancestries_boosts.abilityscores_id = abilityscores.abilityscores_id;
|
||||
short_name short_name
|
||||
---------- ----------
|
||||
Dwarf CON
|
||||
Dwarf WIS
|
||||
Dwarf Free1
|
||||
*/
|
||||
|
||||
INSERT INTO ancestries_boosts (ancestry_id, abilityscores_id)
|
||||
VALUES
|
||||
(1, 3), -- dwarf CON
|
||||
(1, 5), -- dwarf WIS
|
||||
(1, 7), -- dwarf free 1
|
||||
(2, 2), -- elf DEX
|
||||
(2, 4), -- elf INT
|
||||
(2, 7), -- elf free 1
|
||||
(3, 3), -- gnome CON
|
||||
(3, 6), -- gnome CHA
|
||||
(3, 7), -- gnome free 1
|
||||
(4, 2), -- goblin DEX
|
||||
(4, 6), -- goblin CHA
|
||||
(4, 7), -- goblin free 1
|
||||
(5, 2), -- halfling DEX
|
||||
(5, 5), -- halfling WIS
|
||||
(5, 7), -- halfling free 1
|
||||
(6, 7), -- human free 1
|
||||
(6, 8); -- human free 2
|
||||
|
||||
INSERT INTO ancestries_flaws (ancestry_id, abilityscores_id)
|
||||
VALUES
|
||||
(1, 6), -- dwarf CHA
|
||||
(2, 3), -- elf CON
|
||||
(3, 1), -- gnome STR
|
||||
(4, 5), -- goblin WIS
|
||||
(5, 1); -- halfling STR
|
||||
|
||||
INSERT INTO ancestries_traits (ancestry_id, trait_id)
|
||||
VALUES
|
||||
(1,79), --Dwarf
|
||||
(1,116), --Humanoid
|
||||
(2,80), --Elf
|
||||
(2,116),
|
||||
(3,81), --Gnome
|
||||
(3,116),
|
||||
(4,82), --Goblin
|
||||
(4,116),
|
||||
(5,85), --Halfling
|
||||
(5,116),
|
||||
(6,86), --Human
|
||||
(6,116),
|
||||
(7,80), -- Half-Elf -> Elf
|
||||
(7,86),
|
||||
(7,116),
|
||||
(7,83),
|
||||
(8,116), --Half-Orc
|
||||
(8,86),
|
||||
(8,182),
|
||||
(8,84);
|
||||
@@ -0,0 +1,75 @@
|
||||
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
|
||||
INSERT INTO armorgroup (
|
||||
grp_id,
|
||||
sources_id,
|
||||
sources_pages,
|
||||
short_name,
|
||||
descr
|
||||
)
|
||||
VALUES
|
||||
(1, 1, '275', 'Chain', 'The armor is so flexible it can bend with a critical hit and absorb some of the blow. Reduce the damage from critical hits by either 4 + the value of the armor’s potency rune for medium armor, or 6 + the value of the armor’s potency rune for heavy armor. This can’t reduce the damage to less than the damage rolled for the hit before doubling for a critical hit.'),
|
||||
(2, 1, '275', 'Composite', 'The numerous overlapping pieces of this armor protect you from piercing attacks. You gain resistance to piercing damage equal to 1 + the value of the armor’s potency rune for medium armor, or 2 + the value of the armor’s potency rune for heavy armor.'),
|
||||
(3, 1, '275', 'Leather', 'The thick second skin of the armor disperses blunt force to reduce bludgeoning damage. You gain resistance to bludgeoning damage equal to 1 + the value of the armor’s potency rune for medium armor, or 2 + the value of the armor’s potency rune for heavy armor.'),
|
||||
(4, 1, '275', 'Plate', 'The sturdy plate provides no purchase for a cutting edge. You gain resistance to slashing damage equal to 1 + the value of the armor’s potency rune for medium armor, or 2 + the value of the armor’s potency rune for heavy armor.');
|
||||
|
||||
INSERT INTO armorcategory (armor_category_id, short_name)
|
||||
VALUES
|
||||
(1,'Unarmored'),
|
||||
(2,'Light Armor'),
|
||||
(3,'Medium Armor'),
|
||||
(4,'Heavy Armor');
|
||||
|
||||
|
||||
INSERT INTO armor (
|
||||
armor_id,
|
||||
sources_id,
|
||||
sources_pages,
|
||||
armor_category_id,
|
||||
item_level,
|
||||
short_name,
|
||||
price_text,
|
||||
price_gp,
|
||||
ac_bonus,
|
||||
dex_cap,
|
||||
check_penalty,
|
||||
speed_penalty,
|
||||
strength,
|
||||
bulk_id,
|
||||
grp_id,
|
||||
descr
|
||||
)
|
||||
VALUES
|
||||
-- unarmored
|
||||
(1, 1, '275', 1, 0, 'No armor', '-', 0.0, 0, NULL, NULL, NULL, NULL, 1, NULL, 'Not wearing protective garments.'),
|
||||
(2, 1, '275', 1, 0, 'Explorer''s clothing', '1 sp', 0.1, 0, 5, NULL, NULL, NULL, 2, NULL, 'Adventurers who don’t wear armor travel in durable clothing. Though it’s not armor and uses your unarmored defense proficiency, it still has a Dex Cap and can grant an item bonus to AC if etched with potency runes.'),
|
||||
-- light armor
|
||||
(3, 1, '275', 2, 0, 'Padded armor', '2 sp', 0.2, 1, 3, NULL, NULL, 10, 2, NULL, 'This armor is simply a layer of heavy, quilted cloth, but it is sometimes used because it’s so inexpensive. Padded armor is easier to damage and destroy than other types of armor. Heavy armor comes with a padded armor undercoat included in its Price, though it loses the comfort trait when worn under heavy armor. You can wear just that padded armor undercoat to sleep in, if your heavy armor is destroyed, or when otherwise not wearing the full heavy armor. This allows you to keep the armor invested and benefit from the power of any runes on the associated heavy armor, but no one else can wear your heavy armor without the padded undercoat.'),
|
||||
(4, 1, '275', 2, 0, 'Leather', '2 gp', 2.0, 1, 4, -1, NULL, 10, 3, NULL, 'A mix of flexible and molded boiled leather, a suit of this type of armor provides some protection with maximum flexibility.'),
|
||||
(5, 1, '275', 2, 0, 'Studded leather', '3 gp', 3.0, 2, 3, -1, NULL, 12, 3, NULL, 'This leather armor is reinforced with metal studs and sometimes small metal plates, providing most of the flexibility of leather armor with more robust protection.'),
|
||||
(6, 1, '275', 2, 0, 'Chain shirt', '5 gp', 5.0, 2, 3, -1, NULL, 12, 3, NULL, 'Sometimes called a hauberk, this is a long shirt constructed of the same metal rings as chainmail. However, it is much lighter than chainmail and protects only the torso, upper arms, and upper legs of its wearer.
|
||||
'),
|
||||
-- medium armor
|
||||
(7, 1, '275', 3, 0, 'Hide', '2 gp', 2.0, 3, 2, -2, -5, 14, 4, 3, 'A mix of furs, sturdy hide, and sometimes molded boiled leather, this armor provides protection due to its layers of leather, though its bulkiness slows the wearer down and decreases mobility.'),
|
||||
(8, 1, '275', 3, 0, 'Scale mail', '4 gp', 4.0, 3, 2, -2, -5, 14, 4, 2, 'Scale mail consists of many metal scales sewn onto a reinforced leather backing, often in the form of a long shirt that protects the torso, arms, and legs.'),
|
||||
(9, 1, '275', 3, 0, 'Chain mail', '6 gp', 6.0, 4, 1, -2, -5, 16, 4, 1, '
|
||||
A suit of chain mail consists of several pieces of armor composed of small metal rings linked together in a protective mesh. It typically includes a chain shirt, leggings, a pair of arms, and a coif, collectively protecting most of the body.'),
|
||||
(10, 1, '275', 3, 0, 'Breastplate', '8 gp', 8.0, 4, 1, -2, -5, 16, 4, 4, 'Though referred to as a breastplate, this type of armor consists of several pieces of plate or half-plate armor that protect the torso, chest, neck, and sometimes the hips and lower legs. It strategically grants some of the protection of plate while allowing greater flexibility and speed.'),
|
||||
-- heavy armor
|
||||
(11, 1, '275', 4, 1, 'Splint mail', '13 gp', 13.0, 5, 1, -3, -10, 16, 5, 2, 'This type of armor is chain mail reinforced with flexible, interlocking metal plates, typically located on the wearer’s torso, upper arms, and legs. A suit of this armor comes with an undercoat of padded armor and a pair of gauntlets.'),
|
||||
(12, 1, '275', 4, 1, 'Half plate', '18 gp', 18.0, 5, 1, -3, -10, 16, 5, 4, 'Half plate consists of most of the upper body plates used in full plate, with lighter or sparser steel plate protection for the arms and legs. This provides some of the protection of full plate with greater flexibility and speed. A suit of this armor comes with an undercoat of padded armor and a pair of gauntlets.'),
|
||||
(13, 1, '275', 4, 2, 'Full plate', '30 gp', 30.0, 6, 0, -3, -10, 18, 6, 4, 'Plate mail consists of interlocking plates that encase nearly the entire body in a carapace of steel. It is costly and heavy, and the wearer often requires help to don it correctly, but it provides some of the best defense armor can supply. A suit of this armor comes with an undercoat of padded armor and a pair of gauntlets.');
|
||||
|
||||
|
||||
-- TODO INSERT into armor_traits table
|
||||
INSERT INTO armor_traits (armor_id, trait_id)
|
||||
VALUES
|
||||
(2, 88), -- explorer's clothing and comfort
|
||||
(3, 88), -- padded and comfort
|
||||
(6, 89), -- chain shirt flexible
|
||||
(6, 90), -- chain shirt noisy
|
||||
(9, 89), -- chain mail flexible
|
||||
(9, 90), -- chain mail noisy
|
||||
(13, 87); -- full plate bulwark
|
||||
@@ -0,0 +1,76 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
|
||||
-- TODO Change bg_name and bg_descr to name and descr
|
||||
|
||||
-- TODO fill in bg_descr
|
||||
|
||||
INSERT INTO backgrounds (
|
||||
bg_id,
|
||||
is_comty_use,
|
||||
is_specific_to_adv,
|
||||
sources_id,
|
||||
sources_pages,
|
||||
name,
|
||||
descr)
|
||||
VALUES
|
||||
-- CRB Backgrounds
|
||||
(1, 0, 0, 1, 60, 'Acolyte', 'You spent your early days in a religious monastery or cloister. You may have traveled out into the world to spread the message of your religion or because you cast away the teachings of your faith, but deep down you’ll always carry within you the lessons you learned.\n\nChoose two ability boosts. One must be to Intelligence or Wisdom, and one is a free ability boost.\n\nYou''re trained in the Religion skill and the Scribing Lore skill. You gain the Student of the Canon skill feat.'),
|
||||
(2, 0, 0, 1, 60, 'Acrobat', 'In a circus or on the streets, you earned your pay by performing as an acrobat. You might have turned to adventuring when the money dried up, or simply decided to put your skills to better use.\n\nChoose two ability boosts. One must be to Strength or Dexterity, and one is a free ability boost.\n\nYou''re trained in the Acrobatics skill and the Circus Lore skill. You gain the Steady Balance skill feat.'),
|
||||
(3, 0, 0, 1, 60, 'Animal Whisperer', 'You have always felt a connection to animals, and it was only a small leap to learn to train them. As you travel, you continuously encounter different creatures, befriending them along the way.\n\nChoose two ability boosts. One must be to Wisdom or Charisma, and one is a free ability boost.\n\nYou''re trained in the Nature skill and a Lore skill related to one terrain inhabited by animals you like (such as Plains Lore or Swamp Lore). You gain the Train Animal skill feat.'),
|
||||
(4, 0, 0, 1, 60, 'Artisan', 'As an apprentice, you practiced a particular form of building or crafting, developing specialized skill. You might have been a blacksmith’s apprentice toiling over the forge for countless hours, a young tailor sewing garments of all kinds, or a shipwright shaping the hulls of ships.\n\nChoose two ability boosts. One must be to Strength or Intelligence, and one is a free ability boost.\n\nYou''re trained in the Crafting skill and the Guild Lore skill. You gain the Specialty Crafting skill feat.'),
|
||||
(5, 0, 0, 1, 60, 'Artist', 'Your art is your greatest passion, whatever form it takes. Adventuring might help you find inspiration, or simply be a way to survive until you become a world-famous artist.\n\nChoose two ability boosts. One must be to Dexterity or Charisma, and one is a free ability boost.\n\nYou''re trained in the Crafting skill and the Art Lore skill. You gain the Specialty Crafting skill feat.'),
|
||||
(6, 0, 0, 1, 60, 'Barkeep', 'You have five specialties: hefting barrels, drinking, polishing steins, drinking, and drinking. You worked in a bar, where you learned how to hold your liquor and rowdily socialize.\n\nChoose two ability boosts. One must be to Constitution or Charisma, and one is a free ability boost.\n\nYou''re trained in the Diplomacy skill and the Alcohol Lore skill. You gain the Hobnobber skill feat.'),
|
||||
(7, 0, 0, 1, 60, 'Barrister', 'Piles of legal manuals, stern teachers, and experience in the courtroom have instructed you in legal matters. You’re capable of mounting a prosecution or defense in court, and you tend to keep abreast of local laws, as you never can tell when you might need to know them on short notice.\n\nChoose two ability boosts. One must be to Intelligence or Charisma, and one is a free ability boost.\n\nYou''re trained in the Diplomacy skill and the Legal Lore skill. You gain the Group Impression skill feat.'),
|
||||
(8, 0, 0, 1, 61, 'Bounty Hunter', 'Bringing in lawbreakers lined your pockets. Maybe you had an altruistic motive and sought to bring in criminals to make the streets safer, or maybe the coin was motivation enough. Your techniques for hunting down criminals transfer easily to the life of an adventurer.\n\nChoose two ability boosts. One must be to Strength or Wisdom, and one is a free ability boost.\n\nYou''re trained in the Survival skill and the Legal Lore skill. You gain the Experienced Tracker skill feat.'),
|
||||
(9, 0, 0, 1, 61, 'Charlatan', 'You traveled from place to place, peddling false fortunes and snake oil in one town, pretending to be royalty in exile to seduce a wealthy heir in the next. Becoming an adventurer might be your next big scam or an attempt to put your talents to use for a greater cause. Perhaps it’s a bit of both, as you realize that after pretending to be a hero, you’ve become the mask.\n\nChoose two ability boosts. One must be to Intelligence or Charisma, and one is a free ability boost.\n\nYou''re trained in the Deception skill and the Underworld Lore skill. You gain the Charming Liar skill feat.'),
|
||||
(10, 0, 0, 1, 61, 'Criminal', 'As an unscrupulous independent or as a member of an underworld organization, you lived a life of crime. You might have become an adventurer to seek redemption, to escape the law, or simply to get access to bigger and better loot.\n\nChoose two ability boosts. One must be to Dexterity or Intelligence, and one is a free ability boost.\n\nYou''re trained in the Stealth skill and the Underworld Lore skill. You gain the Experienced Smuggler skill feat.'),
|
||||
(11, 0, 0, 1, 61, 'Detective', 'You solved crimes as a police inspector or took jobs for wealthy clients as a private investigator. You might have become an adventurer as part of your next big mystery, but likely it was due to the consequences or aftermath of a prior case.\n\nChoose two ability boosts. One must be to Intelligence or Wisdom, and one is a free ability boost.\n\nYou''re trained in the Society skill and the Underworld Lore skill. You gain the Streetwise skill feat.'),
|
||||
(12, 0, 0, 1, 61, 'Emissary', 'As a diplomat or messenger, you traveled to lands far and wide. Communicating with new people and forming alliances were your stock and trade.\n\nChoose two ability boosts. One must be to Intelligence or Charisma, and one is a free ability boost.\n\nYou''re trained in the Society skill and a Lore skill related to one city you''ve visited often. You gain the Multilingual skill feat.'),
|
||||
(13, 0, 0, 1, 61-62, 'Entertainer', 'Through an education in the arts or sheer dogged practice, you learned to entertain crowds. You might have been an actor, a dancer, a musician, a street magician, or any other sort of performer.\n\nChoose two ability boosts. One must be to Dexterity or Charisma, and one is a free ability boost.\n\nYou''re trained in the Performance skill and the Theater Lore skill. You gain the Fascinating Performance skill feat.'),
|
||||
(14, 0, 0, 1, 62, 'Farmhand', 'With a strong back and an understanding of seasonal cycles, you tilled the land and tended crops. Your farm could have been razed by invaders, you could have lost the family tying you to the land, or you might have simply tired of the drudgery, but at some point you became an adventurer.\n\nChoose two ability boosts. One must be to Constitution or Wisdom, and one is a free ability boost.\n\nYou''re trained in the Athletics skill and the Farming Lore skill. You gain the Assurance skill feat with Athletics.'),
|
||||
(15, 0, 0, 1, 62, 'Field Medic', 'In the chaotic rush of battle, you learned to adapt to rapidly changing conditions as you administered to battle casualties. You patched up soldiers, guards, or other combatants, and learned a fair amount about the logistics of war.\n\nChoose two ability boosts. One must be to Constitution or Wisdom, and one is a free ability boost.\n\nYou''re trained in the Medicine skill and the Warfare Lore skill. You gain the Battle Medicine skill feat.'),
|
||||
(16, 0, 0, 1, 62, 'Fortune Teller', 'The strands of fate are clear to you, as you have learned many traditional forms by which laypeople can divine the future. You might have used these skills to guide your community, or simply to make money. But even the slightest peek into these practices connects you to the occult mysteries of the universe.\n\nChoose two ability boosts. One must be to Intelligence or Charisma, and one is a free ability boost.\n\nYou''re trained in the Occultism skill and the Fortune-Telling Lore skill. You gain the Oddity Identification skill feat.'),
|
||||
(17, 0, 0, 1, 62, 'Gambler', 'The thrill of the win drew you into games of chance. This might have been a lucrative sideline that paled in comparison to the real risks of adventuring, or you might have fallen on hard times due to your gambling and pursued adventuring as a way out of a spiral.\n\nChoose two ability boosts. One must be to Dexterity or Charisma, and one is a free ability boost.\n\nYou''re trained in the Deception skill and the Games Lore skill. You gain the Lie to Me skill feat.'),
|
||||
(18, 0, 0, 1, 62, 'Gladiator', 'The bloody games of the arena taught you the art of combat. Before you attained true fame, you departed—or escaped—the arena to explore the world. Your skill at drawing both blood and a crowd’s attention pay off in a new adventuring life.\n\nChoose two ability boosts. One must be to Strength or Charisma, and one is a free ability boost.\n\nYou''re trained in the Performance skill and the Gladiatorial Lore skill. You gain the Impressive Performance skill feat.'),
|
||||
(19, 0, 0, 1, 62, 'Guard', 'You served in the guard, out of either patriotism or the need for coin. Either way, you know how to get a difficult suspect to talk. However you left the guard, you might think of adventuring as a way to use your skills on a wider stage.\n\nChoose two ability boosts. One must be to Strength or Charisma, and one is a free ability boost.\n\nYou''re trained in the Intimidation skill and the Legal Lore skill or Warfare Lore skill. You gain the Quick Coercion skill feat.'),
|
||||
(20, 0, 0, 1, 62, 'Herbalist', 'As a formally trained apothecary or a rural practitioner of folk medicine, you learned the healing properties of various herbs. You’re adept at collecting the right natural cures in all sorts of environments and preparing them properly.\n\nChoose two ability boosts. One must be to Constitution or Wisdom, and one is a free ability boost.\n\nYou''re trained in the Nature skill and the Herbalism Lore skill. You gain the Natural Medicine skill feat.'),
|
||||
(21, 0, 0, 1, 62, 'Hermit', 'In an isolated place—like a cave, remote oasis, or secluded mansion—you lived a life of solitude. Adventuring might represent your first foray out among other people in some time. This might be a welcome reprieve from solitude or an unwanted change, but in either case, you’re likely still rough around the edges.\n\nChoose two ability boosts. One must be to Constitution or Intelligence, and one is a free ability boost.\n\nYou''re trained in your choice of either the Nature or Occultism skill, as well as a Lore skill related to the terrain you lived in as a hermit (such as Cave Lore or Desert Lore). You gain the Dubious Knowledge skill feat.'),
|
||||
(22, 0, 0, 1, 62, 'Hunter', 'You stalked and took down animals and other creatures of the wild. Skinning animals, harvesting their flesh, and cooking them were also part of your training, all of which can give you useful resources while you adventure.\n\nChoose two ability boosts. One must be to Dexterity or Wisdom, and one is a free ability boost.\n\nYou''re trained in the Survival skill and the Tanning Lore skill. You gain the Survey Wildlife skill feat.'),
|
||||
(23, 0, 0, 1, 62-63, 'Laborer', 'You’ve spent years performing arduous physical labor. It was a difficult life, but you somehow survived. You may have embraced adventuring as an easier method to make your way in the world, or you might adventure under someone else’s command.\n\nChoose two ability boosts. One must be to Strength or Constitution, and one is a free ability boost.\n\nYou''re trained in the Athletics skill and the Labor Lore skill. You gain the Hefty Hauler skill feat in Athletics.'),
|
||||
(24, 0, 0, 1, 63, 'Martial Disciple', 'You dedicated yourself to intense training and rigorous study to become a great warrior. The school you attended might have been a traditionalist monastery, an elite military academy, or the local branch of a prestigious mercenary organization.\n\nChoose two ability boosts. One must be to Strength or Dexterity, and one is a free ability boost.\n\nYou''re trained in your choice of either the Acrobatics or Athletics skill, as well as the Warfare Lore skill. You gain a skill feat: Cat Fall if you chose Acrobatics or Quick Jump if you chose Athletics.'),
|
||||
(25, 0, 0, 1, 63, 'Merchant', 'In a dusty shop, market stall, or merchant caravan, you bartered wares for coin and trade goods. The skills you picked up still apply in the adventuring life, in which a good deal on a suit of armor could prevent your death.\n\nChoose two ability boosts. One must be to Intelligence or Charisma, and one is a free ability boost.\n\nYou''re trained in the Diplomacy skill and the Mercantile Lore skill. You gain the Bargain Hunter skill feat.'),
|
||||
(26, 0, 0, 1, 63, 'Miner', 'You earned a living wrenching precious minerals from the lightless depths of the earth. Adventuring might have seemed lucrative or glamorous compared to this backbreaking labor— and if you have to head back underground, this time you plan to do so armed with a real weapon instead of a miner’s pick.\n\nChoose two ability boosts. One must be to Strength or Wisdom, and one is a free ability boost.\n\nYou''re trained in the Survival skill and the Mining Lore skill. You gain the Terrain Expertise skill feat with underground terrain.'),
|
||||
(27, 0, 0, 1, 63, 'Noble', 'To the common folk, the life of a noble seems one of idyllic luxury, but growing up as a noble or member of the aspiring gentry, you know the reality: a noble’s lot is obligation and intrigue. Whether you seek to escape your duties by adventuring or to better your station, you have traded silks and pageantry for an adventurer’s life.\n\nChoose two ability boosts. One must be to Intelligence or Charisma, and one is a free ability boost.\n\nYou''re trained in the Society skill and the Genealogy Lore skill or Heraldy Lore skill. You gain the Courtly Graces skill feat.'),
|
||||
(28, 0, 0, 1, 63, 'Nomad', 'Traveling far and wide, you picked up basic tactics for surviving on the road and in unknown lands, getting by with few supplies and even fewer comforts. As an adventurer, you travel still, often into even more dangerous places.\n\nChoose two ability boosts. One must be to Constitution or Wisdom, and one is a free ability boost.\n\nYou''re trained in the Survival skill and a Lore skill related to one terrain you traveled in (such as Desert Lore or Swamp Lore). You gain the Assurance skill feat with Survival.'),
|
||||
(29, 0, 0, 1, 63, 'Prisoner', 'You might have been imprisoned for crimes (whether you were guilty or not), or enslaved for some part of your upbringing. In your adventuring life, you take full advantage of your newfound freedom.\n\nChoose two ability boosts. One must be to Strength or Constitution, and one is a free ability boost.\n\nYou''re trained in the Stealth skill and the Underworld Lore skill. You gain the Experienced Smuggler skill feat.'),
|
||||
(30, 0, 0, 1, 63, 'Sailor', 'You heard the call of the sea from a young age. Perhaps you signed onto a merchant’s vessel, joined the navy, or even fell in with a crew of pirates and scalawags.\n\nChoose two ability boosts. One must be to Strength or Dexterity, and one is a free ability boost.\n\nYou''re trained in the Athletics skill and the Sailing Lore skill. You gain the Underwater Marauder skill feat.'),
|
||||
(31, 0, 0, 1, 63-64, 'Scholar', 'You have a knack for learning, and sequestered yourself from the outside world to learn all you could. You read about so many wondrous places and things in your books, and always dreamed about one day seeing the real things. Eventually, that curiosity led you to leave your studies and become an adventurer.\n\nChoose two ability boosts. One must be to Intelligence or Wisdom, and one is a free ability boost.\n\nYou''re trained in your choice of the Arcana, Nature, Occultism, or Religion skill, and the Academia Lore skill. You gain the Assurance skill feat.'),
|
||||
(32, 0, 0, 1, 64, 'Scout', 'You called the wilderness home as you found trails and guided travelers. Your wanderlust could have called you to the adventuring life, or perhaps you served as a scout for soldiers and found you liked battle.\n\nChoose two ability boosts. One must be to Dexterity or Wisdom, and one is a free ability boost.\n\nYou''re trained in the Survival skill and a Lore skill related to one terrain you scouted in (such as Forest Lore or Cavern Lore). You gain the Forager skill feat.'),
|
||||
(33, 0, 0, 1, 64, 'Street Urchin', 'You eked out a living by picking pockets on the streets of a major city, never knowing where you’d find your next meal. While some folk adventure for the glory, you do so to survive.\n\nChoose two ability boosts. One must be to Dexterity or Constitution, and one is a free ability boost.\n\nYou''re trained in the Thievery skill and a Lore skill for the city you lived in as a street urchin (such as Absalom Lore or Magnimar Lore). You gain the Pickpocket skill feat.'),
|
||||
(34, 0, 0, 1, 64, 'Tinker', 'Creating all sorts of minor inventions scratches your itch for problem-solving. Your engineering skills take a particularly creative bent, and no one know what you’ll come up with next. It might be a genius device with tremendous potential... or it might explode.\n\nChoose two ability boosts. One must be to Dexterity or Intelligence, and one is a free ability boost.\n\nYou''re trained in the Crafting skill and the Engineering Lore skill. You gain the Specialty Crafting skill feat.'),
|
||||
(35, 0, 0, 1, 64, 'Warrior', 'In your younger days, you waded into battle as a mercenary, a warrior defending a nomadic people, or a member of a militia or army. You might have wanted to break out from the regimented structure of these forces, or you could have always been as independent a warrior as you are now.\n\nChoose two ability boosts. One must be to Strength or Constitution, and one is a free ability boost.\n\nYou''re trained in the Intimidation skill and the Warfare Lore skill. You gain the Intimidating Glare skill feat.'),
|
||||
|
||||
-- Fall of Plaguestone Backgrounds
|
||||
|
||||
|
||||
(36, 1, 1, 3, 55, 'Lesser Scion','You are the youngest child in a noble house (in Cheliax, Isger, or Andoran) and stand to inherit nothing from your family. Although you have a minor title, it affords you no lands or wealth, but it has garnered you a small amount of respect and deference in your travels. When play begins, you are riding in a caravan bound for Almas, where a cousin has promised to allow you to stay with them for a month.\n\nChoose two ability boosts. One must be to Dexterity or Intelligence, and one is a free ability boost.\n\nYou''re trained in the Diplomacy skill and the Heraldry Lore skill. You gain the Hobnobber skill feat.'),
|
||||
(37, 1, 1, 3, 55, 'Lost and Alone','You were training to become a knight in Lastwall when the Whispering Tyrant escaped his imprisonment and destroyed the nation. It was only by dumb luck that you are alive at all, but the memories of that fateful day haunt your dreams. When play begins, you have boarded a caravan heading toward a new town, having worn out your welcome at the taverns and inns of Elidir.\n\nChoose two ability boosts. One must be to Strength or Charisma, and one is a free ability boost.\n\nYou''re trained in the Intimidation skill and the Warfare Lore skill. You gain the Intimidating Glare skill feat.'),
|
||||
(38, 1, 1, 3, 55, 'Missionary','You received training from clergy in a faraway temple, who sent you out into the world to spread the faith. Although you are relatively new at this, you are always on the lookout for new places in need of your deity’s teachings and guidance. When play begins, you are riding along in a caravan making your way through sparsely populated regions of Isger, spreading the news of your faith to those who will listen.\n\nChoose two ability boosts. One must be to Constitution or Wisdom, and one is a free ability boost.\n\nYou''re trained in the Diplomacy skill and the Scribing Lore skill. You gain the Group Impression skill feat.'),
|
||||
(39, 1, 1, 3, 55, 'Refugee','The fighting around the Lake Encarthan region has forced many of the people residing there to flee from the violence. Although your home is gone, you have managed to survive and are making your way south in search of a better life. When play begins, you are riding along in a caravan taking you to what might be either a new home in Andoran or simply another waypoint in your journey.\n\nChoose two ability boosts. One must be to Constitution or Intelligence, and one is a free ability boost.\n\nYou''re trained in the Survival skill and the Hunting Lore skill. You gain the Forager skill feat.'),
|
||||
(40, 1, 1, 3, 55, 'Teamster','You left your home a few months back for a life on the road, working for one caravan company and then another, always on the lookout for a new job and a better life. Last week, you were hired by the Bort Bargith’s company in Elidir. You don’t know anyone from the company just yet, but most of its members seem to be honest merchants and traders.\n\nChoose two ability boosts. One must be to Strength or Wisdom, and one is a free ability boost.\n\nYou''re trained in the Nature skill and the Mercantile Lore skill. You gain the Train Animal skill feat.'),
|
||||
|
||||
-- Age of Ashes Backgrounds
|
||||
|
||||
|
||||
(41, 1, 1, 4, 4, 'Dragon Scholar','Dragons have fascinated you for as long as you can remember. The potent power they possess, the long lives they lead, the ancient traditions they inspire—whatever the source of your interest, you’ve spent much of your life to this point immersed in all things draconic. These studies have bolstered your self-confidence and given you a wide range of methods and tactics you can use to impose your will on others.\n\nYou’ve likely chosen to attend the Call for Heroes as a way to seek funds as an adventurer to afford more texts about dragons or perhaps out of a desire to encounter one in real life.\n\nChoose two ability boosts. One must be to Strength or Charisma, and one is a free ability boost.\n\nYou''re trained in the Intimidation skill and the Dragon Lore skill. You gain the Intimidating Glare skill feat.'),
|
||||
(42, 1, 1, 4, 4, 'Emancipated','Until recently, the nation of Ravounel was part of the larger nation of Cheliax, where the church of Asmodeus is the law and slaves are traded freely in the open market. You had the poor fortune to be born into slavery, but the good luck to have grown up in the city of Kintargo. When Ravounel seceded from Cheliax, the leaders of this new nation freed all slaves, and you’ve wasted no time in exploring and establishing your new life. How and why you’ve come to Breachill is left to you to decide—but the fact that you feel empowered to determine your own destiny continues to drive you!\n\n The chance to become an adventurer has excited you for some time, as you hope to build a new life for yourself as a hero rewarded with fame and fortune. Joining the Call for Heroes is a great opportunity to find a group to adventure with.\n\nChoose two ability boosts. One must be to Dexterity or Charisma, and one is a free ability boost.\n\nYou''re trained in the Stealth skill and the Kintargo Lore skill. You gain the Terrain Stalker skill feat.'),
|
||||
(43, 1, 1, 4, 4-5, 'Haunting Vision','You’ve been haunted by frightening dreams of fires your whole life. This could be the result of a past, neardeath experience with fire or it might have no obvious source that you know of. Recently, you stumbled upon an image, story, or other omen featuring the dragon god of destruction, Dahak, and you were struck with an unnerving sense of deja vu—you’ve come to think that the draconic deity might have something to do with your dreams, and as such have been studying all you can about the god. Your visions have bolstered your faith as well; even if you don’t worship a specific deity, you have a deep passion for matters of faith.\n\n Your latest dream, for the first time, had enough details to identify its setting—in this last dream, you saw the town of Breachill burning. You’ve decided to join the Call for Heroes hoping to save the town you fear might burn to the ground soon.\n\nChoose two ability boosts. One must be to Constitution or Wisdom, and one is a free ability boost.\n\nYou''re trained in the Religion skill and the Dahak Lore skill. You gain the Student of the Canon skill feat.'),
|
||||
(44, 1, 1, 4, 5, 'Hellknight Historian','The various Hellknight Orders intrigue you, whether you seek to become one of their number yourself, wish to oppose their goals at every turn, or are merely inspired by or curious to learn more about them. You’ve heard that when the Order of the Nail abandoned Citadel Altaerein, they left behind the deed to the castle so anyone brave enough to explore the ruins and the defenses no doubt left behind would be rewarded with ownership of the abandoned fortress.\n\n You decided to join the Call for Heroes to hoping to gain an opportunity to explore Citadel Altaerein.\n\nChoose two ability boosts. One must be to Strength or Intelligence, and one is a free ability boost.\n\nYou''re trained in the Society skill and the Architecture Lore skill. You gain the Courtly Graces skill feat.'),
|
||||
(45, 1, 1, 4, 5, 'Local Scion','You’re from Breachill and have lived there most, if not all, of your life. You might be the son or daughter of a wellknown local adventuring family, or a family with a storied tradition of military or other martial service. You likely also have some sort of skill with your hands, as the people of Breachill are very self-sufficient.\n\n The Call for Heroes is one of your hometown’s most iconic traditions, and you want to attend so you can prove your own merits to the council—beyond simply those of your family’s name.\n\nChoose two ability boosts. One must be to Constitution or Charisma, and one is a free ability boost.\n\nYou''re trained in the Crafting skill and the Breachill Lore skill. You gain the Specialty Crafting skill feat.'),
|
||||
(46, 1, 1, 4, 5, 'Out-of-Towner','You’ve never been to Breachill, nor do you have roots in the town, but as chance has it you find yourself visiting. You might be here traveling with a friend, visiting an old acquaintance, or merely here to see a new part of the world. Before coming to town, though, you spent many years living with an ancestry other than your own, and your diverse childhood has left you with an open mind and a curious nature.\n\n You’re excited to meet new people and cultures, and answering the Call for Heroes seems to be an interesting way to do so.\n\nChoose two ability boosts. One must be to Constitution or Intelligence, and one is a free ability boost.\n\nYou''re trained in the Diplomacy skill and a Lore skill thematically associated with the members of the ancestry you grew up with: Dwarf, Elf, Gnome, Goblin, or Halfling. You gain the Hobnobber skill feat.'),
|
||||
(47, 1, 1, 4, 5, 'Reputation Seeker','You’re likely from Breachill, but unlike the Local Scion, your family has no notable legacy in the area. You might not even have much of a family at all to call your own, and could be an orphan. You’ve seen so many people make names for themselves that you set out on your own and spent some time abroad in the jungles or deserts of Garund or in the upper reaches of the Darklands—regions that proved too dangerous to remain in for long on your own. You returned home with more caution and knowledge of the world beyond Breachill’s borders, but still determined to win fame.\n\n You’ve decided that joining an adventuring group would be the best way to secure aid in your quest to build your own reputation, and are attending the Call for Heroes to find such allies.\n\nChoose two ability boosts. One must be to Dexterity or Intelligence, and one is a free ability boost.\n\nYou''re trained in the Survival skill and the Darklands, Desert, or Jungle Lore skill. You gain the Terrain Expertise skill feat (underground if you have Darklands Lore, desert if you have Desert Lore, or forest if you have Jungle Lore).'),
|
||||
(48, 1, 1, 4, 5-6, 'Returning Descendant','You aren’t from Breachill yourself—you might not even be from Isger or Avistan at all. You’ve lived a hard life, in any event. You have often had to make tough decisions, and have developed a knack for understanding how things work (and the best way to take them apart) that has helped you support yourself. Recently you discovered that an ancestor was from the town of Breachill and had a modest career as an adventurer. You can’t help but wonder if you would have had an easier life if you’d grown up there instead, and have decided to seek out this small town to learn more about it.\n\nYou’ve decided to respond to the Call for Heroes to follow in your ancestor’s footsteps, either to honor their memory or accomplish the great deeds they did not.\n\nChoose two ability boosts. One must be to Dexterity or Wisdom, and one is a free ability boost.\n\nYou''re trained in the Thievery skill and the Engineering Lore skill. You gain the Pickpocket skill feat.'),
|
||||
(49, 1, 1, 4, 6, 'Truth Seeker','Whether you are a local or from out of town, you’ve heard rumors that Breachill’s past contains a hidden secret. Perhaps you’ve heard strange rumors that the town’s founder, Lamond Breachton, was not the hero everyone touts, or maybe your grandmother heard stories from her own grandmother that contradict the town’s accepted narrative of its establishment. In the pursuit of the truth, you’ve learned to navigate the tangles of politics, and to never take anyone’s word at face value.\n\n You plan to join the Call for Heroes so that you can make yourself known to the council, or perhaps even ingratiating yourself to them, so you can seek the truth and eventually uncover Breachill’s secrets!\n\nChoose two ability boosts. One must be to Strength or Wisdom, and one is a free ability boost.\n\nYou''re trained in the Deception skill and the Politics Lore skill. You gain the Lie to Me skill feat.');
|
||||
@@ -0,0 +1,22 @@
|
||||
|
||||
-- TODO update sizes table with a FK to bulk to get the data from the table on
|
||||
-- pg 272 CRB
|
||||
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
INSERT INTO bulks (
|
||||
bulk_id,
|
||||
sources_id,
|
||||
sources_pages,
|
||||
short_name,
|
||||
long_name,
|
||||
numerical)
|
||||
VALUES
|
||||
(1, 1, '271-72', '-', 'Negligible', 0.0),
|
||||
(2, 1, '271-72', 'L', 'Light', 0.1),
|
||||
(3, 1, '271-72', '1', 'One', 1.0),
|
||||
(4, 1, '271-72', '2', 'Two', 2.0),
|
||||
(5, 1, '271-72', '3', 'Three', 3.0),
|
||||
(6, 1, '271-72', '4', 'Four', 4.0),
|
||||
(7, 1, '271-72', '5', 'Five', 5.0);
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
|
||||
-- TODO Fill in the remaining short descriptions from pag 454 CRB
|
||||
|
||||
INSERT INTO conditions (
|
||||
conditions_id,
|
||||
sources_id,
|
||||
sources_pages,
|
||||
name,
|
||||
short_descr,
|
||||
descr)
|
||||
VALUES
|
||||
(1, 1, '454,618', 'Blinded', 'You''re unable to see.', 'You can’t see. All normal terrain is difficult terrain to you. You can’t detect anything using vision. You automatically critically fail Perception checks that require you to be able to see, and if vision is your only precise sense, you take a 4 status penalty to Perception checks. You are immune to visual effects. Blinded overrides dazzled.'),
|
||||
(2, 1, '454,618', 'Clumsy', 'All your actions become clumsy and inexact.', 'Your movements become clumsy and inexact. Clumsy always includes a value. You take a status penalty equal to the condition value to Dexterity-based checks and DCs, including AC, Reflex saves, ranged attack rolls, and skill checks using Acrobatics, Stealth, and Thievery.'),
|
||||
(3, 1, '454,618', 'Concealed', 'You become difficult for a creature to see.', 'While you are concealed from a creature, such as in a thick fog, you are difficult for that creature to see. You can still be observed, but you’re tougher to target. A creature that you’re concealed from must succeed at a DC 5 flat check when targeting you with an attack, spell, or other effect. Area effects aren’t subject to this flat check. If the check fails, the attack, spell, or effect doesn’t affect you.'),
|
||||
(4, 1, '454,618', 'Confused', 'You lose your wits and attack wildly.', 'You don’t have your wits about you, and you attack wildly. You are flat-footed, you don’t treat anyone as your ally (though they might still treat you as theirs), and you can’t Delay, Ready, or use reactions.\n\nYou use all your actions to Strike or cast offensive cantrips, though the GM can have you use other actions to facilitate attack, such as draw a weapon, move so that a target is in reach, and so forth. Your targets are determined randomly by the GM. If you have no other viable targets, you target yourself, automatically hitting but not scoring a critical hit. If it’s impossible for you to attack or cast spells, you babble incoherently, wasting your actions.\n\nEach time you take damage from an attack or spell, you can attempt a DC 11 flat check to recover from your confusion and end the condition.'),
|
||||
(5, 1, '454,618', 'Controlled', 'You are no longer in control of your own actions.', 'Someone else is making your decisions for you, usually because you’re being commanded or magically dominated. The controller dictates how you act and can make you use any of your actions, including attacks, reactions, or even Delay. The controller usually does not have to spend their own actions when controlling you.'),
|
||||
(6, 1, '454,619', 'Dazzled', 'Your eyes are overstimulated and you can''t see clearly.', 'Your eyes are overstimulated. If vision is your only precise sense, all creatures and objects are concealed from you.'),
|
||||
(7, 1, '454,619', 'Deafened', 'You are unable to hear', 'You can’t hear. You automatically critically fail Perception checks that require you to be able to hear. You take a 2 status penalty to Perception checks for initiative and checks that involve sound but also rely on other senses. If you perform an action with the auditory trait, you must succeed at a DC 5 flat check or the action is lost; attempt the check after spending the action but before any effects are applied. You are immune to auditory effects.'),
|
||||
(9, 1, '454,619', 'Doomed', 'A powerful force is calling you to death.', 'A powerful force has gripped your soul, calling you closer to death. Doomed always includes a value. The dying value at which you die is reduced by your doomed value. If your maximum dying value is reduced to 0, you instantly die. When you die, you’re no longer doomed.\n\nYour doomed value decreases by 1 each time you get a full night’s rest.'),
|
||||
(10, 1, '454,619', 'Drained', 'You have lost some of your blood or life force.', 'When a creature successfully drains you of blood or life force, you become less healthy. Drained always includes a value. You take a status penalty equal to your drained value on Constitution-based checks, such as Fortitude saves. You also lose a number of Hit Points equal to your level (minimum 1) times the drained value, and your maximum Hit Points are reduced by the same amount. For example, if you’re hit by an effect that inflicts drained 3 and you’re a 3rd-level character, you lose 9 Hit Points and reduce your maximum Hit Points by 9. Losing these Hit Points doesn’t count as taking damage.\n\nEach time you get a full night’s rest, your drained value decreases by 1. This increases your maximum Hit Points, but you don’t immediately recover the lost Hit Points.'),
|
||||
(11, 1, '454,619', 'Dying', 'You are nearly dead.', 'You are bleeding out or otherwise at death’s door. While you have this condition, you are unconscious. Dying always includes a value, and if it ever reaches dying 4, you die. If you’re dying, you must attempt a recovery check (page 459) at the start of your turn each round to determine whether you get better or worse. Your dying condition increases by 1 if you take damage while dying, or by 2 if you take damage from an enemy’s critical hit or a critical failure on your save.\n\nIf you lose the dying condition by succeeding at a recovery check and are still at 0 Hit Points, you remain unconscious, but you can wake up as described in that condition. You lose the dying condition automatically and wake up if you ever have 1 Hit Point or more. Any time you lose the dying condition, you gain the wounded 1 condition, or increase your wounded condition value by 1 if you already have that condition.'),
|
||||
(12, 1, '454,619', 'Encumbered', 'You are carrying too much weight to carry.', 'You are carrying more weight than you can manage. While you’re encumbered, you’re clumsy 1 and take a 10-foot penalty to all your Speeds. As with all penalties to your Speed, this can’t reduce your Speed below 5 feet.'),
|
||||
(13, 1, '454,619', 'Enfeebled', 'You are physically weakened.', 'You’re physically weakened. Enfeebled always includes a value. When you are enfeebled, you take a status penalty equal to the condition value to Strength-based rolls and DCs, including Strength-based melee attack rolls, Strength-based damage rolls, and Athletics checks.'),
|
||||
(14, 1, '454,619--20', 'Fascinated', 'You are compelled to focus your attention on something.', 'You are compelled to focus your attention on something, distracting you from whatever else is going on around you. You take a 2 status penalty to Perception and skill checks, and you can’t use actions with the concentrate trait unless they or their intended consequences are related to the subject of your fascination (as determined by the GM). For instance, you might be able to Seek and Recall Knowledge about the subject, but you likely couldn’t cast a spell targeting a different creature. This condition ends if a creature uses hostile actions against you or any of your allies.'),
|
||||
(15, 1, '454,620', 'Fatigued', 'You are tired and can not summon much energy.', 'You’re tired and can’t summon much energy. You take a 1 status penalty to AC and saving throws. While exploring, you can’t choose an exploration activity.\n\nYou recover from fatigue after a full night’s rest.'),
|
||||
(16, 1, '454,620', 'Flat-Footed', 'You are unable to focus your attention on your own defence.', 'You’re distracted or otherwise unable to focus your full attention on defense. You take a 2 circumstance penalty to AC. Some effects give you the flat-footed condition only to certain creatures or against certain attacks. Othersespecially conditionscan make you universally flat-footed against everything. If a rule doesn’t specify that the condition applies only to certain circumstances, it applies to all of them; for example, many effects simply say “The target is flat-footed.”'),
|
||||
(17, 1, '454,620', 'Fleeing', 'You are forced to run away.', 'You’re forced to run away due to fear or some other compulsion. On your turn, you must spend each of your actions trying to escape the source of the fleeing condition as expediently as possible (such as by using move actions to flee, or opening doors barring your escape). The source is usually the effect or caster that gave you the condition, though some effects might define something else as the source. You can’t Delay or Ready while fleeing.'),
|
||||
(18, 1, '454,620', 'Friendly', 'This creature likes you.', 'This condition reflects a creature’s disposition toward a particular character, and it affects only creatures that are not player characters. A creature that is friendly to a character likes that character. The character can attempt to make a Request of a friendly creature, and the friendly creature is likely to agree to a simple and safe request that doesn’t cost it much to fulfill. If the character or one of their allies uses hostile actions against the creature, the creature gains a worse attitude condition depending on the severity of the hostile action, as determined by the GM.'),
|
||||
(19, 1, '454,620', 'Frightened', 'You are gripped with fear.', 'You’re gripped by fear and struggle to control your nerves. The frightened condition always includes a value. You take a status penalty equal to this value to all your checks and DCs. Unless specified otherwise, at the end of each of your turns, the value of your frightened condition decreases by 1.'),
|
||||
(20, 1, '454,620', 'Grabbed', 'Another creature is holding you in place.', 'You’re held in place by another creature, giving you the flat-footed and immobilized conditions. If you attempt a manipulate action while grabbed, you must succeed at a DC 5 flat check or it is lost; roll the check after spending the action, but before any effects are applied.'),
|
||||
(21, 1, '454,620', 'Helpful', 'This creature feels a desire to help you.', 'This condition reflects a creature’s disposition toward a particular character, and it affects only creatures that are not player characters. A creature that is helpful to a character wishes to actively aid that character. It will accept reasonable Requests from that character, as long as such requests aren’t at the expense of the helpful creature’s goals or quality of life. If the character or one of their allies uses a hostile action against the creature, the creature gains a worse attitude condition depending on the severity of the hostile action, as determined by the GM.'),
|
||||
(22, 1, '454,620', 'Hidden', 'A creature knows you are around but cannot find you.', 'While you’re hidden from a creature, that creature knows the space you’re in but can’t tell precisely where you are. You typically become hidden by using Stealth to Hide. When Seeking a creature using only imprecise senses, it remains hidden, rather than observed. A creature you’re hidden from is flat-footed to you, and it must succeed at a DC 11 flat check when targeting you with an attack, spell, or other effect or it fails affect you. Area effects aren’t subject to this flat check.\n\nA creature might be able to use the Seek action to try to observe you, as described on page 471 CRB.'),
|
||||
(23, 1, '454,620', 'Hostile', 'This creature wished haem upon you.', 'This condition reflects a creature’s disposition toward a particular character, and it affects only creatures that are not player characters. A creature that is hostile to a character actively seeks to harm that character. It doesn’t necessarily attack, but it won’t accept Requests from the character.'),
|
||||
(24, 1, '454,620', 'Immobilized', 'You are unable to move.', 'You can’t use any action with the move trait. If you’re immobilized by something holding you in place and an external force would move you out of your space, the force must succeed at a check against either the DC of the effect holding you in place or the relevant defense (usually Fortitude DC) of the monster holding you in place.'),
|
||||
(25, 1, '454,620', 'Indifferent', 'This creature doesn''t care about you.', 'This condition reflects a creature’s disposition toward a particular character, and it affects only creatures that are not player characters. A creature that is indifferent to a character doesn’t really care one way or the other about that character. Assume a creature’s attitude to a given character is indifferent unless specified otherwise.'),
|
||||
(26, 1, '454,620--21', 'Invisible', 'You cannot be seen.', 'While invisible, you can’t be seen. You’re undetected to everyone. Creatures can Seek to attempt to detect you; if a creature succeeds at its Perception check against your Stealth DC, you become hidden to that creature until you Sneak to become undetected again. If you become invisible while someone can already see you, you start out hidden to the observer (instead of undetected) until you successfully Sneak. You can’t become observed while invisible except via special abilities or magic.'),
|
||||
(27, 1, '454,621', 'Observed', 'Anything in plain view is observed by you.', 'Anything in plain view is observed by you. If a creature takes measures to avoid detection, such as by using Stealth to Hide, it can become hidden or undetected instead of observed. If you have another precise sense instead of or in addition to sight, you might be able to observe a creature or object using that sense instead. You can observe a creature only with precise senses. When Seeking a creature using only imprecise senses, it remains hidden, rather than observed.'),
|
||||
(28, 1, '454,621', 'Paralyzed', 'You are frozen in place.', 'Your body is frozen in place. You have the flat-footed condition and can’t act except to Recall Knowledge and use actions that require only the use of your mind (as determined by the GM). Your senses still function, but only in the areas you can perceive without moving your body, so you can’t Seek while paralyzed.'),
|
||||
(29, 1, '454,621', 'Persistent Damage', 'You take damage from a source over time.', 'Persistent damage comes from effects like acid, being on fire, or many other situations. It appears as “X persistent [type] damage,” where “X” is the amount of damage dealt and “[type]” is the damage type. Instead of taking persistent damage immediately, you take it at the end of each of your turns as long as you have the condition, rolling any damage dice anew each time. After you take persistent damage, roll a DC 15 flat check to see if you recover from the persistent damage. If you succeed, the condition ends.'),
|
||||
(30, 1, '454,621', 'Petrified', 'You have been turned to stone.', 'You have been turned to stone. You can’t act, nor can you sense anything. You become an object with a Bulk double your normal Bulk (typically 12 for a petrified Medium creature or 6 for a petrified Small creature), AC 9, Hardness 8, and the same current Hit Points you had when alive. You don’t have a Broken Threshold. When you’re turned back into flesh, you have the same number of Hit Points you had as a statue. If the statue is destroyed, you immediately die. While petrified, your mind and body are in stasis, so you don’t age or notice the passing of time.'),
|
||||
(31, 1, '454,621', 'Prone', 'You are lying on the ground.', 'You’re lying on the ground. You are flat-footed and take a 2 circumstance penalty to attack rolls. The only move actions you can use while you’re prone are Crawl and Stand. Standing up ends the prone condition. You can Take Cover while prone to hunker down and gain cover against ranged attacks, even if you don’t have an object to get behind, gaining a +4 circumstance bonus to AC against ranged attacks (but you remain flat-footed).\n\nIf you would be knocked prone while you’re Climbing or Flying, you fall (see pages 463464 for the rules on falling). You can’t be knocked prone when Swimming.'),
|
||||
(32, 1, '454,622', 'Quickened', 'You are able to move faster than normal.', 'You gain 1 additional action at the start of your turn each round. Many effects that make you quickened specify the types of actions you can use with this additional action. If you become quickened from multiple sources, you can use the extra action you’ve been granted for any single action allowed by any of the effects that made you quickened. Because quickened has its effect at the start of your turn, you don’t immediately gain actions if you become quickened during your turn.'),
|
||||
(33, 1, '454,622', 'Restrained', 'You are tied up and can barely move.', 'You’re tied up and can barely move, or a creature has you pinned. You have the flat-footed and immobilized conditions, and you can’t use any actions with the attack or manipulate traits except to attempt to Escape or Force Open your bonds. Restrained overrides grabbed.'),
|
||||
(34, 1, '454,622', 'Sickened', 'You feel ill.', 'You feel ill. Sickened always includes a value. You take a status penalty equal to this value on all your checks and DCs. You can’t willingly ingest anythingincluding elixirs and potionswhile sickened.\n\nYou can spend a single action retching in an attempt to recover, which lets you immediately attempt a Fortitude save against the DC of the effect that made you sickened. On a success, you reduce your sickened value by 1 (or by 2 on a critical success).'),
|
||||
(35, 1, '454,622', 'Slowed', 'You move slower than normal.', 'You have fewer actions. Slowed always includes a value. When you regain your actions at the start of your turn, reduce the number of actions you regain by your slowed value. Because slowed has its effect at the start of your turn, you don’t immediately lose actions if you become slowed during your turn.'),
|
||||
(36, 1, '454,622', 'Stunned', 'You lose your senses.', 'You’ve become senseless. You can’t act while stunned. Stunned usually includes a value, which indicates how many total actions you lose, possibly over multiple turns, from being stunned. Each time you regain actions (such as at the start of your turn), reduce the number you regain by your stunned value, then reduce your stunned value by the number of actions you lost. For example, if you were stunned 4, you would lose all 3 of your actions on your turn, reducing you to stunned 1; on your next turn, you would lose 1 more action, and then be able to use your remaining 2 actions normally. Stunned might also have a duration instead of a value, such as “stunned for 1 minute.” In this case, you lose all your actions for the listed duration.\n\nStunned overrides slowed. If the duration of your stunned condition ends while you are slowed, you count the actions lost to the stunned condition toward those lost to being slowed. So, if you were stunned 1 and slowed 2 at the beginning of your turn, you would lose 1 action from stunned, and then lose only 1 additional action by being slowed, so you would still have 1 action remaining to use that turn.'),
|
||||
(37, 1, '454,622', 'Stupefied', 'Your thoughts are indistinct and clouded', 'Your thoughts and indistinct and clouded. Stupefied always includes a value. You take a status penalty equal to this value on Intelligence-, Wisdom-, and Charisma-based checks and DCs, including Will saving throws, spell attack rolls, spell DCs, and skill checks that use these ability scores. Any time you attempt to Cast a Spell while stupefied, the spell is disrupted unless you succeed at a flat check with a DC equal to 5 + your stupefied value.'),
|
||||
(38, 1, '454,622--23', 'Unconscious', 'You are sleeping or knocked out.', 'You’re sleeping, or you’ve been knocked out. You can’t act. You take a 4 status penalty to AC, Perception, and Reflex saves, and you have the blinded and flat-footed conditions. When you gain this condition, you fall prone and drop items you are wielding or holding unless the effect states otherwise or the GM determines you’re in a position in which you wouldn’t.\n\nIf you’re unconscious because you’re dying, you can’t wake up while you have 0 Hit Points. If you are restored to 1 Hit Point or more via healing, you lose the dying and unconscious conditions and can act normally on your next turn.\n\nIf you are unconscious and at 0 Hit Points, but not dying, you naturally return to 1 Hit Point and awaken after sufficient time passes. The GM determines how long you remain unconscious, from a minimum of 10 minutes to several hours. If you receive healing during this time, you lose the unconscious condition and can act normally on your next turn.\n\nIf you’re unconscious and have more than 1 Hit Point (typically because you are asleep or unconscious due to an effect), you wake up in one of the following ways. Each causes you to lose the unconscious condition.\n\n- You take damage, provided the damage doesn’t reduce you to 0 Hit Points. If the damage reduces you to 0 Hit Points, you remain unconscious and gain the dying condition as normal.\n- You receive healing, other than the natural healing you get from resting.\n- Someone shakes you awake with an Interact action.\n- There’s loud noise going on around youthough this isn’t automatic. At the start of your turn, you automatically attempt a Perception check against the noise’s DC (or the lowest DC if there is more than one noise), waking up if you succeed. If creatures are attempting to stay quiet around you, this Perception check uses their Stealth DCs. Some magical effects make you sleep so deeply that they don’t allow you to attempt this Perception check.\n- If you are simply asleep, the GM decides you wake up either because you have had a restful night’s sleep or something disrupted that rest.'),
|
||||
(39, 1, '454,623', 'Undetected', 'A creature can not sense or track you.', 'When you are undetected by a creature, that creature cannot see you at all, has no idea what space you occupy, and can’t target you, though you still can be affected by abilities that target an area. When you’re undetected by a creature, that creature is flat-footed to you.\n\nA creature you’re undetected by can guess which square you’re in to try targeting you. It must pick a square and attempt an attack. This works like targeting a hidden creature (requiring a DC 11 flat check, as described on page 466), but the flat check and attack roll are rolled in secret by the GM, who doesn’t reveal whether the attack missed due to failing the flat check, failing the attack roll, or choosing the wrong square.\n\nA creature can use the Seek action to try to find you, as described on page 471 CRB.'),
|
||||
(41, 1, '454,623', 'Unfriendly', 'A creature feels disdain for you.', 'This condition reflects a creature’s disposition toward a particular character, and it affects only creatures that are not player characters. A creature that is unfriendly to a character dislikes and specifically distrusts that character. The unfriendly creature won’t accept Requests from the character.'),
|
||||
(42, 1, '454,623', 'Unnoticed', 'A creature has no idea about your presence.', 'If you are unnoticed by a creature, that creature has no idea you are present at all. When you’re unnoticed, you’re also undetected by the creature. This condition matters for abilities that can be used only against targets totally unaware of your presence.'),
|
||||
(43, 1, '454,623', 'Wounded', 'You have been seriously injured.', 'You have been seriously injured. If you lose the dying condition and do not already have the wounded condition, you become wounded 1. If you already have the wounded condition when you lose the dying condition, your wounded condition value increases by 1. If you gain the dying condition while wounded, increase your dying condition value by your wounded value.\n\nThe wounded condition ends if someone successfully restores Hit Points to you with Treat Wounds, or if you are restored to full Hit Points and rest for 10 minutes.'),
|
||||
-- objects only conditions
|
||||
(44, 1, '618', 'Broken', 'This object has been broken.', 'Broken is a condition that affects objects. An object is broken when damage has reduced its Hit Points below its Broken Threshold. A broken object can’t be used for its normal function, nor does it grant bonuses-with the exception of armor. Broken armor still grants its item bonus to AC, but it also imparts a status penalty to AC depending on its category: -1 for broken light armor, -2 for broken medium armor, or -3 for broken heavy armor.\n\nA broken item still imposes penalties and limitations normally incurred by carrying, holding, or wearing it. For example, broken armor would still impose its Dexterity modifier cap, check penalty, and so forth.\n\nIf an effect makes an item broken automatically and the item has more HP than its Broken Threshold, that effect also reduces the item’s current HP to the Broken Threshold.');
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
|
||||
-- TODO insert the damage category descriptions in MARKDOWN format from page 452.
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
INSERT INTO damagecategories VALUES(1,1,'452','Physical','Damage dealt by weapons, many physical hazards, and a handful of spells is collectively called physical damage. The main types of physical damage are bludgeoning, piercing, and slashing. **Bludgeoning damage** comes from weapons and hazards that deal blunt-force trauma, like a hit from a club or being dashed against rocks. **Piercing damage** is dealt from stabs and punctures, whether from a dragon’s fangs or the thrust of a spear. **Slashing damage** is delivered by a cut, be it the swing of the sword or the blow from a scythe blades trap.\n\nGhosts and other incorporeal creatures have a high resistance to physical attacks that aren’t magical (attacks that lack the magical trait). Furthermore, most incorporeal creatures have additional, though lower, resistance to magical physical damage (such as damage dealt from a mace with the magic trait) and most other damage types.');
|
||||
INSERT INTO damagecategories VALUES(2,1,'452','Energy','Many spells and other magical effects deal energy damage. Energy damage is also dealt from effects in the world, such as the biting cold of a blizzard to a raging forest fire. The main types of energy damage are acid, cold, electricity, fire, and sonic. **Acid damage** can be delivered by gases, liquids, and certain solids that dissolve flesh, and sometimes by harder materials. **Cold damage** freezes material by way of contact with chilling gases and ice. **Electricity damage** comes from the discharge of powerful lightning and sparks. **Fire damage** burns through heat and combustion. **Sonic damage** assaults matter with high-frequency vibration and sound waves. Many times, you deal energy damage by casting magic spells, and doing so is often useful against creatures that have immunities or resistances to physical damage.\n\nTwo special types of energy damage specifically target the living and the undead. Positive energy often manifests as healing energy to living creatures but can create **positive damage** that withers undead bodies and disrupts and injures incorporeal undead. Negative energy often revivifies the unnatural, unliving power of undead, while manifesting as **negative damage** that gnaws at the living.\n\nPowerful and pure magical energy can manifest itself as **force damage**. Few things can resist this type of damage—not even incorporeal creatures such as ghosts and wraiths. ');
|
||||
INSERT INTO damagecategories VALUES(3,1,'452','Alignment','Weapons and effects keyed to a particular alignment can deal **chaotic**, **evil**, **good**, or **lawful** damage. These damage types apply only to creatures that have the opposing alignment trait. Chaotic damage harms only lawful creatures, evil damage harms only good creatures, good damage harms only evil creatures, and lawful damage harms only chaotic creatures.');
|
||||
INSERT INTO damagecategories VALUES(4,1,'452','Mental','Sometimes an effect can target the mind with enough psychic force to actually deal damage to the creature. When it does, it deals **mental damage**. Mindless creatures and those with only programmed or rudimentary intelligence are often immune to mental damage and effects.');
|
||||
INSERT INTO damagecategories VALUES(5,1,'452','Poison','Venoms, toxins, and the like can deal **poison damage**, which affects creatures by way of contact, ingestion, innhalation, or injury, In addition to coming from monster attacks, alchemical items, and spells, poison damage is often caused by ongoing afflictions, which follow special rules described on page 457.');
|
||||
INSERT INTO damagecategories VALUES(6,1,'452','Bleed',' Another special type of physical damage is **bleed damage**. This is persistent damage that represents loss of blood. As such, it has no effect on nonliving creatures or living creatures that don’t need blood to live. Weaknesses and resistances to physical damage apply.');
|
||||
INSERT INTO damagecategories VALUES(7,1,'452','Precision','Sometimes you are able to make the most of your attack through sheer precision. When you hit with an ability that grants you **precision damage**, you increase the attack’s listed damage, using the same damage type, rather than tracking a separate pool of damage. For example, a non-magical dagger Strike that deals 1d6 precision damage from a rogue’s sneak attack increases the piercing damage by 1d6.\n\nSome creatures are immune to precision damage, regardless of the damage type; these are often amorphous creatures that lack vulnerable anatomy. A creature immune to precision damage would ignore the 1d6 precision damage in the example above, but it would still take the rest of the piercing damage from the Strike. Likewise, since precision damage is always the same type of damage as the attack it’s augmenting, a creature that is resistant to non-magical damage, like a ghost or other incorporeal creature, would resist not only the dagger’s damage but also the precision damage, even though it is not specifically resistant to precision damage.');
|
||||
INSERT INTO damagecategories VALUES(8,1,'452','Precious Materials','While not their own damage category, precious materials can modify damage to penetrate a creature’s resistances or take advantage of its weaknesses. For instance, silver weapons are particularly effective against lycanthropes and bypass the resistances to physical damage that most devils have.');
|
||||
COMMIT;
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
INSERT INTO damagetypes VALUES(1,1,'452',1,'B','Bludgeoning');
|
||||
INSERT INTO damagetypes VALUES(2,1,'452',1,'P','Piercing');
|
||||
INSERT INTO damagetypes VALUES(3,1,'452',1,'S','Slashing');
|
||||
INSERT INTO damagetypes VALUES(4,1,'452',2,NULL,'Acid');
|
||||
INSERT INTO damagetypes VALUES(5,1,'452',2,NULL,'Cold');
|
||||
INSERT INTO damagetypes VALUES(6,1,'452',2,NULL,'Electricity');
|
||||
INSERT INTO damagetypes VALUES(7,1,'452',2,NULL,'Fire');
|
||||
INSERT INTO damagetypes VALUES(8,1,'452',2,NULL,'Sonic');
|
||||
INSERT INTO damagetypes VALUES(9,1,'452',2,NULL,'Positive');
|
||||
INSERT INTO damagetypes VALUES(10,1,'452',2,NULL,'Negative');
|
||||
INSERT INTO damagetypes VALUES(11,1,'452',3,NULL,'Chaotic');
|
||||
INSERT INTO damagetypes VALUES(12,1,'452',3,NULL,'Evil');
|
||||
INSERT INTO damagetypes VALUES(13,1,'452',3,NULL,'Good');
|
||||
INSERT INTO damagetypes VALUES(14,1,'452',3,NULL,'Lawful');
|
||||
INSERT INTO damagetypes VALUES(15,1,'452',4,NULL,'Mental');
|
||||
INSERT INTO damagetypes VALUES(16,1,'452',5,NULL,'Poison');
|
||||
INSERT INTO damagetypes VALUES(17,1,'452',6,NULL,'Bleed');
|
||||
INSERT INTO damagetypes VALUES(18,1,'452',7,NULL,'Precision');
|
||||
INSERT INTO damagetypes VALUES(19,1,'452',8,NULL,'Precious Materials');
|
||||
COMMIT;
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,19 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
|
||||
INSERT INTO frequency (
|
||||
freq_id,
|
||||
freq_descr
|
||||
)
|
||||
VALUES
|
||||
(1, 'once per round'),
|
||||
(2, 'once per turn'),
|
||||
(3, 'once per minute'),
|
||||
(4, 'once every 10 minutes'),
|
||||
(5, 'once per hour'),
|
||||
(6, 'once per day');
|
||||
-- (7, 'once per week'),
|
||||
-- (8, 'once per month'),
|
||||
-- (9, 'once per year');
|
||||
@@ -0,0 +1,115 @@
|
||||
PRAGMA foreign_keys = ON;
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
INSERT INTO gear VALUES('1','Holly and Mistletoe','0','0','0','1','1','290','Plants of supernatural significance provide a primal focus for primal spellcasters, such as druids, when using certain abilities and casting some spells. A bundle of holly and mistletoe must be held in one hand to use it. Other primal foci exist for druids focused on other aspects of nature.');
|
||||
INSERT INTO gear VALUES('2','Bedroll','0','0.01','0.1','','1','288','');
|
||||
INSERT INTO gear VALUES('3','Candle','0','0.01','0','1','1','289','A lit candle sheds dim light in a 10-foot radius.');
|
||||
INSERT INTO gear VALUES('4','Chalk','0','0.01','0','1','1','288','');
|
||||
INSERT INTO gear VALUES('5','Mug','0','0.01','0','1','1','288','');
|
||||
INSERT INTO gear VALUES('6','Oil','0','0.01','0','2','1','291','You can use oil to fuel lanterns, but you can also set a pint of oil aflame and throw it. You must first spend an Interact action preparing the oil, then throw it with another action as a ranged attack. If you hit, it splatters on the creature or in a single 5-foot square you target. You must succeed at a DC 10 flat check for the oil to ignite successfully when it hits. If the oil ignites, the target takes 1d6 fire damage.');
|
||||
INSERT INTO gear VALUES('7','Piton','0','0.01','0','1','1','291','These small spikes can be used as anchors to make climbing easier. To affix a piton, you must hold it in one hand and use a hammer to drive it in with your other hand. You can attach a rope to the hammered piton so that you don''t fall all the way to the ground on a critical failure while Climbing.');
|
||||
INSERT INTO gear VALUES('8','Sack','0','0.01','0.1','1','1','291','A sack can hold up to 8 Bulk worth of items. A sack containing 2 Bulk or less can be worn on the body, usually tucked into a belt. You can carry a sack with one hand, but must use two hands to transfer items in and out.');
|
||||
INSERT INTO gear VALUES('9','Sheath','0','0.01','0','','1','291','A sheath or scabbard lets you easily carry a weapon on your person.');
|
||||
INSERT INTO gear VALUES('10','Ten-Foot Pole','0','0.01','1','2','1','291','When wielding this long pole, you can use Seek to search a square up to 10 feet away. The pole is not sturdy enough to use as a weapon.');
|
||||
INSERT INTO gear VALUES('11','Torch','0','0.01','0.1','1','1','292','A torch sheds bright light in a 20-foot radius (and dim light to the next 20 feet). It can be used as an improvised weapon that deals 1d4 bludgeoning damage plus 1 fire damage.');
|
||||
INSERT INTO gear VALUES('12','Soap','0','0.02','0','1','1','288','');
|
||||
INSERT INTO gear VALUES('13','Ladder','0','0.03','3','2','1','288','');
|
||||
INSERT INTO gear VALUES('14','Belt Pouch','0','0.04','0','','1','289','A belt pouch holds up to four items of light Bulk.');
|
||||
INSERT INTO gear VALUES('15','Flint and Steel','0','0.05','0','2','1','290','Flint and steel are useful in creating a fire if you have the time to catch a spark, though using them is typically too time-consuming to be practical during an encounter. Even in ideal conditions, using flint and steel to light a flame requires using at least 3 actions, and often significantly longer.');
|
||||
INSERT INTO gear VALUES('16','Vial','0','0.05','0','1','1','292','A simple glass vial holds up to 1 ounce of liquid.');
|
||||
INSERT INTO gear VALUES('17','Waterskin','0','0.05','0.1','1','1','292','When it''s full, a waterskin has 1 Bulk and contains roughly 1 day''s worth of water for a Small or Medium creature.');
|
||||
INSERT INTO gear VALUES('18','Signal Whistle','0','0.08','0','1','1','291','When sounded, a signal whistle can be heard clearly up to half a mile away across open terrain.');
|
||||
INSERT INTO gear VALUES('19','Backpack','0','0.1','0','','1','289','A backpack holds up to 4 Bulk of items. If you''re carrying or stowing the pack rather than wearing it on your back, its bulk is light instead of negligible.');
|
||||
INSERT INTO gear VALUES('20','Bandolier','0','0.1','0','','1','289','A bandolier holds up to eight items of light Bulk within easy reach and is usually used for alchemical items or potions. If you are carrying or stowing a bandolier rather than wearing it around your chest, it has light Bulk instead of negligible. A bandolier can be dedicated to a full set of tools, such as healer''s tools, allowing you to draw the tools as part of the action that requires them.');
|
||||
INSERT INTO gear VALUES('21','Basic Crafter''s Book','0','0.1','0.1','2','1','289','This book contains the formulas (page 293) for Crafting the common items in this chapter.');
|
||||
INSERT INTO gear VALUES('22','Clothing (Explorer''s)','0','0.1','0.1','','1','287','Explorer''s clothing is sturdy enough that it can be reinforced to protect you, even though it isn''t a suit of armor. It comes in many forms, though the most common sorts look like clerical vestments, monk''s garments, or wizard''s robes, as members of all three classes are likely to avoid wearing armor. For more information on explorer''s clothing, see pages 275--76.');
|
||||
INSERT INTO gear VALUES('23','Clothing (Oridinary)','0','0.1','0','','1','287','Ordinary clothing is functional with basic tailoring, such as peasant garb, monk''s robes, or work clothes.');
|
||||
INSERT INTO gear VALUES('24','Disguise Kit (Replacement Cosmetics)','0','0.1','0','','1','290','This small wooden box contains cosmetics, false facial hair, spirit gum, and a few simple wigs. You usually need a disguise kit to set up a disguise in order to Impersonate someone using the Deception skill. An elite disguise kit adds a +1 item bonus to relevant checks. If you''ve crafted a large number of disguises, you can replenish your cosmetics supply with replacement cosmetics suitable for the type of your disguise kit.');
|
||||
INSERT INTO gear VALUES('25','Grappling Hook','0','0.1','0.1','1','1','290','You can throw a grappling hook with a rope tied to it to make a climb easier. To anchor a grappling hook, make an attack roll with the secret trait against a DC depending on the target, typically at least DC 20. On a success, your hook has a firm hold, but on a critical failure, the hook seems like it will hold but actually falls when you''re partway up.');
|
||||
INSERT INTO gear VALUES('26','Hammer','0','0.1','0.1','1','1','288','');
|
||||
INSERT INTO gear VALUES('27','Religious Symbol (Wooden)','0','0.1','0.1','1','1','291','This piece of wood or silver is emblazoned with an image representing a deity. Some divine spellcasters, such as clerics, can use a religious symbol of their deity as a divine focus to use certain abilities and cast some spells. A religious symbol must be held in one hand to use it.');
|
||||
INSERT INTO gear VALUES('28','Satchel','0','0.1','0','2','1','291','A satchel can hold up to 2 Bulk worth of items. If you are carrying or stowing a satchel rather than wearing it over your shoulder, it counts as light Bulk instead of negligible.');
|
||||
INSERT INTO gear VALUES('29','Scroll Case','0','0.1','0','2','1','291','Scrolls, maps, and other rolled documents are stored in scroll cases for safe transport.');
|
||||
INSERT INTO gear VALUES('30','Writing Set (Extra Ink and Paper)','0','0.1','0','','1','292','Using a writing set, you can draft correspondence and scribe scrolls. A set includes stationery, including a variety of paper and parchment, as well as ink, a quill or inkpen, sealing wax, and a simple seal. If you''ve written a large amount, you can refill your kit with extra ink and paper.');
|
||||
INSERT INTO gear VALUES('31','Lock (Poor)','0','0.2','0','2','1','290','Picking a poor lock requires two successful DC 15 Thievery checks.');
|
||||
INSERT INTO gear VALUES('32','Merchant''s Scale','0','0.2','0.1','2','1','288','');
|
||||
INSERT INTO gear VALUES('33','Saddlebags','0','0.2','0.1','2','1','291','Saddlebags come in a pair. Each can hold up to 3 Bulk of items. The Bulk value given is for saddlebags worn by a mount. If you are carrying or stowing saddlebags, they count as 1 Bulk instead of light Bulk.');
|
||||
INSERT INTO gear VALUES('34','Caltrops','0','0.3','0.1','1','1','289','These four-pronged metal spikes can cause damage to a creature''s feet. You can scatter caltrops in an empty square adjacent to you with an Interact action. The first creature that moves into that square must succeed at a DC 14 Acrobatics check or take 1d4 piercing damage and 1 persistent bleed damage. A creature taking persistent bleed damage from caltrops takes a 5-foot penalty to its Speed. Spending an Interact action to pluck the caltrops free reduces the DC to stop the bleeding. Once a creature takes damage from caltrops, enough caltrops are ruined that other creatures moving into the square are safe. Deployed caltrops can be salvaged and reused if no creatures took damage from them. Otherwise, enough caltrops are ruined that they can''t be salvaged.');
|
||||
INSERT INTO gear VALUES('35','Manacles (Poor)','0','0.3','0','2','1','290','You can manacle someone who is willing or otherwise at your mercy as an exploration activity taking 10--30 seconds depending on the creature''s size and how many manacles you apply. A two-legged creature with its legs bound takes a 15-foot circumstance penalty to its Speeds, and a two-handed creature with its wrists bound has to succeed at a DC 5 flat check any time it uses a manipulate action or else that action fails. This DC may be higher depending on how tightly the manacles constrain the hands. A creature bound to a stationary object is immobilized. For creatures with more or fewer limbs, the GM determines what effect manacles have, if any. Freeing a creature from poor manacles requires two successful DC 17 Thievery checks.');
|
||||
INSERT INTO gear VALUES('36','Thieves'' Tools (Replacement Picks)','0','0.3','0','','1','291','You need thieves'' tools to Pick Locks or Disable Devices (of some types) using the Thievery skill. If your thieves'' tools are broken, you can repair them by replacing the lock picks with replacement picks appropriate to your tools; this doesn''t require using the Repair action.');
|
||||
INSERT INTO gear VALUES('37','Clothing (Winter)','0','0.4','0.1','','1','287','Winter clothing allows you to negate the damage from severe environmental cold and reduce the damage from extreme cold to that of severe cold.');
|
||||
INSERT INTO gear VALUES('38','Rations','0','0.4','0.1','1','1','288','');
|
||||
INSERT INTO gear VALUES('39','Tool (Short)','0','0.4','0.1','1','1','292','This entry is a catchall for basic hand tools that don''t have a specific adventuring purpose. A hoe, shovel, or sledgehammer is a long tool, and a hand drill, ice hook, or trowel is a short tool. A tool can usually be used as an improvised weapon, dealing 1d4 damage for a short tool or 1d6 for a long tool. The GM determines the damage type that''s appropriate or adjusts the damage if needed.');
|
||||
INSERT INTO gear VALUES('40','Climbing Kit','0','0.5','1','2','1','287','This satchel includes 50 feet of rope, pulleys, a dozen pitons, a hammer, a grappling hook, and one set of crampons. Climbing kits allow you to attach yourself to the wall you''re Climbing, moving half as quickly as usual (minimum 5 feet) but letting you attempt a DC 5 flat check whenever you critically fail to prevent a fall. A single kit has only enough materials for one climber; each climber needs their own kit.');
|
||||
INSERT INTO gear VALUES('41','Climbing Kit (Extreme)','3','40','1','2','1','287','This satchel includes 50 feet of rope, pulleys, a dozen pitons, a hammer, a grappling hook, and one set of crampons. Climbing kits allow you to attach yourself to the wall you''re Climbing, moving half as quickly as usual (minimum 5 feet) but letting you attempt a DC 5 flat check whenever you critically fail to prevent a fall. You gain a +1 item bonus to Athletics checks to Climb while using an extreme climbing kit. A single kit has only enough materials for one climber; each climber needs their own kit.');
|
||||
INSERT INTO gear VALUES('42','Crowbar','0','0.5','0.1','2','1','290','When Forcing Open an object that doesn''t have an easy grip, a crowbar makes it easier to gain the necessary leverage. Without a crowbar, prying something open takes a -2 item penalty to the Athletics check to Force Open (similar to using a shoddy item).');
|
||||
INSERT INTO gear VALUES('43','Material Component Pouch','0','0.5','0.1','1','1','290','This pouch contains material components for those spells that require them. Though the components are used up over time, you can refill spent components during your daily preparations.');
|
||||
INSERT INTO gear VALUES('44','Rope','0','0.5','0.1','2','1','288','');
|
||||
INSERT INTO gear VALUES('45','Chest','0','0.6','2','2','1','289','A wooden chest can hold up to 8 Bulk of items.');
|
||||
INSERT INTO gear VALUES('46','Adventurer''s Pack','0','0.7','2','','1','289','This item is the starter kit for an adventurer, containing the essential items for exploration and survival. The Bulk value is for the entire pack together, but see the descriptions of individual items as necessary. \n\n The pack contains the following items: backpack (containing the other goods), bedroll, two belt pouches, 10 pieces of chalk, flint and steel, 50 feet of rope, 2 weeks'' rations, soap, 5 torches, and a waterskin.');
|
||||
INSERT INTO gear VALUES('47','Lantern (Hooded)','0','0.7','0.1','1','1','290','A lantern sheds bright light and requires 1 pint of oil to function for 6 hours. \n\n A hooded lantern sheds light in a 30-foot radius (and dim light in the next 30 feet) and is equipped with shutters, which you can close to block the light. Closing or opening the shutters takes an Interact action.');
|
||||
INSERT INTO gear VALUES('48','Fishing Tackle','0','0.8','1','2','1','290','This kit include a collapsible fishing pole, fishhooks, line, lures, and a fishing net.');
|
||||
INSERT INTO gear VALUES('49','Musical Instrument (Handheld)','0','0.8','1','2','1','290','Handheld instruments include bagpipes, a small set of chimes, small drums, fiddles and viols, flutes and recorders, small harps, lutes, trumpets, and similarly sized instruments. The GM might rule that an especially large handheld instrument (like a tuba) has greater Bulk.');
|
||||
INSERT INTO gear VALUES('50','Tent (Pup)','0','0.8','0.1','2','1','288','');
|
||||
INSERT INTO gear VALUES('51','Compass','0','1','0.1','1','1','290','A compass helps you Sense Direction or navigate, provided you''re in a location with uniform magnetic fields. Without a compass, you take a --2 item penalty to these checks (similar to using a shoddy item).');
|
||||
INSERT INTO gear VALUES('52','Cookware','0','1','2','2','1','288','');
|
||||
INSERT INTO gear VALUES('53','Formula Book (Blank)','0','1','1','1','1','290','A formula book holds the formulas necessary to make items other than the common equipment from this chapter; alchemists typically get one for free. Each formula book can hold the formulas for up to 100 different items. Formulas can also appear on parchment sheets, tablets, and almost any other medium; there''s no need for you to copy them into a specific book as long as you can keep them on hand to reference them.');
|
||||
INSERT INTO gear VALUES('54','Lantern (Bull''s-Eye)','0','1','1','1','1','290','A lantern sheds bright light and requires 1 pint of oil to function for 6 hours. \n\n A bull''s-eye lantern emits its light in a 60-foot cone (and dim light in the next 60 feet).');
|
||||
INSERT INTO gear VALUES('55','Mirror','0','1','0','1','1','288','');
|
||||
INSERT INTO gear VALUES('56','Religious Text','0','1','0.1','1','1','291','This manuscript contains scripture of a particular religion. Some divine spellcasters, such as clerics, can use a religious text as a divine focus to use certain abilities and cast some spells. A religious text must be held in one hand to use it.');
|
||||
INSERT INTO gear VALUES('57','Spellbook (Blank)','0','1','1','1','1','291','A spellbook holds the written knowledge necessary to learn and prepare various spells, a necessity for wizards (who typically get one for free) and a useful luxury for other spellcasters looking to learn additional spells. Each spellbook can hold up to 100 spells. The Price listed is for a blank spellbook.');
|
||||
INSERT INTO gear VALUES('58','Tool (Long)','0','1','1','2','1','292','This entry is a catchall for basic hand tools that don''t have a specific adventuring purpose. A hoe, shovel, or sledgehammer is a long tool, and a hand drill, ice hook, or trowel is a short tool. A tool can usually be used as an improvised weapon, dealing 1d4 damage for a short tool or 1d6 for a long tool. The GM determines the damage type that''s appropriate or adjusts the damage if needed.');
|
||||
INSERT INTO gear VALUES('59','Writing Set','0','1','0.1','2','1','292','Using a writing set, you can draft correspondence and scribe scrolls. A set includes stationery, including a variety of paper and parchment, as well as ink, a quill or inkpen, sealing wax, and a simple seal. If you''ve written a large amount, you can refill your kit with extra ink and paper.Writing SetItem 0Source Core Rulebook pg. 292Price 1 gpHands 2; Bulk LWriting Set (Extra Ink and Paper)Item 0Source Core Rulebook pg. 292Price 1 sp');
|
||||
INSERT INTO gear VALUES('60','Clothing (Fine)','0','2','0.1','','1','287','Fine clothing, suitable for a noble or royal, is made with expensive fabrics, precious metals, and intricate patterns.');
|
||||
INSERT INTO gear VALUES('61','Disguise Kit','0','2','0.1','2','1','290','This small wooden box contains cosmetics, false facial hair, spirit gum, and a few simple wigs. You usually need a disguise kit to set up a disguise in order to Impersonate someone using the Deception skill. An elite disguise kit adds a +1 item bonus to relevant checks. If you''ve crafted a large number of disguises, you can replenish your cosmetics supply with replacement cosmetics suitable for the type of your disguise kit.');
|
||||
INSERT INTO gear VALUES('62','Musical Instrument (Heavy)','0','2','16','2','1','290','Handheld instruments include bagpipes, a small set of chimes, small drums, fiddles and viols, flutes and recorders, small harps, lutes, trumpets, and similarly sized instruments. The GM might rule that an especially large handheld instrument (like a tuba) has greater Bulk. Heavy instruments such as large drums, a full set of chimes, and keyboard instruments are less portable and generally need to be stationary while played.');
|
||||
INSERT INTO gear VALUES('63','Religious Symbol (Silver)','0','2','0.1','1','1','291','This piece of wood or silver is emblazoned with an image representing a deity. Some divine spellcasters, such as clerics, can use a religious symbol of their deity as a divine focus to use certain abilities and cast some spells. A religious symbol must be held in one hand to use it.');
|
||||
INSERT INTO gear VALUES('64','Repair Kit','0','2','1','2','1','291','A repair kit allows you to perform simple repairs while traveling. It contains a portable anvil, tongs, woodworking tools, a whetstone, and oils for conditioning leather and wood. You can use a repair kit to Repair items using the Crafting skill.');
|
||||
INSERT INTO gear VALUES('65','Hourglass','0','3','0.1','1','1','288','');
|
||||
INSERT INTO gear VALUES('66','Thieves'' Tools','0','3','0.1','2','1','291','You need thieves'' tools to Pick Locks or Disable Devices (of some types) using the Thievery skill. If your thieves'' tools are broken, you can repair them by replacing the lock picks with replacement picks appropriate to your tools; this doesn''t require using the Repair action.');
|
||||
INSERT INTO gear VALUES('67','Artisan''s Tools','0','4','2','2','1','289','You need these tools to create items from raw materials with the Craft skill. Different sets are needed for different work, as determined by the GM; for example, blacksmith''s tools differ from woodworker''s tools.');
|
||||
INSERT INTO gear VALUES('68','Chain','0','4','1','2','1','288','');
|
||||
INSERT INTO gear VALUES('69','Tack','0','4','1','','1','291','Tack includes all the gear required to outfit a riding animal, including a saddle, bit and bridle, and stirrups if necessary. Especially large or oddly shaped animals might require specialty saddles. These can be more expensive or hard to find, as determined by the GM. The Bulk value given is for tack worn by a creature. If carried, the Bulk increases to 2.');
|
||||
INSERT INTO gear VALUES('70','Alchemist''s Tools','0','5','2','2','1','287','These beakers and chemicals can be used to set up a mobile alchemical laboratory. When you carry the tools from place to place, you keep many of the components handy on your person, in pockets or bandoliers.');
|
||||
INSERT INTO gear VALUES('71','Healer''s Tools','0','5','1','2','1','290','This kit of bandages, herbs, and suturing tools is necessary for Medicine checks to Administer First Aid, Treat Disease, Treat Poison, or Treat Wounds. When you carry the tools from place to place, you keep many of the components handy on your person, in pockets or bandoliers.');
|
||||
INSERT INTO gear VALUES('72','Snare Kit','0','5','2','2','1','291','This kit contains tools and materials for creating snares. A snare kit allows you to Craft snares using the Crafting skill.');
|
||||
INSERT INTO gear VALUES('73','Tent (Four-Person)','0','5','1','2','1','288','');
|
||||
INSERT INTO gear VALUES('74','Spyglass','0','20','0.1','2','1','291','A typical spyglass lets you see eight times farther than normal.');
|
||||
INSERT INTO gear VALUES('75','Magnifying Glass','0','40','0','1','1','290','This quality handheld lens gives you a +1 item bonus to Perception checks to notice minute details of documents, fabric, and the like.');
|
||||
INSERT INTO gear VALUES('76','Lock (Simple)','1','2','0','2','1','290','Picking a simple lock requires three successful DC 20 Thievery checks.');
|
||||
INSERT INTO gear VALUES('77','Manacles (Simple)','1','3','0','2','1','290','You can manacle someone who is willing or otherwise at your mercy as an exploration activity taking 10-30 seconds depending on the creature''s size and how many manacles you apply. A two-legged creature with its legs bound takes a 15-foot circumstance penalty to its Speeds, and a two-handed creature with its wrists bound has to succeed at a DC 5 flat check any time it uses a manipulate action or else that action fails. This DC may be higher depending on how tightly the manacles constrain the hands. A creature bound to a stationary object is immobilized. For creatures with more or fewer limbs, the GM determines what effect manacles have, if any. Freeing a creature from simple manacles requires three successes at DC 22.');
|
||||
INSERT INTO gear VALUES('78','Tent (Pavilion)','2','40','12','2','1','288','');
|
||||
INSERT INTO gear VALUES('79','Disguise Kit (Elite Cosmetics)','3','0.5','0','','1','290','This small wooden box contains cosmetics, false facial hair, spirit gum, and a few simple wigs. You usually need a disguise kit to set up a disguise in order to Impersonate someone using the Deception skill. An elite disguise kit adds a +1 item bonus to relevant checks. If you''ve crafted a large number of disguises, you can replenish your cosmetics supply with replacement cosmetics suitable for the type of your disguise kit.');
|
||||
INSERT INTO gear VALUES('80','Thieve''s Tools (Infiltrator Picks)','3','3','0','','1','291','You need thieves'' tools to Pick Locks or Disable Devices (of some types) using the Thievery skill. Infiltrator thieves'' tools add a +1 item bonus to checks to Pick Locks and Disable Devices. If your thieves'' tools are broken, you can repair them by replacing the lock picks with replacement picks appropriate to your tools; this doesn''t require using the Repair action.');
|
||||
INSERT INTO gear VALUES('81','Scholarly Journal','3','6','0.1','1','1','291','Scholarly journals are uncommon. Each scholarly journal is a folio on a very specific topic, such as vampires or the history of a single town or neighborhood of a city. If you spend 1 minute referencing an academic journal before attempting a skill check to Recall Knowledge about the subject, you gain a +1 item bonus to the check.');
|
||||
INSERT INTO gear VALUES('82','Survey Map','3','10','0.1','1','1','291','Maps are uncommon. Most maps you can find are simple and functional. A survey map details a single location in excellent detail. One of these maps gives you a +1 item bonus to Survival checks and any skill checks to Recall Knowledge, provided the checks are related to the location detailed on the map.');
|
||||
INSERT INTO gear VALUES('83','Lock (Average)','3','15','0','2','1','290','Picking an average lock requires four successes at DC 25.');
|
||||
INSERT INTO gear VALUES('84','Compass (Lensatic)','3','20','0.1','1','1','290','A compass helps you Sense Direction or navigate, provided you''re in a location with uniform magnetic fields. Without a compass, you take a --2 item penalty to these checks (similar to using a shoddy item). A lensatic compass gives you a +1 item bonus to these checks.');
|
||||
INSERT INTO gear VALUES('85','Crowbar (Levered)','3','20','0.1','2','1','290','When Forcing Open an object that doesn''t have an easy grip, a crowbar makes it easier to gain the necessary leverage. Without a crowbar, prying something open takes a -2 item penalty to the Athletics check to Force Open (similar to using a shoddy item). A levered crowbar grants you a +1 item bonus to Athletics checks to Force Open anything that can be pried open. ');
|
||||
INSERT INTO gear VALUES('86','Fishing Tackle (Professional)','3','20','1','2','1','290','This kit include a collapsible fishing pole, fishhooks, line, lures, and a fishing net. Professional fishing tackle grants a +1 item bonus to checks to fish.');
|
||||
INSERT INTO gear VALUES('87','Manacles (Average)','3','20','0','2','1','290','You can manacle someone who is willing or otherwise at your mercy as an exploration activity taking 10--30 seconds depending on the creature''s size and how many manacles you apply. A two-legged creature with its legs bound takes a -15-foot circumstance penalty to its Speeds, and a two-handed creature with its wrists bound has to succeed at a DC 5 flat check any time it uses a manipulate action or else that action fails. This DC may be higher depending on how tightly the manacles constrain the hands. A creature bound to a stationary object is immobilized. For creatures with more or fewer limbs, the GM determines what effect manacles have, if any. Freeing a creature from average manacles require four successes at DC 27.');
|
||||
INSERT INTO gear VALUES('88','Repair Kit (Superb)','3','25','1','2','1','291','A repair kit allows you to perform simple repairs while traveling. It contains a portable anvil, tongs, woodworking tools, a whetstone, and oils for conditioning leather and wood. You can use a repair kit to Repair items using the Crafting skill. A superb repair kit gives you a +1 item bonus to the check.');
|
||||
INSERT INTO gear VALUES('89','Scholarly Journal (Compendium)','3','30','0.1','1','1','291','Scholarly journals are uncommon. Each scholarly journal is a folio on a very specific topic, such as vampires or the history of a single town or neighborhood of a city. If you spend 1 minute referencing an academic journal before attempting a skill check to Recall Knowledge about the subject, you gain a +1 item bonus to the check. A compendium of journals costs five times as much as a single journal and requires both hands to use; each compendium contains several journals and grants its bonus on a broader topic, such as all undead or a whole city. The GM determines what scholarly journals are available in any location.');
|
||||
INSERT INTO gear VALUES('90','Disguise Kit (Elite)','3','40','0.1','','1','290','This small wooden box contains cosmetics, false facial hair, spirit gum, and a few simple wigs. You usually need a disguise kit to set up a disguise in order to Impersonate someone using the Deception skill. An elite disguise kit adds a +1 item bonus to relevant checks. If you''ve crafted a large number of disguises, you can replenish your cosmetics supply with replacement cosmetics suitable for the type of your disguise kit.');
|
||||
INSERT INTO gear VALUES('91','Artisan''s Tools (Sterling)','3','50','2','2','1','287','You need these tools to create items from raw materials with the Craft skill. Sterling artisan''s tools give you a +1 item bonus to the check. Different sets are needed for different work, as determined by the GM; for example, blacksmith''s tools differ from woodworker''s tools.');
|
||||
INSERT INTO gear VALUES('92','Healer''s Tools (Expanded)','3','50','1','2','1','290','This kit of bandages, herbs, and suturing tools is necessary for Medicine checks to Administer First Aid, Treat Disease, Treat Poison, or Treat Wounds. Expanded healer''s tools provide a +1 item bonus to such checks. When you carry the tools from place to place, you keep many of the components handy on your person, in pockets or bandoliers.');
|
||||
INSERT INTO gear VALUES('93','Musical Instrument (Virtuoso Handheld)','3','50','1','2','1','290','Handheld instruments include bagpipes, a small set of chimes, small drums, fiddles and viols, flutes and recorders, small harps, lutes, trumpets, and similarly sized instruments. The GM might rule that an especially large handheld instrument (like a tuba) has greater Bulk. \n\n A virtuoso instrument gives a +1 item bonus to Performance checks using that instrument.');
|
||||
INSERT INTO gear VALUES('94','Survey Map (Atlas)','3','50','0.1','2','1','291','Maps are uncommon. Most maps you can find are simple and functional. A survey map details a single location in excellent detail. One of these maps gives you a +1 item bonus to Survival checks and any skill checks to Recall Knowledge, provided the checks are related to the location detailed on the map. Maps sometimes come in atlases, containing a number of maps of the same quality, often on similar topics. An atlas costs five times as much as a single map and requires both hands to use. The GM determines what maps are available in any location.');
|
||||
INSERT INTO gear VALUES('95','Thieve''s Tools (Infiltrator)','3','50','0.1','2','1','291','You need thieves'' tools to Pick Locks or Disable Devices (of some types) using the Thievery skill. Infiltrator thieves'' tools add a +1 item bonus to checks to Pick Locks and Disable Devices. If your thieves'' tools are broken, you can repair them by replacing the lock picks with replacement picks appropriate to your tools; this doesn''t require using the Repair action.');
|
||||
INSERT INTO gear VALUES('96','Alchemist''s Tools (Expanded)','3','55','2','2','1','287','These beakers and chemicals can be used to set up a mobile alchemical laboratory. Expanded alchemist''s tools give a +1 item bonus to Crafting checks to create alchemical items. When you carry the tools from place to place, you keep many of the components handy on your person, in pockets or bandoliers.');
|
||||
INSERT INTO gear VALUES('97','Clothing (High-Fashion Fine)','3','55','0.1','','1','287','Fine clothing, suitable for a noble or royal, is made with expensive fabrics, precious metals, and intricate patterns. You gain a +1 item bonus to checks to Make an Impression on nobility or other upper-class folk while wearing high-fashion fine clothing.');
|
||||
INSERT INTO gear VALUES('98','Snare Kit (Specialist)','3','55','2','2','1','291','This kit contains tools and materials for creating snares. A snare kit allows you to Craft snares using the Crafting skill. A specialist snare kit gives you a +1 item bonus to the check.');
|
||||
INSERT INTO gear VALUES('99','Musical Instrument (Virtuoso Heavy)','3','100','16','2','1','290','Handheld instruments include bagpipes, a small set of chimes, small drums, fiddles and viols, flutes and recorders, small harps, lutes, trumpets, and similarly sized instruments. The GM might rule that an especially large handheld instrument (like a tuba) has greater Bulk. Heavy instruments such as large drums, a full set of chimes, and keyboard instruments are less portable and generally need to be stationary while played. \n\n A virtuoso instrument gives a +1 item bonus to Performance checks using that instrument. ');
|
||||
INSERT INTO gear VALUES('100','Spyglass (Fine)','4','80','0.1','2','1','291','A typical spyglass lets you see eight times farther than normal. A fine spyglass adds a +1 item bonus to Perception checks to notice details at a distance.');
|
||||
INSERT INTO gear VALUES('101','Lock (Good)','9','200','0','2','1','290','Picking a good lock requires five successes at DC 30.');
|
||||
INSERT INTO gear VALUES('102','Manacles (Good)','9','250','0','2','1','290','You can manacle someone who is willing or otherwise at your mercy as an exploration activity taking 10--30 seconds depending on the creature''s size and how many manacles you apply. A two-legged creature with its legs bound takes a -15-foot circumstance penalty to its Speeds, and a two-handed creature with its wrists bound has to succeed at a DC 5 flat check any time it uses a manipulate action or else that action fails. This DC may be higher depending on how tightly the manacles constrain the hands. A creature bound to a stationary object is immobilized. For creatures with more or fewer limbs, the GM determines what effect manacles have, if any. Freeing a creature from good manacles require five successes at DC 32.');
|
||||
INSERT INTO gear VALUES('103','Lock (Superior)','17','4500','0','2','1','290','Picking a superior lock six successes at DC 40.');
|
||||
INSERT INTO gear VALUES('104','Manacles (Superior)','17','5000','0','2','1','290','You can manacle someone who is willing or otherwise at your mercy as an exploration activity taking 10--30 seconds depending on the creature''s size and how many manacles you apply. A two-legged creature with its legs bound takes a -15-foot circumstance penalty to its Speeds, and a two-handed creature with its wrists bound has to succeed at a DC 5 flat check any time it uses a manipulate action or else that action fails. This DC may be higher depending on how tightly the manacles constrain the hands. A creature bound to a stationary object is immobilized. For creatures with more or fewer limbs, the GM determines what effect manacles have, if any. Freeing a creature from superior manacles require six successes at DC 42.');
|
||||
COMMIT;
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
INSERT INTO gear_traits (gear_id, trait_id) VALUES (81,203); -- Scholarly Journal -> Uncommon
|
||||
INSERT INTO gear_traits (gear_id, trait_id) VALUES (82,203); -- Survey Map -> Uncommon
|
||||
INSERT INTO gear_traits (gear_id, trait_id) VALUES (89,203); -- Scholarly Journal (Compendium) -> Uncommon
|
||||
INSERT INTO gear_traits (gear_id, trait_id) VALUES (94,203); -- Survey Map (Atlas) -> Uncommon
|
||||
COMMIT;
|
||||
@@ -0,0 +1,61 @@
|
||||
:: Delete previous db-file
|
||||
del pf2.db
|
||||
|
||||
:: Loading schema
|
||||
sqlite3 pf2.db < schema/sources.sql
|
||||
sqlite3 pf2.db < schema/alignments.sql
|
||||
sqlite3 pf2.db < schema/skills.sql
|
||||
sqlite3 pf2.db < schema/movements.sql
|
||||
sqlite3 pf2.db < schema/damagetypes.sql
|
||||
sqlite3 pf2.db < schema/conditions.sql
|
||||
sqlite3 pf2.db < schema/backgrounds.sql
|
||||
sqlite3 pf2.db < schema/abilityscores.sql
|
||||
sqlite3 pf2.db < schema/bulks.sql
|
||||
sqlite3 pf2.db < schema/sizes.sql
|
||||
sqlite3 pf2.db < schema/langs.sql
|
||||
sqlite3 pf2.db < schema/traits.sql
|
||||
sqlite3 pf2.db < schema/actions.sql
|
||||
sqlite3 pf2.db < schema/spells.sql
|
||||
sqlite3 pf2.db < schema/frequency.sql
|
||||
sqlite3 pf2.db < schema/requirements.sql
|
||||
sqlite3 pf2.db < schema/triggers.sql
|
||||
sqlite3 pf2.db < schema/feats.sql
|
||||
sqlite3 pf2.db < schema/senses.sql
|
||||
sqlite3 pf2.db < schema/ancestries.sql
|
||||
sqlite3 pf2.db < schema/armor.sql
|
||||
sqlite3 pf2.db < schema/gear.sql
|
||||
sqlite3 pf2.db < schema/weapons.sql
|
||||
sqlite3 pf2.db < schema/ammunition.sql
|
||||
|
||||
:: Loading data
|
||||
sqlite3 pf2.db < data/sources.sql
|
||||
sqlite3 pf2.db < data/alignments.sql
|
||||
sqlite3 pf2.db < data/skills.sql
|
||||
sqlite3 pf2.db < data/movements.sql
|
||||
sqlite3 pf2.db < data/damagetypes.sql
|
||||
sqlite3 pf2.db < data/conditions.sql
|
||||
sqlite3 pf2.db < data/backgrounds.sql
|
||||
sqlite3 pf2.db < data/abilityscores.sql
|
||||
sqlite3 pf2.db < data/bulks.sql
|
||||
sqlite3 pf2.db < data/senses.sql
|
||||
sqlite3 pf2.db < data/sizes.sql
|
||||
sqlite3 pf2.db < data/langs.sql
|
||||
sqlite3 pf2.db < data/traits.sql
|
||||
sqlite3 pf2.db < data/actions.sql
|
||||
sqlite3 pf2.db < data/spells.sql
|
||||
sqlite3 pf2.db < data/frequency.sql
|
||||
sqlite3 pf2.db < data/requirements.sql
|
||||
sqlite3 pf2.db < data/triggers.sql
|
||||
sqlite3 pf2.db < data/feats.sql
|
||||
sqlite3 pf2.db < data/ancestries.sql
|
||||
sqlite3 pf2.db < data/armor.sql
|
||||
sqlite3 pf2.db < data/gear.sql
|
||||
sqlite3 pf2.db < data/heritages.sql
|
||||
sqlite3 pf2.db < data/weapons.sql
|
||||
sqlite3 pf2.db < data/ammunition.sql
|
||||
|
||||
cd data/third_party_json
|
||||
python spells.py
|
||||
cd ../..
|
||||
:: Wait for keypress
|
||||
pause
|
||||
+70
@@ -0,0 +1,70 @@
|
||||
# UNCOMMENT FOR DEBUGGING #!/bin/sh -v
|
||||
rm pf2.db
|
||||
echo 'loading schema'
|
||||
sqlite3 pf2.db < schema/sources.sql
|
||||
sqlite3 pf2.db < schema/alignments.sql
|
||||
sqlite3 pf2.db < schema/skills.sql
|
||||
sqlite3 pf2.db < schema/movements.sql
|
||||
sqlite3 pf2.db < schema/damagetypes.sql
|
||||
sqlite3 pf2.db < schema/conditions.sql
|
||||
sqlite3 pf2.db < schema/backgrounds.sql
|
||||
sqlite3 pf2.db < schema/abilityscores.sql
|
||||
sqlite3 pf2.db < schema/bulks.sql
|
||||
sqlite3 pf2.db < schema/sizes.sql
|
||||
sqlite3 pf2.db < schema/langs.sql
|
||||
sqlite3 pf2.db < schema/traits.sql
|
||||
sqlite3 pf2.db < schema/actions.sql
|
||||
sqlite3 pf2.db < schema/spells.sql
|
||||
sqlite3 pf2.db < schema/frequency.sql
|
||||
sqlite3 pf2.db < schema/requirements.sql
|
||||
sqlite3 pf2.db < schema/triggers.sql
|
||||
sqlite3 pf2.db < schema/feats.sql
|
||||
sqlite3 pf2.db < schema/senses.sql
|
||||
sqlite3 pf2.db < schema/ancestries.sql
|
||||
sqlite3 pf2.db < schema/armor.sql
|
||||
sqlite3 pf2.db < schema/gear.sql
|
||||
sqlite3 pf2.db < schema/weapons.sql
|
||||
sqlite3 pf2.db < schema/ammunition.sql
|
||||
sqlite3 pf2.db < schema/monsters.sql
|
||||
sqlite3 pf2.db < schema/staves.sql
|
||||
echo 'loading data'
|
||||
sqlite3 pf2.db < data/sources.sql
|
||||
sqlite3 pf2.db < data/alignments.sql
|
||||
sqlite3 pf2.db < data/skills.sql
|
||||
sqlite3 pf2.db < data/movements.sql
|
||||
sqlite3 pf2.db < data/damagetypes.sql
|
||||
sqlite3 pf2.db < data/conditions.sql
|
||||
sqlite3 pf2.db < data/backgrounds.sql
|
||||
sqlite3 pf2.db < data/abilityscores.sql
|
||||
sqlite3 pf2.db < data/bulks.sql
|
||||
sqlite3 pf2.db < data/senses.sql
|
||||
sqlite3 pf2.db < data/sizes.sql
|
||||
sqlite3 pf2.db < data/langs.sql
|
||||
sqlite3 pf2.db < data/traits.sql
|
||||
sqlite3 pf2.db < data/actions.sql
|
||||
sqlite3 pf2.db < data/spells.sql
|
||||
sqlite3 pf2.db < data/frequency.sql
|
||||
sqlite3 pf2.db < data/requirements.sql
|
||||
sqlite3 pf2.db < data/triggers.sql
|
||||
sqlite3 pf2.db < data/feats.sql
|
||||
sqlite3 pf2.db < data/ancestries.sql
|
||||
sqlite3 pf2.db < data/armor.sql
|
||||
sqlite3 pf2.db < data/gear.sql
|
||||
sqlite3 pf2.db < data/heritages.sql
|
||||
sqlite3 pf2.db < data/weapons.sql
|
||||
sqlite3 pf2.db < data/ammunition.sql
|
||||
sqlite3 pf2.db < data/monsters.sql
|
||||
# Comment out the following three lines if you don't want to generate the spell data.
|
||||
cd data/third_party_json
|
||||
python3 spells.py
|
||||
cd ../..
|
||||
# Staves need to be added after spells due to Foreign Key constraint
|
||||
sqlite3 pf2.db < data/staves.sql
|
||||
|
||||
# TODO Eventually we will stop relying on the spells.py script and I will have
|
||||
# the actual .sql files for the spell data; I am waiting to see if the
|
||||
# third-party source improves the data in the next few weeks. If not, we'll
|
||||
# "divorce" from that data, dump to .sql, and manually manipulate going
|
||||
# forward.
|
||||
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
|
||||
/* TODO figure out how to model the reaction with heritages */
|
||||
|
||||
/* TODO how to add in vision for Half-elf Heritage? */
|
||||
|
||||
/* TODO maybe make vision trigger off of heritages instead of ancestries? Trying
|
||||
not to repeat the vision data, but might just have to. It's not like it's
|
||||
massive. */
|
||||
|
||||
/* TODO decide on how to represent paragraph breaks. See Issue #18 */
|
||||
|
||||
INSERT INTO heritages
|
||||
(heritage_id,
|
||||
short_name,
|
||||
description,
|
||||
bonus_type,
|
||||
bonus_id)
|
||||
VALUES
|
||||
|
||||
-- Start of Dwarf Heritages
|
||||
(1, 'Ancient-Blooded Dwarf', 'Dwarven heroes of old could shrug off their enemies'' magic, and some of that resistance manifests in you. You gain the Call on Ancient Blood reaction.', 'Reaction', 1),
|
||||
(2, 'Death Warden Dwarf', 'Your ancestors have been tomb guardians for generations, and the power they cultivated to ward off necromancy has passed on to you. If you roll a success on a saving throw against a necromancy effect, you get a critical success instead.', 0, 0),
|
||||
(3, 'Forge Dwarf', 'You have a remarkable adaptation to hot environments from ancestors who inhabited blazing deserts or volcanic chambers beneath the earth. This grants you fire resistance equal to half your level (minimum 1), and you treat environmental heat effects as if they were one step less extreme (incredible heat becomes extreme, extreme heat becomes severe, and so on).', 0, 0),
|
||||
(4, 'Rock Dwarf', 'Your ancestors lived and worked among the great ancient stones of the mountains or the depths of the earth. This makes you solid as a rock when you plant your feet. You gain a +2 circumstance bonus to your Fortitude or Reflex DC against attempts to Shove or Trip you. This bonus also applies to saving throws against spells or effects that attempt to knock you prone.', 0, 0),
|
||||
(5, 'Strong-Blooded Dwarf', 'Your blood runs hearty and strong, and you can shake off toxins. You gain poison resistance equal to half your level (minimum 1), and each of your successful saving throws against a poison affliction reduces its stage by 2, or by 1 for a virulent poison. Each critical success against an ongoing poison reduces its stage by 3, or by 2 for a virulent poison.', 0, 0),
|
||||
|
||||
-- Start of Elf Heritages
|
||||
(100, 'Arctic Elf', 'You dwell deep in the frozen north and have gained incredible resilience against cold environments, granting you cold resistance equal to half your level (minimum 1). You treat environmental cold effects as if they were one step less extreme (incredible cold becomes extreme, extreme cold becomes severe, and so on).', 0, 0),
|
||||
(101, 'Cavern Elf', 'You were born or spent many years in underground tunnels or caverns where light is scarce. You gain darkvision.', 0, 0),
|
||||
(102, 'Seer Elf', 'You have an inborn ability to detect and understand magical phenomena. You can cast the detect magic cantrip as an arcane innate spell at will. A cantrip is heightened to a spell level equal to half your level rounded up. In addition, you gain a +1 circumstance bonus to checks to Identify Magic and to Decipher Writing of a magical nature. These skill actions typically use the Arcana, Nature, Occultism, or Religion skill.', 0, 0),
|
||||
(103, 'Whisper Elf', 'Your ears are finely tuned, able to detect even the slightest whispers of sound. As long as you can hear normally, you can use the Seek action to sense undetected creatures in a 60-foot cone instead of a 30-foot cone. You also gain a +2 circumstance bonus to locate undetected creatures that you could hear within 30 feet with a Seek action.', 0, 0),
|
||||
(104, 'Woodland Elf', 'You’re adapted to life in the forest or the deep jungle, and you know how to climb trees and use foliage to your advantage. When Climbing trees, vines, and other foliage, you move at half your Speed on a success and at full Speed on a critical success (and you move at full Speed on a success if you have Quick Climb). This doesn’t affect you if you’re using a climb Speed.', 0, 0),
|
||||
|
||||
-- Start of Gnome Heritages
|
||||
(200, 'Chameleon Gnome', 'The color of your hair and skin is mutable, possibly due to latent magic. You can slowly change the vibrancy and the exact color, and the coloration can be different across your body, allowing you to create patterns or other colorful designs. It takes a single action for minor localized shifts and up to an hour for dramatic shifts throughout your body. While you’re asleep, the colors shift on their own in tune with your dreams, giving you an unusual coloration each morning. When you’re in an area where your coloration is roughly similar to the environment (for instance, forest green in a forest), you can use the single action to make minor localized shifts designed to help you blend into your surroundings. This grants you a +2 circumstance bonus to Stealth checks until your surroundings shift in coloration or pattern.', 0, 0),
|
||||
(201, 'Fey-Touched Gnome', 'The blood of the fey is so strong within you that you’re truly one of them. You gain the fey trait, in addition to the gnome and humanoid traits. Choose one cantrip from the <%SPELL.LIST%Primal%%>primal spell list. You can cast this spell as a primal innate spell at will. A cantrip is heightened to a spell level equal to half your level rounded up. You can change this cantrip to a different one from the same list once per day by meditating to realign yourself with the First World; this is a 10-minute activity that has the concentrate trait.', 0, 0),
|
||||
(202, 'Sensate Gnome', 'You see all colors as brighter, hear all sounds as richer, and especially smell all scents with incredible detail. You gain a special sense: imprecise scent with a range of 30 feet. This means you can use your sense of smell to determine the exact location of a creature (as explained on page 465). The GM will usually double the range if you’re downwind from the creature or halve the range if you’re upwind.', 0, 0),
|
||||
(204, 'Umbral Gnome', 'Whether from a connection to dark or shadowy fey, from the underground deep gnomes also known as svirfneblin, or another source, you can see in complete darkness. You gain darkvision.', 0, 0),
|
||||
(205, 'Wellspring Gnome', 'Some other source of magic has a greater hold on you than the primal magic of your fey lineage does. This connection might come from an occult plane or an ancient occult song; a deity, celestial, or fiend; magical effluent left behind by a mage war; or ancient rune magic.', 0, 0), -- TODO there was an error with wellspring gnome being ID 204; need to double check other data to make sure it has been accounted for elsewhere
|
||||
|
||||
-- Start of Goblin Heritages
|
||||
(300, 'Charhide Goblin', 'Your ancestors have always had a connection to fire and a thicker skin, which allows you to resist burning. You gain fire resistance equal to half your level (minimum 1). You can also recover from being on fire more easily. Your flat check to remove persistent fire damage is DC 10 instead of DC 15, which is reduced to DC 5 if another creature uses a particularly appropriate action to help.', 0, 0),
|
||||
(301, 'Irongut Goblin', 'You can subsist on food that most folks would consider spoiled. You can keep yourself fed with poor meals in a settlement as long as garbage is readily available, without using the Subsist downtime activity. You can eat and drink things when you are sickened.', 0, 0),
|
||||
(302, 'Razortooth Goblin', 'Your family’s teeth are formidable weapons. You gain a jaws unarmed attack that deals 1d6 piercing damage. Your jaws are in the brawling group and have the finesse and unarmed traits.', 0, 0),
|
||||
(303, 'Snow Goblin', 'You are acclimated to living in frigid lands and have skin ranging from sky blue to navy in color, as well as blue fur. You gain cold resistance equal to half your level (minimum 1). You treat environmental cold effects as if they were one step less extreme (incredible cold becomes extreme, extreme cold becomes severe, and so on).', 0, 0),
|
||||
(304, 'Unbreakable Goblin', 'You’re able to bounce back from injuries easily due to an exceptionally thick skull, cartilaginous bones, or some other mixed blessing. You gain 10 Hit Points from your ancestry instead of 6. When you fall, reduce the falling damage you take as though you had fallen half the distance.', 0, 0),
|
||||
|
||||
-- Start of Halfling Heritages
|
||||
(400, 'Gutsy Halfling', 'Your family line is known for keeping a level head and staving off fear when the chips were down, making them wise leaders and sometimes even heroes. When you roll a success on a saving throw against an emotion effect, you get a critical success instead.', 0, 0),
|
||||
(401, 'Hillock Halfling', 'Accustomed to a calm life in the hills, your people find rest and relaxation especially replenishing, particularly when indulging in creature comforts. When you regain Hit Points overnight, add your level to the Hit Points regained. When anyone uses the Medicine skill to Treat your Wounds, you can eat a snack to add your level to the Hit Points you regain from their treatment.', 0, 0),
|
||||
(402, 'Nomadic Halfling', 'Your ancestors have traveled from place to place for generations, never content to settle down. You gain two additional languages of your choice, chosen from among the common and uncommon languages available to you, and every time you take the ', 0, 0),
|
||||
(403, 'Twilight Halfling', 'Your ancestors performed many secret acts under the concealing cover of dusk, whether for good or ill, and over time they developed the ability to see in twilight beyond even the usual keen sight of halflings. You gain low-light vision.', 0, 0),
|
||||
(404, 'Wildwood Halfling', 'You hail from deep in a jungle or forest, and you’ve learned how to use your small size to wriggle through undergrowth, vines, and other obstacles. You ignore difficult terrain from trees, foliage, and undergrowth.', 0, 0),
|
||||
|
||||
-- Start of Human Heritages
|
||||
(500, 'Half-Elf', 'Either one of your parents was an elf, or one or both were half-elves. You have pointed ears and other telltale signs of elf heritage. You gain the elf trait and low-light vision. In addition, you can select elf, half-elf, and human feats whenever you gain an ancestry feat.', 0, 0),
|
||||
(501, 'Half-Orc', 'One of your parents was an orc, or one or both were half-orcs. You have a green tinge to your skin and other indicators of orc heritage. You gain the orc trait and low-light vision. In addition, you can select orc, half-orc, and human feats whenever you gain an ancestry feat.', 0, 0),
|
||||
(502, 'Skilled Heritage', 'Your ingenuity allows you to train in a wide variety of skills. You become trained in one skill of your choice. At 5th level, you become an expert in the chosen skill.', 0, 0),
|
||||
(503, 'Versatile Heritage', 'Humanity’s versatility and ambition have fueled its ascendance to be the most common ancestry in most nations throughout the world. Select a general feat of your choice for which you meet the prerequisites (as with your ancestry feat, you can select this general feat at any point during character creation).', 0, 0);
|
||||
|
||||
|
||||
INSERT INTO ancestries_heritages (ancestry_id, heritage_id)
|
||||
VALUES
|
||||
-- Dwarf
|
||||
(1, 1),
|
||||
(1, 2),
|
||||
(1, 3),
|
||||
(1, 4),
|
||||
(1, 5),
|
||||
-- Elf
|
||||
(2, 100),
|
||||
(2, 101),
|
||||
(2, 102),
|
||||
(2, 103),
|
||||
(2, 104),
|
||||
-- Gnome
|
||||
(3, 200),
|
||||
(3, 201),
|
||||
(3, 202),
|
||||
-- (3, 203), TODO there was no #203 in Gnomes; need to see what's going on
|
||||
(3, 204),
|
||||
(3, 205),
|
||||
-- Goblin
|
||||
(4, 300),
|
||||
(4, 301),
|
||||
(4, 302),
|
||||
(4, 303),
|
||||
(4, 304),
|
||||
-- Halfling
|
||||
(5, 400),
|
||||
(5, 401),
|
||||
(5, 402),
|
||||
(5, 403),
|
||||
(5, 404),
|
||||
-- Human
|
||||
(6, 500),
|
||||
(6, 501),
|
||||
(6, 502),
|
||||
(6, 503),
|
||||
-- Half-elf and half orc (yes, we know they're technically only a heritage,
|
||||
-- but we link it up to ancestry ids too)
|
||||
(7, 500),
|
||||
(8, 501);
|
||||
@@ -0,0 +1,46 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
|
||||
INSERT INTO langsrarity (rarity_id, rarity_name)
|
||||
VALUES
|
||||
(1, 'Common'),
|
||||
(2, 'Uncommon'),
|
||||
(3, 'Secret');
|
||||
|
||||
|
||||
-- These values are from Tables 2-1, 2-2, and 2-3 on page 65 CRB
|
||||
|
||||
INSERT INTO langs (lang_id, rarity_id, sources_id, sources_pages, lang, speakers)
|
||||
VALUES
|
||||
-- Common languages
|
||||
(1, 1, 1, '65', 'Common', 'Humans, dwarves, elves, halflings, and other common ancestries'),
|
||||
(2, 1, 1, '65', 'Draconic', 'Dragons, reptilian humanoids'),
|
||||
(3, 1, 1, '65', 'Dwarven', 'Dwarves'),
|
||||
(4, 1, 1, '65', 'Elven', 'Elves, half-elves'),
|
||||
(5, 1, 1, '65', 'Gnomish', 'Gnomes'),
|
||||
(6, 1, 1, '65', 'Goblin', 'Goblins, hobgoblins, bugbears'),
|
||||
(7, 1, 1, '65', 'Halfling', 'Halflings'),
|
||||
(8, 1, 1, '65', 'Jotun', 'Giants, ogres, trolls, ettins, cyclopes'),
|
||||
(9, 1, 1, '65', 'Orcish', 'Orcs, half-orcs'),
|
||||
(10, 1,1, '65', 'Sylvan', 'Fey, centaurs, plant creatures'),
|
||||
(11, 1,1, '65', 'Undercommon', 'Drow, duergars, xulgaths'),
|
||||
-- Uncommon languages
|
||||
(100, 2, 1, '65', 'Abyssal', 'Demons'),
|
||||
(101, 2, 1, '65', 'Aklo', 'Deros, evil fey, otherworldly monsters'),
|
||||
(102, 2, 1, '65', 'Aquan', 'Aquatic creatures, water elemental creatures'),
|
||||
(103, 2, 1, '65', 'Auran', 'Air elemental creatures, flying creatures'),
|
||||
(104, 2, 1, '65', 'Celestial', 'Angels'),
|
||||
(105, 2, 1, '65', 'Gnoll', 'Gnolls'),
|
||||
(106, 2, 1, '65', 'Ignan', 'Fire elemental creatures'),
|
||||
(107, 2, 1, '65', 'Infernal', 'Devils'),
|
||||
(108, 2, 1, '65', 'Necril', 'Ghouls, intelligent undead'),
|
||||
(109, 2, 1, '65', 'Shadowtongue', 'Nidalese, Shadow Plane creatures'),
|
||||
(110, 2, 1, '65', 'Terran', 'Earth elemental creatures'),
|
||||
-- Secret languages
|
||||
(200, 3, 1, '65', 'Druidic', 'Druids'),
|
||||
|
||||
-- Bestiary Languages not in CRB
|
||||
(300, 1, 2, '8', 'Utopian', 'Aeons');
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON;
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
INSERT INTO monsterflavortexttypes VALUES(1, 'Monster Category');
|
||||
INSERT INTO monsterflavortexttypes VALUES(2, 'Advice and Rules');
|
||||
INSERT INTO monsterflavortexttypes VALUES(3, 'Related Creatures');
|
||||
INSERT INTO monsterflavortexttypes VALUES(4, 'Additional Lore');
|
||||
INSERT INTO monsterflavortexttypes VALUES(5, 'Treasure and Rewards');
|
||||
INSERT INTO monsterflavortexttypes VALUES(6, 'Locations');
|
||||
COMMIT;
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
INSERT INTO monsterflavortexts VALUES(1, 1, 'Aeon', 'Aeons have always been the caretakers of reality and defenders of the natural order of balance. Each type of aeon takes on some form of duality in its manifestation and works either to shape the multiverse within the aspects of this duality in some way, or to correct imbalances to the perfect order of existence. Aeons can bring weal or woe when they appear in a region, and their machinations can raise a nation, raze it, or restore it from ruin. Their reasons are their own, and they rarely share their motivations with others— they simply create the results they insist through their strange envisioning communication are necessary to maintain the balance of the multiverse.\n\nAs a result of recent shifts in reality, aeons have begun to reassert a presence in the perfect planar city of Axis. To the aeons, this is merely the latest in a recurring cycle, albeit one that mortals have not yet borne witness to. Once regarded as an independent faction, the living machines known as inevitables are now revealed as having been agents of the aeons all along, and while inevitables have their own shared themes and features, they are very much living but constructed manifestations of the aeons’ war against imbalance—particularly with regard to how this war is waged against the forces of chaos.\n\nAeons have a name for this cyclic return, in which they welcome the industrious axiomites back to their fold and bring the inevitables once again under their control: the “Convergence.” At the onset of the Convergence, a council of pleroma aeons appeared in the Eternal City of Axis, where they revealed that axiomites were wayward aeons, split off long ago to pursue the act of creation. With the latest cycle of change it was time for the axiomites and their creations, the inevitables, to rejoin the aeon cause. While most axiomites and inevitables fell in line, realizing perhaps on a fundamental level of reality that what the aeons said was the truth, some refused to heed the call and waited for the wrath of the aeons — but that wrath has yet to come. The dual-natured aeons have responded to those who have declined in confusing ways. With some they treat and even bargain, while a handful of others they have destroyed, and a few have been exterminated by the axiomites and allied inevitables. But most of these quiet insurgents they leave alone, allowing these axiomites to continue to create in peace and the inevitables to continue with their duties. How—or if—this Convergence will end is as little understood as the aeons themselves.');
|
||||
INSERT INTO monsterflavortexts VALUES(2, 4, 'Aeon Divinities', 'Whether the aeons serve an actual divinity, a philosophical concept, or merely a "supreme oneness" is a topic hotly debated by planar scholars. The aeons themselves are silent, referring to the being or concept as the Monad, a "condition of all." Regardless of what the Monad actually is, there certainly exists another category of powerful aeons---the primal inevitables, each a unique demigod with its own powers and goals. Relatively few primal inevitables remain today, for nearly three-quarters of their irreplaceable kind have fallen in the endless battle with the inexorable forces of entropy.');
|
||||
COMMIT;
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
-- ARBITER
|
||||
-- TODO +1 status to all saves versus magic?
|
||||
INSERT INTO monsters VALUES(1, 0, 1, 'Arbiter', 1, 4, 7, 1, 16, 5, 7, 7, 22, 20, NULL, NULL, 40, NULL, 1, 4, 2, 0, 2, 1, 'These spherical inevitables are scouts and diplomats. Found throughout the multiverse, they have traditionally kept watch over on chaos and its agents. With the announcement of the Convergence, many arbiters now serve as go-betweens among the aeon alliance and its mortal associates.');
|
||||
INSERT INTO monsters_monsterflavortexts (monster_id, monsterflavortext_id) VALUES(1, 1);
|
||||
INSERT INTO monsters_monsterflavortexts (monster_id, monsterflavortext_id) VALUES(1, 2);
|
||||
INSERT INTO monsters_senses (monster_id, sense_id) VALUES(1, 1); -- dark vision
|
||||
INSERT INTO monsters_senses (monster_id, sense_id) VALUES(1, 100); -- detect alignment chaotic
|
||||
INSERT INTO monsters_senses (monster_id, sense_id) VALUES(1, 101); -- locate inevitable
|
||||
INSERT INTO monsters_langs (monster_id, lang_id) VALUES(1, 1); -- Common
|
||||
INSERT INTO monsters_langs (monster_id, lang_id) VALUES(1, 104); -- Celestial
|
||||
INSERT INTO monsters_langs (monster_id, lang_id) VALUES(1, 107); -- Infernal
|
||||
INSERT INTO monsters_langs (monster_id, lang_id) VALUES(1, 300); -- Utopian
|
||||
-- TODO immunities
|
||||
-- TODO weaknesses
|
||||
-- TODO resistances
|
||||
-- TODO skills
|
||||
-- TODO actions
|
||||
-- TODO items?
|
||||
COMMIT;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON;
|
||||
|
||||
-- TODO any other movements?
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
INSERT INTO movements VALUES(0, 'Land');
|
||||
INSERT INTO movements VALUES(1, 'Burrow');
|
||||
INSERT INTO movements VALUES(2, 'Climb');
|
||||
INSERT INTO movements VALUES(3, 'Fly');
|
||||
INSERT INTO movements VALUES(4, 'Swim');
|
||||
COMMIT;
|
||||
@@ -0,0 +1,74 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
|
||||
INSERT INTO requirements (
|
||||
requirements_id,
|
||||
requirements_descr
|
||||
)
|
||||
VALUES
|
||||
(1, 'You are holding an infused alchemical bomb you crafted, with a level at least 3 lower than your advanced alchemy level.'),
|
||||
(2, 'You haven’t used this ability since you last Raged.'),
|
||||
(3, 'You are Medium or smaller.'),
|
||||
(4, 'You have a foe grabbed.'),
|
||||
(5, 'Your last action was a successful Strike.'),
|
||||
(6, 'Your last action was a successful Strike, and either you have a hand free or your Strike used a grapple weapon.'),
|
||||
(7, 'You are unarmored or wearing light armor.'),
|
||||
(8, 'You’re under the effect of Come and Get Me.'),
|
||||
(9, 'You haven’t acted yet on your turn.'),
|
||||
(10, 'You are wielding a shield.'),
|
||||
(11, 'Fiendsbane Oath'), -- May be errated to a requirement. Marking it incase to find easier.
|
||||
(12, 'Shining Oath'), -- May be errated to a requirement. Marking it incase to find easier.
|
||||
(13, 'exalt and Vengeful Oath'),
|
||||
(14, 'Dragonslayer Oath'),
|
||||
(15, 'You have a banishment spell prepared.'),
|
||||
(16, 'You have at least 1 available Focus Point.'),
|
||||
(17, 'You are wielding two melee weapons, each in a different hand.'),
|
||||
(18, 'You are wielding a ranged weapon.'),
|
||||
(19, 'You have one hand free, and your target is within reach of that hand.'),
|
||||
(20, 'You are wielding a two-handed melee weapon.'),
|
||||
(21, 'You are wielding only a single one-handed melee weapon and have your other hand or hands free.'),
|
||||
(22, 'You are wielding a melee weapon.'),
|
||||
(23, 'You are wielding a ranged weapon with reload 0.'),
|
||||
(24, 'You are wielding a one-handed melee weapon and have a free hand.'),
|
||||
(25, 'You are flanked by at least two enemies.'),
|
||||
(26, 'You are wielding two melee weapons, one in each hand.'),
|
||||
(27, 'You are wielding a single one-handed melee weapon and have your other hand or hands free.'),
|
||||
(28, 'You are wielding a melee weapon that deals piercing damage.'),
|
||||
(29, 'A frightened creature is in your melee reach.'),
|
||||
(30, 'You are benefiting from Dueling Parry.'),
|
||||
(31, 'You are wielding a two-handed melee weapon and your target is within your reach.'),
|
||||
(32, 'You have a shield raised.'),
|
||||
(33, 'You are wielding a melee weapon in two hands.'),
|
||||
(34, 'You are adjacent to an enemy.'),
|
||||
(35, 'You meet the requirements to use an action with the press trait.'),
|
||||
(36, 'You are wielding two weapons, each in a different hand.'),
|
||||
(37, 'You are wielding a ranged weapon with the volley trait and reload 0.'),
|
||||
(38, 'You are unarmored.'),
|
||||
(39, 'You are unarmored and touching the ground.'),
|
||||
(40, 'You’re aware of the attack, are not flat-footed against it, and have a hand free.'),
|
||||
(41, 'You are in Crrane Stance.'),
|
||||
(42, 'You are in Dragon Stance.'),
|
||||
(43, 'You are in Mountain Stance.'),
|
||||
(44, 'You are in Tiger Stance.'),
|
||||
(45, 'You have a creature grabbed or restrained.'),
|
||||
(46, 'You are in Wolf Stance.'),
|
||||
(47, 'You are in Ironblood Stance.'),
|
||||
(48, 'You are in Tangled Forest Stance.'),
|
||||
(49, 'You are in Wild Winds Stance.'),
|
||||
(50, 'This is the first action of your turn.'),
|
||||
(51, 'You are not armored or fatigued.'),
|
||||
(52, 'You are benefiting from Twin Parry.'),
|
||||
(53, 'You are wielding a loaded ranged weapon with reload 1 or more, and you have not reloaded your weapon since your last turn.'),
|
||||
(54, 'You are not encumbered.'),
|
||||
(55, 'You are wielding a piercing or slashing weapon and have a free hand.'),
|
||||
(56, 'You have a free hand.'),
|
||||
(57, 'Your last action was a melee Strike that dealt sneak attack damage to a flat-footed target.'),
|
||||
(58, 'You are currently affected by a mental effect that you gained by failing, but not critically failing, a saving throw.'),
|
||||
(59, 'You are adjacent to a floor or vertical wall.'),
|
||||
(60, 'When you make your daily preparations, you must specify a trigger for this reaction using the same restrictions as the triggers for the Ready action. You also choose a single spell from the arcane, divine, occult, or primal list of 4th level or lower. The spell can’t have a cost, nor can its casting time be more than 10 minutes. The spell must be able to target a single creature, and you must be a valid target for it.'),
|
||||
(61, 'You have Perfect Distraction ready to use.'),
|
||||
(62, 'You have an unexpended spell slot you could use to cast the triggered spell.'),
|
||||
(63, 'Your most recent action was to cast a non-cantrip spell.'),
|
||||
(64, 'The last action you used was Drain Bonded Item.');
|
||||
@@ -0,0 +1,53 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
|
||||
/* TODO add in any different vision types from Bestiary / Monsters */
|
||||
|
||||
/* TODO smoke vision is from young-red dragon */
|
||||
|
||||
INSERT INTO senses (senses_id,
|
||||
sources_id,
|
||||
sources_pages,
|
||||
short_name,
|
||||
description)
|
||||
VALUES
|
||||
(1, 1, '465', 'Darkvision', 'A creature with darkvision or greater darkvision can see perfectly well in areas of darkness and dim light, though such vision is in black and white only. Some forms of magical darkness, such as a 4th-level *darkness* spell, block normal darkvision. A creature with greater darkvision, however, can see through even these forms of magical darkness.'),
|
||||
(2, 1, '465', 'Low-Light Vision', 'You can see in dim light as though it were bright light, and you ignore the concealed condition due to dim light.'),
|
||||
(3, 1, '51', 'Keen Eyes', 'Your eyes are sharp, allowing you to make out small details about concealed or even invisible creatures that others might miss. You gain a +2 circumstance bonus when using the Seek action to find hidden or undetected creatures within 30 feet of you. When you target an opponent that is concealed from you or hidden from you, reduce the DC of the flat check to 3 for a concealed target or 9 for a hidden one.'),
|
||||
(4, 1, 'TODO', 'None', 'No special vision.'),
|
||||
(5, 1, 'TODO', 'Smoke Vision', 'You can see perfectly in smoky conditions'),
|
||||
(6, 2, '342', 'All-Around Vision','This monster can see in all directions simultaneously, and therefore can’t be flanked.'),
|
||||
(7, 1, 'TODO', 'Snow Vision','This creature can see perfectly well in snowy conditions. this creature does not suffer any penalties to Perception checks while in snow.'),
|
||||
(8, 1, 'TODO', 'Manifold Vision','TODO (can not find any definition ref:https://2e.aonprd.com/Monsters.aspx?ID=249)'),
|
||||
(9, 1, '465', 'Greater Darkvision','A creature with darkvision or greater darkvision can see perfectly well in areas of darkness and dim light, though such vision is in black and white only. Some forms of magical darkness, such as a 4th-level *darkness* spell, block normal darkvision. A creature with greater darkvision, however, can see through even these forms of magical darkness.'),
|
||||
(10, 1, '465', 'Scent','TODO Bestiary 1 pg 344'),
|
||||
(11, 1, 'TODO', 'Echolocation','You can perceive the world by creating high-pitched noises and listening to their echoes. This gives you blindsight to a range of 40 feet.'),
|
||||
(12, 1, '465', 'Tremorsense','TODO CRB 465 or Bestiary 344'),
|
||||
(13, 1, 'TODO', 'Lightblindness','Creatures with light blindness are blinded for 1 round if exposed to bright light, such as sunlight or the Daylight spell. Such creatures are dazzled as long as they remain in areas of bright light.'),
|
||||
(14, 1, 'TODO', 'Thoughtsense','You automatically detect and locate conscious creatures within 60 feet, as if you possessed the blindsight ability.'),
|
||||
(15, 1, 'TODO', 'Bloodscent','This creature has the scent universal monster ability, but only for purposes of detecting and pinpointing injured creatures (below full hit points). Creatures below half their full hit points or suffering bleed damage are considered strong scents for this ability.'),
|
||||
(16, 1, 'TODO', 'Lifesense','TODO Bestiary 343'),
|
||||
(17, 1, 'TODO', 'Plaguesense','TODO find definiton for plaguesense. Senses sickness??'),
|
||||
(18, 1, 'TODO', 'Crystalsense','This creature can sense the presence of any crystals or gems within 30 feet as if using the scent ability.'),
|
||||
(19, 1, 'TODO', 'Fogvision','This creature can see perfectly in foggy conditions'),
|
||||
(20, 1, 'TODO', 'Wavesense','This sense allows a monster to feel vibrations caused by movement through a liquid. It’s an imprecise sense with a limited range (listed in the ability). Wavesense functions only if monster and the subject are in the same body of liquid, and only if the subject is moving through the liquid.'), -- this looks correct per bestiary pg 344
|
||||
(21, 1, 'TODO', 'Sporesight','TODO'),
|
||||
(22, 1, 'TODO', 'Windsense','This creature senses vibrations in the air.'),
|
||||
(23, 1, 'TODO', 'Motionsense','TODO'),
|
||||
(24, 1, 'TODO', 'Metalscent','This creature has the scent universal monster ability but it can smell only metals using it.'),
|
||||
(25, 1, 'TODO', 'Hungersense','Hungersense allows the gimmerling to sense creatures that require food to live.'),
|
||||
(26, 1, 'TODO', 'Entropysense','A voidworm can anticipate the most likely presence of a creature through a supernatural insight into chaotic probabilities and chance. This grants it the ability to sense creatures within the listed range. A creature under the effects of nondetection or that is otherwise shielded from divinations and predictions cannot be noticed via entropy sense.'),
|
||||
(27, 1, 'TODO', 'Websense','TODO'),
|
||||
(28, 1, 'TODO', 'Heatsight','Heatsight is a precise sense that sees heat signatures.'),
|
||||
(29, 1, 'TODO', 'Sinscent','This creature has scent against creatures whose nature reflects it''s sin. For example, wrathful sinspawn can scent creatures using rage effects. The GM should adjudicate what creatures a particular sinspawn can scent.'),
|
||||
|
||||
-- Minor senses from Bestiary; start at ID 100
|
||||
(100, 2, '8', 'Detect Alignment (chaotic only)', NULL),
|
||||
(101, 2, '8', 'Locate Inevitable', NULL);
|
||||
|
||||
|
||||
;
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
|
||||
INSERT INTO sizes (size_id, short_name, space_in_ft, reach_tall_ft, reach_long_ft) VALUES
|
||||
(1,'Tiny',4,0,0),
|
||||
(2,'Small',5,5,5),
|
||||
(3,'Medium',5,5,5),
|
||||
(4,'Large',10,10,5),
|
||||
(5,'Huge',15,15,10),
|
||||
(6,'Gargantuan',20,20,15);
|
||||
@@ -0,0 +1,25 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON;
|
||||
|
||||
-- TODO Need to enter descriptions
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
INSERT INTO skills VALUES(1, 1, '240', 'Acrobatics', 'TODO');
|
||||
INSERT INTO skills VALUES(2, 1, '241', 'Arcana', 'TODO');
|
||||
INSERT INTO skills VALUES(3, 1, '241', 'Athletics', 'TODO');
|
||||
INSERT INTO skills VALUES(4, 1, '243', 'Crafting', 'TODO');
|
||||
INSERT INTO skills VALUES(5, 1, '245', 'Deception', 'TODO');
|
||||
INSERT INTO skills VALUES(6, 1, '246', 'Diplomacy', 'TODO');
|
||||
INSERT INTO skills VALUES(7, 1, '247', 'Intimidation', 'TODO');
|
||||
INSERT INTO skills VALUES(8, 1, '247', 'Lore', 'TODO'); -- TODO special case
|
||||
INSERT INTO skills VALUES(9, 1, '248', 'Medicine', 'TODO');
|
||||
INSERT INTO skills VALUES(10, 1, '249', 'Nature', 'TODO');
|
||||
INSERT INTO skills VALUES(11, 1, '249', 'Occultism', 'TODO');
|
||||
INSERT INTO skills VALUES(12, 1, '250', 'Performance', 'TODO');
|
||||
INSERT INTO skills VALUES(13, 1, '250', 'Religion', 'TODO');
|
||||
INSERT INTO skills VALUES(14, 1, '250', 'Society', 'TODO');
|
||||
INSERT INTO skills VALUES(15, 1, '251', 'Stealth', 'TODO');
|
||||
INSERT INTO skills VALUES(16, 1, '252', 'Survival', 'TODO');
|
||||
INSERT INTO skills VALUES(17, 1, '253', 'Thievery', 'TODO');
|
||||
COMMIT;
|
||||
@@ -0,0 +1,68 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
|
||||
/* TODO Decide on how to format the copyright block text... perhaps with Markdown? */
|
||||
|
||||
|
||||
INSERT INTO sources (sources_id,
|
||||
isbn,
|
||||
pzocode,
|
||||
sources_full_name,
|
||||
sources_short_name,
|
||||
sources_abbrev,
|
||||
sources_descr,
|
||||
release_date,
|
||||
first_party,
|
||||
ogl_copyright_block)
|
||||
VALUES
|
||||
-- Core Rulebook
|
||||
(1,
|
||||
'978-1-64078-168-9',
|
||||
'PZO2101',
|
||||
'Pathfinder Core Rulebook (Second Edition)',
|
||||
'Core Rulebook',
|
||||
'CRB',
|
||||
'Volume containing the rules core rules for players and Game Masters',
|
||||
'2019-08-01',
|
||||
1,
|
||||
'Open Game License v.1.0a (c) 2000, Wizards of the Coast, Inc.; System Reference Document (c) 2000, Wizards of the Coast, Inc.; Authors: Jonathan Tweet, Monte Cook, and Skip Williams, based on material by E. Gary Gygax and Dave Arneson. Pathfinder Core Rulebook (Second Edition) (c) 2019, Paizo, Inc.; Designers: Logan Bonner, Jason Bulmahn, Stephen Radney-MacFarland, and Mark Seifter.'),
|
||||
-- Bestiary 1
|
||||
(2,
|
||||
'978-1-64078-170-2',
|
||||
'PZO2102',
|
||||
'Pathfinder Bestiary (Second Edition)',
|
||||
'Bestiary',
|
||||
'BST1',
|
||||
'TODO',
|
||||
'2019-08-01',
|
||||
1,
|
||||
'Daemon, Guardian from the Tome of Horrors Complete © 2011, Necromancer Games, Inc., published and distributed by Frog God Games; Author: Scott Greene, based on original material by Ian McDowall. Dark Creeper from the Tome of Horrors Complete © 2011, Necromancer Games, Inc., published and distributed by Frog God Games; Author: Scott Greene, based on original material by Rik Shepard. Dark Stalker from the Tome of Horrors Complete © 2011, Necromancer Games, Inc., published and distributed by Frog God Games; Author: Scott Greene, based on original material by Simon Muth. Dragon, Faerie from the Tome of Horrors Complete © 2011, Necromancer Games, Inc., published and distributed by Frog God Games; Author: Scott Greene, based on original material by Brian Jaeger and Gary Gygax. Genie, Marid from the Tome of Horrors Complete © 2011, Necromancer Games, Inc., published and distributed by Frog God Games; Author: Scott Greene, based on original material by Gary Gygax. Mite from the Tome of Horrors Complete © 2011, Necromancer Games, Inc., published and distributed by Frog God Games; Author: Scott Greene, based on original material by Ian Livingstone and Mark Barnes. Pathfinder Bestiary (Second Edition) © 2019, Paizo Inc.; Authors: Alexander Augunas, Logan Bonner, Jason Bulmahn, John Compton, Paris Crenshaw, Adam Daigle, Eleanor Ferron, Leo Glass, Thurston Hillman, James Jacobs, Jason Keeley, Lyz Liddell, Ron Lundeen, Robert G. McCreary, Tim Nightengale, Stephen Radney-MacFarland, Alex Riggs, David N. Ross, Michael Sayre, Mark Seifter, Chris S. Sims, Jeffrey Swank, Jason Tondro, Tonya Woldridge, and Linda Zayas-Palmer.'),
|
||||
-- The Fall of Plaguestone
|
||||
(3,
|
||||
'978-1-64078-174-0',
|
||||
'PZO9555',
|
||||
'Pathfinder Adventure: The Fall of Plaguestone',
|
||||
'The Fall of Plaguestone',
|
||||
'TFoP',
|
||||
'TODO',
|
||||
'2019-08-01',
|
||||
1,
|
||||
'Pathfinder Adventure: The Fall of Plaguestone © 2019, Paizo Inc.; Author: Jason Bulmahn.'),
|
||||
-- Core Rulebook
|
||||
(4,
|
||||
NULL,
|
||||
'PZO9000-25E',
|
||||
'Age of Ashes Player''s Guide',
|
||||
'Age of Ashes Player''s Guide',
|
||||
'AoAPG',
|
||||
'Player''s Guide for the Age of Ashes Adventure Path',
|
||||
'2019',
|
||||
1,
|
||||
'Age of Ashes Player''s Guide © 2019, Paizo Inc.; Authors: James Jacobs with Amanda Hamon.');
|
||||
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
INSERT INTO sourceentries VALUES(1, 1, 8, 9);
|
||||
COMMIT;
|
||||
@@ -0,0 +1,49 @@
|
||||
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
|
||||
INSERT INTO spelltypes (
|
||||
spelltypes_id,
|
||||
name
|
||||
)
|
||||
VALUES
|
||||
(1, 'Spell'),
|
||||
(2, 'Cantrip'),
|
||||
(3, 'Focus'),
|
||||
(4, 'Ritual');
|
||||
|
||||
INSERT INTO spellcomponents (
|
||||
spellcomponents_id,
|
||||
name)
|
||||
VALUES
|
||||
(1, 'Material'),
|
||||
(2, 'Verbal'),
|
||||
(3, 'Somatic'),
|
||||
(4, 'Focus');
|
||||
|
||||
INSERT INTO spelltraditions (
|
||||
spelltraditions_id,
|
||||
name
|
||||
)
|
||||
VALUES
|
||||
(1, 'Arcane'),
|
||||
(2, 'Divine'),
|
||||
(3, 'Occult'),
|
||||
(4, 'Primal');
|
||||
|
||||
INSERT INTO spellschools (
|
||||
spellschools_id,
|
||||
sources_id,
|
||||
sources_pages,
|
||||
name,
|
||||
descr
|
||||
)
|
||||
VALUES
|
||||
(1, 1, '297','Abjuration', 'Abjurations protect and ward. They create barriers that keep out attacks, effects, or even certain types of creatures. They also create effects that harm trespassers or banish interlopers.'),
|
||||
(2, 1, '297','Conjuration', 'Conjuration spells transport creatures via teleportation, create an object, or bring a creature or object from somewhere else (typically from another plane) to follow your commands.\n\nConjuration spells often have the teleportation trait, and the creatures summoned by conjuration spells have the summoned trait.'),
|
||||
(3, 1, '297','Divination', 'Divinations allow you to learn the secrets of the present, past, and future. They bestow good fortune, grant you the ability to perceive remote locations, and reveal secret knowledge.\n\nDivinations often have the detection trait if they find something, the prediction trait if they grant you insight about what might happen in the future, the revelation trait if they show things as they truly are, or the scrying trait if they let you perceive another location.'),
|
||||
(4, 1, '297','Enchantment', 'Enchantments affect the minds and emotions of other creatures—sometimes to influence and control them, and other times to bolster them to greater heights of courage. Enchantment spells almost always have the mental trait, and many have the emotion trait or the fear trait.'),
|
||||
(5, 1, '298','Evocation', 'Evocations capture magical energy and then shape it to harm your foes or protect your allies. Evocation spells often have a trait that comes from the type of damage they deal, such as acid, cold, fire, force, or sonic.'),
|
||||
(6, 1, '298','Illusion', 'Illusions create the semblance of something real, fooling the eyes, ears, and other senses. They almost always have the mental trait, and depending on how the illusion is perceived, they might also have the auditory or visual trait.'),
|
||||
(7, 1, '298','Necromancy', 'Necromancy spells harness the power of life and death. They can sap life essence or sustain creatures with life-saving healing. Necromancy spells often have the curse, death, healing, negative, or positive traits.'),
|
||||
(8, 1, '298','Transmutation', 'Transmutation spells make alterations to or transform the physical form of a creature or object. The morph and polymorph traits appear primarily in transmutation spells.');
|
||||
@@ -0,0 +1,779 @@
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
|
||||
------------------
|
||||
-- Staff insert --
|
||||
------------------
|
||||
INSERT INTO staff (
|
||||
staff_id
|
||||
,"name"
|
||||
,"level"
|
||||
,price
|
||||
,bulk
|
||||
,usage
|
||||
,item_bonus
|
||||
,craft_requirements
|
||||
,source_id
|
||||
,source_pages
|
||||
,"description"
|
||||
)
|
||||
VALUES
|
||||
-- Animal Staff --
|
||||
(1, 'Animal Staff', 4, 90, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 592, 'This staff is topped with carved animal and monster heads. While wielding the staff, you gain a +2 circumstance bonus to Nature checks to identify animals.')
|
||||
,(2, 'Animal Staff (Greater)', 8, 460, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 592, 'This staff is topped with carved animal and monster heads. While wielding the staff, you gain a +2 circumstance bonus to Nature checks to identify animals.')
|
||||
,(3, 'Animal Staff (Major)', 12, 900, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 592, 'This staff is topped with carved animal and monster heads. While wielding the staff, you gain a +2 circumstance bonus to Nature checks to identify animals.')
|
||||
-- Mentalist's Staff --
|
||||
,(4, 'Mentalist''s Staff', 4, 230, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 593, 'This polished wooden staff bears a swirling motif reminiscent of the folds of a brain. While wielding the staff, you gain a +2 circumstance bonus to checks to identify mental magic.')
|
||||
,(5, 'Mentalist''s Staff (Greater)', 8, 900, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 593, 'This polished wooden staff bears a swirling motif reminiscent of the folds of a brain. While wielding the staff, you gain a +2 circumstance bonus to checks to identify mental magic.')
|
||||
,(6, 'Mentalist''s Staff (Major)', 12, 4000, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 593, 'This polished wooden staff bears a swirling motif reminiscent of the folds of a brain. While wielding the staff, you gain a +2 circumstance bonus to checks to identify mental magic.')
|
||||
-- Staff of Abjuration --
|
||||
,(7, 'Staff of Abjuration', 6, 230, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 594, 'This intricately carved wooden staff is warm to the touch and thrums with inner energy. While wielding the staff, you gain a +2 circumstance bonus to checks to identify abjuration magic.')
|
||||
,(8, 'Staff of Abjuration (Greater)', 10, 900, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 594, 'This intricately carved wooden staff is warm to the touch and thrums with inner energy. While wielding the staff, you gain a +2 circumstance bonus to checks to identify abjuration magic.')
|
||||
,(9, 'Staff of Abjuration (Major)', 14, 4000, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 594, 'This intricately carved wooden staff is warm to the touch and thrums with inner energy. While wielding the staff, you gain a +2 circumstance bonus to checks to identify abjuration magic.')
|
||||
-- Staff of Conjuration --
|
||||
,(10, 'Staff of Conjuration', 6, 230, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 594, 'This ash staff is decorated with animals; wielding it, you gain a +2 circumstance bonus to checks to identify conjuration magic.')
|
||||
,(11, 'Staff of Conjuration (Greater)', 10, 900, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 594, 'This ash staff is decorated with animals; wielding it, you gain a +2 circumstance bonus to checks to identify conjuration magic.')
|
||||
,(12, 'Staff of Conjuration (Major)', 14, 4000, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 594, 'This ash staff is decorated with animals; wielding it, you gain a +2 circumstance bonus to checks to identify conjuration magic.')
|
||||
-- Staff of Divination --
|
||||
,(13, 'Staff of Divination', 6, 230, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 594, 'Semiprecious gemstones emerge, seemingly at random, from the surface of this gnarled wooden staff. While wielding it, you gain a +2 circumstance bonus to checks to identify divination magic.')
|
||||
,(14, 'Staff of Divination (Greater)', 10, 900, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 594, 'Semiprecious gemstones emerge, seemingly at random, from the surface of this gnarled wooden staff. While wielding it, you gain a +2 circumstance bonus to checks to identify divination magic.')
|
||||
,(15, 'Staff of Divination (Major)', 14, 4000, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 594, 'Semiprecious gemstones emerge, seemingly at random, from the surface of this gnarled wooden staff. While wielding it, you gain a +2 circumstance bonus to checks to identify divination magic.')
|
||||
-- Staff of Enchantment --
|
||||
,(16, 'Staff of Enchantment', 6, 230, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 594, 'A mesmerizing gemstone caps the head of this handsomely crafted wooden staff. While wielding the staff, you gain a +2 circumstance bonus to checks to identify enchantment magic.')
|
||||
,(17, 'Staff of Enchantment (Greater)', 10, 900, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 594, 'A mesmerizing gemstone caps the head of this handsomely crafted wooden staff. While wielding the staff, you gain a +2 circumstance bonus to checks to identify enchantment magic.')
|
||||
,(18, 'Staff of Enchantment (Major)', 14, 4000, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 594, 'A mesmerizing gemstone caps the head of this handsomely crafted wooden staff. While wielding the staff, you gain a +2 circumstance bonus to checks to identify enchantment magic.')
|
||||
-- Staff of Evocation --
|
||||
,(19, 'Staff of Evocation', 6, 230, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 594, 'This staff is tapered at the base and carved into a gem-studded twist at the top. While wielding the staff, you gain a +2 circumstance bonus to checks to identify evocation magic.')
|
||||
,(20, 'Staff of Evocation (Greater)', 10, 900, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 594, 'This staff is tapered at the base and carved into a gem-studded twist at the top. While wielding the staff, you gain a +2 circumstance bonus to checks to identify evocation magic.')
|
||||
,(21, 'Staff of Evocation (Major)', 14, 4000, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 594, 'This staff is tapered at the base and carved into a gem-studded twist at the top. While wielding the staff, you gain a +2 circumstance bonus to checks to identify evocation magic.')
|
||||
-- Staff of Fire --
|
||||
,(22, 'Staff of Fire', 3, 60, 1, 'held in one hand', NULL, 'Supply one casting of all listed levels of all listed spells.', 1, 595, 'This staff resembles a blackened and burned length of ashen wood. It smells faintly of soot and glows as if lit by embers. You can use an Interact action to touch the tip of this staff to a torch, tinder, or a flammable substance to ignite a flame.')
|
||||
,(23, 'Staff of Fire (Greater)', 8, 450, 1, 'held in one hand', NULL, 'Supply one casting of all listed levels of all listed spells.', 1, 595, 'This staff resembles a blackened and burned length of ashen wood. It smells faintly of soot and glows as if lit by embers. You can use an Interact action to touch the tip of this staff to a torch, tinder, or a flammable substance to ignite a flame.')
|
||||
,(24, 'Staff of Fire (Major)', 12, 1800, 1, 'held in one hand', NULL, 'Supply one casting of all listed levels of all listed spells.', 1, 595, 'This staff resembles a blackened and burned length of ashen wood. It smells faintly of soot and glows as if lit by embers. You can use an Interact action to touch the tip of this staff to a torch, tinder, or a flammable substance to ignite a flame.')
|
||||
-- Staff of Healing --
|
||||
,(25, 'Staff of Healing', 4, 90, 1, 'held in one hand', 1, 'Supply one casting of all listed levels of all listed spells.', 1, 595, 'Made of smooth, white wood, this staff is capped at each end with a golden cross adorned with a multitude of ruby cabochons. A staff of healing grants an item bonus to the Hit Points you restore anytime you cast the heal spell using your own spell slots or using charges from the staff.')
|
||||
,(26, 'Staff of Healing (Greater)', 8, 470, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 595, 'Made of smooth, white wood, this staff is capped at each end with a golden cross adorned with a multitude of ruby cabochons. A staff of healing grants an item bonus to the Hit Points you restore anytime you cast the heal spell using your own spell slots or using charges from the staff.')
|
||||
,(27, 'Staff of Healing (Major)', 12, 1800, 1, 'held in one hand', 3, 'Supply one casting of all listed levels of all listed spells.', 1, 595, 'Made of smooth, white wood, this staff is capped at each end with a golden cross adorned with a multitude of ruby cabochons. A staff of healing grants an item bonus to the Hit Points you restore anytime you cast the heal spell using your own spell slots or using charges from the staff.')
|
||||
,(28, 'Staff of Healing (True)', 16, 9200, 1, 'held in one hand', 4, 'Supply one casting of all listed levels of all listed spells.', 1, 595, 'Made of smooth, white wood, this staff is capped at each end with a golden cross adorned with a multitude of ruby cabochons. A staff of healing grants an item bonus to the Hit Points you restore anytime you cast the heal spell using your own spell slots or using charges from the staff.')
|
||||
-- Staff of Illumination --
|
||||
,(29, 'Staff of Illumination', 18, 425, 1, 'held in one hand', NULL, 'Supply one casting of all listed levels of all listed spells.', 1, 594, 'This simple iron staff is capped with a faceted, clear gem.')
|
||||
-- Staff of Illusion --
|
||||
,(30, 'Staff of Illusion', 6, 230, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 595, 'This ornately designed metal staff shines with precious inlays of gold. When you Cast a Spell from the staff, the illusory image of something you desire flashes across its surface. While wielding the staff, you gain a +2 circumstance bonus to checks to identify illusion magic.')
|
||||
,(31, 'Staff of Illusion (Greater)', 10, 900, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 595, 'This ornately designed metal staff shines with precious inlays of gold. When you Cast a Spell from the staff, the illusory image of something you desire flashes across its surface. While wielding the staff, you gain a +2 circumstance bonus to checks to identify illusion magic.')
|
||||
,(32, 'Staff of Illusion (Major)', 14, 4000, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 595, 'This ornately designed metal staff shines with precious inlays of gold. When you Cast a Spell from the staff, the illusory image of something you desire flashes across its surface. While wielding the staff, you gain a +2 circumstance bonus to checks to identify illusion magic.')
|
||||
-- Staff of Necromancy --
|
||||
,(33, 'Staff of Necromancy', 6, 230, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 595, 'This twisted and grim-looking staff is adorned with hideous skull and bone motifs. While wielding the staff, you gain a +2 circumstance bonus to checks to identify necromancy magic.')
|
||||
,(34, 'Staff of Necromancy (Greater)', 10, 900, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 595, 'This twisted and grim-looking staff is adorned with hideous skull and bone motifs. While wielding the staff, you gain a +2 circumstance bonus to checks to identify necromancy magic.')
|
||||
,(35, 'Staff of Necromancy (Major)', 14, 4000, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 595, 'This twisted and grim-looking staff is adorned with hideous skull and bone motifs. While wielding the staff, you gain a +2 circumstance bonus to checks to identify necromancy magic.')
|
||||
-- Staff of Power --
|
||||
,(36, 'Staff of Power', 16, 10000, 1, 'held in one hand', NULL, 'Supply one casting of all listed levels of all listed spells.', 1, 595, 'This staff of magically hardened wood is topped with a silver sculpture depicting magical runic symbols. When used as a weapon, a staff of power is a +2 greater striking staff.\n\nVoluntarily destroying a staff of power unleashes an incredible blast of energy. When wielding the staff, you can Interact to break it. This releases a 30-foot-burst magical explosion centered on the staff. This deals 2d8 force damage per charge remaining in the staff (DC 40 basic Reflex save). You automatically critically fail your save. A creature reduced to 0 Hit Points by this damage dies instantly; this is a death effect.')
|
||||
-- Staff of the Magi --
|
||||
,(37, 'Staff of the Magi', 20, 90000, 1, 'held in one hand', NULL, 'Supply one casting of all listed levels of all listed spells.', 1, 595, 'Sigils and runes of ancient and powerful magic cover the iron cladding on this long wooden staff. A staff of the magi is a +3 major striking staff, and when wielding it you gain a +1 circumstance bonus to saving throws against spells.\n\nVoluntarily destroying a staff of the magi unleashes a truly devastating wave of arcane energy that surges out, dissipating with distance. When wielding the staff, you can break it using an Interact action. This releases a 30-foot‑burst magical explosion centered on the staff. This deals 2d10 force damage per charge remaining in the staff (DC 40 basic Reflex save), You automatically critically fail your save. The explosion continues to echo beyond the initial blast zone, dealing half as much damage to creatures beyond 30 feet but within a 60-foot burst. A creature reduced to 0 Hit Points by this damage dies instantly; this is a death effect.')
|
||||
-- Staff of Transmutation --
|
||||
,(38, 'Staff of Transmutation', 6, 230, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 595, 'A glass orb atop this metal staff contains fine, undulating sand. While wielding the staff, you gain a +2 circumstance bonus to checks to identify transmutation magic.')
|
||||
,(39, 'Staff of Transmutation (Greater)', 10, 900, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 595, 'A glass orb atop this metal staff contains fine, undulating sand. While wielding the staff, you gain a +2 circumstance bonus to checks to identify transmutation magic.')
|
||||
,(40, 'Staff of Transmutation (Major)', 14, 4000, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 595, 'A glass orb atop this metal staff contains fine, undulating sand. While wielding the staff, you gain a +2 circumstance bonus to checks to identify transmutation magic.')
|
||||
-- Verdant Staff --
|
||||
,(41, 'Verdant Staff', 6, 230, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 595, 'This oak branch grows leaves in spring that change color in autumn and shed in winter. While wielding it, you gain a +2 circumstance bonus to Nature checks to identify plants.')
|
||||
,(42, 'Verdant Staff (Greater)', 10, 900, 1, 'held in one hand', 2, 'Supply one casting of all listed levels of all listed spells.', 1, 595, 'This oak branch grows leaves in spring that change color in autumn and shed in winter. While wielding it, you gain a +2 circumstance bonus to Nature checks to identify plants.')
|
||||
;
|
||||
|
||||
------------------------------
|
||||
-- staff activations insert --
|
||||
------------------------------
|
||||
INSERT INTO staffactivations (
|
||||
staffactivations_id,
|
||||
"activation",
|
||||
effect
|
||||
)
|
||||
VALUES
|
||||
-- Most staves --
|
||||
(1, 'Cast a Spell', 'You expend a number of charges from the staff to cast a spell from its list.')
|
||||
-- Staff of Illumination --
|
||||
,(2, 'Interact', 'The gem at the top of the staff glows as a torch, shedding bright light in a 20-foot radius (and dim light to the next 20 feet) for 10 minutes.')
|
||||
-- Staff of Power --
|
||||
,(3, 'Interact', 'This releases a 30-foot-burst magical explosion centered on the staff. This deals 2d8 force damage per charge remaining in the staff (DC 40 basic Reflex save). You automatically critically fail your save. A creature reduced to 0 Hit Points by this damage dies instantly; this is a death effect.')
|
||||
-- Staff of the Magi --
|
||||
,(4, 'Interact', 'This releases a 30-foot‑burst magical explosion centered on the staff. This deals 2d10 force damage per charge remaining in the staff (DC 40 basic Reflex save), You automatically critically fail your save. The explosion continues to echo beyond the initial blast zone, dealing half as much damage to creatures beyond 30 feet but within a 60-foot burst. A creature reduced to 0 Hit Points by this damage dies instantly; this is a death effect.')
|
||||
;
|
||||
|
||||
INSERT INTO staff_staffactivations (
|
||||
id,
|
||||
staff_id,
|
||||
staffactivations_id
|
||||
)
|
||||
VALUES
|
||||
-- Animal Staff --
|
||||
(1, 1, 1)
|
||||
,(2, 2, 1)
|
||||
,(3, 3, 1)
|
||||
-- Mentalist's Staff --
|
||||
,(4, 4, 1)
|
||||
,(5, 5, 1)
|
||||
,(6, 6, 1)
|
||||
-- Staff of Abjuration --
|
||||
,(7, 7, 1)
|
||||
,(8, 8, 1)
|
||||
,(9, 9, 1)
|
||||
-- Staff of Conjuration --
|
||||
,(10, 10, 1)
|
||||
,(11, 11, 1)
|
||||
,(12, 12, 1)
|
||||
-- Staff of Divination -
|
||||
,(13, 13, 1)
|
||||
,(14, 14, 1)
|
||||
,(15, 15, 1)
|
||||
-- Staff of Enchantment --
|
||||
,(16, 16, 1)
|
||||
,(17, 17, 1)
|
||||
,(18, 18, 1)
|
||||
-- Staff of Evocation --
|
||||
,(19, 19, 1)
|
||||
,(20, 20, 1)
|
||||
,(21, 21, 1)
|
||||
-- Staff of Fire --
|
||||
,(22, 22, 1)
|
||||
,(23, 23, 1)
|
||||
,(24, 24, 1)
|
||||
-- Staff of Healing --
|
||||
,(25, 25, 1)
|
||||
,(26, 26, 1)
|
||||
,(27, 27, 1)
|
||||
,(28, 28, 1)
|
||||
-- Staff of Illumination --
|
||||
,(29, 29, 2)
|
||||
,(30, 29, 1)
|
||||
-- Staff of Illusion --
|
||||
,(31, 30, 1)
|
||||
,(32, 31, 1)
|
||||
,(33, 32, 1)
|
||||
-- Staff of Necromancy --
|
||||
,(34, 33, 1)
|
||||
,(35, 34, 1)
|
||||
,(36, 35, 1)
|
||||
-- Staff of Power --
|
||||
,(37, 36, 3)
|
||||
,(38, 36, 1)
|
||||
-- Staff of the Magi --
|
||||
,(39, 37, 4)
|
||||
,(40, 37, 1)
|
||||
-- Staff of Transmutation --
|
||||
,(41, 38, 1)
|
||||
,(42, 39, 1)
|
||||
,(43, 40, 1)
|
||||
-- Verdant Staff --
|
||||
,(44, 41, 1)
|
||||
,(45, 42, 1)
|
||||
;
|
||||
|
||||
------------------------
|
||||
-- staff_trait insert --
|
||||
------------------------
|
||||
INSERT INTO staff_trait (
|
||||
id,
|
||||
staff_id,
|
||||
trait_id
|
||||
)
|
||||
VALUES
|
||||
-- Animal Staff --
|
||||
(1, 1, 207)
|
||||
,(2, 1, 41)
|
||||
,(3, 1, 142)
|
||||
,(4, 2, 207)
|
||||
,(5, 2, 41)
|
||||
,(6, 2, 142)
|
||||
,(7, 3, 207)
|
||||
,(8, 3, 41)
|
||||
,(9, 3, 142)
|
||||
-- Mentalist's Staff --
|
||||
,(10, 4, 207)
|
||||
,(11, 4, 41)
|
||||
,(12, 4, 142)
|
||||
,(13, 5, 207)
|
||||
,(14, 5, 41)
|
||||
,(15, 5, 142)
|
||||
,(16, 6, 207)
|
||||
,(17, 6, 41)
|
||||
,(18, 6, 142)
|
||||
-- Staff of Abjuration --
|
||||
,(19, 7, 205)
|
||||
,(20, 7, 41)
|
||||
,(21, 7, 142)
|
||||
,(22, 8, 205)
|
||||
,(23, 8, 41)
|
||||
,(24, 8, 142)
|
||||
,(25, 9, 205)
|
||||
,(26, 9, 41)
|
||||
,(27, 9, 142)
|
||||
-- Staff of Conjuration --
|
||||
,(28, 10, 206)
|
||||
,(29, 10, 41)
|
||||
,(30, 10, 142)
|
||||
,(31, 11, 206)
|
||||
,(32, 11, 41)
|
||||
,(33, 11, 142)
|
||||
,(34, 12, 206)
|
||||
,(35, 12, 41)
|
||||
,(36, 12, 142)
|
||||
-- Staff of Divination --
|
||||
,(37, 13, 205)
|
||||
,(38, 13, 41)
|
||||
,(39, 13, 142)
|
||||
,(40, 14, 205)
|
||||
,(41, 14, 41)
|
||||
,(42, 14, 142)
|
||||
,(43, 15, 205)
|
||||
,(44, 15, 41)
|
||||
,(45, 15, 142)
|
||||
-- Staff of Enchantment --
|
||||
,(46, 16, 208)
|
||||
,(47, 16, 41)
|
||||
,(48, 16, 142)
|
||||
,(49, 17, 208)
|
||||
,(50, 17, 41)
|
||||
,(51, 17, 142)
|
||||
,(52, 18, 208)
|
||||
,(53, 18, 41)
|
||||
,(54, 18, 142)
|
||||
-- Staff of Evocation --
|
||||
,(55, 19, 209)
|
||||
,(56, 19, 41)
|
||||
,(57, 19, 142)
|
||||
,(58, 20, 209)
|
||||
,(59, 20, 41)
|
||||
,(60, 20, 142)
|
||||
,(61, 21, 209)
|
||||
,(62, 21, 41)
|
||||
,(63, 21, 142)
|
||||
-- Staff of Fire --
|
||||
,(64, 22, 209)
|
||||
,(65, 22, 41)
|
||||
,(66, 22, 142)
|
||||
,(67, 23, 209)
|
||||
,(68, 23, 41)
|
||||
,(69, 23, 142)
|
||||
,(70, 24, 209)
|
||||
,(71, 24, 41)
|
||||
,(72, 24, 142)
|
||||
-- Staff of Healing --
|
||||
,(73, 25, 211)
|
||||
,(74, 25, 41)
|
||||
,(75, 25, 142)
|
||||
,(76, 26, 211)
|
||||
,(77, 26, 41)
|
||||
,(78, 26, 142)
|
||||
,(79, 27, 211)
|
||||
,(80, 27, 41)
|
||||
,(81, 27, 142)
|
||||
,(82, 28, 211)
|
||||
,(83, 28, 41)
|
||||
,(84, 28, 142)
|
||||
-- Staff of Illumination --
|
||||
,(85, 29, 209)
|
||||
,(86, 29, 41)
|
||||
,(87, 29, 142)
|
||||
-- Staff of Illusion --
|
||||
,(88, 30, 210)
|
||||
,(89, 30, 41)
|
||||
,(90, 30, 142)
|
||||
,(91, 31, 210)
|
||||
,(92, 31, 41)
|
||||
,(93, 31, 142)
|
||||
,(94, 32, 210)
|
||||
,(95, 32, 41)
|
||||
,(96, 32, 142)
|
||||
-- Staff of Necromancy --
|
||||
,(97, 33, 211)
|
||||
,(98, 33, 41)
|
||||
,(99, 33, 142)
|
||||
,(100, 34, 211)
|
||||
,(101, 34, 41)
|
||||
,(102, 34, 142)
|
||||
,(103, 35, 211)
|
||||
,(104, 35, 41)
|
||||
,(105, 35, 142)
|
||||
-- Staff of Power --
|
||||
,(106, 36, 209)
|
||||
,(107, 36, 41)
|
||||
,(108, 36, 142)
|
||||
,(109, 36, 202)
|
||||
-- Staff of the Magi --
|
||||
,(110, 37, 209)
|
||||
,(111, 37, 41)
|
||||
,(112, 37, 142)
|
||||
,(113, 37, 202)
|
||||
-- Staff of Transmutation
|
||||
,(114, 38, 212)
|
||||
,(115, 38, 41)
|
||||
,(116, 38, 142)
|
||||
,(117, 39, 212)
|
||||
,(118, 39, 41)
|
||||
,(119, 39, 142)
|
||||
,(120, 40, 212)
|
||||
,(121, 40, 41)
|
||||
,(122, 40, 142)
|
||||
-- Verdant Staff --
|
||||
,(123, 41, 207)
|
||||
,(124, 41, 41)
|
||||
,(125, 41, 142)
|
||||
,(126, 42, 207)
|
||||
,(127, 42, 41)
|
||||
,(128, 42, 142)
|
||||
;
|
||||
|
||||
------------------------
|
||||
-- staff_spell insert --
|
||||
------------------------
|
||||
INSERT INTO staff_spell (
|
||||
id
|
||||
,staff_id
|
||||
,"level"
|
||||
,spell_id
|
||||
)
|
||||
VALUES
|
||||
-- Anmial Staff --
|
||||
(1, 1, 0, 253)
|
||||
,(2, 1, 1, 273)
|
||||
,(3, 1, 1, 442)
|
||||
-- Animal Staff (Greater) --
|
||||
,(4, 2, 0, 253)
|
||||
,(5, 2, 1, 273)
|
||||
,(6, 2, 1, 442)
|
||||
,(7, 2, 2, 19)
|
||||
,(8, 2, 2, 415)
|
||||
,(9, 2, 2, 442)
|
||||
,(10, 2, 3, 18)
|
||||
,(11, 2, 3, 442)
|
||||
-- Animal Staff (Major) --
|
||||
,(12, 3, 0, 253)
|
||||
,(13, 3, 1, 273)
|
||||
,(14, 3, 1, 442)
|
||||
,(15, 3, 2, 19)
|
||||
,(16, 3, 2, 415)
|
||||
,(17, 3, 2, 442)
|
||||
,(18, 3, 3, 18)
|
||||
,(19, 3, 3, 442)
|
||||
,(20, 3, 4, 442)
|
||||
,(21, 3, 5, 18)
|
||||
,(22, 3, 5, 299)
|
||||
,(23, 3, 5, 442)
|
||||
--22entalist's Staff --
|
||||
,(24, 4, 0, 88)
|
||||
,(25, 4, 1, 291)
|
||||
,(26, 4, 1, 322)
|
||||
--26entalist's Staff (Greater) --
|
||||
,(27, 5, 0, 88)
|
||||
,(28, 5, 1, 291)
|
||||
,(29, 5, 1, 322)
|
||||
,(30, 5, 2, 314)
|
||||
,(31, 5, 3, 230)
|
||||
,(32, 5, 3, 322)
|
||||
-- Mentalist's Staff (Major) --
|
||||
,(33, 6, 0, 88)
|
||||
,(34, 6, 1, 291)
|
||||
,(35, 6, 1, 322)
|
||||
,(36, 6, 2, 314)
|
||||
,(37, 6, 3, 230)
|
||||
,(38, 6, 3, 322)
|
||||
,(39, 6, 4, 296)
|
||||
,(40, 6, 4, 466)
|
||||
,(41, 6, 5, 322)
|
||||
,(42, 6, 5, 455)
|
||||
,(43, 6, 5, 456)
|
||||
-- Staff of Abjuration --
|
||||
,(44, 7, 0, 399)
|
||||
,(45, 7, 1, 11)
|
||||
,(46, 7, 1, 167)
|
||||
,(47, 7, 2, 112)
|
||||
,(48, 7, 2, 148)
|
||||
,(49, 7, 2, 370)
|
||||
-- Staff of Abjuration (Greater) --
|
||||
,(50, 8, 0, 399)
|
||||
,(51, 8, 1, 11)
|
||||
,(52, 8, 1, 167)
|
||||
,(53, 8, 2, 112)
|
||||
,(54, 8, 2, 148)
|
||||
,(55, 8, 2, 370)
|
||||
,(56, 8, 3, 11)
|
||||
,(57, 8, 3, 202)
|
||||
,(58, 8, 4, 102)
|
||||
,(59, 8, 4, 112)
|
||||
,(60, 8, 4, 370)
|
||||
-- Staff of Abjuration (Major) --
|
||||
,(61, 9, 0, 399)
|
||||
,(62, 9, 1, 11)
|
||||
,(63, 9, 1, 167)
|
||||
,(64, 9, 2, 112)
|
||||
,(65, 9, 2, 148)
|
||||
,(66, 9, 2, 370)
|
||||
,(67, 9, 3, 11)
|
||||
,(68, 9, 3, 202)
|
||||
,(69, 9, 4, 102)
|
||||
,(70, 9, 4, 112)
|
||||
,(71, 9, 4, 370)
|
||||
,(72, 9, 5, 32)
|
||||
,(73, 9, 5, 148)
|
||||
,(74, 9, 6, 112)
|
||||
,(75, 9, 6, 368)
|
||||
-- Staff of Conjuration --
|
||||
,(76, 10, 0, 459)
|
||||
,(77, 10, 1, 444)
|
||||
,(78, 10, 1, 494)
|
||||
,(79, 10, 2, 309)
|
||||
,(80, 10, 2, 323)
|
||||
,(81, 10, 2, 444)
|
||||
,(82, 10, 2, 446)
|
||||
-- Staff of Conjuration (Greater) --
|
||||
,(83, 11, 0, 459)
|
||||
,(84, 11, 1, 444)
|
||||
,(85, 11, 1, 494)
|
||||
,(86, 11, 2, 309)
|
||||
,(87, 11, 2, 323)
|
||||
,(88, 11, 2, 444)
|
||||
,(89, 11, 2, 446)
|
||||
,(90, 11, 3, 432)
|
||||
,(91, 11, 3, 444)
|
||||
,(92, 11, 3, 446)
|
||||
,(93, 11, 4, 79)
|
||||
,(94, 11, 4, 232)
|
||||
,(95, 11, 4, 444)
|
||||
,(96, 11, 4, 446)
|
||||
-- Staff of Conjuration (Major) --
|
||||
,(97, 12, 0, 459)
|
||||
,(98, 12, 1, 444)
|
||||
,(99, 12, 1, 494)
|
||||
,(100, 12, 2, 309)
|
||||
,(101, 12, 2, 323)
|
||||
,(102, 12, 2, 444)
|
||||
,(103, 12, 2, 446)
|
||||
,(104, 12, 3, 432)
|
||||
,(105, 12, 3, 444)
|
||||
,(106, 12, 3, 446)
|
||||
,(107, 12, 4, 79)
|
||||
,(108, 12, 4, 232)
|
||||
,(109, 12, 4, 444)
|
||||
,(110, 12, 4, 446)
|
||||
,(111, 12, 5, 37)
|
||||
,(112, 12, 5, 444)
|
||||
,(113, 12, 5, 446)
|
||||
,(114, 12, 6, 323)
|
||||
,(115, 12, 6, 444)
|
||||
,(116, 12, 6, 446)
|
||||
-- Staff of Divination --
|
||||
,(117, 13, 0, 97)
|
||||
,(118, 13, 1, 485)
|
||||
,(119, 13, 2, 70)
|
||||
,(120, 13, 2, 87)
|
||||
,(121, 13, 2, 466)
|
||||
-- Staff of Divination (Greater) --
|
||||
,(122, 14, 0, 97)
|
||||
,(123, 14, 1, 485)
|
||||
,(124, 14, 2, 70)
|
||||
,(125, 14, 2, 87)
|
||||
,(126, 14, 2, 466)
|
||||
,(127, 14, 3, 60)
|
||||
,(128, 14, 3, 87)
|
||||
,(129, 14, 4, 61)
|
||||
,(130, 14, 4, 70)
|
||||
,(131, 14, 4, 466)
|
||||
-- Staff of Divination (Major) --
|
||||
,(132, 15, 0, 97)
|
||||
,(133, 15, 1, 485)
|
||||
,(134, 15, 2, 70)
|
||||
,(135, 15, 2, 87)
|
||||
,(136, 15, 2, 466)
|
||||
,(137, 15, 3, 60)
|
||||
,(138, 15, 3, 87)
|
||||
,(139, 15, 4, 61)
|
||||
,(140, 15, 4, 70)
|
||||
,(141, 15, 4, 466)
|
||||
,(142, 15, 5, 348)
|
||||
,(143, 15, 5, 390)
|
||||
,(144, 15, 5, 466)
|
||||
,(145, 15, 5, 484)
|
||||
-- Staff of Enchantment --
|
||||
,(146, 16, 0, 88)
|
||||
,(147, 16, 1, 53)
|
||||
,(148, 16, 1, 67)
|
||||
,(149, 16, 2, 221)
|
||||
,(150, 16, 2, 474)
|
||||
-- Staff of Enchantment (Greater) --
|
||||
,(151, 17, 0, 88)
|
||||
,(152, 17, 1, 53)
|
||||
,(153, 17, 1, 67)
|
||||
,(154, 17, 2, 221)
|
||||
,(155, 17, 2, 474)
|
||||
,(156, 17, 3, 313)
|
||||
,(157, 17, 4, 53)
|
||||
,(158, 17, 4, 72)
|
||||
,(159, 17, 4, 441)
|
||||
-- Staff of Enchantment (Major) --
|
||||
,(160, 18, 0, 88)
|
||||
,(161, 18, 1, 53)
|
||||
,(162, 18, 1, 67)
|
||||
,(163, 18, 2, 221)
|
||||
,(164, 18, 2, 474)
|
||||
,(165, 18, 3, 313)
|
||||
,(166, 18, 4, 53)
|
||||
,(167, 18, 4, 72)
|
||||
,(168, 18, 4, 441)
|
||||
,(169, 18, 5, 67)
|
||||
,(170, 18, 5, 82)
|
||||
,(171, 18, 6, 123)
|
||||
,(172, 18, 6, 168)
|
||||
-- Staff of Evocation --
|
||||
,(173, 19, 0, 357)
|
||||
,(174, 19, 1, 274)
|
||||
,(175, 19, 1, 403)
|
||||
,(176, 19, 2, 5)
|
||||
,(177, 19, 2, 199)
|
||||
-- Staff of Evocation (Greater) --
|
||||
,(178, 20, 0, 357)
|
||||
,(179, 20, 1, 274)
|
||||
,(180, 20, 1, 403)
|
||||
,(181, 20, 2, 5)
|
||||
,(182, 20, 2, 199)
|
||||
,(183, 20, 3, 259)
|
||||
,(184, 20, 3, 274)
|
||||
,(185, 20, 4, 178)
|
||||
,(186, 20, 4, 520)
|
||||
-- Staff of Evocation (Major) --
|
||||
,(187, 21, 0, 357)
|
||||
,(188, 21, 1, 274)
|
||||
,(189, 21, 1, 403)
|
||||
,(190, 21, 2, 5)
|
||||
,(191, 21, 2, 199)
|
||||
,(192, 21, 3, 259)
|
||||
,(193, 21, 3, 274)
|
||||
,(194, 21, 4, 178)
|
||||
,(195, 21, 4, 520)
|
||||
,(196, 21, 5, 71)
|
||||
,(197, 21, 5, 274)
|
||||
,(198, 21, 5, 51)
|
||||
,(199, 21, 5, 510)
|
||||
-- Staff of Fire --
|
||||
,(200, 22, 0, 342)
|
||||
,(201, 22, 1, 45)
|
||||
-- Staff of Fire (Greater) --
|
||||
,(202, 23, 0, 342)
|
||||
,(203, 23, 1, 45)
|
||||
,(204, 23, 2, 45)
|
||||
,(205, 23, 2, 181)
|
||||
,(206, 23, 3, 181)
|
||||
,(207, 23, 3, 178)
|
||||
-- Staff of Fire (Major) --
|
||||
,(208, 24, 0, 342)
|
||||
,(209, 24, 1, 45)
|
||||
,(210, 24, 2, 45)
|
||||
,(211, 24, 2, 181)
|
||||
,(212, 24, 3, 181)
|
||||
,(213, 24, 3, 178)
|
||||
,(214, 24, 4, 177)
|
||||
,(215, 24, 4, 178)
|
||||
,(216, 24, 4, 509)
|
||||
,(217, 24, 5, 178)
|
||||
,(218, 24, 5, 509)
|
||||
-- Staff of Healing --
|
||||
,(219, 25, 0, 430)
|
||||
,(220, 25, 1, 215)
|
||||
-- Staff of Healing (Greater) --
|
||||
,(221, 26, 0, 430)
|
||||
,(222, 26, 1, 215)
|
||||
,(223, 26, 2, 215)
|
||||
,(224, 26, 2, 372)
|
||||
,(225, 26, 2, 373)
|
||||
,(226, 26, 3, 215)
|
||||
,(227, 26, 3, 365)
|
||||
-- Staff of Healing (Major) --
|
||||
,(228, 27, 0, 430)
|
||||
,(229, 27, 1, 215)
|
||||
,(230, 27, 2, 215)
|
||||
,(231, 27, 2, 372)
|
||||
,(232, 27, 2, 373)
|
||||
,(233, 27, 3, 215)
|
||||
,(234, 27, 3, 365)
|
||||
,(235, 27, 4, 215)
|
||||
,(236, 27, 4, 372)
|
||||
,(237, 27, 5, 44)
|
||||
,(238, 27, 5, 215)
|
||||
,(239, 27, 5, 365)
|
||||
-- Staff of Healing (True) --
|
||||
,(240, 28, 0, 430)
|
||||
,(241, 28, 1, 215)
|
||||
,(242, 28, 2, 215)
|
||||
,(243, 28, 2, 372)
|
||||
,(244, 28, 2, 373)
|
||||
,(245, 28, 3, 215)
|
||||
,(246, 28, 3, 365)
|
||||
,(247, 28, 4, 215)
|
||||
,(248, 28, 4, 372)
|
||||
,(249, 28, 5, 44)
|
||||
,(250, 28, 5, 215)
|
||||
,(251, 28, 5, 365)
|
||||
,(252, 28, 6, 215)
|
||||
,(253, 28, 6, 372)
|
||||
,(254, 28, 6, 373)
|
||||
,(255, 28, 7, 215)
|
||||
,(256, 28, 7, 362)
|
||||
,(257, 28, 7, 365)
|
||||
-- Staff of Illumination --
|
||||
,(258, 29, 0, 258)
|
||||
,(259, 29, 2, 74)
|
||||
,(260, 29, 3, 74)
|
||||
,(261, 29, 3, 387)
|
||||
-- Staff of Illusion --
|
||||
,(262, 30, 0, 194)
|
||||
,(263, 30, 1, 233)
|
||||
,(264, 30, 1, 234)
|
||||
,(265, 30, 2, 232)
|
||||
,(266, 30, 2, 246)
|
||||
-- Staff of Illusion (Greater) --
|
||||
,(267, 31, 0, 194)
|
||||
,(268, 31, 1, 233)
|
||||
,(269, 31, 1, 234)
|
||||
,(270, 31, 2, 232)
|
||||
,(271, 31, 2, 246)
|
||||
,(272, 31, 3, 233)
|
||||
,(273, 31, 3, 146)
|
||||
,(274, 31, 4, 232)
|
||||
,(275, 31, 4, 498)
|
||||
-- Staff of Illusion (Major) --
|
||||
,(276, 32, 0, 194)
|
||||
,(277, 32, 1, 233)
|
||||
,(278, 32, 1, 234)
|
||||
,(279, 32, 2, 232)
|
||||
,(280, 32, 2, 246)
|
||||
,(281, 32, 3, 233)
|
||||
,(282, 32, 3, 146)
|
||||
,(283, 32, 4, 232)
|
||||
,(284, 32, 4, 498)
|
||||
,(285, 32, 5, 235)
|
||||
,(286, 32, 5, 498)
|
||||
,(287, 32, 6, 210)
|
||||
,(288, 32, 6, 295)
|
||||
-- Staff of Necromancy --
|
||||
,(289, 33, 0, 56)
|
||||
,(290, 33, 1, 207)
|
||||
,(291, 33, 1, 356)
|
||||
,(292, 33, 2, 90)
|
||||
,(293, 33, 2, 193)
|
||||
-- Staff of Necromancy (Greater) --
|
||||
,(294, 34, 0, 56)
|
||||
,(295, 34, 1, 207)
|
||||
,(296, 34, 1, 356)
|
||||
,(297, 34, 2, 90)
|
||||
,(298, 34, 2, 193)
|
||||
,(299, 34, 3, 41)
|
||||
,(300, 34, 3, 497)
|
||||
,(301, 34, 4, 207)
|
||||
-- Placeholder for 4th level Enervation which is missing --
|
||||
-- Staff of Necromancy (Major) --
|
||||
,(303, 35, 0, 56)
|
||||
,(304, 35, 1, 207)
|
||||
,(305, 35, 1, 356)
|
||||
,(306, 35, 2, 90)
|
||||
,(307, 35, 2, 193)
|
||||
,(308, 35, 3, 41)
|
||||
,(309, 35, 3, 497)
|
||||
,(310, 35, 4, 207)
|
||||
,(311, 35, 5, 64)
|
||||
,(312, 35, 5, 193)
|
||||
,(313, 35, 6, 207)
|
||||
,(314, 35, 6, 496)
|
||||
-- Staff of Power --
|
||||
,(315, 36, 1, 356)
|
||||
,(316, 36, 2, 74)
|
||||
,(317, 36, 3, 256)
|
||||
,(318, 36, 4, 200)
|
||||
,(319, 36, 4, 313)
|
||||
,(320, 36, 5, 274)
|
||||
,(321, 36, 6, 510)
|
||||
,(322, 36, 7, 71)
|
||||
,(323, 36, 7, 178)
|
||||
,(324, 36, 7, 259)
|
||||
-- Staff of the Magi --
|
||||
,(325, 37, 0, 97)
|
||||
,(326, 37, 0, 258)
|
||||
,(327, 37, 0, 271)
|
||||
,(328, 37, 0, 463)
|
||||
,(329, 37, 1, 266)
|
||||
,(330, 37, 2, 153)
|
||||
,(331, 37, 2, 199)
|
||||
,(332, 37, 2, 243)
|
||||
,(333, 37, 2, 252)
|
||||
,(334, 37, 2, 462)
|
||||
,(335, 37, 2, 523)
|
||||
,(336, 37, 3, 112)
|
||||
,(337, 37, 3, 178)
|
||||
,(338, 37, 3, 259)
|
||||
,(339, 37, 4, 243)
|
||||
,(340, 37, 4, 153)
|
||||
,(341, 37, 4, 178)
|
||||
,(342, 37, 4, 509)
|
||||
,(343, 37, 4, 523)
|
||||
,(344, 37, 5, 71)
|
||||
,(345, 37, 5, 316)
|
||||
,(346, 37, 5, 461)
|
||||
,(347, 37, 6, 110)
|
||||
,(348, 37, 6, 112)
|
||||
,(349, 37, 6, 178)
|
||||
,(350, 37, 6, 259)
|
||||
,(351, 37, 7, 71)
|
||||
,(352, 37, 7, 316)
|
||||
,(353, 37, 7, 325)
|
||||
,(354, 37, 7, 509)
|
||||
,(355, 37, 8, 178)
|
||||
,(356, 37, 8, 270)
|
||||
,(357, 37, 9, 112)
|
||||
,(358, 37, 9, 287)
|
||||
,(359, 37, 9, 445)
|
||||
-- Staff of Transmutation --
|
||||
,(360, 38, 0, 406)
|
||||
,(361, 38, 1, 182)
|
||||
,(362, 38, 1, 248)
|
||||
,(363, 38, 2, 153)
|
||||
,(364, 38, 2, 226)
|
||||
-- Staff of Transmutation (Greater) --
|
||||
,(365, 39, 0, 406)
|
||||
,(366, 39, 1, 182)
|
||||
,(367, 39, 1, 248)
|
||||
,(368, 39, 2, 153)
|
||||
,(369, 39, 2, 226)
|
||||
,(370, 39, 3, 169)
|
||||
,(371, 39, 3, 248)
|
||||
,(372, 39, 4, 191)
|
||||
,(373, 39, 4, 394)
|
||||
-- Staff of Transmutation (Major) --
|
||||
,(374, 40, 0, 406)
|
||||
,(375, 40, 1, 182)
|
||||
,(376, 40, 1, 248)
|
||||
,(377, 40, 2, 153)
|
||||
,(378, 40, 2, 226)
|
||||
,(379, 40, 3, 169)
|
||||
,(380, 40, 3, 248)
|
||||
,(381, 40, 4, 191)
|
||||
,(382, 40, 4, 394)
|
||||
,(383, 40, 5, 226)
|
||||
,(384, 40, 6, 30)
|
||||
,(385, 40, 6, 127)
|
||||
,(386, 40, 6, 183)
|
||||
-- Verdant Staff --
|
||||
,(387, 41, 0, 459)
|
||||
,(388, 41, 1, 402)
|
||||
,(389, 41, 2, 33)
|
||||
,(390, 41, 2, 154)
|
||||
,(391, 41, 2, 395)
|
||||
,(392, 41, 2, 480)
|
||||
-- Verdant Staff (Greater) --
|
||||
,(393, 42, 0, 459)
|
||||
,(394, 42, 1, 402)
|
||||
,(395, 42, 2, 33)
|
||||
,(396, 42, 2, 154)
|
||||
,(397, 42, 2, 395)
|
||||
,(398, 42, 2, 480)
|
||||
,(399, 42, 3, 513)
|
||||
,(400, 42, 4, 33)
|
||||
,(401, 42, 4, 416)
|
||||
,(402, 42, 5, 326)
|
||||
,(403, 42, 5, 513)
|
||||
;
|
||||
@@ -0,0 +1 @@
|
||||
[{"nethysUrl":"https://2e.aonprd.com/Spells.aspx?ID=381","name":"Counter Performance","traits":["bard","composition","enchantment","fortune","mental"],"type":"Focus","level":1,"source":"Core Rulebook pg. 386","cast":"somatic or verbal","action":"reaction","trigger":"You or an ally within 60 feet rolls a saving throw against an auditory or visual effect.","area":"60-foot emanation","description":"Your performance protects you and your allies. Roll a Performance check for a type you know: an auditory performance if the trigger was auditory, or a visual one for a visual trigger. You and allies in the area can use the better result between your Performance check and the saving throw.","components":["somaticorverbal"]},{"nethysUrl":"https://2e.aonprd.com/Spells.aspx?ID=385","name":"Inspire Competence","traits":["bard","cantrip","composition","emotion","enchantment","mental"],"type":"Cantrip","level":1,"source":"Core Rulebook pg. 386","cast":"verbal","action":"1","range":"60 feet","targets":"1 ally","duration":"1 round","description":"Your encouragement inspires your ally to succeed at a task. This counts as having taken sufficient preparatory actions to Aid your ally on a skill check of your choice, regardless of the circumstances. When you later use the Aid reaction, you can roll Performance instead of the normal skill check, and if you roll a failure, you get a success instead. If you are legendary in Performance, you automatically critically succeed. The GM might rule that you can't use this ability if the act of encouraging your ally would interfere with the skill check (such as a check to Sneak quietly or maintain a disguise).","components":["verbal"]},{"nethysUrl":"https://2e.aonprd.com/Spells.aspx?ID=386","name":"Inspire Courage","traits":["bard","cantrip","composition","emotion","enchantment","mental"],"type":"Cantrip","level":1,"source":"Core Rulebook pg. 386","cast":"verbal","action":"1","area":"60-foot emanation","saving throw":"NULl","duration":"1 round","description":"You inspire your allies with words or tunes of encouragement. You and all allies in the area gain a +1 status bonus to attack rolls, damage rolls, and saves against fear effects.","components":["verbal"]},{"nethysUrl":"https://2e.aonprd.com/Spells.aspx?ID=389","name":"Lingering Composition","traits":["bard","enchantment"],"type":"Focus","level":1,"source":"Core Rulebook pg. 387","cast":"verbal","action":"free","description":"You add a flourish to your composition to extend its benefits. If your next action is to cast a cantrip composition with a duration of 1 round, attempt a Performance check. The DC is usually a standard-difficulty DC of a level equal to the highest-level target of your composition, but the GM can assign a different DC based on the circumstances. The effect depends on the result of your check.\r\n**Critical Success** The composition lasts 4 rounds.\r\n**Success** The composition lasts 3 rounds.\r\n**Failure** The composition lasts 1 round, but you don't spend the Focus Point for casting this spell.","components":["verbal"]},{"nethysUrl":"https://2e.aonprd.com/Spells.aspx?ID=390","name":"Loremaster's Etude","traits":["bard","divination","fortune"],"type":"Focus","level":1,"source":"Core Rulebook pg. 387","cast":"somatic","action":"free","trigger":"You or an ally within range attempts a skill check to Recall Knowledge","range":"30 feet","targets":"you or the triggering ally","description":"You call upon your muse's deep mysteries, granting the target a greater ability to think and recall information. Roll the triggering Recall Knowledge skill check twice and use the better result.","components":["somatic"]},{"nethysUrl":"https://2e.aonprd.com/Spells.aspx?ID=387","name":"Inspire Defense","traits":["bard","cantrip","composition","emotion","enchantment","mental"],"type":"Cantrip","level":2,"source":"Core Rulebook pg. 386","cast":"verbal","action":"1","area":"60-foot emanation","duration":"1 round","description":"You inspire your allies to protect themselves more effectively. You and all allies in the area gain a +1 status bonus to AC and saving throws, as well as resistance equal to half the spell's level to physical damage.","components":["verbal"]},{"nethysUrl":"https://2e.aonprd.com/Spells.aspx?ID=392","name":"Triple Time","traits":["bard","cantrip","composition","emotion","enchantment","mental"],"type":"Cantrip","level":2,"source":"Core Rulebook pg. 387","cast":"somatic","action":"1","area":"60-foot emanation","duration":"1 round","description":"You dance at a lively tempo, speeding your allies' movement. You and all allies in the area gain a +10-foot status bonus to all Speeds for 1 round.","components":["somatic"]},{"nethysUrl":"https://2e.aonprd.com/Spells.aspx?ID=382","name":"Dirge of Doom","traits":["bard","cantrip","composition","emotion","enchantment","fear","mental"],"type":"Cantrip","level":3,"source":"Core Rulebook pg. 386","cast":"verbal","action":"1","area":"30-foot emanation","duration":"1 round","desLine truncated
|
||||
@@ -0,0 +1,353 @@
|
||||
import json
|
||||
import sqlite3
|
||||
import io
|
||||
|
||||
def main():
|
||||
# load json into python
|
||||
print("loading json")
|
||||
## read file into memory
|
||||
with io.open('spellsNEW.json', 'r', encoding='utf-8-sig') as f:
|
||||
# raw_data = f.read()
|
||||
data = json.load(f)
|
||||
print("Importing {} spells.".format(len(data)))
|
||||
# alphabetize spells into a list
|
||||
sorted_names = []
|
||||
for i in data:
|
||||
sorted_names.append(i['name'])
|
||||
sorted_names.sort()
|
||||
# print(sorted_names)
|
||||
|
||||
# get list of dicts in order
|
||||
sorted_dicts = [] # sorted by ['name'] alphabetically
|
||||
for i in sorted_names:
|
||||
for x in data:
|
||||
# yes, I know this is double nested and not that efficient; don't
|
||||
# care yet, it's not that many items
|
||||
if x['name'] == i:
|
||||
sorted_dicts.append(x)
|
||||
|
||||
# NOW we can go alphabetically spell by spell
|
||||
|
||||
## Get database connection
|
||||
conn = sqlite3.connect('../../pf2.db')
|
||||
## Set pragmas
|
||||
pragma1 = "PRAGMA synchronous=OFF;"
|
||||
pragma2 = "PRAGMA count_changes=OFF;"
|
||||
pragma3 = "PRAGMA journal_mode=MEMORY;"
|
||||
pragma4 = "PRAGMA temp_store=MEMORY;"
|
||||
pragma5 = "PRAGMA foreign_keys=ON;"
|
||||
conn.execute(pragma1)
|
||||
conn.execute(pragma2)
|
||||
conn.execute(pragma3)
|
||||
conn.execute(pragma4)
|
||||
conn.execute(pragma5)
|
||||
|
||||
# load in ids for traits from traits table so we only call this once
|
||||
# instead of every spell
|
||||
stmt = "SELECT trait_id, short_name FROM traits"
|
||||
c = conn.cursor()
|
||||
c.execute(stmt)
|
||||
traits = c.fetchall()
|
||||
# print(traits)
|
||||
|
||||
# load in ids for spelltypes from spelltypes table so we only call this once
|
||||
# instead of every spell
|
||||
stmt = "SELECT spelltypes_id, name FROM spelltypes"
|
||||
c = conn.cursor()
|
||||
c.execute(stmt)
|
||||
stypes = c.fetchall()
|
||||
|
||||
# TODO FIX THIS FOR SPELL COMPONENTS
|
||||
# CREATE TABLE spellcomponents (
|
||||
# spellcomponents_id INTEGER PRIMARY KEY,
|
||||
# name TEXT NOT NULL UNIQUE
|
||||
# );
|
||||
|
||||
# load in ids for spelltypes from spelltypes table so we only call this once
|
||||
# instead of every spell
|
||||
stmt = "SELECT spellcomponents_id, name FROM spellcomponents"
|
||||
c = conn.cursor()
|
||||
c.execute(stmt)
|
||||
ctypes = c.fetchall()
|
||||
|
||||
# List the various triggers and see if there are any duplicates
|
||||
# THERE ARE NOT IN THE CRB SO NOT BOTHERING WITH SEPARATE TRIGGERS TABLE YET
|
||||
### trigs = []
|
||||
### for i in sorted_dicts:
|
||||
### if 'trigger' in i:
|
||||
### trigs.append(i['trigger'])
|
||||
### print(sorted(trigs))
|
||||
### print(len(trigs))
|
||||
### print(len(set(trigs)))
|
||||
|
||||
# List the various targets and see if there are any duplicates
|
||||
## YES, there are MANY duplicates, so we need a separate targets table
|
||||
targs = []
|
||||
for i in sorted_dicts:
|
||||
if 'targets' in i:
|
||||
targs.append(i['targets'])
|
||||
dedup_targs = set(targs)
|
||||
sorted_targs = sorted(dedup_targs)
|
||||
inp_targs = []
|
||||
id = 0
|
||||
for i in sorted_targs:
|
||||
id += 1
|
||||
inp_targs.append((id,i))
|
||||
stmt = "INSERT INTO spelltargets (spelltargets_id, name) VALUES (?,?)"
|
||||
try:
|
||||
conn.executemany(stmt,inp_targs)
|
||||
except:
|
||||
print("Error creating targets")
|
||||
else:
|
||||
conn.commit()
|
||||
|
||||
# load in ids for targets so just doing this once
|
||||
stmt = "SELECT spelltargets_id, name FROM spelltargets"
|
||||
c = conn.cursor()
|
||||
c.execute(stmt)
|
||||
ttypes = c.fetchall()
|
||||
|
||||
# load in ids for actions so just doing this once
|
||||
stmt = "SELECT actioncosts_id, abbr FROM actioncosts"
|
||||
c = conn.cursor()
|
||||
c.execute(stmt)
|
||||
acttypes = c.fetchall()
|
||||
|
||||
# print(sorted(targs))
|
||||
# print(len(targs))
|
||||
# print(len(set(targs)))
|
||||
|
||||
id = 0
|
||||
for i in sorted_dicts:
|
||||
id += 1
|
||||
do_basic_sql(i, id, conn)
|
||||
do_range_numbers(i,id,conn)
|
||||
do_sources_pages(i,id,conn)
|
||||
do_spell_traits(i,id,conn,traits)
|
||||
do_spell_types(i,id,conn,stypes)
|
||||
do_spell_components(i,id,conn,ctypes)
|
||||
do_spell_targets(i,id,conn,ttypes)
|
||||
do_spell_actions(i,id,conn,acttypes)
|
||||
|
||||
print("Finished {} spells.".format(len(sorted_dicts)))
|
||||
|
||||
def do_spell_actions(i,id,conn,acttypes):
|
||||
if 'action' not in i:
|
||||
return
|
||||
res = 0
|
||||
for j in acttypes:
|
||||
if i['action'] == j[1]:
|
||||
res = j[0]
|
||||
# print(id , res)
|
||||
|
||||
inp = (res, id)
|
||||
|
||||
stmt = "UPDATE spells SET actioncosts_id=? WHERE spells_id=?"
|
||||
|
||||
try:
|
||||
conn.execute(stmt, inp)
|
||||
except sqlite3.Error as e:
|
||||
print("Error updating actioncosts_id: {}".format(e))
|
||||
print("\tSpell:{}\tinp:{}".format(i['name'],inp))
|
||||
else:
|
||||
conn.commit()
|
||||
|
||||
def do_spell_components(i,id,conn,ctypes):
|
||||
# this block handles heal or harm which have all 3
|
||||
if i['name']=='Heal' or i['name']=='Harm':
|
||||
# print("Need to handle heal and harm")
|
||||
inp = [(id, 1), (id, 2), (id, 3)]
|
||||
stmt = "INSERT INTO spells_spellcomponents (spells_id, spellcomponents_id) VALUES (?,?)"
|
||||
try:
|
||||
conn.executemany(stmt, inp)
|
||||
except sqlite3.Error as e:
|
||||
print("Error inserting spell components: {}".format(e))
|
||||
print("\tinp: {}".format(inp))
|
||||
else:
|
||||
print("handled {} succesfully".format(i['name']))
|
||||
conn.commit()
|
||||
return
|
||||
|
||||
# this handles the rest
|
||||
res = None
|
||||
for j in ctypes:
|
||||
for k in i['components']:
|
||||
if k.capitalize() == j[1]:
|
||||
res = j[0]
|
||||
|
||||
inp = (id, res)
|
||||
|
||||
stmt = "INSERT INTO spells_spellcomponents (spells_id, spellcomponents_id) VALUES (?,?)"
|
||||
|
||||
try:
|
||||
conn.execute(stmt, inp)
|
||||
except sqlite3.Error as e:
|
||||
print("Error inserting spell components: {}".format(e))
|
||||
print("\tinp: {}".format(inp))
|
||||
else:
|
||||
conn.commit()
|
||||
|
||||
def do_spell_targets(i,id,conn,ttypes):
|
||||
if 'targets' not in i:
|
||||
return
|
||||
res = 0
|
||||
for j in ttypes:
|
||||
if i['targets'] == j[1]:
|
||||
res = j[0]
|
||||
# print(id , res)
|
||||
|
||||
inp = (res, id)
|
||||
|
||||
stmt = "UPDATE spells SET spelltargets_id=? WHERE spells_id=?"
|
||||
|
||||
try:
|
||||
conn.execute(stmt, inp)
|
||||
except:
|
||||
print("Error updating spelltargets_id")
|
||||
else:
|
||||
conn.commit()
|
||||
|
||||
def do_spell_types(i,id,conn,stypes):
|
||||
res = 0
|
||||
for j in stypes:
|
||||
if i['type'] == j[1]:
|
||||
res = j[0]
|
||||
# print(id , res)
|
||||
|
||||
inp = (res, id)
|
||||
|
||||
stmt = "UPDATE spells SET spelltypes_id=? WHERE spells_id=?"
|
||||
|
||||
try:
|
||||
conn.execute(stmt, inp)
|
||||
except:
|
||||
print("Error updating spell types")
|
||||
else:
|
||||
conn.commit()
|
||||
|
||||
def do_spell_traits(i, id, conn, traits):
|
||||
|
||||
# get list of traits from the json and capitalize first letter
|
||||
traits_json = []
|
||||
for item in i['traits']:
|
||||
traits_json.append(item.capitalize())
|
||||
|
||||
trait_ids =[]
|
||||
for j in traits_json:
|
||||
for k in traits:
|
||||
if j == k[1]:
|
||||
trait_ids.append(k[0])
|
||||
# print(trait_ids)
|
||||
|
||||
inp = []
|
||||
for j in trait_ids:
|
||||
inp.append((id,j))
|
||||
# print(inp)
|
||||
|
||||
# insert into sql
|
||||
stmt = "INSERT OR REPLACE INTO spells_traits (spells_id, trait_id) VALUES (?,?)"
|
||||
try:
|
||||
conn.executemany(stmt, inp)
|
||||
except:
|
||||
print("Error updating traits")
|
||||
else:
|
||||
conn.commit()
|
||||
|
||||
|
||||
|
||||
def do_sources_pages(i, id, conn):
|
||||
if 'source' not in i:
|
||||
return
|
||||
|
||||
res = ''
|
||||
source_id = 0
|
||||
# Do Core Rulebook branch
|
||||
if "Core Rulebook" in i['source']:
|
||||
res = i['source'].replace('Core Rulebook pg.','').strip()
|
||||
source_id = 1
|
||||
|
||||
stmt = "UPDATE spells SET sources_id=?, sources_pages=? WHERE spells_id=?"
|
||||
inp = (source_id, res, id)
|
||||
|
||||
try:
|
||||
conn.execute(stmt, inp)
|
||||
except:
|
||||
print("Error updating sources")
|
||||
else:
|
||||
conn.commit()
|
||||
|
||||
|
||||
|
||||
|
||||
def do_range_numbers(i, id, conn):
|
||||
# no need to do range
|
||||
if 'range' not in i:
|
||||
return
|
||||
rg = -1
|
||||
# convert range_text to an integer representation
|
||||
if i['range'] == 'touch':
|
||||
rg = 0
|
||||
elif i['range'] == 'planetary':
|
||||
rg = 999999999
|
||||
# is the only one in CRB with emanation 40' from current scraping
|
||||
elif i['name'] == 'Repulsion':
|
||||
rg = 40
|
||||
else:
|
||||
# DO SPLITS
|
||||
splits = i['range'].split(' ')
|
||||
# print(splits)
|
||||
rg = splits[0]
|
||||
inp = (rg, id)
|
||||
stmt = "UPDATE spells SET range_ft=? WHERE spells_id=?"
|
||||
try:
|
||||
conn.execute(stmt, inp)
|
||||
except:
|
||||
print("Error updating range_ft")
|
||||
else:
|
||||
conn.commit()
|
||||
# print("Successfully updated range_ft")
|
||||
|
||||
|
||||
def do_basic_sql(i, id, conn):
|
||||
#print("Doing spell id #{}: {}".format(id, i['name']))
|
||||
stmt = """INSERT INTO spells (
|
||||
spells_id,
|
||||
sources_id,
|
||||
sources_pages,
|
||||
nethysurl,
|
||||
name,
|
||||
level,
|
||||
descr,
|
||||
range_text,
|
||||
trigger,
|
||||
area_text)
|
||||
VALUES (?,?,?,?,?,?,?,?,?,?)"""
|
||||
|
||||
rge = None
|
||||
if 'range' in i:
|
||||
rge = i['range']
|
||||
|
||||
dscr = None
|
||||
if 'description' in i:
|
||||
dscr = i['description']
|
||||
|
||||
trg = None
|
||||
if 'trigger' in i:
|
||||
trg = i['trigger']
|
||||
|
||||
area = None
|
||||
if 'area' in i:
|
||||
area = i['area']
|
||||
|
||||
inp = (id, 1, i['source'], i['nethysUrl'], i['name'], i['level'], dscr, rge, trg, area)
|
||||
try:
|
||||
conn.execute(stmt, inp)
|
||||
except:
|
||||
print("Error inserting row")
|
||||
else:
|
||||
conn.commit()
|
||||
# print("Successfully inserted row")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,334 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
-- #########################################################
|
||||
-- This space is where we say the latest ID for incrementing
|
||||
--
|
||||
-- 269 is top ID right now so start with 270 for anything new
|
||||
--
|
||||
-- #########################################################
|
||||
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
|
||||
INSERT INTO traittypes (traittype_id, name)
|
||||
VALUES
|
||||
(1, 'None'),
|
||||
(2, 'Alignment'),
|
||||
(3, 'Ancestry'),
|
||||
(4, 'Armor'),
|
||||
(5, 'Class'),
|
||||
(6, 'Creature Type'),
|
||||
(7, 'Elemental'),
|
||||
(8, 'Energy'),
|
||||
(9, 'Equipment'),
|
||||
(10, 'Monster'),
|
||||
(11, 'Poison'),
|
||||
(12, 'Rarity'),
|
||||
(13, 'School'),
|
||||
(14, 'Tradition'),
|
||||
(15, 'Weapon');
|
||||
|
||||
-- TODO change the undefineds below to NULL (make sure table allows NULLs in description too)
|
||||
|
||||
INSERT INTO traits (trait_id, traittype, short_name, description)
|
||||
|
||||
VALUES
|
||||
-- CRB and Monster Manual
|
||||
-- "None" type traits
|
||||
(1, 1, 'Additive', 'Feats with the additive trait allow you to spend actions to add special substances to bombs or elixirs. You can add only one additive to a single alchemical item, and attempting to add another spoils the item. You can typically use actions with the additive trait only when you’re creating an infused alchemical item, and some can be used only with the Quick Alchemy action. The additive trait is always followed by a level, such as additive 2. An additive adds its level to the level of the alchemical item you’re modifying; the result is the new level of the mixture. The mixture’s item level must be no higher than your advanced alchemy level.'),
|
||||
(2, 1, 'Alchemical', 'Alchemical items are powered by reactions of alchemical reagents. Alchemical items aren’t magical and don’t radiate a magical aura.'),
|
||||
(3, 1, 'Apex', 'When you Invest an Item that has the apex trait, it improves one of your ability scores, either increasing it by 2 or to a total of 18, whichever grants the higher score. This gives you all the benefits of the new ability score until the investiture ends. An apex item grants this benefit only the first time it’s invested within a 24-hour period, and you can benefit from only one apex item at a time. If you attempt to invest an apex item when you already have one invested, you don’t gain the ability score increase, though you do gain any other effects of Investing the Item.'),
|
||||
(4, 1, 'Archetype', 'This feat belongs to an archetype.'),
|
||||
(5, 1, 'Artifact', 'undefined'),
|
||||
(6, 1, 'Attack', 'An ability with this trait involves an attack. For each attack you make beyond the first on your turn, you take a multiple attack penalty.'),
|
||||
(7, 1, 'Auditory', 'Auditory actions and effects rely on sound. An action with the auditory trait can be successfully performed only if the creature using the action can speak or otherwise produce the required sounds. A spell or effect with the auditory trait has its effect only if the target can hear it. This applies only to sound-based parts of the effect, as determined by the GM. This is different from a sonic effect, which still affects targets who can’t hear it (such as deaf targets) as long as the effect itself makes sound.'),
|
||||
(8, 1, 'Aura', 'An aura is an emanation that continually ebbs out from you, af ecting creatures within a certain radius. Aura can also refer to the magical signature of an item or a creature with a strong alignment.'),
|
||||
(9, 1, 'Cantrip', 'A spell you can cast at will that is automatically heightened to half your level rounded up.'),
|
||||
(10, 1, 'Charm', 'undefined'),
|
||||
(11, 1, 'Companion', 'An item with this trait can be worn by an animal companion or similar creature. A companion can have up to two items invested.'),
|
||||
(12, 1, 'Complex', 'A hazard with this trait takes turns in an encounter.'),
|
||||
(13, 1, 'Composition', 'To cast a composition cantrip or focus spell, you usually use a type of Performance. If the spell includes a verbal component, you must use an auditory performance, and if it includes a somatic component, you must use a visual one. The spell gains all the traits of the performance you used. You can cast only one composition spell each turn, and you can have only one active at a time. If you cast a new composition spell, any ongoing effects from your previous composition spell end immediately.'),
|
||||
(14, 1, 'Concentrate', 'An action with this trait requires a degree of mental concentration and discipline.'),
|
||||
(15, 1, 'Consecration', 'A consecration spell enhances an area for an extended period of time. A given area can have only a single consecration effect at a time. The new effect attempts to counteract any existing one in areas of overlap.'),
|
||||
(16, 1, 'Curse', 'A curse is an effect that places some long-term affliction on a creature. Curses are always magical and are typically the result of a spell or trap.'),
|
||||
(17, 1, 'Darkness', 'Darkness effects extinguish non-magical light in the area, and can counteract less powerful magical light. You must usually target light magic with your darkness magic directly to counteract the light, but some darkness spells automatically attempt to counteract light.'),
|
||||
(18, 1, 'Death', 'An effect with the death trait kills you immediately if it reduces you to 0 HP. Some death effects can bring you closer to death or slay you outright without reducing you to 0 HP.'),
|
||||
(19, 1, 'Dedication', 'You must select a feat with this trait to apply an archetype to your character.'),
|
||||
(20, 1, 'Detection', 'Effects with this trait attempt to determine the presence or location of a person, object, or aura.'),
|
||||
(21, 1, 'Disease', 'An effect with this trait applies one or more diseases. A disease is typically an affliction.'),
|
||||
(22, 1, 'Downtime', 'An activity with this trait takes a day or more, and can be used only during downtime.'),
|
||||
(23, 1, 'Emotion', 'This effect alters a creature’s emotions. Effects with this trait always have the mental trait as well. Creatures with special training or that have mechanical or artificial intelligence are immune to emotion effects.'),
|
||||
(24, 1, 'Environmental', 'A hazard with this trait is something dangerous that’s part of the natural world, such as quicksand or harmful mold.'),
|
||||
(25, 1, 'Exploration', 'An activity with this trait takes more than a turn to use, and can usually be used only during exploration mode.'),
|
||||
(26, 1, 'Extradimensional', 'This effect or item creates an extradimensional space. An extradimensional effect placed inside another extradimensional space ceases to function until it is removed.'),
|
||||
(27, 1, 'Fear', 'Fear effects evoke the emotion of fear. Effects with this trait always have the mental and emotion traits as well.'),
|
||||
(28, 1, 'Flourish', 'Flourish actions are actions that require too much exertion to perform a large number in a row. You can use only 1 action with the flourish trait per turn.'),
|
||||
(29, 1, 'Focused', 'An item with this trait can give you an additional Focus Point. This focus point is separate from your focus pool and doesn’t count toward the cap on your focus pool. You can gain this benefit only if you have a focus pool, and there might be restrictions on how the point can be used. You can’t gain more than 1 Focus Point per day from focused items.'),
|
||||
(30, 1, 'Fortune', 'A fortune effect beneficially alters how you roll your dice. You can never have more than one fortune effect alter a single roll. If multiple fortune effects would apply, you have to pick which to use. If a fortune effect and a misfortune effect would apply to the same roll, the two cancel each other out, and you roll normally.'),
|
||||
(31, 1, 'General', 'A type of feat that any character can select, regardless of ancestry and class, as long as they meet the prerequisites. You can select a feat with this trait when your class grants a general feat.'),
|
||||
(32, 1, 'Haunt', 'A hazard with this trait is a spiritual echo, often of someone with a tragic death. Putting a haunt to rest often involves resolving the haunt’s unfinished business. A haunt that hasn’t been properly put to rest always returns after a time.'),
|
||||
(33, 1, 'Healing', 'A healing effect restores a creature’s body, typically by restoring Hit Points, but sometimes by removing diseases or other debilitating effects.'),
|
||||
(34, 1, 'Incapacitation', 'An ability with this trait can take a character completely out of the fight or even kill them, and it’s harder to use on a more powerful character. If a spell has the incapacitation trait, any creature of more than twice the spell’s level treats the result of their check to prevent being incapacitated by the spell as one degree of success better, or the result of any check the spellcaster made to incapacitate them as one degree of success worse. If any other effect has the incapacitation trait, a creature of higher level than the item, creature, or hazard generating the effect gains the same benefits.'),
|
||||
(35, 1, 'Incorporeal', 'An incorporeal creature or object has no physical form. It can pass through solid objects, including walls. When inside an object, an incorporeal creature can’t perceive, attack, or interact with anything outside the object, and if it starts its turn in an object, it is slowed 1. Corporeal creatures can pass through an incorporeal creature, but they can’t end their movement in its space.'),
|
||||
(36, 1, 'Infused', 'You created an alchemical item with the infused trait using your infused reagents, and it has a limited time before it becomes inert. Any nonpermanent effects from your infused alchemical items, with the exception of afflictions such as slow-acting poisons, end when you make your daily preparations again.'),
|
||||
(37, 1, 'Instinct', 'Instinct abilities require a specific instinct; you lose access if you perform acts anathema to your instinct.'),
|
||||
(38, 1, 'Light', 'Light effects overcome non-magical darkness in the area, and can counteract magical darkness. You must usually target darkness magic with your light magic directly to counteract the darkness, but some light spells automatically attempt to counteract darkness.'),
|
||||
(39, 1, 'Linguistic', 'An effect with this trait depends on language comprehension. A linguistic effect that targets a creature works only if the target understands the language you are using.'),
|
||||
(40, 1, 'Litany', 'Litanies are special devotion spells, typically used by champions and requiring a single action, that usually give temporary immunity to further litanies.'),
|
||||
(41, 1, 'Magical', 'Something with the magical trait is imbued with magical energies not tied to a specific tradition of magic. A magical item radiates a magic aura infused with its dominant school of magic.'),
|
||||
(42, 1, 'Manipulate', 'You must physically manipulate an item or make gestures to use an action with this trait. Creatures without a suitable appendage can’t perform actions with this trait. Manipulate actions often trigger reactions.'),
|
||||
(43, 1, 'Mechanical', 'A hazard with this trait is a constructed physical object.'),
|
||||
(44, 1, 'Mental', 'A mental effect can alter the target’s mind. It has no effect on an object or a mindless creature.'),
|
||||
(45, 1, 'Metamagic', 'Actions with the metamagic trait, usually from metamagic feats, tweak the properties of your spells. You must use a metamagic action directly before Casting the Spell you want to alter. If you use any action (including free actions and reactions) other than Cast a Spell directly after, you waste the benefits of the metamagic action. Any additional effects added by a metamagic action are part of the spell’s effect, not of the metamagic action itself.'),
|
||||
(46, 1, 'Minion', 'Minions are creatures that directly serve another creature. A creature with this trait can use only 2 actions per turn and can’t use reactions. Your minion acts on your turn in combat, once per turn, when you spend an action to issue it commands. For an animal companion, you Command an Animal; for a minion that’s a spell or magic item effect, like a summoned minion, you Sustain a Spell or Sustain an Activation; if not otherwise specified, you issue a verbal command, a single action with the auditory and concentrate traits. If given no commands, minions use no actions except to defend themselves or to escape obvious harm. If left unattended for long enough, typically 1 minute, mindless minions usually don’t act, animals follow their instincts, and sapient minions act how they please.'),
|
||||
(47, 1, 'Misfortune', 'A misfortune effect detrimentally alters how you roll your dice. You can never have more than one misfortune effect alter a single roll. If multiple misfortune effects would apply, the GM decides which is worse and applies it. If a fortune effect and a misfortune effect would apply to the same roll, the two cancel each other out, and you roll normally.'),
|
||||
(48, 1, 'Morph', 'Effects that slightly alter a creature’s form have the morph trait. Any Strikes specifically granted by a morph effect are magical. You can be affected by multiple morph spells at once, but if you morph the same body part more than once, the second morph effect attempts to counteract the first (in the same manner as two polymorph effects, described in that trait).'),
|
||||
(49, 1, 'Move', 'An action with this trait involves moving from one space to another.'),
|
||||
(50, 1, 'Multiclass', 'Archetypes with the multiclass trait represent diversifying your training into another class’s specialties. You can’t select a multiclass archetype’s dedication feat if you are a member of the class of the same name.'),
|
||||
(51, 1, 'Oath', 'Oaths add an additional tenet to your code. You can usually have only one feat with this trait.'),
|
||||
(52, 1, 'Open', 'These maneuvers work only as the first salvo on your turn. You can use an open only if you haven’t used an action with the attack or open trait yet this turn.'),
|
||||
(53, 1, 'Plant', 'Magical effects with this trait manipulate or conjure plants or plant matter in some way. Those that manipulate plants have no effect in an area with no plants.'),
|
||||
(54, 1, 'Polymorph', 'These effects transform the target into a new form. A target can’t be under the effect of more than one polymorph effect at a time. If it comes under the effect of a second polymorph effect, the second polymorph effect attempts to counteract the first. If it succeeds, it takes effect, and if it fails, the spell has no effect on that target. Any Strikes specifically granted by a polymorph effect are magical. Unless otherwise stated, polymorph spells don’t allow the target to take on the appearance of a specific individual creature, but rather just a generic creature of a general type or ancestry.'),
|
||||
(55, 1, 'Possession', 'Effects with this trait allow a creature to project its mind and spirit into a target. A creature immune to mental effects can’t use a possession effect. While possessing a target, a possessor’s true body is unconscious (and can’t wake up normally), unless the possession effect allows the creature to physically enter the target. Whenever the target takes damage, the possessor takes half that amount of damage as mental damage.'),
|
||||
(56, 1, 'Precious', 'Valuable materials with special properties have the precious trait. They can be substituted for base materials when you Craft items.'),
|
||||
(57, 1, 'Prediction', 'Effects with this trait determine what is likely to happen in the near future. Most predictions are divinations.'),
|
||||
(58, 1, 'Press', 'Actions with this trait allow you to follow up earlier attacks. An action with the press trait can be used only if you are currently affected by a multiple attack penalty. Some actions with the press trait also grant an effect on a failure. The effects that are added on a failure don’t apply on a critical failure. If your press action succeeds, you can choose to apply the failure effect instead. (For example, you may wish to do this when an attack deals no damage due to resistance.) Because a press action requires a multiple attack penalty, you can’t use one when it’s not your turn, even if you use the Ready activity.'),
|
||||
(59, 1, 'Rage', 'You must be raging to use abilities with the rage trait, and they end automatically when you stop raging.'),
|
||||
(60, 1, 'Reload', 'While all weapons need some amount of time to get into position, many ranged weapons also need to be loaded and reloaded. This entry indicates how many Interact actions it takes to reload such weapons. This can be 0 if drawing ammunition and firing the weapon are part of the same action. If an item takes 2 or more actions to reload, the GM determines whether they must be performed together as an activity, or you can spend some of those actions during one turn and the rest during your next turn.'),
|
||||
(61, 1, 'Revelation', 'Effects with this trait see things as they truly are.'),
|
||||
(62, 1, 'Scrying', 'A scrying effect lets you see, hear, or otherwise get sensory information from a distance using a sensor or apparatus, rather than your own eyes and ears.'),
|
||||
(63, 1, 'Secret', 'The GM rolls the check for this ability in secret.'),
|
||||
(64, 1, 'Shadow', 'This magic involves shadows or the energy of the Shadow Plane.'),
|
||||
(65, 1, 'Skill', 'A general feat with the skill trait improves your skills and their actions or gives you new actions for a skill. A feat with this trait can be selected when a class grants a skill feat or general feat. Archetype feats with the skill trait can be selected in place of a skill feat if you have that archetype’s dedication feat.'),
|
||||
(66, 1, 'Sleep', 'This effect can cause a creature to fall asleep or get drowsy.'),
|
||||
(67, 1, 'Splash', 'When you use a thrown weapon with the splash trait, you don’t add your Strength modifier to the damage roll. If an attack with a splash weapon fails, succeeds, or critically succeeds, all creatures within 5 feet of the target (including the target) take the listed splash damage. On a failure (but not a critical failure), the target of the attack still takes the splash damage. Add splash damage together with the initial damage against the target before applying the target’s weaknesses or resistances. You don’t multiply splash damage on a critical hit.'),
|
||||
(68, 1, 'Stance', 'A stance is a general combat strategy that you enter by using an action with the stance trait, and that you remain in for some time. A stance lasts until you get knocked out, until its requirements (if any) are violated, until the encounter ends, or until you enter a new stance, whichever comes first. After you use an action with the stance trait, you can’t use another one for 1 round. You can enter or be in a stance only in encounter mode.'),
|
||||
(69, 1, 'Summoned', 'A creature called by a conjuration spell or effect gains the summoned trait. A summoned creature can’t summon other creatures, create things of value, or cast spells that require a cost. It has the minion trait. If it tries to cast a spell of equal or higher level than the spell that summoned it, it overpowers the summoning magic, causing the summoned creature’s spell to fail and the summon spell to end. Otherwise, the summoned creature uses the standard abilities for a creature of its kind. It generally attacks your enemies to the best of its abilities. If you can communicate with it, you can attempt to command it, but the GM determines the degree to which it follows your commands.'),
|
||||
(70, 1, 'Telepathy', 'undefined'),
|
||||
(71, 1, 'Teleportation', 'Teleportation effects allow you to instantaneously move from one point in space to another. Teleportation does not usually trigger reactions based on movement.'),
|
||||
(72, 1, 'Trap', 'A hazard or item with this trait is constructed to hinder interlopers.'),
|
||||
(73, 1, 'Virulent', 'Afflictions with the virulent trait are harder to remove. You must succeed at two consecutive saves to reduce a virulent affliction’s stage by 1. A critical success reduces a virulent affliction’s stage by only 1 instead of by 2.'),
|
||||
(74, 1, 'Visual', 'A visual effect can affect only creatures that can see it. This applies only to visible parts of the effect, as determined by the GM.'),
|
||||
|
||||
-- 'Alignment' type traits
|
||||
(75, 2, 'Chaotic', 'Chaotic effects often manipulate energy from chaos-aligned Outer Planes and are anathema to lawful divine servants or divine servants of lawful deities. A creature with this trait is chaotic in alignment. An ability with this trait can be selected or used only by chaotic creatures.'),
|
||||
(76, 2, 'Evil', 'Evil effects often manipulate energy from evil-aligned Outer Planes and are antithetical to good divine servants or divine servants of good deities. A creature with this trait is evil in alignment. An ability with this trait can be selected or used only by evil creatures.'),
|
||||
(77, 2, 'Good', 'Good effects often manipulate energy from good-aligned Outer Planes and are antithetical to evil divine servants or divine servants of evil deities. A creature with this trait is good in alignment. An ability with this trait can be selected or used only by good creatures.'),
|
||||
(78, 2, 'Lawful', 'Lawful effects often manipulate energy from law-aligned Outer Planes and are antithetical to chaotic divine servants or divine servants of chaotic deities. A creature with this trait is lawful in alignment. An ability with this trait can be selected or used by lawful creatures only.'),
|
||||
|
||||
-- 'Ancestry' type traits
|
||||
(79, 3, 'Dwarf', 'A creature with this trait is a member of the dwarf ancestry. Dwarves are stout folk who often live underground and typically have darkvision. An ability with this trait can be used or selected only by dwarves. An item with this trait is created and used by dwarves.'),
|
||||
(80, 3, 'Elf', 'A creature with this trait is a member of the elf ancestry. Elves are mysterious people with rich traditions of magic and scholarship who typically have low-light vision. An ability with this trait can be used or selected only by elves. A weapon with this trait is created and used by elves.'),
|
||||
(81, 3, 'Gnome', 'A creature with this trait is a member of the gnome ancestry. Gnomes are small people skilled at magic who seek out new experiences and usually have low-light vision. An ability with this trait can be used or selected only by gnomes. A weapon with this trait is created and used by gnomes.'),
|
||||
(82, 3, 'Goblin', 'A creature with this trait can come from multiple tribes of creatures, including goblins, hobgoblins, and bugbears. Goblins tend to have darkvision. An ability with this trait can be used or chosen only by goblins. A weapon with this trait is created and used by goblins.'),
|
||||
(83, 3, 'Half-Elf', 'A creature with this trait is part human and part elf. An ability with this trait can be used or selected only by half-elves.'),
|
||||
(84, 3, 'Half-Orc', 'A creature with this trait is part human and part orc. An ability with this trait can be used or selected only by half-orcs.'),
|
||||
(85, 3, 'Halfling', 'A creature with this trait is a member of the halfling ancestry. These small people are friendly wanderers considered to be lucky. An ability with this trait can be used or selected only by halflings. A weapon with this trait is created and used by halflings.'),
|
||||
(86, 3, 'Human', 'A creature with this trait is a member of the human ancestry. Humans are a diverse array of people known for their adaptability. An ability with this trait can be used or selected only by humans.'),
|
||||
|
||||
-- 'Armor' type traits
|
||||
(87, 4, 'Bulwark', 'The armor covers you so completely that it provides benefits against some damaging effects. On Reflex saves to avoid a damaging effect, such as a *fireball*, you add a +3 modifier instead of your Dexterity modifier.'),
|
||||
(88, 4, 'Comfort', 'The armor is so comfortable that you can rest normally while wearing it.'),
|
||||
(89, 4, 'Flexible', 'The armor is flexible enough that it doesn’t hinder most actions. You don’t apply its check penalty to Acrobatics or Athletics checks.'),
|
||||
(90, 4, 'Noisy', 'This armor is loud and likely to alert others to your presence when you’re using the Avoid Notice exploration activity.'),
|
||||
|
||||
-- 'Class' type traits
|
||||
(91, 5, 'Alchemist', 'This indicates abilities from the alchemist class.'),
|
||||
(92, 5, 'Barbarian', 'This indicates abilities from the barbarian class.'),
|
||||
(93, 5, 'Bard', 'This indicates abilities from the bard class.'),
|
||||
(94, 5, 'Champion', 'This indicates abilities from the champion class.'),
|
||||
(95, 5, 'Cleric', 'This indicates abilities from the cleric class.'),
|
||||
(96, 5, 'Druid', 'This indicates abilities from the druid class.'),
|
||||
(97, 5, 'Fighter', 'This indicates abilities from the fighter class.'),
|
||||
(98, 5, 'Monk', 'Abilities with this trait are from the monk class. A weapon with this trait is primarily used by monks.'),
|
||||
(99, 5, 'Ranger', 'This indicates abilities from the ranger class.'),
|
||||
(100, 5, 'Rogue', 'This indicates abilities from the rogue class.'),
|
||||
(101, 5, 'Sorcerer', 'This indicates abilities from the sorcerer class.'),
|
||||
(102, 5, 'Wizard', 'This indicates abilities from the wizard class.'),
|
||||
(252, 1, 'Additive 1', 'Feats with the additive trait allow you to spend actions to add special substances to bombs or elixirs. You can add only one additive to a single alchemical item, and attempting to add another spoils the item. You can typically use actions with the additive trait only when you’re creating an infused alchemical item, and some can be used only with the Quick Alchemy action. The additive trait is always followed by a level, such as additive 2. An additive adds its level to the level of the alchemical item you’re modifying; the result is the new level of the mixture. The mixture’s item level must be no higher than your advanced alchemy level.'),
|
||||
(253, 1, 'Additive 2', 'Feats with the additive trait allow you to spend actions to add special substances to bombs or elixirs. You can add only one additive to a single alchemical item, and attempting to add another spoils the item. You can typically use actions with the additive trait only when you’re creating an infused alchemical item, and some can be used only with the Quick Alchemy action. The additive trait is always followed by a level, such as additive 2. An additive adds its level to the level of the alchemical item you’re modifying; the result is the new level of the mixture. The mixture’s item level must be no higher than your advanced alchemy level.'),
|
||||
(254, 1, 'Additive 3', 'Feats with the additive trait allow you to spend actions to add special substances to bombs or elixirs. You can add only one additive to a single alchemical item, and attempting to add another spoils the item. You can typically use actions with the additive trait only when you’re creating an infused alchemical item, and some can be used only with the Quick Alchemy action. The additive trait is always followed by a level, such as additive 2. An additive adds its level to the level of the alchemical item you’re modifying; the result is the new level of the mixture. The mixture’s item level must be no higher than your advanced alchemy level.'),
|
||||
|
||||
-- 'Creature type' type traits
|
||||
(103, 6, 'Aberration', 'Aberrations are creatures from beyond the planes or corruptions of the natural order.'),
|
||||
(104, 6, 'Animal', 'An animal is a creature with a relatively low intelligence. It typically doesn’t have an Intelligence ability modifier over –4, can’t speak languages, and can’t be trained in Intelligence-based skills.'),
|
||||
(105, 6, 'Astral', 'Astral creatures are native of the Astral Plane. They can survive the basic environmental effects of the Astral Plane.'),
|
||||
(106, 6, 'Beast', 'A creature similar to an animal but with an Intelligence modifier of –3 or higher is usually a beast. Unlike an animal, a beast might be able to speak and reason.'),
|
||||
(107, 6, 'Celestial', 'Creatures that hail from or have a strong connection to the good-aligned planes are called celestials. Celestials can survive the basic environmental effects of planes in the Outer Sphere.'),
|
||||
(108, 6, 'Construct', 'A construct is an artificial creature empowered by a force other than necromancy. Constructs are often mindless; they are immune to disease, the paralyzed condition, and poison; and they may have Hardness based on the materials used to construct their bodies. Constructs are not living creatures, nor are they undead. When reduced to 0 Hit Points, a construct creature is destroyed.'),
|
||||
(109, 6, 'Dragon', 'Dragons are reptilian creatures, often winged or with the power of flight. Most are able to use a breath weapon and are immune to sleep and paralysis.'),
|
||||
(110, 6, 'Elemental', 'Elementals are creatures directly tied to an element and native to the Elemental Planes. Elementals don’t need to breathe.'),
|
||||
(111, 6, 'Ethereal', 'Ethereal creatures are natives of the Ethereal Plane. They can survive the basic environmental effects of the Ethereal Plane.'),
|
||||
(112, 6, 'Fey', 'Creatures of the First World are called the fey.'),
|
||||
(113, 6, 'Fiend', 'Creatures that hail from or have a strong connection to the evil-aligned planes are called fiends. Fiends can survive the basic environmental effects of planes in the Outer Sphere.'),
|
||||
(114, 6, 'Fungus', 'Fungal creatures have the fungus trait. They are distinct from normal fungi.'),
|
||||
(115, 6, 'Giant', 'Giants are massive humanoid creatures.'),
|
||||
(116, 6, 'Humanoid', 'Humanoid creatures reason and act much like humans. They typically stand upright and have two arms and two legs.'),
|
||||
(117, 6, 'Monitor', 'Creatures that hail from or have a strong connection to the neutrally aligned planes are called monitors. Monitors can survive the basic environmental effects of planes in the Outer Sphere.'),
|
||||
(118, 6, 'Ooze', 'Oozes are creatures with simple anatomies. They tend to have low mental ability scores and immunity to mental effects and precision damage.'),
|
||||
(119, 6, 'Plant', 'Vegetable creatures have the plant trait. They are distinct from normal plants.'),
|
||||
(120, 6, 'Spirit', 'Spirits are ephemeral creatures defined by their spiritual self and often lacking a physical form.'),
|
||||
(121, 6, 'Undead', 'Once living, these creatures were infused after death with negative energy and soul-corrupting evil magic. When reduced to 0 Hit Points, an undead creature is destroyed. Undead creatures are damaged by positive energy, are healed by negative energy, and don’t benefit from healing effects.'),
|
||||
|
||||
-- 'Elemental' type traits
|
||||
(122, 7, 'Air', 'Effects with the air trait either manipulate or conjure air. Those that manipulate air have no effect in a vacuum or an area without air. Creatures with this trait consist primarily of air or have a magical connection to that element.'),
|
||||
(123, 7, 'Earth', 'Effects with the earth trait either manipulate or conjure earth. Those that manipulate earth have no effect in an area without earth. Creatures with this trait consist primarily of earth or have a magical connection to that element.'),
|
||||
(124, 7, 'Fire', 'Effects with the fire trait either conjure or manipulate fire. Those that manipulate fire have no effect in an area without fire. Creatures with this trait consist primarily of fire or have a magical connection to that element.'),
|
||||
(125, 7, 'Water', 'Effects with the water trait either manipulate or conjure water. Those that manipulate water have no effect in an area without water. Creatures with this trait consist primarily of water or have a magical connection to the element.'),
|
||||
|
||||
-- 'Energy' type traits
|
||||
(126, 8, 'Acid', 'Effects with this trait deal acid damage. Creatures with this trait have a magical connection to acid.'),
|
||||
(127, 8, 'Cold', 'Effects with this trait deal cold damage. Creatures with this trait have a connection to magical cold.'),
|
||||
(128, 8, 'Electricity', 'Effects with this trait deal electricity damage. A creature with this trait has a magical connection to electricity.'),
|
||||
(129, 8, 'Fire', 'Effects with this trait deal fire damage. Creatures with this trait have a magical connection to fire.'),
|
||||
(130, 8, 'Force', 'Effects with this trait deal force damage or create objects made of pure magical force.'),
|
||||
(131, 8, 'Negative', 'Effects with this trait heal undead creatures with negative energy, deal negative damage to living creatures, or manipulate negative energy.'),
|
||||
(132, 8, 'Positive', 'Effects with this trait heal living creatures with positive energy, deal positive energy damage to undead, or manipulate positive energy.'),
|
||||
(133, 8, 'Sonic', 'An effect with the sonic trait functions only if it makes sound, meaning it has no effect in an area of silence or in a vacuum. This is different from an auditory spell, which is effective only if the target can hear it. A sonic effect might deal sonic damage.'),
|
||||
|
||||
-- 'Equipment' type traits
|
||||
(134, 9, 'Bomb', 'An alchemical bomb combines volatile alchemical components that explode when the bomb hits a creature or object. Most alchemical bombs deal damage, though some produce other effects.'),
|
||||
(135, 9, 'Elixir', 'Elixirs are alchemical liquids that are used by drinking them.'),
|
||||
(136, 9, 'Invested', 'A character can wear only 10 magical items that have the invested trait. None of the magical effects of the item apply if the character hasn’t invested it, nor can it be activated, though the character still gains any normal benefits from wearing the physical item (like a hat keeping rain off their head).'),
|
||||
(137, 9, 'Mutagen', 'An elixir with the mutagen trait temporarily transmogrifies the subject’s body and alters its mind. A mutagen always conveys one or more beneficial effects paired with one or more detrimental effects. Mutagens are polymorph effects, meaning you can benefit from only one at a time.'),
|
||||
(138, 9, 'Oil', 'Oils are magical gels, ointments, pastes, or salves that are typically applied to an object and are used up in the process.'),
|
||||
(139, 9, 'Potion', 'A potion is a magical liquid activated when you drink it.'),
|
||||
(140, 9, 'Scroll', 'A scroll contains a single spell you can cast without a spell slot.'),
|
||||
(141, 9, 'Snare', 'Traps typically made by rangers, snares follow special rules that allow them to be constructed quickly and used on the battlefield.'),
|
||||
(142, 9, 'Staff', 'This magic item holds spells of a particular theme and allows a spellcaster to cast additional spells by preparing the staff.'),
|
||||
(143, 9, 'Structure', 'An item with the structure trait creates a magical building or other structure when activated. The item must be activated on a plot of land free of other structures. The structure adapts to the natural terrain, adopting the structural requirements for being built there. The structure adjusts around small features such as ponds or spires of rock, but it can’t be created on water or other nonsolid surfaces. If activated on snow, sand dunes, or other soft surfaces with a solid surface underneath, the structure’s foundation (if any) reaches the solid ground. If an item with this trait is activated on a solid but unstable surface, such as a swamp or an area plagued by tremors, roll a DC 3 flat check each day; on a failure, the structure begins to sink or collapse.'),
|
||||
(144, 9, 'Talisman', 'A talisman is a small object affixed to armor, a shield, or a weapon (called the affixed item). You must be wielding or wearing an item to activate a talisman attached to it. Once activated, a talisman burns out permanently.'),
|
||||
(145, 9, 'Wand', 'A wand contains a single spell which you can cast once per day.'),
|
||||
|
||||
-- 'Monster' type traits
|
||||
(146, 10, 'Aeon', 'These monitors are the self-styled defenders of reality. Traditional aeons have dualistic natures and forms, and they hold a dichotomy of interests, though axiomites and inevitables do not. Aeons other than axiomites and inevitables communicate via a strange telepathic hodgepodge of sensory sending called envisioning.'),
|
||||
(147, 10, 'Amphibious', 'An amphibious creature can breathe in water and in air, even outside of its preferred environment, usually indenitely but at least for hours. These creatures often have a swim Speed. Their bludgeoning and slashing unarmed Strikes don’t take the usual –2 penalty for being underwater.'),
|
||||
(148, 10, 'Anadi', 'Anadis are peaceful, reclusive humanoids who live deep within woodlands, jungles, and other untamed areas of wilderness. Their natural forms resemble humanoid spiders covered in beautiful and distinctive markings of varying colors.'),
|
||||
(149, 10, 'Angel', 'This family of celestials is native to the plane of Nirvana. Most angels are neutral good, have darkvision, and have a weakness to evil damage.'),
|
||||
(150, 10, 'Aquatic', 'Aquatic creatures are at home underwater. Their bludgeoning and slashing unarmed Strikes don’t take the usual –2 penalty for being underwater. Aquatic creatures can breathe water but not air.'),
|
||||
(151, 10, 'Archon', 'Members of this family of celestials are the protectors of Heaven and are lawful good. They have darkvision and a weakness to evil damage.'),
|
||||
(152, 10, 'Azata', 'This family of celestials is native to Elysium. They are typically chaotic good and have darkvision and a weakness to evil and cold iron.'),
|
||||
(153, 10, 'Boggard', 'Boggards are frog-like humanoids. They typically have darkvision.'),
|
||||
(154, 10, 'Brutal', 'undefined'),
|
||||
(155, 10, 'Caligni', 'These subterranean people have darkvision, and some have powers to create darkness.'),
|
||||
(156, 10, 'Catfolk', 'Catfolk are humanoids with feline features.'),
|
||||
(157, 10, 'Changeling', 'These humanoids are the children of hags and members of other humanoid ancestries.'),
|
||||
(158, 10, 'Daemon', 'A family of fiends spawned on the desolate plane of Abaddon, most daemons are neutral evil. They typically have darkvision and weakness to good damage.'),
|
||||
(159, 10, 'Demon', 'A family of fiends, demons hail from or trace their origins to the Abyss. Most are irredeemably chaotic evil and have darkvision.'),
|
||||
(160, 10, 'Dero', 'This family of humanoids are the descendants of fey creatures that fell into darkness and confusion after being abandoned in the Darklands. They are immune to confusion and vulnerable to sunlight.'),
|
||||
(161, 10, 'Devil', 'A family of fiends from Hell, most devils are irredeemably lawful evil. They typically have greater darkvision, immunity to fire, and telepathy.'),
|
||||
(162, 10, 'Dhampir', 'These humanoids are the immortal offspring of vampires and members of other ancestries.'),
|
||||
(163, 10, 'Dinosaur', 'These reptiles have survived from prehistoric times.'),
|
||||
(164, 10, 'Drow', 'Subterranean kin of the elves, drow typically have darkvision and inborn magical abilities.'),
|
||||
(165, 10, 'Duergar', 'Subterranean kin of the dwarves, duergar typically have darkvision and immunity to poison. They are not easily fooled by illusions.'),
|
||||
(166, 10, 'Genie', 'The diverse families of genies hold positions of prominence on the Elemental Planes. They have powerful magical abilities.'),
|
||||
(167, 10, 'Ghost', 'Lost souls that haunt the world as incorporeal undead are called ghosts.'),
|
||||
(168, 10, 'Ghoul', 'Ghouls are vile undead creatures that feast on flesh.'),
|
||||
(169, 10, 'Gnoll', 'Gnolls are humanoids that resemble hyenas.'),
|
||||
(170, 10, 'Golem', 'Golems are a special type of construct. Golems are immune to almost all magic, but most have a weakness to certain spells.'),
|
||||
(171, 10, 'Gremlin', 'Cruel and mischievous fey, gremlins have acclimated to life on the Material Plane.'),
|
||||
(172, 10, 'Hag', 'These creatures are malevolent spellcasters who form covens.'),
|
||||
(173, 10, 'Inevitable', 'These constructed aeons were created by the axiomites. Each type of inevitable is dedicated to a specific task. Most inevitables have weakness to chaotic damage.'),
|
||||
(174, 10, 'Kobold', 'Kobolds are reptilian humanoids who are usually Small and typically have darkvision.'),
|
||||
(175, 10, 'Leshy', 'Leshys are small plant creatures, roughly humanoid in form.'),
|
||||
(176, 10, 'Lizardfolk', 'Lizardfolk are a family of reptilian humanoids.'),
|
||||
(177, 10, 'Merfolk', 'These aquatic humanoids have an upper body similar to a human and a lower body similar to a fish.'),
|
||||
(178, 10, 'Mindless', 'A mindless creature has either programmed or rudimentary mental attributes. Most, if not all, of their mental ability modifiers are –5. They are immune to all mental effects.'),
|
||||
(179, 10, 'Mummy', 'A mummy is an undead creature created from a preserved corpse.'),
|
||||
(180, 10, 'Mutant', 'The monster has mutated or evolved, granting it unusual benefits, drawbacks, or both.'),
|
||||
(181, 10, 'Olfactory', 'undefined'),
|
||||
(182, 10, 'Orc', 'A creature with this trait is a member of the orc ancestry. These green-skinned people tend to have darkvision. An ability with this trait can be used or selected only by orcs. An item with this trait is created and used by orcs.'),
|
||||
(183, 10, 'Rakshasa', 'Reincarnations of evil souls, rakshasas are fiends that live on the Material Plane.'),
|
||||
(184, 10, 'Ratfolk', 'Ratfolk are humanoids who resemble rats.'),
|
||||
(185, 10, 'Sea Devil', 'Evil ocean-dwelling humanoids, sea devils usually have darkvision and wavesense.'),
|
||||
(186, 10, 'Skeleton', 'This undead is made by animating a dead creature’s skeleton with negative energy.'),
|
||||
(187, 10, 'Soulbound', 'These constructs are mentally augmented by a fragment of a once-living creature’s soul.'),
|
||||
(188, 10, 'Sprite', 'A family of diminutive winged fey with a strong connection to primal magic.'),
|
||||
(189, 10, 'Swarm', 'A swarm is a mass or cloud of creatures that functions as one monster. Its size entry gives the size of the entire mass, though for most swarms the individual creatures that make up that mass are Tiny. A swarm can occupy the same space as other creatures, and must do so in order to use its damaging action. A swarm typically has weakness to effects that deal damage over an area (like area spells and splash weapons).'),
|
||||
(190, 10, 'Tengu', 'Tengu are humanoids who resemble birds.'),
|
||||
(191, 10, 'Troll', 'Trolls are giant, brutish creatures and are well known for their ability to regenerate.'),
|
||||
(192, 10, 'Vampire', 'Undead creatures who thirst for blood, vampires are notoriously versatile and hard to destroy.'),
|
||||
(193, 10, 'Werecreature', 'These shapechanging creatures either are naturally able to shift between animal, humanoid, and hybrid forms or are afflicted with a curse that forces them to shift involuntarily.'),
|
||||
(194, 10, 'Xulgath', 'These subterranean reptilian creatures tend to have darkvision and smell awful.'),
|
||||
(195, 10, 'Zombie', 'These undead are mindless rotting corpses that hunger for living flesh.'),
|
||||
|
||||
-- 'Poison' type traits
|
||||
(196, 11, 'Contact', 'This poison is delivered by contact with the skin.'),
|
||||
(197, 11, 'Ingested', 'This poison is delivered when drunk or eaten.'),
|
||||
(198, 11, 'Inhaled', 'This poison is delivered when breathed in.'),
|
||||
(199, 11, 'Injury', 'This poison is delivered by damaging the recipient.'),
|
||||
(200, 11, 'Poison', 'An effect with this trait delivers a poison or deals poison damage. An item with this trait is poisonous and might cause an affliction.'),
|
||||
|
||||
-- 'Rarity' type traits
|
||||
(201, 12, 'Common', 'Anything that doesn’t list another rarity trait (uncommon, rare, or unique) automatically has the common trait. This rarity indicates that an ability, item, or spell is available to all players who meet the prerequisites for it. A creature of this rarity is generally known and can be summoned with the appropriate '),
|
||||
(202, 12, 'Rare', 'This rarity indicates that a rules element is very difficult to find in the game world. A rare feat, spell, item or the like is available to players only if the GM decides to include it in the game, typically through discovery during play. Creatures with this trait are rare. They typically can’t be summoned. The DC of Recall Knowledge checks related to these creatures is increased by 5.'),
|
||||
(203, 12, 'Uncommon', 'Something of uncommon rarity requires special training or comes from a particular culture or part of the world. Some character choices give access to uncommon options, and the GM can choose to allow access for anyone. Less is known about uncommon creatures than common creatures. They typically can’t be summoned. The DC of Recall Knowledge checks related to these creature is increased by 2.'),
|
||||
(204, 12, 'Unique', 'A rules element with this trait is one-of-a-kind. The DC of Recall Knowledge checks related to creatures with this trait is increased by 10.'),
|
||||
|
||||
-- 'School' type traits
|
||||
(205, 13, 'Abjuration', 'Effects and magic items with this trait are associated with the abjuration school of magic, typically involving protection or wards.'),
|
||||
(206, 13, 'Conjuration', 'Effects and magic items with this trait are associated with the conjuration school of magic, typically involving summoning, creation, teleportation, or moving things from place to place.'),
|
||||
(207, 13, 'Divination', 'The divination school of magic typically involves obtaining or transferring information, or predicting events.'),
|
||||
(208, 13, 'Enchantment', 'Effects and magic items with this trait are associated with the enchantment school of magic, typically involving mind control, emotion alteration, and other mental effects.'),
|
||||
(209, 13, 'Evocation', 'Effects and magic items with this trait are associated with the evocation school of magic, typically involving energy and elemental forces.'),
|
||||
(210, 13, 'Illusion', 'Effects and magic items with this trait are associated with the illusion school of magic, typically involving false sensory stimuli.'),
|
||||
(211, 13, 'Necromancy', 'Effects and magic items with this trait are associated with the necromancy school of magic, typically involving forces of life and death.'),
|
||||
(212, 13, 'Transmutation', 'Effects and magic items with this trait are associated with the transmutation school of magic, typically changing something’s form.'),
|
||||
|
||||
-- 'Tradition' type traits
|
||||
(213, 14, 'Arcane', 'This magic comes from the arcane tradition, which is built on logic and rationality. Anything with this trait is magical.'),
|
||||
(214, 14, 'Divine', 'This magic comes from the divine tradition, drawing power from deities or similar sources. Anything with this trait is magical.'),
|
||||
(215, 14, 'Occult', 'This magic comes from the occult tradition, calling upon bizarre and ephemeral mysteries. Anything with this trait is magical.'),
|
||||
(216, 14, 'Primal', 'This magic comes from the primal tradition, connecting to the natural world and instinct. Anything with this trait is magical.'),
|
||||
|
||||
-- 'Weapon' traits
|
||||
(217, 15, 'Agile', 'The multiple attack penalty you take with this weapon on the second attack on your turn is –4 instead of –5, and –8 instead of –10 on the third and subsequent attacks in the turn.'),
|
||||
(218, 15, 'Attached', 'An attached weapon must be combined with another piece of gear to be used. The trait lists what type of item the weapon must be attached to. You must be wielding or wearing the item the weapon is attached to in order to attack with it. For example, shield spikes are attached to a shield, allowing you to attack with the spikes instead of a shield bash, but only if you’re wielding the shield. An attached weapon is usually bolted onto or built into the item it’s attached to, and typically an item can have only one weapon attached to it. An attached weapon can be affixed to an item with 10 minutes of work and a successful DC 10 Crafting check; this includes the time needed to remove the weapon from a previous item, if necessary. If an item is destroyed, its attached weapon can usually be salvaged.'),
|
||||
(219, 15, 'Backstabber', 'When you hit a flat-footed creature, this weapon deals 1 precision damage in addition to its normal damage. The precision damage increases to 2 if the weapon is a '),
|
||||
(220, 15, 'Backswing', 'You can use the momentum from a missed attack with this weapon to lead into your next attack. After missing with this weapon on your turn, you gain a +1 circumstance bonus to your next attack with this weapon before the end of your turn.'),
|
||||
(221, 15, 'Deadly', 'On a critical hit, the weapon adds a weapon damage die of the listed size. Roll this after doubling the weapon’s damage. This increases to two dice if the weapon has a '),
|
||||
(222, 15, 'Disarm', 'You can use this weapon to Disarm with the Athletics skill even if you don’t have a free hand. This uses the weapon’s reach (if different from your own) and adds the weapon’s item bonus to attack rolls (if any) as an item bonus to the Athletics check. If you critically fail a check to Disarm using the weapon, you can drop the weapon to take the effects of a failure instead of a critical failure. On a critical success, you still need a free hand if you want to take the item.'),
|
||||
(223, 15, 'Dwarf', 'Dwarves craft and use these weapons.'),
|
||||
(224, 15, 'Elf', 'Elves craft and use these weapons.'),
|
||||
(225, 15, 'Fatal', 'The fatal trait includes a die size. On a critical hit, the weapon’s damage die increases to that die size instead of the normal die size, and the weapon adds one additional damage die of the listed size.'),
|
||||
(226, 15, 'Finesse', 'You can use your Dexterity modifier instead of your Strength modifier on attack rolls using this melee weapon. You still use your Strength modifier when calculating damage.'),
|
||||
(227, 15, 'Forceful', 'This weapon becomes more dangerous as you build momentum. When you attack with it more than once on your turn, the second attack gains a circumstance bonus to damage equal to the number of weapon damage dice, and each subsequent attack gains a circumstance bonus to damage equal to double the number of weapon damage dice.'),
|
||||
(228, 15, 'Free-Hand', 'This weapon doesn’t take up your hand, usually because it is built into your armor. A free-hand weapon can’t be Disarmed. You can use the hand covered by your free-hand weapon to wield other items, perform manipulate actions, and so on. You can’t attack with a free-hand weapon if you’re wielding anything in that hand or otherwise using that hand. When you’re not wielding anything and not otherwise using the hand, you can use abilities that require you to have a hand free as well as those that require you to be wielding a weapon in that hand. Each of your hands can have only one free-hand weapon on it.'),
|
||||
(229, 15, 'Gnome', 'Gnomes craft and use these weapons.'),
|
||||
(230, 15, 'Goblin', 'Goblins craft and use these weapons.'),
|
||||
(231, 15, 'Grapple', 'You can use this weapon to Grapple with the Athletics skill even if you don’t have a free hand. This uses the weapon’s reach (if different from your own) and adds the weapon’s item bonus to attack rolls as an item bonus to the Athletics check. If you critically fail a check to Grapple using the weapon, you can drop the weapon to take the effects of a failure instead of a critical failure.'),
|
||||
(232, 15, 'Halfling', 'Halflings craft and use these weapons.'),
|
||||
(233, 15, 'Jousting', 'The weapon is suited for mounted combat with a harness or similar means. When mounted, if you moved at least 10 feet on the action before your attack, add a circumstance bonus to damage for that attack equal to the number of damage dice for the weapon. In addition, while mounted, you can wield the weapon in one hand, changing the damage die to the listed value.'),
|
||||
(234, 15, 'Monk', 'Many monks learn to use these weapons.'),
|
||||
(235, 15, 'Nonlethal', 'Attacks with this weapon are nonlethal, and are used to knock creatures unconscious instead of kill them. You can use a nonlethal weapon to make a lethal attack with a –2 circumstance penalty.'),
|
||||
(236, 15, 'Orc', 'Orcs craft and use these weapons.'),
|
||||
(237, 15, 'Parry', 'This weapon can be used defensively to block attacks. While wielding this weapon, if your proficiency with it is trained or better, you can spend an Interact action to position your weapon defensively, gaining a +1 circumstance bonus to AC until the start of your next turn.'),
|
||||
(238, 15, 'Propulsive', 'You add half your Strength modifier (if positive) to damage rolls with a propulsive ranged weapon. If you have a negative Strength modifier, you add your full Strength modifier instead.'),
|
||||
(239, 15, 'Range', 'These attacks will either list a finite range or a range increment, which follows the normal rules for range increments.'),
|
||||
(240, 15, 'Ranged Trip', 'This weapon can be used to Trip with the '),
|
||||
(241, 15, 'Reach', 'Natural attacks with this trait can be used to attack creatures up to the listed distance away instead of only adjacent creatures.'),
|
||||
(242, 15, 'Shove', 'You can use this weapon to Shove with the Athletics skill even if you don’t have a free hand. This uses the weapon’s reach (if different from your own) and adds the weapon’s item bonus to attack rolls as an item bonus to the Athletics check. If you critically fail a check to Shove using the weapon, you can drop the weapon to take the effects of a failure instead of a critical failure.'),
|
||||
(243, 15, 'Sweep', 'This weapon makes wide sweeping or spinning attacks, making it easier to attack multiple enemies. When you attack with this weapon, you gain a +1 circumstance bonus to your attack roll if you already attempted to attack a different target this turn using this weapon.'),
|
||||
(244, 15, 'Tethered', 'This weapon is attached to a length of rope or chain that allows you to retrieve it after it has left your hand. If you have a free hand while wielding this weapon, you can use an '),
|
||||
(245, 15, 'Thrown', 'You can throw this weapon as a ranged attack. A thrown weapon adds your Strength modifier to damage just like a melee weapon does. When this trait appears on a melee weapon, it also includes the range increment. Ranged weapons with this trait use the range increment specified in the weapon’s Range entry.'),
|
||||
(246, 15, 'Trip', 'You can use this weapon to Trip with the Athletics skill even if you don’t have a free hand. This uses the weapon’s reach (if different from your own) and adds the weapon’s item bonus to attack rolls as an item bonus to the Athletics check. If you critically fail a check to Trip using the weapon, you can drop the weapon to take the effects of a failure instead of a critical failure.'),
|
||||
(247, 15, 'Twin', 'These weapons are used as a pair, complementing each other. When you attack with a twin weapon, you add a circumstance bonus to the damage roll equal to the weapon’s number of damage dice if you have previously attacked with a different weapon of the same type this turn. The weapons must be of the same type to benefit from this trait, but they don’t need to have the same runes.'),
|
||||
(248, 15, 'Two-Hand', 'This weapon can be wielded with two hands. Doing so changes its weapon damage die to the indicated value. This change applies to all the weapon’s damage dice, such as those from '),
|
||||
(249, 15, 'Unarmed', 'An unarmed attack uses your body rather than a manufactured weapon. An unarmed attack isn’t a weapon, though it’s categorized with weapons for weapon groups, and it might have weapon traits. Since it’s part of your body, an unarmed attack can’t be Disarmed. It also doesn’t take up a hand, though a fist or other grasping appendage follows the same rules as a free-hand weapon.'),
|
||||
(250, 15, 'Versatile', 'A versatile weapon can be used to deal a different type of damage than that listed in the Damage entry. This trait indicates the alternate damage type. For instance, a piercing weapon that is versatile S can be used to deal piercing or slashing damage. You choose the damage type each time you make an attack.'),
|
||||
(251, 15, 'Volley', 'This ranged weapon is less effective at close distances. Your attacks against targets that are at a distance within the range listed take a –2 penalty.'),
|
||||
(255, 15, 'Thrown 10ft.', 'You can throw this weapon as a ranged attack. A thrown weapon adds your Strength modifier to damage just like a melee weapon does. When this trait appears on a melee weapon, it also includes the range increment. Ranged weapons with this trait use the range increment specified in the weapon’s Range entry.'),
|
||||
(256, 15, 'Thrown 20ft.', 'You can throw this weapon as a ranged attack. A thrown weapon adds your Strength modifier to damage just like a melee weapon does. When this trait appears on a melee weapon, it also includes the range increment. Ranged weapons with this trait use the range increment specified in the weapon’s Range entry.'),
|
||||
(257, 15, 'Deadly d8', 'On a critical hit, the weapon adds a weapon damage die of the listed size. Roll this after doubling the weapon’s damage. This increases to two dice if the weapon has a '),
|
||||
(258, 15, 'Deadly d10', 'On a critical hit, the weapon adds a weapon damage die of the listed size. Roll this after doubling the weapon’s damage. This increases to two dice if the weapon has a '),
|
||||
(259, 15, 'Versatile S', 'A versatile weapon can be used to deal a different type of damage than that listed in the Damage entry. This trait indicates the alternate damage type. For instance, a piercing weapon that is versatile S can be used to deal piercing or slashing damage. You choose the damage type each time you make an attack.'),
|
||||
(260, 15, 'Versatile P', 'A versatile weapon can be used to deal a different type of damage than that listed in the Damage entry. This trait indicates the alternate damage type. For instance, a piercing weapon that is versatile S can be used to deal piercing or slashing damage. You choose the damage type each time you make an attack.'),
|
||||
(261, 15, 'Versatile B', 'A versatile weapon can be used to deal a different type of damage than that listed in the Damage entry. This trait indicates the alternate damage type. For instance, a piercing weapon that is versatile S can be used to deal piercing or slashing damage. You choose the damage type each time you make an attack.'),
|
||||
(262, 15, 'Two-Hand d8', 'This weapon can be wielded with two hands. Doing so changes its weapon damage die to the indicated value. This change applies to all the weapon’s damage dice, such as those from '),
|
||||
(263, 15, 'Two-Hand d10', 'This weapon can be wielded with two hands. Doing so changes its weapon damage die to the indicated value. This change applies to all the weapon’s damage dice, such as those from '),
|
||||
(264, 15, 'Two-Hand d12', 'This weapon can be wielded with two hands. Doing so changes its weapon damage die to the indicated value. This change applies to all the weapon’s damage dice, such as those from '),
|
||||
(265, 15, 'Fatal d8', 'The fatal trait includes a die size. On a critical hit, the weapon’s damage die increases to that die size instead of the normal die size, and the weapon adds one additional damage die of the listed size.'),
|
||||
(266, 15, 'Fatal d10', 'The fatal trait includes a die size. On a critical hit, the weapon’s damage die increases to that die size instead of the normal die size, and the weapon adds one additional damage die of the listed size.'),
|
||||
(267, 15, 'Fatal d12', 'The fatal trait includes a die size. On a critical hit, the weapon’s damage die increases to that die size instead of the normal die size, and the weapon adds one additional damage die of the listed size.'),
|
||||
(268, 15, 'Jousting d6', 'The weapon is suited for mounted combat with a harness or similar means. When mounted, if you moved at least 10 feet on the action before your attack, add a circumstance bonus to damage for that attack equal to the number of damage dice for the weapon. In addition, while mounted, you can wield the weapon in one hand, changing the damage die to the listed value.'),
|
||||
(269, 15, 'Volley 30 ft.', 'This ranged weapon is less effective at close distances. Your attacks against targets that are at a distance within the range listed take a –2 penalty.');
|
||||
@@ -0,0 +1,64 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
|
||||
INSERT INTO triggers (
|
||||
triggers_id,
|
||||
triggers_descr
|
||||
)
|
||||
VALUES
|
||||
(1, 'An ally ends a move action adjacent to you.'),
|
||||
(2, 'You fail a skill check or saving throw.'),
|
||||
(3, 'You attempt a check using a skill you’re untrained in.'),
|
||||
(4, 'You would be reduced to 0 Hit Points but not immediately killed.'),
|
||||
(5, 'You attempt a saving throw against a spell or magical effect, before rolling.'),
|
||||
(6, 'You bring a foe to 0 Hit Points.'),
|
||||
(7, 'You use Quick Alchemy to craft an alchemical bomb with a level at least 1 lower than your advanced alchemy level.'),
|
||||
(8, 'You use Quick Alchemy to craft an alchemical item that has the elixer trait and is at least 2 levels lower than your advanced alchemy level.'),
|
||||
(9, 'You use Quick Alchemy to craft an alchemical bomb that is at least 2 levels lower than your advanced alchemy level.'),
|
||||
(10, 'You craft an elixer of life using Quick Alchemy, and that elixir is at least 2 levels lower than your advanced alchemy level.'),
|
||||
(11, 'You craft an alchemical bomb using Quick Alchemy that’s at least 2 levels lower than your advanced alchemy level.'),
|
||||
(12, 'A foe within reach attempts to move away from you.'),
|
||||
(13, 'You take damage and are capable of entering a rage.'),
|
||||
(14, 'A creature within your reach uses a manipulate action or a move action, makes a ranged attack, or leaves a square during a move action it’s using.'),
|
||||
(15, 'Your melee Strike kills a creature or knocks it unconscious, and another foe is adjacent to that creature.'),
|
||||
(16, 'A creature within your reach succeeds or critically succeeds at an attack against you.'),
|
||||
(17, 'Your turn begins, and you are at half or fewer Hit Points.'),
|
||||
(18, 'You fail or critically fail an attack roll or Will save.'),
|
||||
(19, 'You attempt a save against a spell, before you roll.'),
|
||||
(20, 'A foe’s attack against an ally matches the trigger for both your Shield Block reaction and your champion’s reaction.'),
|
||||
(21, 'You finish Casting a Spell using one of your divine spell slots on your turn.'),
|
||||
(22, 'You critically hit a creature that is not on its home plane.'),
|
||||
(23, 'An opponent adjacent to you critically hits you with a melee weapon or melee unarmed attack.'),
|
||||
(24, 'An enemy hits you with a melee Strike.'),
|
||||
(25, 'You use the Shield Block reaction, and the opponent that triggered Shield Block is adjacent to you and is your size or smaller.'),
|
||||
(26, 'An ally within your melee reach is hit by an attack, you can see the attacker, and the ally gaining a +2 circumstance bonus to AC would turn the critical hit into a hit or the hit into a miss.'),
|
||||
(27, 'A creature within your reach critically fails a Strike against you.'),
|
||||
(28, 'An opponent casting a spell that targets you critically fails a speel attack roll against your AC.'),
|
||||
(29, 'You complete the last action on your turn, and your turn has not ended yet.'),
|
||||
(30, 'You roll initiative.'),
|
||||
(31, 'You are the target of a physical ranged attack.'),
|
||||
(32, 'A creature within your reach uses a move action or leaves a square during a move action it’s using.'),
|
||||
(33, 'You are targeted with a melee attack by an attacker you can see.'),
|
||||
(34, 'Your turn ends and you have a status penalty to your Speed or are immobilized or slowed.'),
|
||||
(35, 'An enemy’s attack hits you or you fail a saving throw against an enemy’s ability.'),
|
||||
(36, 'Your hunted prey is within your reach, and it uses a manipulate action, uses a move action, or leaves a square during a move action it’s using.'),
|
||||
(37, 'You are about to roll a Perception or Survival check for initiative.'),
|
||||
(38, 'You fail a check to Seek.'),
|
||||
(39, 'A creature targets you with an attack and you can see the attacker.'),
|
||||
(40, 'You reduce an enemy to 0 hit points.'),
|
||||
(41, 'An adjacent foe moves away from you, and you can reach at least one space adjacent to the foe with a Stride action.'),
|
||||
(42, 'A trap within your reach is triggered.'),
|
||||
(43, 'A creature within your melee reach is hit by a melee attack from one of your allies.'),
|
||||
(44, 'The attack roll for a Strike targeting you fails or critically fails.'),
|
||||
(45, 'An adjacent enemy begins to use a reaction.'),
|
||||
(46, 'A physical attack would reduce you to 0 Hit Points.'),
|
||||
(47, 'Your turn ends.'),
|
||||
(48, 'You specify the trigger when your daily preparations(see Requirements).'),
|
||||
(49, 'You successfully use Stealth to Hide and become hidden from all of your current foes, or use Stealth to Sneak and become undetected to all your current foes.'),
|
||||
(50, 'You would be hit by an attack or targeted by an effect, or you are within an effect’s area.'),
|
||||
(51, 'A creature casts a spell that you have in your repertoire.'),
|
||||
(52, 'A creature Casts a Spell that you have prepared.'),
|
||||
(53, 'A creature within line of sight casts a spell that you don’t have prepared or in your spell repertoire, or a trap or similar object casts such a spell. You must be aware of the casting.'),
|
||||
(54, 'While you have your shield raised, you would take damage from a physical attack.');
|
||||
@@ -0,0 +1,356 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
|
||||
-- TODO Insert descriptions from pgs 283-84
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
INSERT INTO weapongroups VALUES(1,1,'283','Axe','TODO descr from pg 283-84');
|
||||
INSERT INTO weapongroups VALUES(2,1,'284','Bomb','TODO descr from pg 283-84');
|
||||
INSERT INTO weapongroups VALUES(3,1,'284','Bow','TODO descr from pg 283-84');
|
||||
INSERT INTO weapongroups VALUES(4,1,'284','Brawling','TODO descr from pg 283-84');
|
||||
INSERT INTO weapongroups VALUES(5,1,'284','Club','TODO descr from pg 283-84');
|
||||
INSERT INTO weapongroups VALUES(6,1,'284','Dart','TODO descr from pg 283-84');
|
||||
INSERT INTO weapongroups VALUES(7,1,'284','Flail','TODO descr from pg 283-84');
|
||||
INSERT INTO weapongroups VALUES(8,1,'284','Hammer','TODO descr from pg 283-84');
|
||||
INSERT INTO weapongroups VALUES(9,1,'284','Knife','TODO descr from pg 283-84');
|
||||
INSERT INTO weapongroups VALUES(10,1,'284','Pick','TODO descr from pg 283-84');
|
||||
INSERT INTO weapongroups VALUES(11,1,'284','Polearm','TODO descr from pg 283-84');
|
||||
INSERT INTO weapongroups VALUES(12,1,'284','Shield','TODO descr from pg 283-84');
|
||||
INSERT INTO weapongroups VALUES(13,1,'284','Sling','TODO descr from pg 283-84');
|
||||
INSERT INTO weapongroups VALUES(14,1,'284','Spear','TODO descr from pg 283-84');
|
||||
INSERT INTO weapongroups VALUES(15,1,'284','Sword','TODO descr from pg 283-84');
|
||||
COMMIT;
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
INSERT INTO weaponcategories VALUES(1, 'Unarmed');
|
||||
INSERT INTO weaponcategories VALUES(2, 'Simple');
|
||||
INSERT INTO weaponcategories VALUES(3, 'Martial');
|
||||
INSERT INTO weaponcategories VALUES(4, 'Advanced');
|
||||
COMMIT;
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
INSERT INTO weapons VALUES(0,1,'280',1,4,'0',4,1,'0','1',NULL,NULL,'Fist','Nethys Note: no description was provided for this item');
|
||||
INSERT INTO weapons VALUES(1,1,'280',2,9,'2',4,2,'0.1','1',NULL,NULL,'Clan Dagger','This broad dagger is carried by dwarves as a weapon, tool, and designation of clan. Losing or having to surrender a clan dagger is considered a mark of embarrassment to most dwarves.');
|
||||
INSERT INTO weapons VALUES(2,1,'280',2,5,'0',6,1,'1','1',NULL,NULL,'Club','This is a piece of stout wood shaped or repurposed to bludgeon an enemy. Clubs can be intricately carved pieces of martial art or as simple as a tree branch or piece of wood.');
|
||||
INSERT INTO weapons VALUES(3,1,'280',2,9,'0.2',4,2,'0.1','1',NULL,NULL,'Dagger','This small, bladed weapon is held in one hand and used to stab a creature in close combat. It can also be thrown.');
|
||||
INSERT INTO weapons VALUES(4,1,'280',2,4,'0.2',4,1,'0.1','1',NULL,NULL,'Gauntlet','A pair of these metal gloves comes with full plate, half plate, and splint armor; they can also be purchased separately and worn with other types of armor. They not only protect your hands but also transform your hands into lethal weapons.');
|
||||
INSERT INTO weapons VALUES(5,1,'280',2,9,'0.3',4,2,'0.1','1',NULL,NULL,'Katar','Also known as punching daggers, katars are characterized by their H-shaped hand grip that allows the blade to jut out from the knuckles.');
|
||||
INSERT INTO weapons VALUES(6,1,'280',2,5,'0.4',4,1,'0.1','1',NULL,NULL,'Light Mace','A light mace has a short wooden or metal shaft ending with a dense metal head. Used much like a club, it delivers heavy bludgeoning blows, but with extra power derived from the head’s metal ridges or spikes.');
|
||||
INSERT INTO weapons VALUES(7,1,'280',2,14,'0.5',8,2,'2','2',NULL,NULL,'Longspear','This very long spear, sometimes called a pike, is purely for thrusting rather than throwing. Used by many soldiers and city watch for crowd control and defense against charging enemies, it must be wielded with two hands.');
|
||||
INSERT INTO weapons VALUES(8,1,'280',2,5,'1',6,1,'1','1',NULL,NULL,'Mace','With a stout haft and a heavy metal head, a mace is sturdy and allows its wielder to deliver powerful blows and dent armor.');
|
||||
INSERT INTO weapons VALUES(9,1,'280',2,5,'1',6,1,'1','1',NULL,NULL,'Morningstar','This weapon has a short shaft ending in a metal ball studded with spikes.');
|
||||
INSERT INTO weapons VALUES(10,1,'280',2,9,'0.2',4,3,'0.1','1',NULL,NULL,'Sickle','Originally a farming tool used for reaping grain, this one-handed weapon has a short wooden handle ending in a curved blade, sometimes sharpened on both sides.');
|
||||
INSERT INTO weapons VALUES(11,1,'280',2,14,'0.1',6,2,'1','1',NULL,NULL,'Spear','A long metal shaft ending with a metal spike, a spear can be used one-handed as a melee weapon and can be thrown.');
|
||||
INSERT INTO weapons VALUES(12,1,'280',2,4,'0.3',4,2,'0.1','1',NULL,NULL,'Spiked Gauntlet','Providing the same defensive function as a standard gauntlet, this version has a group of spikes protruding from the knuckles to deliver piercing damage with a punch.');
|
||||
INSERT INTO weapons VALUES(13,1,'280',2,5,'0',4,1,'1','1',NULL,NULL,'Staff','This long piece of wood can aid in walking and deliver a mighty blow.');
|
||||
INSERT INTO weapons VALUES(14,1,'280',3,15,'4',8,3,'1','1',NULL,NULL,'Bastard Sword','This broad-bladed sword, sometimes called the hand‑and‑a‑half sword, has a longer grip so it can be held in one hand or used with two hands to provide extra piercing or slashing power.');
|
||||
INSERT INTO weapons VALUES(15,1,'280',3,1,'0.1',8,3,'1','1',NULL,NULL,'Battle Axe','These axes are designed explicitly as weapons, rather than tools. They typically weigh less, with a shaft reinforced with metal bands or bolts, and have a sharper blade, making them ideal for chopping limbs rather than wood.');
|
||||
INSERT INTO weapons VALUES(16,1,'280',3,5,'0.2',8,1,'2','2',NULL,NULL,'Bo Staff','This strong but slender staff is tapered at the ends and well balanced. It’s designed to be an offensive and defensive weapon.');
|
||||
INSERT INTO weapons VALUES(17,1,'280',3,15,'0.1',6,3,'0.1','1',NULL,NULL,'Dogslicer','This short, curved, and crude makeshift blade often has holes drilled into it to reduce its weight. It’s a favored weapon of goblins.');
|
||||
INSERT INTO weapons VALUES(18,1,'281',3,15,'4',8,3,'2','2',NULL,NULL,'Elven Curve Blade','Essentially a longer version of the scimitar, this traditional elven weapon has a thinner blade than its cousin.');
|
||||
INSERT INTO weapons VALUES(19,1,'280',3,15,'3',10,3,'2','2',NULL,NULL,'Falchion','This weapon is a heavier, two-handed version of the curved-bladed scimitar. It is weighted toward the blade’s end, making it a powerful slashing weapon.');
|
||||
INSERT INTO weapons VALUES(20,1,'281',3,14,'1',4,2,'0.1','1',NULL,NULL,'Filcher''s Fork','This halfling weapon looks like a long, two-pronged fork and is used as both a weapon and a cooking implement.');
|
||||
INSERT INTO weapons VALUES(21,1,'280',3,7,'1',6,1,'1','1',NULL,NULL,'Flail','This weapon consists of a wooden handle attached to a spiked ball or cylinder by a chain, rope, or strap of leather.');
|
||||
INSERT INTO weapons VALUES(22,1,'280',3,11,'2',8,3,'2','2',NULL,NULL,'Glaive','This polearm consists of a long, single-edged blade on the end of a 7-foot pole. It is extremely effective at delivering lethal cuts at a distance.');
|
||||
INSERT INTO weapons VALUES(23,1,'281',3,8,'2',6,1,'1','1',NULL,NULL,'Gnome Hooked Hammer','This gnome tool and weapon features a hammer at one end and a curved pick on the other. It’s such a strange and awkward weapon that others think the gnomes are slightly erratic for using it.');
|
||||
INSERT INTO weapons VALUES(24,1,'280',3,1,'1',12,3,'2','2',NULL,NULL,'Greataxe','This large battle axe is too heavy to wield with only one hand. Many greataxes incorporate two blades, and they are often “bearded,” having a hook at the bottom to increase the strength of their chopping power.');
|
||||
INSERT INTO weapons VALUES(25,1,'280',3,5,'1',10,1,'2','2',NULL,NULL,'Greatclub','While many greatclubs are intricately carved, others are little more than a sturdy tree branch. These massive clubs are too heavy to wield with only one hand.');
|
||||
INSERT INTO weapons VALUES(26,1,'280',3,10,'2',10,2,'2','2',NULL,NULL,'Greatpick','This pick has a longer handle and broader head than a regular pick. It is too heavy to wield in one hand.');
|
||||
INSERT INTO weapons VALUES(27,1,'280',3,15,'2',12,3,'2','2',NULL,NULL,'Greatsword','This immense two-handed sword is nearly as tall as its wielder. Its lower blade is often somewhat dulled to allow it to be gripped for extra leverage in close-quarter fights.');
|
||||
INSERT INTO weapons VALUES(28,1,'280',3,11,'2',10,3,'2','2',NULL,NULL,'Guisarme','This polearm bears a long, often one‑sided, curved blade with a hook protruding from the blunt side of the blade, which can allow its wielder to trip opponents at a distance. Its shaft is usually 8 feet long.');
|
||||
INSERT INTO weapons VALUES(29,1,'280',3,11,'2',10,2,'2','2',NULL,NULL,'Halberd','This polearm has a relatively short, 5-foot shaft. The business end is a long spike with an axe blade attached.');
|
||||
INSERT INTO weapons VALUES(30,1,'280',3,1,'0.4',6,3,'0.1','1',NULL,NULL,'Hatchet','This small axe can be used in close combat or thrown.');
|
||||
INSERT INTO weapons VALUES(31,1,'281',3,11,'0.9',8,3,'2','2',NULL,NULL,'Horsechopper','Created by goblins to battle horses, this weapon is essentially a long shaft ending in a blade with a large hook.');
|
||||
INSERT INTO weapons VALUES(32,1,'281',3,9,'1',6,3,'0.1','1',NULL,NULL,'Kama','Similar to a sickle and used in some regions to reap grain, a kama has a short, slightly curved blade and a wooden handle.');
|
||||
INSERT INTO weapons VALUES(33,1,'281',3,15,'2',6,3,'1','1',NULL,NULL,'Katana','A katana is a curved, single-edged sword known for its wickedly sharped blade.');
|
||||
INSERT INTO weapons VALUES(34,1,'281',3,9,'0.6',6,3,'0.1','1',NULL,NULL,'Kukri','The blade of this foot-long knife curves inward and lacks a cross guard at the hilt.');
|
||||
INSERT INTO weapons VALUES(35,1,'280',3,14,'1',8,2,'2','2',NULL,NULL,'Lance','This spear-like weapon is used by a mounted creature to deal a great deal of damage.');
|
||||
INSERT INTO weapons VALUES(36,1,'281',3,8,'0.3',6,1,'0.1','1',NULL,NULL,'Light Hammer','This smaller version of the warhammer has a wooden or metal shaft ending in a metal head. Unlike its heavier cousin, it is light enough to throw.');
|
||||
INSERT INTO weapons VALUES(37,1,'281',3,10,'0.4',4,2,'0.1','1',NULL,NULL,'Light Pick','A light pick is a modified mining implement with a wooden shaft ending in a pick head crafted more to pierce armor and flesh than chip rocks.');
|
||||
INSERT INTO weapons VALUES(38,1,'281',3,15,'1',8,3,'1','1',NULL,NULL,'Longsword','Longswords can be one-edged or two‑edged swords. Their blades are heavy and they’re between 3 and 4 feet in length.');
|
||||
INSERT INTO weapons VALUES(39,1,'281',3,9,'0.5',4,2,'0.1','1',NULL,NULL,'Main-gauche','This parrying dagger features a robust guard to protect the wielder’s hand.');
|
||||
INSERT INTO weapons VALUES(40,1,'281',3,8,'3',12,1,'2','2',NULL,NULL,'Maul','Mauls are massive warhammers that must be swung with two hands.');
|
||||
INSERT INTO weapons VALUES(41,1,'281',3,5,'0.2',6,1,'0.1','1',NULL,NULL,'Nunchaku','The nunchaku is constructed of two wooden or metal bars connected by a short length of rope or chain.');
|
||||
INSERT INTO weapons VALUES(42,1,'281',3,9,'0.7',6,2,'0.1','1',NULL,NULL,'Orc Knuckle Dagger','This stout, metal blade of orc design has a horizontal basket hilt with blades jutting from each end, or sometimes one blade like that of a katar.');
|
||||
INSERT INTO weapons VALUES(43,1,'281',3,10,'0.7',6,2,'1','1',NULL,NULL,'Pick','A pick designed solely for combat has a sturdy wooden shaft and a heavy, pointed head to deliver devastating blows.');
|
||||
INSERT INTO weapons VALUES(44,1,'281',3,11,'2',10,2,'2','2',NULL,NULL,'Ranseur','This polearm is a long trident with a central prong that’s longer than the other two.');
|
||||
INSERT INTO weapons VALUES(45,1,'281',3,15,'2',6,2,'1','1',NULL,NULL,'Rapier','The rapier is a long and thin piercing blade with a basket hilt. It is prized among many as a dueling weapon.');
|
||||
INSERT INTO weapons VALUES(46,1,'281',3,9,'0.6',4,2,'0.1','1',NULL,NULL,'Sai','This piercing dagger is a metal spike flanked by a pair of prongs that can be used to trap an enemy’s weapon.');
|
||||
INSERT INTO weapons VALUES(47,1,'281',3,5,'0.1',6,1,'0.1','1',NULL,NULL,'Sap','A sap has a soft wrapping around a dense core, typically a leather sheath around a lead rod. Its head is wider than its grip to disperse the force of a blow, as the weapon’s purpose is to knock out its victim rather than to draw blood.');
|
||||
INSERT INTO weapons VALUES(48,1,'281',3,15,'1',6,3,'1','1',NULL,NULL,'Scimitar','This one-handed curved blade is sharp on one side.');
|
||||
INSERT INTO weapons VALUES(49,1,'281',3,11,'2',10,3,'2','2',NULL,NULL,'Scythe','Derived from a farming tool used to mow down long grains and cereals, this weapon has a long wooden shaft with protruding handles, capped with a curved blade set at a right angle.');
|
||||
INSERT INTO weapons VALUES(50,1,'281',3,12,'0',4,1,'0','1',NULL,NULL,'Shield Bash','A shield bash is not actually a weapon, but a maneuver in which you thrust or swing your shield to hit your foe with an impromptu attack.');
|
||||
INSERT INTO weapons VALUES(51,1,'281',3,12,'0.5',6,1,'0','1',NULL,NULL,'Shield Boss','Typically a round, convex, or conical piece of thick metal attached to the center of a shield, a shield boss increases the bludgeoning damage of a shield bash.');
|
||||
INSERT INTO weapons VALUES(52,1,'281',3,12,'0.5',6,2,'0','1',NULL,NULL,'Shield Spikes','These metal spikes are strategically placed on the defensive side of the shield to deal piercing damage with a shield bash.');
|
||||
INSERT INTO weapons VALUES(53,1,'281',3,15,'0.9',6,2,'0.1','1',NULL,NULL,'Shortsword','These blades come in a variety of shapes and styles, but they are typically 2 feet long.');
|
||||
INSERT INTO weapons VALUES(54,1,'281',3,7,'3',8,3,'1','2',NULL,NULL,'Spiked Chain','This 4‑foot‑long length of chain is covered with barbs and has spikes on one or both ends. Some feature metal hoops used as handgrips.');
|
||||
INSERT INTO weapons VALUES(55,1,'281',3,9,'2',4,2,'0.1','1',NULL,NULL,'Starknife','From a central metal ring, four tapering metal blades extend like points on a compass rose. When gripping a starknife from the center, the wielder can use it as a melee weapon. It can also be thrown short distances.');
|
||||
INSERT INTO weapons VALUES(56,1,'281',3,15,'2',8,3,'1','1',NULL,NULL,'Temple Sword','This heavy blade is favored by guardians of religious sites. It has a distinctive, crescent-shaped blade that seems to be a mix of a sickle and sword. It often has holes drilled into the blade or the pommel so that bells or other holy trinkets can be affixed to the weapon as an aid for prayer or mediation.');
|
||||
INSERT INTO weapons VALUES(57,1,'281',3,14,'1',8,2,'1','1',NULL,NULL,'Trident','This three-pronged, spear-like weapon typically has a 4-foot shaft. Like a spear, it can be wielded with one hand or thrown.');
|
||||
INSERT INTO weapons VALUES(58,1,'281',3,7,'2',10,1,'2','2',NULL,NULL,'War Flail','');
|
||||
INSERT INTO weapons VALUES(59,1,'281',3,8,'1',8,1,'1','1',NULL,NULL,'Warhammer','This weapon has a wooden shaft ending in a large, heavy metal head. The head of the hammer might be single-sided or double-sided, but it’s always capable of delivering powerful bludgeoning blows.');
|
||||
INSERT INTO weapons VALUES(60,1,'281',3,7,'0.1',4,3,'1','1',NULL,NULL,'Whip','This long strand of thick leather, often braided, delivers a painful but nonlethal slash at a distance, usually accompanied by a distinctive cracking sound.');
|
||||
INSERT INTO weapons VALUES(61,2,'85',4,5,'5',6,1,'1','1',NULL,NULL,'Aklys','');
|
||||
INSERT INTO weapons VALUES(62,1,'281',4,1,'3',8,3,'2','1',NULL,NULL,'Dwarven War Axe','This favored weapon of the dwarves has a large, ornate head mounted on a thick handle. This powerful axe can be wielded with one hand or two.');
|
||||
INSERT INTO weapons VALUES(63,1,'281',4,7,'3',8,1,'2','1',NULL,NULL,'Gnome Flickmace','More a flail than a mace, this weapon has a short handle attached to a length of chain with a ball at the end. The ball is propelled to its reach with the flick of the wrist, the momentum of which brings the ball back to the wielder after the strike.');
|
||||
INSERT INTO weapons VALUES(64,1,'281',4,1,'2',8,3,'1','1',NULL,NULL,'Orc Necksplitter','This single-bladed bearded axe has a jagged blade that’s perfect for separating bone from tendon and cartilage.');
|
||||
INSERT INTO weapons VALUES(65,1,'281',4,15,'5',8,3,'0.1','1',NULL,NULL,'Sawtooth Saber','The signature weapon of the Red Mantis assassins, this curved blade is serrated like a saw, hence the name.');
|
||||
INSERT INTO weapons VALUES(66,2,'253',4,10,'1',10,2,'2','2',NULL,NULL,'Ogre Hook','Ogres are known for using immense, curved picks called ogre hooks.');
|
||||
INSERT INTO weapons VALUES(67,1,'281',2,6,'0.1',1,2,'0.1','1',20,'1','Blowgun','This long, narrow tube is used for shooting blowgun darts, using only the power of a forcefully exhaled breath.');
|
||||
INSERT INTO weapons VALUES(68,1,'281',2,3,'3',8,2,'1','2',120,'1','Crossbow','This ranged weapon has a bow-like assembly mounted on a handled frame called a tiller. The tiller has a mechanism to lock the bowstring in place, attached to a trigger mechanism that releases the tension and launches a bolt.');
|
||||
INSERT INTO weapons VALUES(69,1,'281',2,6,'0.01',4,2,'0.1','1',20,'','Dart','This thrown weapon is larger than an arrow but shorter than a javelin. It typically has a short shaft of wood ending in a metal tip and is sometimes stabilized by feathers or fur.');
|
||||
INSERT INTO weapons VALUES(70,1,'281',2,3,'3',6,2,'0.1','1',60,'1','Hand Crossbow','Sometimes referred to as an alley bow by rogues or ruffians, this small crossbow fires small bolts that are sometimes used to deliver poison to the target. It''s small enough to be shot one-handed, but it still requires two hands to load.');
|
||||
INSERT INTO weapons VALUES(71,1,'281',2,3,'4',10,2,'2','2',120,'2','Heavy Crossbow','This large crossbow is harder to load and more substantial than a regular crossbow, but it packs a greater punch.');
|
||||
INSERT INTO weapons VALUES(72,1,'282',2,6,'0.1',6,2,'0.1','1',30,'','Javelin','This thin spear is well balanced for throwing but is not designed for melee use.');
|
||||
INSERT INTO weapons VALUES(73,1,'282',2,13,'0',6,1,'0.1','1',50,'1','Sling','Little more than a leather cup attached to a pair of straps, a sling can be used to fling smooth stones or sling bullets at a range.');
|
||||
INSERT INTO weapons VALUES(74,1,'282',3,2,'','',NULL,'0.1','1',20,'','Alchemical Bomb','These bombs come in a variety of types and levels of power, but no matter the variety, you throw the bomb at the target and it explodes, unleashing its alchemical blast.');
|
||||
INSERT INTO weapons VALUES(75,1,'282',3,3,'20',8,2,'2','1+',100,'0','Composite Longbow','This projectile weapon is made from horn, wood, and sinew laminated together to increase the power of its pull and the force of its projectile. Like all longbows, its great size also increases the bow''s range and power. You must use two hands to fire it, and it cannot be used while mounted. Any time an ability is specifically restricted to a longbow, such as Erastil''s favored weapon, it also applies to composite longbows unless otherwise stated.');
|
||||
INSERT INTO weapons VALUES(76,1,'282',3,3,'14',6,2,'1','1+',60,'0','Composite Shortbow','This shortbow is made from horn, wood, and sinew laminated together to increase the power of its pull and the force of its projectile. Its compact size and power make it a favorite of mounted archers. Any time an ability is specifically restricted to a shortbow, it also applies to composite shortbows unless otherwise stated.');
|
||||
INSERT INTO weapons VALUES(77,1,'282',3,13,'5',10,1,'1','2',80,'1','Halfling Sling Staff','This staff ends in a Y-shaped split that cradles a sling. The length of the staff provides excellent leverage when used two‑handed to fling rocks or bullets from the sling.');
|
||||
INSERT INTO weapons VALUES(78,1,'282',3,3,'6',8,2,'2','1+',100,'0','Longbow','This 5-foot-tall bow, usually made of a single piece of elm, hickory, or yew, has a powerful draw and is excellent at propelling arrows with great force and at an extreme distance. You must use two hands to fire a longbow, and it can''t be used while mounted.');
|
||||
INSERT INTO weapons VALUES(79,1,'282',3,3,'3',6,2,'1','1+',60,'0','Shortbow','This smaller bow is made of a single piece of wood and favored by skirmishers and cavalry.');
|
||||
INSERT INTO weapons VALUES(80,1,'282',3,6,'0.01',4,2,'','1',20,'0','Shuriken','This throwing star is a small piece of flat metal with sharp edges, designed to be flung with a flick of the wrist.');
|
||||
COMMIT;
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
INSERT INTO weapons_traits VALUES(1,0,217);
|
||||
INSERT INTO weapons_traits VALUES(2,0,226);
|
||||
INSERT INTO weapons_traits VALUES(3,0,235);
|
||||
INSERT INTO weapons_traits VALUES(4,0,249);
|
||||
INSERT INTO weapons_traits VALUES(5,1,203);
|
||||
INSERT INTO weapons_traits VALUES(6,1,217);
|
||||
INSERT INTO weapons_traits VALUES(7,1,223);
|
||||
INSERT INTO weapons_traits VALUES(8,1,237);
|
||||
INSERT INTO weapons_traits VALUES(9,1,261);
|
||||
INSERT INTO weapons_traits VALUES(10,2,245);
|
||||
INSERT INTO weapons_traits VALUES(11,3,217);
|
||||
INSERT INTO weapons_traits VALUES(12,3,226);
|
||||
INSERT INTO weapons_traits VALUES(13,3,245);
|
||||
INSERT INTO weapons_traits VALUES(14,3,250);
|
||||
INSERT INTO weapons_traits VALUES(15,3,259);
|
||||
INSERT INTO weapons_traits VALUES(16,4,217);
|
||||
INSERT INTO weapons_traits VALUES(17,4,228);
|
||||
INSERT INTO weapons_traits VALUES(18,5,98);
|
||||
INSERT INTO weapons_traits VALUES(19,5,203);
|
||||
INSERT INTO weapons_traits VALUES(20,5,217);
|
||||
INSERT INTO weapons_traits VALUES(21,5,221);
|
||||
INSERT INTO weapons_traits VALUES(22,5,234);
|
||||
INSERT INTO weapons_traits VALUES(23,6,217);
|
||||
INSERT INTO weapons_traits VALUES(24,6,226);
|
||||
INSERT INTO weapons_traits VALUES(25,6,242);
|
||||
INSERT INTO weapons_traits VALUES(26,7,241);
|
||||
INSERT INTO weapons_traits VALUES(27,8,242);
|
||||
INSERT INTO weapons_traits VALUES(28,9,250);
|
||||
INSERT INTO weapons_traits VALUES(29,9,260);
|
||||
INSERT INTO weapons_traits VALUES(30,10,217);
|
||||
INSERT INTO weapons_traits VALUES(31,10,226);
|
||||
INSERT INTO weapons_traits VALUES(32,10,246);
|
||||
INSERT INTO weapons_traits VALUES(33,11,245);
|
||||
INSERT INTO weapons_traits VALUES(34,12,217);
|
||||
INSERT INTO weapons_traits VALUES(35,12,228);
|
||||
INSERT INTO weapons_traits VALUES(36,13,248);
|
||||
INSERT INTO weapons_traits VALUES(37,13,262);
|
||||
INSERT INTO weapons_traits VALUES(38,14,248);
|
||||
INSERT INTO weapons_traits VALUES(39,14,264);
|
||||
INSERT INTO weapons_traits VALUES(40,15,243);
|
||||
INSERT INTO weapons_traits VALUES(41,16,234);
|
||||
INSERT INTO weapons_traits VALUES(42,16,237);
|
||||
INSERT INTO weapons_traits VALUES(43,16,241);
|
||||
INSERT INTO weapons_traits VALUES(44,16,246);
|
||||
INSERT INTO weapons_traits VALUES(45,17,203);
|
||||
INSERT INTO weapons_traits VALUES(46,17,217);
|
||||
INSERT INTO weapons_traits VALUES(47,17,219);
|
||||
INSERT INTO weapons_traits VALUES(48,17,226);
|
||||
INSERT INTO weapons_traits VALUES(49,17,230);
|
||||
INSERT INTO weapons_traits VALUES(50,18,224);
|
||||
INSERT INTO weapons_traits VALUES(51,18,226);
|
||||
INSERT INTO weapons_traits VALUES(52,18,227);
|
||||
INSERT INTO weapons_traits VALUES(53,19,227);
|
||||
INSERT INTO weapons_traits VALUES(54,19,243);
|
||||
INSERT INTO weapons_traits VALUES(55,20,203);
|
||||
INSERT INTO weapons_traits VALUES(56,20,217);
|
||||
INSERT INTO weapons_traits VALUES(57,20,219);
|
||||
INSERT INTO weapons_traits VALUES(58,20,221);
|
||||
INSERT INTO weapons_traits VALUES(59,20,226);
|
||||
INSERT INTO weapons_traits VALUES(60,20,232);
|
||||
INSERT INTO weapons_traits VALUES(61,20,245);
|
||||
INSERT INTO weapons_traits VALUES(62,21,222);
|
||||
INSERT INTO weapons_traits VALUES(63,21,243);
|
||||
INSERT INTO weapons_traits VALUES(64,21,246);
|
||||
INSERT INTO weapons_traits VALUES(65,22,221);
|
||||
INSERT INTO weapons_traits VALUES(66,22,227);
|
||||
INSERT INTO weapons_traits VALUES(67,22,241);
|
||||
INSERT INTO weapons_traits VALUES(68,22,257);
|
||||
INSERT INTO weapons_traits VALUES(69,23,203);
|
||||
INSERT INTO weapons_traits VALUES(70,23,229);
|
||||
INSERT INTO weapons_traits VALUES(71,23,246);
|
||||
INSERT INTO weapons_traits VALUES(72,23,248);
|
||||
INSERT INTO weapons_traits VALUES(73,23,250);
|
||||
INSERT INTO weapons_traits VALUES(74,23,260);
|
||||
INSERT INTO weapons_traits VALUES(75,23,263);
|
||||
INSERT INTO weapons_traits VALUES(76,24,243);
|
||||
INSERT INTO weapons_traits VALUES(77,25,220);
|
||||
INSERT INTO weapons_traits VALUES(78,25,242);
|
||||
INSERT INTO weapons_traits VALUES(79,26,225);
|
||||
INSERT INTO weapons_traits VALUES(80,26,267);
|
||||
INSERT INTO weapons_traits VALUES(81,27,250);
|
||||
INSERT INTO weapons_traits VALUES(82,27,260);
|
||||
INSERT INTO weapons_traits VALUES(83,28,241);
|
||||
INSERT INTO weapons_traits VALUES(84,28,246);
|
||||
INSERT INTO weapons_traits VALUES(85,29,241);
|
||||
INSERT INTO weapons_traits VALUES(86,29,250);
|
||||
INSERT INTO weapons_traits VALUES(87,29,259);
|
||||
INSERT INTO weapons_traits VALUES(88,30,217);
|
||||
INSERT INTO weapons_traits VALUES(89,30,243);
|
||||
INSERT INTO weapons_traits VALUES(90,30,245);
|
||||
INSERT INTO weapons_traits VALUES(91,31,203);
|
||||
INSERT INTO weapons_traits VALUES(92,31,230);
|
||||
INSERT INTO weapons_traits VALUES(93,31,241);
|
||||
INSERT INTO weapons_traits VALUES(94,31,246);
|
||||
INSERT INTO weapons_traits VALUES(95,31,250);
|
||||
INSERT INTO weapons_traits VALUES(96,31,260);
|
||||
INSERT INTO weapons_traits VALUES(97,32,203);
|
||||
INSERT INTO weapons_traits VALUES(98,32,217);
|
||||
INSERT INTO weapons_traits VALUES(99,32,234);
|
||||
INSERT INTO weapons_traits VALUES(100,32,246);
|
||||
INSERT INTO weapons_traits VALUES(101,33,203);
|
||||
INSERT INTO weapons_traits VALUES(102,33,221);
|
||||
INSERT INTO weapons_traits VALUES(103,33,248);
|
||||
INSERT INTO weapons_traits VALUES(104,33,250);
|
||||
INSERT INTO weapons_traits VALUES(105,33,257);
|
||||
INSERT INTO weapons_traits VALUES(106,33,260);
|
||||
INSERT INTO weapons_traits VALUES(107,33,263);
|
||||
INSERT INTO weapons_traits VALUES(108,34,203);
|
||||
INSERT INTO weapons_traits VALUES(109,34,217);
|
||||
INSERT INTO weapons_traits VALUES(110,34,226);
|
||||
INSERT INTO weapons_traits VALUES(111,34,246);
|
||||
INSERT INTO weapons_traits VALUES(112,35,221);
|
||||
INSERT INTO weapons_traits VALUES(113,35,233);
|
||||
INSERT INTO weapons_traits VALUES(114,35,241);
|
||||
INSERT INTO weapons_traits VALUES(115,35,257);
|
||||
INSERT INTO weapons_traits VALUES(116,35,268);
|
||||
INSERT INTO weapons_traits VALUES(117,36,217);
|
||||
INSERT INTO weapons_traits VALUES(118,36,245);
|
||||
INSERT INTO weapons_traits VALUES(119,37,217);
|
||||
INSERT INTO weapons_traits VALUES(120,37,225);
|
||||
INSERT INTO weapons_traits VALUES(121,37,265);
|
||||
INSERT INTO weapons_traits VALUES(122,38,250);
|
||||
INSERT INTO weapons_traits VALUES(123,38,260);
|
||||
INSERT INTO weapons_traits VALUES(124,39,217);
|
||||
INSERT INTO weapons_traits VALUES(125,39,222);
|
||||
INSERT INTO weapons_traits VALUES(126,39,226);
|
||||
INSERT INTO weapons_traits VALUES(127,39,237);
|
||||
INSERT INTO weapons_traits VALUES(128,39,250);
|
||||
INSERT INTO weapons_traits VALUES(129,39,259);
|
||||
INSERT INTO weapons_traits VALUES(130,40,242);
|
||||
INSERT INTO weapons_traits VALUES(131,41,203);
|
||||
INSERT INTO weapons_traits VALUES(132,41,220);
|
||||
INSERT INTO weapons_traits VALUES(133,41,222);
|
||||
INSERT INTO weapons_traits VALUES(134,41,226);
|
||||
INSERT INTO weapons_traits VALUES(135,41,234);
|
||||
INSERT INTO weapons_traits VALUES(136,42,203);
|
||||
INSERT INTO weapons_traits VALUES(137,42,217);
|
||||
INSERT INTO weapons_traits VALUES(138,42,222);
|
||||
INSERT INTO weapons_traits VALUES(139,42,236);
|
||||
INSERT INTO weapons_traits VALUES(140,43,225);
|
||||
INSERT INTO weapons_traits VALUES(141,43,266);
|
||||
INSERT INTO weapons_traits VALUES(142,44,222);
|
||||
INSERT INTO weapons_traits VALUES(143,44,241);
|
||||
INSERT INTO weapons_traits VALUES(144,45,221);
|
||||
INSERT INTO weapons_traits VALUES(145,45,222);
|
||||
INSERT INTO weapons_traits VALUES(146,45,226);
|
||||
INSERT INTO weapons_traits VALUES(147,45,257);
|
||||
INSERT INTO weapons_traits VALUES(148,46,203);
|
||||
INSERT INTO weapons_traits VALUES(149,46,217);
|
||||
INSERT INTO weapons_traits VALUES(150,46,222);
|
||||
INSERT INTO weapons_traits VALUES(151,46,226);
|
||||
INSERT INTO weapons_traits VALUES(152,46,234);
|
||||
INSERT INTO weapons_traits VALUES(153,46,250);
|
||||
INSERT INTO weapons_traits VALUES(154,46,261);
|
||||
INSERT INTO weapons_traits VALUES(155,47,217);
|
||||
INSERT INTO weapons_traits VALUES(156,47,235);
|
||||
INSERT INTO weapons_traits VALUES(157,48,227);
|
||||
INSERT INTO weapons_traits VALUES(158,48,243);
|
||||
INSERT INTO weapons_traits VALUES(159,49,221);
|
||||
INSERT INTO weapons_traits VALUES(160,49,246);
|
||||
INSERT INTO weapons_traits VALUES(161,49,258);
|
||||
INSERT INTO weapons_traits VALUES(162,53,217);
|
||||
INSERT INTO weapons_traits VALUES(163,53,226);
|
||||
INSERT INTO weapons_traits VALUES(164,53,250);
|
||||
INSERT INTO weapons_traits VALUES(165,53,259);
|
||||
INSERT INTO weapons_traits VALUES(166,54,203);
|
||||
INSERT INTO weapons_traits VALUES(167,54,222);
|
||||
INSERT INTO weapons_traits VALUES(168,54,226);
|
||||
INSERT INTO weapons_traits VALUES(169,54,246);
|
||||
INSERT INTO weapons_traits VALUES(170,55,217);
|
||||
INSERT INTO weapons_traits VALUES(171,55,221);
|
||||
INSERT INTO weapons_traits VALUES(172,55,226);
|
||||
INSERT INTO weapons_traits VALUES(173,55,245);
|
||||
INSERT INTO weapons_traits VALUES(174,55,250);
|
||||
INSERT INTO weapons_traits VALUES(175,55,259);
|
||||
INSERT INTO weapons_traits VALUES(176,56,203);
|
||||
INSERT INTO weapons_traits VALUES(177,56,234);
|
||||
INSERT INTO weapons_traits VALUES(178,56,246);
|
||||
INSERT INTO weapons_traits VALUES(179,57,245);
|
||||
INSERT INTO weapons_traits VALUES(180,58,222);
|
||||
INSERT INTO weapons_traits VALUES(181,58,243);
|
||||
INSERT INTO weapons_traits VALUES(182,58,246);
|
||||
INSERT INTO weapons_traits VALUES(183,59,242);
|
||||
INSERT INTO weapons_traits VALUES(184,60,222);
|
||||
INSERT INTO weapons_traits VALUES(185,60,226);
|
||||
INSERT INTO weapons_traits VALUES(186,60,235);
|
||||
INSERT INTO weapons_traits VALUES(187,60,241);
|
||||
INSERT INTO weapons_traits VALUES(188,60,246);
|
||||
INSERT INTO weapons_traits VALUES(189,61,203);
|
||||
INSERT INTO weapons_traits VALUES(190,61,240);
|
||||
INSERT INTO weapons_traits VALUES(191,61,244);
|
||||
INSERT INTO weapons_traits VALUES(192,61,245);
|
||||
INSERT INTO weapons_traits VALUES(193,61,246);
|
||||
INSERT INTO weapons_traits VALUES(194,62,223);
|
||||
INSERT INTO weapons_traits VALUES(195,62,243);
|
||||
INSERT INTO weapons_traits VALUES(196,62,248);
|
||||
INSERT INTO weapons_traits VALUES(197,62,264);
|
||||
INSERT INTO weapons_traits VALUES(198,63,203);
|
||||
INSERT INTO weapons_traits VALUES(199,63,229);
|
||||
INSERT INTO weapons_traits VALUES(200,63,241);
|
||||
INSERT INTO weapons_traits VALUES(201,64,203);
|
||||
INSERT INTO weapons_traits VALUES(202,64,227);
|
||||
INSERT INTO weapons_traits VALUES(203,64,236);
|
||||
INSERT INTO weapons_traits VALUES(204,64,243);
|
||||
INSERT INTO weapons_traits VALUES(205,65,203);
|
||||
INSERT INTO weapons_traits VALUES(206,65,217);
|
||||
INSERT INTO weapons_traits VALUES(207,65,226);
|
||||
INSERT INTO weapons_traits VALUES(208,65,247);
|
||||
INSERT INTO weapons_traits VALUES(209,66,203);
|
||||
INSERT INTO weapons_traits VALUES(210,66,221);
|
||||
INSERT INTO weapons_traits VALUES(211,66,246);
|
||||
INSERT INTO weapons_traits VALUES(212,67,217);
|
||||
INSERT INTO weapons_traits VALUES(213,67,235);
|
||||
INSERT INTO weapons_traits VALUES(214,69,217);
|
||||
INSERT INTO weapons_traits VALUES(215,69,245);
|
||||
INSERT INTO weapons_traits VALUES(216,72,245);
|
||||
INSERT INTO weapons_traits VALUES(217,73,238);
|
||||
INSERT INTO weapons_traits VALUES(218,75,221);
|
||||
INSERT INTO weapons_traits VALUES(219,75,238);
|
||||
INSERT INTO weapons_traits VALUES(220,75,251);
|
||||
INSERT INTO weapons_traits VALUES(221,75,258);
|
||||
INSERT INTO weapons_traits VALUES(222,75,269);
|
||||
INSERT INTO weapons_traits VALUES(223,76,221);
|
||||
INSERT INTO weapons_traits VALUES(224,76,238);
|
||||
INSERT INTO weapons_traits VALUES(225,76,258);
|
||||
INSERT INTO weapons_traits VALUES(226,77,203);
|
||||
INSERT INTO weapons_traits VALUES(227,77,232);
|
||||
INSERT INTO weapons_traits VALUES(228,77,238);
|
||||
INSERT INTO weapons_traits VALUES(229,78,221);
|
||||
INSERT INTO weapons_traits VALUES(230,78,251);
|
||||
INSERT INTO weapons_traits VALUES(231,78,258);
|
||||
INSERT INTO weapons_traits VALUES(232,78,269);
|
||||
INSERT INTO weapons_traits VALUES(233,79,221);
|
||||
INSERT INTO weapons_traits VALUES(234,79,258);
|
||||
INSERT INTO weapons_traits VALUES(235,80,203);
|
||||
INSERT INTO weapons_traits VALUES(236,80,217);
|
||||
INSERT INTO weapons_traits VALUES(237,80,234);
|
||||
INSERT INTO weapons_traits VALUES(238,80,245);
|
||||
COMMIT;
|
||||
@@ -0,0 +1,9 @@
|
||||
# The purpose of this directory is to perform scraping of [Archives of Nethys](https://2e.aonprd.com)
|
||||
|
||||
## Requirements
|
||||
1. Python 3.6.8
|
||||
2. pandas==0.24.2
|
||||
3. splinter==0.11.0
|
||||
4. beautifulsoup4==4.8.0
|
||||
5. selenium==3.141.0
|
||||
6. Download the [chrome WebDriver](https://splinter.readthedocs.io/en/latest/drivers/chrome.html) and place it in this directory. It is required by selenium and splinter as using Requests was prone to failure.
|
||||
@@ -0,0 +1,51 @@
|
||||
Name,description
|
||||
Acolyte,"You spent your early days in a religious monastery or cloister. You may have traveled out into the world to spread the message of your religion or because you cast away the teachings of your faith, but deep down you’ll always carry within you the lessons you learned. \n\nChoose two ability boosts. One must be to Intelligence or Wisdom, and one is a free ability boost. \n\nYou're trained in the Religion skill and the Scribing Lore skill. You gain the Student of the Canon skill feat."
|
||||
Acrobat,"In a circus or on the streets, you earned your pay by performing as an acrobat. You might have turned to adventuring when the money dried up, or simply decided to put your skills to better use. \n\nChoose two ability boosts. One must be to Strength or Dexterity, and one is a free ability boost. \n\nYou're trained in the Acrobatics skill and the Circus Lore skill. You gain the Steady Balance skill feat."
|
||||
Animal Whisperer,"You have always felt a connection to animals, and it was only a small leap to learn to train them. As you travel, you continuously encounter different creatures, befriending them along the way. \n\nChoose two ability boosts. One must be to Wisdom or Charisma, and one is a free ability boost. \n\nYou're trained in the Nature skill and a Lore skill related to one terrain inhabited by animals you like (such as Plains Lore or Swamp Lore). You gain the Train Animal skill feat."
|
||||
Artisan,"As an apprentice, you practiced a particular form of building or crafting, developing specialized skill. You might have been a blacksmith’s apprentice toiling over the forge for countless hours, a young tailor sewing garments of all kinds, or a shipwright shaping the hulls of ships. \n\nChoose two ability boosts. One must be to Strength or Intelligence, and one is a free ability boost. \n\nYou're trained in the Crafting skill and the Guild Lore skill. You gain the Specialty Crafting skill feat."
|
||||
Artist,"Your art is your greatest passion, whatever form it takes. Adventuring might help you find inspiration, or simply be a way to survive until you become a world-famous artist. \n\nChoose two ability boosts. One must be to Dexterity or Charisma, and one is a free ability boost. \n\nYou're trained in the Crafting skill and the Art Lore skill. You gain the Specialty Crafting skill feat."
|
||||
Barkeep,"You have five specialties: hefting barrels, drinking, polishing steins, drinking, and drinking. You worked in a bar, where you learned how to hold your liquor and rowdily socialize. \n\nChoose two ability boosts. One must be to Constitution or Charisma, and one is a free ability boost. \n\nYou're trained in the Diplomacy skill and the Alcohol Lore skill. You gain the Hobnobber skill feat."
|
||||
Barrister,"Piles of legal manuals, stern teachers, and experience in the courtroom have instructed you in legal matters. You’re capable of mounting a prosecution or defense in court, and you tend to keep abreast of local laws, as you never can tell when you might need to know them on short notice. \n\nChoose two ability boosts. One must be to Intelligence or Charisma, and one is a free ability boost. \n\nYou're trained in the Diplomacy skill and the Legal Lore skill. You gain the Group Impression skill feat."
|
||||
Bounty Hunter,"Bringing in lawbreakers lined your pockets. Maybe you had an altruistic motive and sought to bring in criminals to make the streets safer, or maybe the coin was motivation enough. Your techniques for hunting down criminals transfer easily to the life of an adventurer. \n\nChoose two ability boosts. One must be to Strength or Wisdom, and one is a free ability boost. \n\nYou're trained in the Survival skill and the Legal Lore skill. You gain the Experienced Tracker skill feat."
|
||||
Charlatan,"You traveled from place to place, peddling false fortunes and snake oil in one town, pretending to be royalty in exile to seduce a wealthy heir in the next. Becoming an adventurer might be your next big scam or an attempt to put your talents to use for a greater cause. Perhaps it’s a bit of both, as you realize that after pretending to be a hero, you’ve become the mask. \n\nChoose two ability boosts. One must be to Intelligence or Charisma, and one is a free ability boost. \n\nYou're trained in the Deception skill and the Underworld Lore skill. You gain the Charming Liar skill feat."
|
||||
Criminal,"As an unscrupulous independent or as a member of an underworld organization, you lived a life of crime. You might have become an adventurer to seek redemption, to escape the law, or simply to get access to bigger and better loot. \n\nChoose two ability boosts. One must be to Dexterity or Intelligence, and one is a free ability boost. \n\nYou're trained in the Stealth skill and the Underworld Lore skill. You gain the Experienced Smuggler skill feat."
|
||||
Detective,"You solved crimes as a police inspector or took jobs for wealthy clients as a private investigator. You might have become an adventurer as part of your next big mystery, but likely it was due to the consequences or aftermath of a prior case. \n\nChoose two ability boosts. One must be to Intelligence or Wisdom, and one is a free ability boost. \n\nYou're trained in the Society skill and the Underworld Lore skill. You gain the Streetwise skill feat."
|
||||
Emissary,"As a diplomat or messenger, you traveled to lands far and wide. Communicating with new people and forming alliances were your stock and trade. \n\nChoose two ability boosts. One must be to Intelligence or Charisma, and one is a free ability boost. \n\nYou're trained in the Society skill and a Lore skill related to one city you've visited often. You gain the Multilingual skill feat."
|
||||
Entertainer,"Through an education in the arts or sheer dogged practice, you learned to entertain crowds. You might have been an actor, a dancer, a musician, a street magician, or any other sort of performer. \n\nChoose two ability boosts. One must be to Dexterity or Charisma, and one is a free ability boost. \n\nYou're trained in the Performance skill and the Theater Lore skill. You gain the Fascinating Performance skill feat."
|
||||
Farmhand,"With a strong back and an understanding of seasonal cycles, you tilled the land and tended crops. Your farm could have been razed by invaders, you could have lost the family tying you to the land, or you might have simply tired of the drudgery, but at some point you became an adventurer. \n\nChoose two ability boosts. One must be to Constitution or Wisdom, and one is a free ability boost. \n\nYou're trained in the Athletics skill and the Farming Lore skill. You gain the Assurance skill feat with Athletics."
|
||||
Field Medic,"In the chaotic rush of battle, you learned to adapt to rapidly changing conditions as you administered to battle casualties. You patched up soldiers, guards, or other combatants, and learned a fair amount about the logistics of war. \n\nChoose two ability boosts. One must be to Constitution or Wisdom, and one is a free ability boost. \n\nYou're trained in the Medicine skill and the Warfare Lore skill. You gain the Battle Medicine skill feat."
|
||||
Fortune Teller,"The strands of fate are clear to you, as you have learned many traditional forms by which laypeople can divine the future. You might have used these skills to guide your community, or simply to make money. But even the slightest peek into these practices connects you to the occult mysteries of the universe. \n\nChoose two ability boosts. One must be to Intelligence or Charisma, and one is a free ability boost. \n\nYou're trained in the Occultism skill and the Fortune-Telling Lore skill. You gain the Oddity Identification skill feat."
|
||||
Gambler,"The thrill of the win drew you into games of chance. This might have been a lucrative sideline that paled in comparison to the real risks of adventuring, or you might have fallen on hard times due to your gambling and pursued adventuring as a way out of a spiral. \n\nChoose two ability boosts. One must be to Dexterity or Charisma, and one is a free ability boost. \n\nYou're trained in the Deception skill and the Games Lore skill. You gain the Lie to Me skill feat."
|
||||
Gladiator,"The bloody games of the arena taught you the art of combat. Before you attained true fame, you departed—or escaped—the arena to explore the world. Your skill at drawing both blood and a crowd’s attention pay off in a new adventuring life. \n\nChoose two ability boosts. One must be to Strength or Charisma, and one is a free ability boost. \n\nYou're trained in the Performance skill and the Gladiatorial Lore skill. You gain the Impressive Performance skill feat."
|
||||
Guard,"You served in the guard, out of either patriotism or the need for coin. Either way, you know how to get a difficult suspect to talk. However you left the guard, you might think of adventuring as a way to use your skills on a wider stage. \n\nChoose two ability boosts. One must be to Strength or Charisma, and one is a free ability boost. \n\nYou're trained in the Intimidation skill and the Legal Lore skill or Warfare Lore skill. You gain the Quick Coercion skill feat."
|
||||
Herbalist,"As a formally trained apothecary or a rural practitioner of folk medicine, you learned the healing properties of various herbs. You’re adept at collecting the right natural cures in all sorts of environments and preparing them properly. \n\nChoose two ability boosts. One must be to Constitution or Wisdom, and one is a free ability boost. \n\nYou're trained in the Nature skill and the Herbalism Lore skill. You gain the Natural Medicine skill feat."
|
||||
Hermit,"In an isolated place—like a cave, remote oasis, or secluded mansion—you lived a life of solitude. Adventuring might represent your first foray out among other people in some time. This might be a welcome reprieve from solitude or an unwanted change, but in either case, you’re likely still rough around the edges. \n\nChoose two ability boosts. One must be to Constitution or Intelligence, and one is a free ability boost. \n\nYou're trained in your choice of either the Nature or Occultism skill, as well as a Lore skill related to the terrain you lived in as a hermit (such as Cave Lore or Desert Lore). You gain the Dubious Knowledge skill feat."
|
||||
Hunter,"You stalked and took down animals and other creatures of the wild. Skinning animals, harvesting their flesh, and cooking them were also part of your training, all of which can give you useful resources while you adventure. \n\nChoose two ability boosts. One must be to Dexterity or Wisdom, and one is a free ability boost. \n\nYou're trained in the Survival skill and the Tanning Lore skill. You gain the Survey Wildlife skill feat."
|
||||
Laborer,"You’ve spent years performing arduous physical labor. It was a difficult life, but you somehow survived. You may have embraced adventuring as an easier method to make your way in the world, or you might adventure under someone else’s command. \n\nChoose two ability boosts. One must be to Strength or Constitution, and one is a free ability boost. \n\nYou're trained in the Athletics skill and the Labor Lore skill. You gain the Hefty Hauler skill feat in Athletics."
|
||||
Martial Disciple,"You dedicated yourself to intense training and rigorous study to become a great warrior. The school you attended might have been a traditionalist monastery, an elite military academy, or the local branch of a prestigious mercenary organization. \n\nChoose two ability boosts. One must be to Strength or Dexterity, and one is a free ability boost. \n\nYou're trained in your choice of either the Acrobatics or Athletics skill, as well as the Warfare Lore skill. You gain a skill feat: Cat Fall if you chose Acrobatics or Quick Jump if you chose Athletics."
|
||||
Merchant,"In a dusty shop, market stall, or merchant caravan, you bartered wares for coin and trade goods. The skills you picked up still apply in the adventuring life, in which a good deal on a suit of armor could prevent your death. \n\nChoose two ability boosts. One must be to Intelligence or Charisma, and one is a free ability boost. \n\nYou're trained in the Diplomacy skill and the Mercantile Lore skill. You gain the Bargain Hunter skill feat."
|
||||
Miner,"You earned a living wrenching precious minerals from the lightless depths of the earth. Adventuring might have seemed lucrative or glamorous compared to this backbreaking labor— and if you have to head back underground, this time you plan to do so armed with a real weapon instead of a miner’s pick. \n\nChoose two ability boosts. One must be to Strength or Wisdom, and one is a free ability boost. \n\nYou're trained in the Survival skill and the Mining Lore skill. You gain the Terrain Expertise skill feat with underground terrain."
|
||||
Noble,"To the common folk, the life of a noble seems one of idyllic luxury, but growing up as a noble or member of the aspiring gentry, you know the reality: a noble’s lot is obligation and intrigue. Whether you seek to escape your duties by adventuring or to better your station, you have traded silks and pageantry for an adventurer’s life. \n\nChoose two ability boosts. One must be to Intelligence or Charisma, and one is a free ability boost. \n\nYou're trained in the Society skill and the Genealogy Lore skill or Heraldy Lore skill. You gain the Courtly Graces skill feat."
|
||||
Nomad,"Traveling far and wide, you picked up basic tactics for surviving on the road and in unknown lands, getting by with few supplies and even fewer comforts. As an adventurer, you travel still, often into even more dangerous places. \n\nChoose two ability boosts. One must be to Constitution or Wisdom, and one is a free ability boost. \n\nYou're trained in the Survival skill and a Lore skill related to one terrain you traveled in (such as Desert Lore or Swamp Lore). You gain the Assurance skill feat with Survival."
|
||||
Prisoner,"You might have been imprisoned for crimes (whether you were guilty or not), or enslaved for some part of your upbringing. In your adventuring life, you take full advantage of your newfound freedom. \n\nChoose two ability boosts. One must be to Strength or Constitution, and one is a free ability boost. \n\nYou're trained in the Stealth skill and the Underworld Lore skill. You gain the Experienced Smuggler skill feat."
|
||||
Sailor,"You heard the call of the sea from a young age. Perhaps you signed onto a merchant’s vessel, joined the navy, or even fell in with a crew of pirates and scalawags. \n\nChoose two ability boosts. One must be to Strength or Dexterity, and one is a free ability boost. \n\nYou're trained in the Athletics skill and the Sailing Lore skill. You gain the Underwater Marauder skill feat."
|
||||
name: 31,name: 31
|
||||
Scout,"You called the wilderness home as you found trails and guided travelers. Your wanderlust could have called you to the adventuring life, or perhaps you served as a scout for soldiers and found you liked battle. \n\nChoose two ability boosts. One must be to Dexterity or Wisdom, and one is a free ability boost. \n\nYou're trained in the Survival skill and a Lore skill related to one terrain you scouted in (such as Forest Lore or Cavern Lore). You gain the Forager skill feat."
|
||||
Street Urchin,"You eked out a living by picking pockets on the streets of a major city, never knowing where you’d find your next meal. While some folk adventure for the glory, you do so to survive. \n\nChoose two ability boosts. One must be to Dexterity or Constitution, and one is a free ability boost. \n\nYou're trained in the Thievery skill and a Lore skill for the city you lived in as a street urchin (such as Absalom Lore or Magnimar Lore). You gain the Pickpocket skill feat."
|
||||
Tinker,"Creating all sorts of minor inventions scratches your itch for problem-solving. Your engineering skills take a particularly creative bent, and no one know what you’ll come up with next. It might be a genius device with tremendous potential... or it might explode. \n\nChoose two ability boosts. One must be to Dexterity or Intelligence, and one is a free ability boost. \n\nYou're trained in the Crafting skill and the Engineering Lore skill. You gain the Specialty Crafting skill feat."
|
||||
Warrior,"In your younger days, you waded into battle as a mercenary, a warrior defending a nomadic people, or a member of a militia or army. You might have wanted to break out from the regimented structure of these forces, or you could have always been as independent a warrior as you are now. \n\nChoose two ability boosts. One must be to Strength or Constitution, and one is a free ability boost. \n\nYou're trained in the Intimidation skill and the Warfare Lore skill. You gain the Intimidating Glare skill feat."
|
||||
Scholar,"You have a knack for learning, and sequestered yourself from the outside world to learn all you could. You read about so many wondrous places and things in your books, and always dreamed about one day seeing the real things. Eventually, that curiosity led you to leave your studies and become an adventurer. \n\nChoose two ability boosts. One must be to Intelligence or Wisdom, and one is a free ability boost. \n\nYou’re trained in your choice of the Arcana, Nature, Occultism, or Religion skill, and the Academia Lore skill. You gain the Assurance skill feat."
|
||||
Lesser Scion,"You are the youngest child in a noble house (in Cheliax, Isger, or Andoran) and stand to inherit nothing from your family. Although you have a minor title, it affords you no lands or wealth, but it has garnered you a small amount of respect and deference in your travels. When play begins, you are riding in a caravan bound for Almas, where a cousin has promised to allow you to stay with them for a month. \n\nChoose two ability boosts. One must be to Dexterity or Intelligence, and one is a free ability boost. \n\nYou're trained in the Diplomacy skill and the Heraldry Lore skill. You gain the Hobnobber skill feat."
|
||||
Lost and Alone,"You were training to become a knight in Lastwall when the Whispering Tyrant escaped his imprisonment and destroyed the nation. It was only by dumb luck that you are alive at all, but the memories of that fateful day haunt your dreams. When play begins, you have boarded a caravan heading toward a new town, having worn out your welcome at the taverns and inns of Elidir. \n\nChoose two ability boosts. One must be to Strength or Charisma, and one is a free ability boost. \n\nYou're trained in the Intimidation skill and the Warfare Lore skill. You gain the Intimidating Glare skill feat."
|
||||
Missionary,"You received training from clergy in a faraway temple, who sent you out into the world to spread the faith. Although you are relatively new at this, you are always on the lookout for new places in need of your deity’s teachings and guidance. When play begins, you are riding along in a caravan making your way through sparsely populated regions of Isger, spreading the news of your faith to those who will listen. \n\nChoose two ability boosts. One must be to Constitution or Wisdom, and one is a free ability boost. \n\nYou're trained in the Diplomacy skill and the Scribing Lore skill. You gain the Group Impression skill feat."
|
||||
Refugee,"The fighting around the Lake Encarthan region has forced many of the people residing there to flee from the violence. Although your home is gone, you have managed to survive and are making your way south in search of a better life. When play begins, you are riding along in a caravan taking you to what might be either a new home in Andoran or simply another waypoint in your journey. \n\nChoose two ability boosts. One must be to Constitution or Intelligence, and one is a free ability boost. \n\nYou're trained in the Survival skill and the Hunting Lore skill. You gain the Forager skill feat."
|
||||
Teamster,"You left your home a few months back for a life on the road, working for one caravan company and then another, always on the lookout for a new job and a better life. Last week, you were hired by the Bort Bargith’s company in Elidir. You don’t know anyone from the company just yet, but most of its members seem to be honest merchants and traders. \n\nChoose two ability boosts. One must be to Strength or Wisdom, and one is a free ability boost. \n\nYou're trained in the Nature skill and the Mercantile Lore skill. You gain the Train Animal skill feat."
|
||||
Dragon Scholar,"Dragons have fascinated you for as long as you can remember. The potent power they possess, the long lives they lead, the ancient traditions they inspire—whatever the source of your interest, you’ve spent much of your life to this point immersed in all things draconic. These studies have bolstered your self-confidence and given you a wide range of methods and tactics you can use to impose your will on others. \n\n You’ve likely chosen to attend the Call for Heroes as a way to seek funds as an adventurer to afford more texts about dragons or perhaps out of a desire to encounter one in real life. \n\nChoose two ability boosts. One must be to Strength or Charisma, and one is a free ability boost. \n\nYou're trained in the Intimidation skill and the Dragon Lore skill. You gain the Intimidating Glare skill feat."
|
||||
Emancipated,"Until recently, the nation of Ravounel was part of the larger nation of Cheliax, where the church of Asmodeus is the law and slaves are traded freely in the open market. You had the poor fortune to be born into slavery, but the good luck to have grown up in the city of Kintargo. When Ravounel seceded from Cheliax, the leaders of this new nation freed all slaves, and you’ve wasted no time in exploring and establishing your new life. How and why you’ve come to Breachill is left to you to decide—but the fact that you feel empowered to determine your own destiny continues to drive you! \n\n The chance to become an adventurer has excited you for some time, as you hope to build a new life for yourself as a hero rewarded with fame and fortune. Joining the Call for Heroes is a great opportunity to find a group to adventure with. \n\nChoose two ability boosts. One must be to Dexterity or Charisma, and one is a free ability boost. \n\nYou're trained in the Stealth skill and the Kintargo Lore skill. You gain the Terrain Stalker skill feat."
|
||||
Haunting Vision,"You’ve been haunted by frightening dreams of fires your whole life. This could be the result of a past, neardeath experience with fire or it might have no obvious source that you know of. Recently, you stumbled upon an image, story, or other omen featuring the dragon god of destruction, Dahak, and you were struck with an unnerving sense of deja vu—you’ve come to think that the draconic deity might have something to do with your dreams, and as such have been studying all you can about the god. Your visions have bolstered your faith as well; even if you don’t worship a specific deity, you have a deep passion for matters of faith. \n\n Your latest dream, for the first time, had enough details to identify its setting—in this last dream, you saw the town of Breachill burning. You’ve decided to join the Call for Heroes hoping to save the town you fear might burn to the ground soon. \n\nChoose two ability boosts. One must be to Constitution or Wisdom, and one is a free ability boost. \n\nYou're trained in the Religion skill and the Dahak Lore skill. You gain the Student of the Canon skill feat."
|
||||
Hellknight Historian,"The various Hellknight Orders intrigue you, whether you seek to become one of their number yourself, wish to oppose their goals at every turn, or are merely inspired by or curious to learn more about them. You’ve heard that when the Order of the Nail abandoned Citadel Altaerein, they left behind the deed to the castle so anyone brave enough to explore the ruins and the defenses no doubt left behind would be rewarded with ownership of the abandoned fortress. \n\n You decided to join the Call for Heroes to hoping to gain an opportunity to explore Citadel Altaerein. \n\nChoose two ability boosts. One must be to Strength or Intelligence, and one is a free ability boost. \n\nYou're trained in the Society skill and the Architecture Lore skill. You gain the Courtly Graces skill feat."
|
||||
Local Scion,"You’re from Breachill and have lived there most, if not all, of your life. You might be the son or daughter of a wellknown local adventuring family, or a family with a storied tradition of military or other martial service. You likely also have some sort of skill with your hands, as the people of Breachill are very self-sufficient. \n\n The Call for Heroes is one of your hometown’s most iconic traditions, and you want to attend so you can prove your own merits to the council—beyond simply those of your family’s name. \n\nChoose two ability boosts. One must be to Constitution or Charisma, and one is a free ability boost. \n\nYou're trained in the Crafting skill and the Breachill Lore skill. You gain the Specialty Crafting skill feat."
|
||||
Out-of-Towner,"You’ve never been to Breachill, nor do you have roots in the town, but as chance has it you find yourself visiting. You might be here traveling with a friend, visiting an old acquaintance, or merely here to see a new part of the world. Before coming to town, though, you spent many years living with an ancestry other than your own, and your diverse childhood has left you with an open mind and a curious nature. \n\n You’re excited to meet new people and cultures, and answering the Call for Heroes seems to be an interesting way to do so. \n\nChoose two ability boosts. One must be to Constitution or Intelligence, and one is a free ability boost. \n\nYou're trained in the Diplomacy skill and a Lore skill thematically associated with the members of the ancestry you grew up with: Dwarf, Elf, Gnome, Goblin, or Halfling. You gain the Hobnobber skill feat."
|
||||
Reputation Seeker,"You’re likely from Breachill, but unlike the Local Scion, your family has no notable legacy in the area. You might not even have much of a family at all to call your own, and could be an orphan. You’ve seen so many people make names for themselves that you set out on your own and spent some time abroad in the jungles or deserts of Garund or in the upper reaches of the Darklands—regions that proved too dangerous to remain in for long on your own. You returned home with more caution and knowledge of the world beyond Breachill’s borders, but still determined to win fame. \n\n You’ve decided that joining an adventuring group would be the best way to secure aid in your quest to build your own reputation, and are attending the Call for Heroes to find such allies. \n\nChoose two ability boosts. One must be to Dexterity or Intelligence, and one is a free ability boost. \n\nYou're trained in the Survival skill and the Darklands, Desert, or Jungle Lore skill. You gain the Terrain Expertise skill feat (underground if you have Darklands Lore, desert if you have Desert Lore, or forest if you have Jungle Lore)."
|
||||
Returning Descendant,"You aren’t from Breachill yourself—you might not even be from Isger or Avistan at all. You’ve lived a hard life, in any event. You have often had to make tough decisions, and have developed a knack for understanding how things work (and the best way to take them apart) that has helped you support yourself. Recently you discovered that an ancestor was from the town of Breachill and had a modest career as an adventurer. You can’t help but wonder if you would have had an easier life if you’d grown up there instead, and have decided to seek out this small town to learn more about it. \n\nYou’ve decided to respond to the Call for Heroes to follow in your ancestor’s footsteps, either to honor their memory or accomplish the great deeds they did not. \n\nChoose two ability boosts. One must be to Dexterity or Wisdom, and one is a free ability boost. \n\nYou're trained in the Thievery skill and the Engineering Lore skill. You gain the Pickpocket skill feat."
|
||||
Truth Seeker,"Whether you are a local or from out of town, you’ve heard rumors that Breachill’s past contains a hidden secret. Perhaps you’ve heard strange rumors that the town’s founder, Lamond Breachton, was not the hero everyone touts, or maybe your grandmother heard stories from her own grandmother that contradict the town’s accepted narrative of its establishment. In the pursuit of the truth, you’ve learned to navigate the tangles of politics, and to never take anyone’s word at face value. \n\n You plan to join the Call for Heroes so that you can make yourself known to the council, or perhaps even ingratiating yourself to them, so you can seek the truth and eventually uncover Breachill’s secrets! \n\nChoose two ability boosts. One must be to Strength or Wisdom, and one is a free ability boost. \n\nYou're trained in the Deception skill and the Politics Lore skill. You gain the Lie to Me skill feat."
|
||||
|
@@ -0,0 +1,152 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Scrape data from aon2e and generate csvs to import in to sqlite"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Dependencies\n",
|
||||
"import pandas as pd\n",
|
||||
"from bs4 import BeautifulSoup as bs, Tag, NavigableString\n",
|
||||
"import os\n",
|
||||
"from splinter import Browser\n",
|
||||
"\n",
|
||||
"# Setting up Selenium\n",
|
||||
"chrome_driver = os.path.join('..', 'chromedriver.exe')\n",
|
||||
"executable_path = {'executable_path': chrome_driver}\n",
|
||||
"browser = Browser('chrome', **executable_path, headless=False)\n",
|
||||
"\n",
|
||||
"# Pandas config\n",
|
||||
"pd.set_option('display.max_columns', None)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def scrape_description(url, id_number):\n",
|
||||
"\n",
|
||||
" # Empty lists to store the scraped values\n",
|
||||
" name_list = []\n",
|
||||
" description_list = []\n",
|
||||
"\n",
|
||||
" print(f'Beginning Data Retrieval')\n",
|
||||
" print(f'------------------------')\n",
|
||||
"\n",
|
||||
" # Loop from 1 to the value in weapon_number\n",
|
||||
" for page in range(1, id_number+1):\n",
|
||||
"\n",
|
||||
" browser.visit(url + str(page))\n",
|
||||
" html = browser.html\n",
|
||||
" soup = bs(html, 'html.parser')\n",
|
||||
"\n",
|
||||
" # Select only the content section\n",
|
||||
" content = soup.find(id='ctl00_MainContent_DetailedOutput')\n",
|
||||
"\n",
|
||||
" try:\n",
|
||||
" # Store the name\n",
|
||||
" name = content.find('h1', class_='title').a.text.strip()\n",
|
||||
" name\n",
|
||||
"\n",
|
||||
" except:\n",
|
||||
" name = f'name: {page}'\n",
|
||||
"\n",
|
||||
" try:\n",
|
||||
" # Start the loop after the link to the book\n",
|
||||
" start = content.find('a', class_='external-link').next_sibling\n",
|
||||
" description = ''\n",
|
||||
" for e in start.next_siblings:\n",
|
||||
" if isinstance(e, Tag):\n",
|
||||
" if e.name == 'br':\n",
|
||||
" if e.next_sibling.name == 'br':\n",
|
||||
" # If the next 2 elements are br skip this\n",
|
||||
" # loop it will be handled in the elif\n",
|
||||
" continue\n",
|
||||
" elif e.previous_sibling.name == 'br':\n",
|
||||
" # If this element and the previous are br\n",
|
||||
" # and the next is not append /n\n",
|
||||
" description = description + ' /n/n'\n",
|
||||
" else:\n",
|
||||
" # If there is just one br append /n\n",
|
||||
" description = description + ' /n'\n",
|
||||
" else:\n",
|
||||
" # Append the text inside the element\n",
|
||||
" description = description + e.text.strip()\n",
|
||||
" elif isinstance(e, NavigableString):\n",
|
||||
" # Since it is just a text append it\n",
|
||||
" description = description + e\n",
|
||||
"\n",
|
||||
" except:\n",
|
||||
" description = f'name: {page}'\n",
|
||||
"\n",
|
||||
" print(f'{page} of {id_number} | {name}')\n",
|
||||
"\n",
|
||||
" # Append values to our empty lists\n",
|
||||
" name_list.append(name) \n",
|
||||
" description_list.append(description)\n",
|
||||
"\n",
|
||||
" print(f'------------------------')\n",
|
||||
" print(f'Data Retrieval Complete')\n",
|
||||
" \n",
|
||||
" # Create df with the scraped data\n",
|
||||
" data = {'Name': name_list, 'description': description_list}\n",
|
||||
" \n",
|
||||
" # Returns a data frame\n",
|
||||
" return pd.DataFrame(data)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# scrape the descriptions\n",
|
||||
"url_background = 'https://2e.aonprd.com/Backgrounds.aspx?ID='\n",
|
||||
"number_background = 50 # number to scrape\n",
|
||||
"\n",
|
||||
"description_background = scrape_description(url_background, number_background)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"description_background.to_csv('background.csv', encoding='UTF-8', index=False)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.6.9"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 4
|
||||
}
|
||||
@@ -0,0 +1,112 @@
|
||||
#!/usr/bin/env python
|
||||
# coding: utf-8
|
||||
|
||||
# # Scrape data from aon2e and generate csvs to import in to sqlite
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
# Dependencies
|
||||
import pandas as pd
|
||||
from bs4 import BeautifulSoup as bs, Tag, NavigableString
|
||||
import os
|
||||
from splinter import Browser
|
||||
|
||||
# Setting up Selenium
|
||||
chrome_driver = os.path.join('..', 'chromedriver.exe')
|
||||
executable_path = {'executable_path': chrome_driver}
|
||||
browser = Browser('chrome', **executable_path, headless=False)
|
||||
|
||||
# Pandas config
|
||||
pd.set_option('display.max_columns', None)
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
def scrape_description(url, id_number):
|
||||
|
||||
# Empty lists to store the scraped values
|
||||
name_list = []
|
||||
description_list = []
|
||||
|
||||
print(f'Beginning Data Retrieval')
|
||||
print(f'------------------------')
|
||||
|
||||
# Loop from 1 to the value in weapon_number
|
||||
for page in range(1, id_number+1):
|
||||
|
||||
browser.visit(url + str(page))
|
||||
html = browser.html
|
||||
soup = bs(html, 'html.parser')
|
||||
|
||||
# Select only the content section
|
||||
content = soup.find(id='ctl00_MainContent_DetailedOutput')
|
||||
|
||||
try:
|
||||
# Store the name
|
||||
name = content.find('h1', class_='title').a.text.strip()
|
||||
name
|
||||
|
||||
except:
|
||||
name = f'name: {page}'
|
||||
|
||||
try:
|
||||
# Start the loop after the link to the book
|
||||
start = content.find('a', class_='external-link').next_sibling
|
||||
description = ''
|
||||
for e in start.next_siblings:
|
||||
if isinstance(e, Tag):
|
||||
if e.name == 'br':
|
||||
if e.next_sibling.name == 'br':
|
||||
# If the next 2 elements are br skip this
|
||||
# loop it will be handled in the elif
|
||||
continue
|
||||
elif e.previous_sibling.name == 'br':
|
||||
# If this element and the previous are br
|
||||
# and the next is not append /n
|
||||
description = description + ' /n/n'
|
||||
else:
|
||||
# If there is just one br append /n
|
||||
description = description + ' /n'
|
||||
else:
|
||||
# Append the text inside the element
|
||||
description = description + e.text.strip()
|
||||
elif isinstance(e, NavigableString):
|
||||
# Since it is just a text append it
|
||||
description = description + e
|
||||
|
||||
except:
|
||||
description = f'name: {page}'
|
||||
|
||||
print(f'{page} of {id_number} | {name}')
|
||||
|
||||
# Append values to our empty lists
|
||||
name_list.append(name)
|
||||
description_list.append(description)
|
||||
|
||||
print(f'------------------------')
|
||||
print(f'Data Retrieval Complete')
|
||||
|
||||
# Create df with the scraped data
|
||||
data = {'Name': name_list, 'description': description_list}
|
||||
|
||||
# Returns a data frame
|
||||
return pd.DataFrame(data)
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
# scrape the descriptions
|
||||
url_background = 'https://2e.aonprd.com/Backgrounds.aspx?ID='
|
||||
number_background = 50 # number to scrape
|
||||
|
||||
description_background = scrape_description(url_background, number_background)
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
description_background.to_csv('background.csv', encoding='UTF-8', index=False)
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
# This directory scrapes the weapons from the [Archives of Nethys](https://2e.aonprd.com/Weapons.aspx)
|
||||
|
||||
## Steps to scrape the weapons
|
||||
1. Install the requirements from [the previous readme](../README.md)
|
||||
2. Generate .csv files from copy pasting the tables from [here](https://2e.aonprd.com/Weapons.aspx) and save them in this directory
|
||||
3. Set the number_of_weapons variable to the number of weapons in the database it is currently 83
|
||||
4. Run the [python file](scrape.py) or [Jupyter Notebook](scrape.ipynb)
|
||||
@@ -0,0 +1,105 @@
|
||||
equipment_id,name,level,price,bulk,traits,hands,source_id,source_pg,description
|
||||
1,Holly and Mistletoe,0,0,0,,1,1,290,"Plants of supernatural significance provide a primal focus for primal spellcasters, such as druids, when using certain abilities and casting some spells. A bundle of holly and mistletoe must be held in one hand to use it. Other primal foci exist for druids focused on other aspects of nature."
|
||||
2,Bedroll,0,0.01,0.1,,,1,288,
|
||||
3,Candle,0,0.01,0,,1,1,289,A lit candle sheds dim light in a 10-foot radius.
|
||||
4,Chalk,0,0.01,0,,1,1,288,
|
||||
5,Mug,0,0.01,0,,1,1,288,
|
||||
6,Oil,0,0.01,0,,2,1,291,"You can use oil to fuel lanterns, but you can also set a pint of oil aflame and throw it. You must first spend an Interact action preparing the oil, then throw it with another action as a ranged attack. If you hit, it splatters on the creature or in a single 5-foot square you target. You must succeed at a DC 10 flat check for the oil to ignite successfully when it hits. If the oil ignites, the target takes 1d6 fire damage."
|
||||
7,Piton,0,0.01,0,,1,1,291,"These small spikes can be used as anchors to make climbing easier. To affix a piton, you must hold it in one hand and use a hammer to drive it in with your other hand. You can attach a rope to the hammered piton so that you don't fall all the way to the ground on a critical failure while Climbing."
|
||||
8,Sack,0,0.01,0.1,,1,1,291,"A sack can hold up to 8 Bulk worth of items. A sack containing 2 Bulk or less can be worn on the body, usually tucked into a belt. You can carry a sack with one hand, but must use two hands to transfer items in and out."
|
||||
9,Sheath,0,0.01,0,,,1,291,A sheath or scabbard lets you easily carry a weapon on your person.
|
||||
10,Ten-Foot Pole,0,0.01,1,,2,1,291,"When wielding this long pole, you can use Seek to search a square up to 10 feet away. The pole is not sturdy enough to use as a weapon."
|
||||
11,Torch,0,0.01,0.1,,1,1,292,A torch sheds bright light in a 20-foot radius (and dim light to the next 20 feet). It can be used as an improvised weapon that deals 1d4 bludgeoning damage plus 1 fire damage.
|
||||
12,Soap,0,0.02,0,,1,1,288,
|
||||
13,Ladder,0,0.03,3,,2,1,288,
|
||||
14,Belt Pouch,0,0.04,0,,,1,289,A belt pouch holds up to four items of light Bulk.
|
||||
15,Flint and Steel,0,0.05,0,,2,1,290,"Flint and steel are useful in creating a fire if you have the time to catch a spark, though using them is typically too time-consuming to be practical during an encounter. Even in ideal conditions, using flint and steel to light a flame requires using at least 3 actions, and often significantly longer."
|
||||
16,Vial,0,0.05,0,,1,1,292,A simple glass vial holds up to 1 ounce of liquid.
|
||||
17,Waterskin,0,0.05,0.1,,1,1,292,"When it's full, a waterskin has 1 Bulk and contains roughly 1 day's worth of water for a Small or Medium creature."
|
||||
18,Signal Whistle,0,0.08,0,,1,1,291,"When sounded, a signal whistle can be heard clearly up to half a mile away across open terrain."
|
||||
19,Backpack,0,0.1,0,,,1,289,"A backpack holds up to 4 Bulk of items. If you're carrying or stowing the pack rather than wearing it on your back, its bulk is light instead of negligible."
|
||||
20,Bandolier,0,0.1,0,,,1,289,"A bandolier holds up to eight items of light Bulk within easy reach and is usually used for alchemical items or potions. If you are carrying or stowing a bandolier rather than wearing it around your chest, it has light Bulk instead of negligible. A bandolier can be dedicated to a full set of tools, such as healer's tools, allowing you to draw the tools as part of the action that requires them."
|
||||
21,Basic Crafter's Book,0,0.1,0.1,,2,1,289,This book contains the formulas (page 293) for Crafting the common items in this chapter.
|
||||
22,Clothing (Explorer's),0,0.1,0.1,,,1,287,"Explorer’s clothing is sturdy enough that it can be reinforced to protect you, even though it isn’t a suit of armor. It comes in many forms, though the most common sorts look like clerical vestments, monk’s garments, or wizard’s robes, as members of all three classes are likely to avoid wearing armor. For more information on explorer’s clothing, see pages 275–276."
|
||||
23,Clothing (Oridinary),0,0.1,0,,,1,287,"Ordinary clothing is functional with basic tailoring, such as peasant garb, monk’s robes, or work clothes."
|
||||
24,Disguise Kit (Replacement Cosmetics),0,0.1,0,,,1,290,"This small wooden box contains cosmetics, false facial hair, spirit gum, and a few simple wigs. You usually need a disguise kit to set up a disguise in order to Impersonate someone using the Deception skill. An elite disguise kit adds a +1 item bonus to relevant checks. If you’ve crafted a large number of disguises, you can replenish your cosmetics supply with replacement cosmetics suitable for the type of your disguise kit."
|
||||
25,Grappling Hook,0,0.1,0.1,,1,1,290,"You can throw a grappling hook with a rope tied to it to make a climb easier. To anchor a grappling hook, make an attack roll with the secret trait against a DC depending on the target, typically at least DC 20. On a success, your hook has a firm hold, but on a critical failure, the hook seems like it will hold but actually falls when you're partway up."
|
||||
26,Hammer,0,0.1,0.1,,1,1,288,
|
||||
27,Religious Symbol (Wooden),0,0.1,0.1,,1,1,291,"This piece of wood or silver is emblazoned with an image representing a deity. Some divine spellcasters, such as clerics, can use a religious symbol of their deity as a divine focus to use certain abilities and cast some spells. A religious symbol must be held in one hand to use it."
|
||||
28,Satchel,0,0.1,0,,2,1,291,"A satchel can hold up to 2 Bulk worth of items. If you are carrying or stowing a satchel rather than wearing it over your shoulder, it counts as light Bulk instead of negligible."
|
||||
29,Scroll Case,0,0.1,0,,2,1,291,"Scrolls, maps, and other rolled documents are stored in scroll cases for safe transport."
|
||||
30,Writing Set (Extra Ink and Paper),0,0.1,0,,,1,292,"Using a writing set, you can draft correspondence and scribe scrolls. A set includes stationery, including a variety of paper and parchment, as well as ink, a quill or inkpen, sealing wax, and a simple seal. If you’ve written a large amount, you can refill your kit with extra ink and paper."
|
||||
31,Lock (Poor),0,0.2,0,,2,1,290,Picking a poor lock requires two successful DC 15 Thievery checks.
|
||||
32,Merchant's Scale,0,0.2,0.1,,2,1,288,
|
||||
33,Saddlebags,0,0.2,0.1,,2,1,291,"Saddlebags come in a pair. Each can hold up to 3 Bulk of items. The Bulk value given is for saddlebags worn by a mount. If you are carrying or stowing saddlebags, they count as 1 Bulk instead of light Bulk."
|
||||
34,Caltrops,0,0.3,0.1,,1,1,289,"These four-pronged metal spikes can cause damage to a creature's feet. You can scatter caltrops in an empty square adjacent to you with an Interact action. The first creature that moves into that square must succeed at a DC 14 Acrobatics check or take 1d4 piercing damage and 1 persistent bleed damage. A creature taking persistent bleed damage from caltrops takes a 5-foot penalty to its Speed. Spending an Interact action to pluck the caltrops free reduces the DC to stop the bleeding. Once a creature takes damage from caltrops, enough caltrops are ruined that other creatures moving into the square are safe. Deployed caltrops can be salvaged and reused if no creatures took damage from them. Otherwise, enough caltrops are ruined that they can't be salvaged."
|
||||
35,Manacles (Poor),0,0.3,0,,2,1,290,"You can manacle someone who is willing or otherwise at your mercy as an exploration activity taking 10–30 seconds depending on the creature’s size and how many manacles you apply. A two-legged creature with its legs bound takes a –15-foot circumstance penalty to its Speeds, and a two-handed creature with its wrists bound has to succeed at a DC 5 flat check any time it uses a manipulate action or else that action fails. This DC may be higher depending on how tightly the manacles constrain the hands. A creature bound to a stationary object is immobilized. For creatures with more or fewer limbs, the GM determines what effect manacles have, if any. Freeing a creature from poor manacles requires two successful DC 17 Thievery checks."
|
||||
36,Thieves' Tools (Replacement Picks),0,0.3,0,,,1,291,"You need thieves’ tools to Pick Locks or Disable Devices (of some types) using the Thievery skill. If your thieves’ tools are broken, you can repair them by replacing the lock picks with replacement picks appropriate to your tools; this doesn’t require using the Repair action."
|
||||
37,Clothing (Winter),0,0.4,0.1,,,1,287,Winter clothing allows you to negate the damage from severe environmental cold and reduce the damage from extreme cold to that of severe cold.
|
||||
38,Rations,0,0.4,0.1,,1,1,288,
|
||||
39,Tool (Short),0,0.4,0.1,,1,1,292,"This entry is a catchall for basic hand tools that don’t have a specific adventuring purpose. A hoe, shovel, or sledgehammer is a long tool, and a hand drill, ice hook, or trowel is a short tool. A tool can usually be used as an improvised weapon, dealing 1d4 damage for a short tool or 1d6 for a long tool. The GM determines the damage type that’s appropriate or adjusts the damage if needed."
|
||||
40,Climbing Kit,0,0.5,1,,2,1,287,"This satchel includes 50 feet of rope, pulleys, a dozen pitons, a hammer, a grappling hook, and one set of crampons. Climbing kits allow you to attach yourself to the wall you're Climbing, moving half as quickly as usual (minimum 5 feet) but letting you attempt a DC 5 flat check whenever you critically fail to prevent a fall. A single kit has only enough materials for one climber; each climber needs their own kit."
|
||||
41,Climbing Kit (Extreme),3,40,1,,2,1,287,"This satchel includes 50 feet of rope, pulleys, a dozen pitons, a hammer, a grappling hook, and one set of crampons. Climbing kits allow you to attach yourself to the wall you’re Climbing, moving half as quickly as usual (minimum 5 feet) but letting you attempt a DC 5 flat check whenever you critically fail to prevent a fall. You gain a +1 item bonus to Athletics checks to Climb while using an extreme climbing kit. A single kit has only enough materials for one climber; each climber needs their own kit."
|
||||
42,Crowbar,0,0.5,0.1,,2,1,290,"When Forcing Open an object that doesn't have an easy grip, a crowbar makes it easier to gain the necessary leverage. Without a crowbar, prying something open takes a -2 item penalty to the Athletics check to Force Open (similar to using a shoddy item)."
|
||||
43,Material Component Pouch,0,0.5,0.1,,1,1,290,"This pouch contains material components for those spells that require them. Though the components are used up over time, you can refill spent components during your daily preparations."
|
||||
44,Rope,0,0.5,0.1,,2,1,288,
|
||||
45,Chest,0,0.6,2,,2,1,289,A wooden chest can hold up to 8 Bulk of items.
|
||||
46,Adventurer's Pack,0,0.7,2,,,1,289,"This item is the starter kit for an adventurer, containing the essential items for exploration and survival. The Bulk value is for the entire pack together, but see the descriptions of individual items as necessary. \n\n The pack contains the following items: backpack (containing the other goods), bedroll, two belt pouches, 10 pieces of chalk, flint and steel, 50 feet of rope, 2 weeks’ rations, soap, 5 torches, and a waterskin."
|
||||
47,Lantern (Hooded),0,0.7,0.1,,1,1,290,"A lantern sheds bright light and requires 1 pint of oil to function for 6 hours. \n\n A hooded lantern sheds light in a 30-foot radius (and dim light in the next 30 feet) and is equipped with shutters, which you can close to block the light. Closing or opening the shutters takes an Interact action."
|
||||
48,Fishing Tackle,0,0.8,1,,2,1,290,"This kit include a collapsible fishing pole, fishhooks, line, lures, and a fishing net."
|
||||
49,Musical Instrument (Handheld),0,0.8,1,,2,1,290,"Handheld instruments include bagpipes, a small set of chimes, small drums, fiddles and viols, flutes and recorders, small harps, lutes, trumpets, and similarly sized instruments. The GM might rule that an especially large handheld instrument (like a tuba) has greater Bulk."
|
||||
50,Tent (Pup),0,0.8,0.1,,2,1,288,
|
||||
51,Compass,0,1,0.1,,1,1,290,"A compass helps you Sense Direction or navigate, provided you’re in a location with uniform magnetic fields. Without a compass, you take a –2 item penalty to these checks (similar to using a shoddy item)."
|
||||
52,Cookware,0,1,2,,2,1,288,
|
||||
53,Formula Book (Blank),0,1,1,,1,1,290,"A formula book holds the formulas necessary to make items other than the common equipment from this chapter; alchemists typically get one for free. Each formula book can hold the formulas for up to 100 different items. Formulas can also appear on parchment sheets, tablets, and almost any other medium; there’s no need for you to copy them into a specific book as long as you can keep them on hand to reference them."
|
||||
54,Lantern (Bull's-Eye),0,1,1,,1,1,290,A lantern sheds bright light and requires 1 pint of oil to function for 6 hours. \n\n A bull’s-eye lantern emits its light in a 60-foot cone (and dim light in the next 60 feet).
|
||||
55,Mirror,0,1,0,,1,1,288,
|
||||
56,Religious Text,0,1,0.1,,1,1,291,"This manuscript contains scripture of a particular religion. Some divine spellcasters, such as clerics, can use a religious text as a divine focus to use certain abilities and cast some spells. A religious text must be held in one hand to use it."
|
||||
57,Spellbook (Blank),0,1,1,,1,1,291,"A spellbook holds the written knowledge necessary to learn and prepare various spells, a necessity for wizards (who typically get one for free) and a useful luxury for other spellcasters looking to learn additional spells. Each spellbook can hold up to 100 spells. The Price listed is for a blank spellbook."
|
||||
58,Tool (Long),0,1,1,,2,1,292,"This entry is a catchall for basic hand tools that don’t have a specific adventuring purpose. A hoe, shovel, or sledgehammer is a long tool, and a hand drill, ice hook, or trowel is a short tool. A tool can usually be used as an improvised weapon, dealing 1d4 damage for a short tool or 1d6 for a long tool. The GM determines the damage type that’s appropriate or adjusts the damage if needed."
|
||||
59,Writing Set,0,1,0.1,,2,1,292,"Using a writing set, you can draft correspondence and scribe scrolls. A set includes stationery, including a variety of paper and parchment, as well as ink, a quill or inkpen, sealing wax, and a simple seal. If you’ve written a large amount, you can refill your kit with extra ink and paper.Writing SetItem 0Source Core Rulebook pg. 292Price 1 gpHands 2; Bulk LWriting Set (Extra Ink and Paper)Item 0Source Core Rulebook pg. 292Price 1 sp"
|
||||
60,Clothing (Fine),0,2,0.1,,,1,287,"Fine clothing, suitable for a noble or royal, is made with expensive fabrics, precious metals, and intricate patterns."
|
||||
61,Disguise Kit,0,2,0.1,,2,1,290,"This small wooden box contains cosmetics, false facial hair, spirit gum, and a few simple wigs. You usually need a disguise kit to set up a disguise in order to Impersonate someone using the Deception skill. An elite disguise kit adds a +1 item bonus to relevant checks. If you’ve crafted a large number of disguises, you can replenish your cosmetics supply with replacement cosmetics suitable for the type of your disguise kit."
|
||||
62,Musical Instrument (Heavy),0,2,16,,2,1,290,"Handheld instruments include bagpipes, a small set of chimes, small drums, fiddles and viols, flutes and recorders, small harps, lutes, trumpets, and similarly sized instruments. The GM might rule that an especially large handheld instrument (like a tuba) has greater Bulk. Heavy instruments such as large drums, a full set of chimes, and keyboard instruments are less portable and generally need to be stationary while played."
|
||||
63,Religious Symbol (Silver),0,2,0.1,,1,1,291,"This piece of wood or silver is emblazoned with an image representing a deity. Some divine spellcasters, such as clerics, can use a religious symbol of their deity as a divine focus to use certain abilities and cast some spells. A religious symbol must be held in one hand to use it."
|
||||
64,Repair Kit,0,2,1,,2,1,291,"A repair kit allows you to perform simple repairs while traveling. It contains a portable anvil, tongs, woodworking tools, a whetstone, and oils for conditioning leather and wood. You can use a repair kit to Repair items using the Crafting skill."
|
||||
65,Hourglass,0,3,0.1,,1,1,288,
|
||||
66,Thieves' Tools,0,3,0.1,,2,1,291,"You need thieves’ tools to Pick Locks or Disable Devices (of some types) using the Thievery skill. If your thieves’ tools are broken, you can repair them by replacing the lock picks with replacement picks appropriate to your tools; this doesn’t require using the Repair action."
|
||||
67,Artisan's Tools,0,4,2,,2,1,289,"You need these tools to create items from raw materials with the Craft skill. Different sets are needed for different work, as determined by the GM; for example, blacksmith’s tools differ from woodworker’s tools."
|
||||
68,Chain,0,4,1,,2,1,288,
|
||||
69,Tack,0,4,1,,,1,291,"Tack includes all the gear required to outfit a riding animal, including a saddle, bit and bridle, and stirrups if necessary. Especially large or oddly shaped animals might require specialty saddles. These can be more expensive or hard to find, as determined by the GM. The Bulk value given is for tack worn by a creature. If carried, the Bulk increases to 2."
|
||||
70,Alchemist's Tools,0,5,2,,2,1,287,"These beakers and chemicals can be used to set up a mobile alchemical laboratory. When you carry the tools from place to place, you keep many of the components handy on your person, in pockets or bandoliers."
|
||||
71,Healer's Tools,0,5,1,,2,1,290,"This kit of bandages, herbs, and suturing tools is necessary for Medicine checks to Administer First Aid, Treat Disease, Treat Poison, or Treat Wounds. When you carry the tools from place to place, you keep many of the components handy on your person, in pockets or bandoliers."
|
||||
72,Snare Kit,0,5,2,,2,1,291,This kit contains tools and materials for creating snares. A snare kit allows you to Craft snares using the Crafting skill.
|
||||
73,Tent (Four-Person),0,5,1,,2,1,288,
|
||||
74,Spyglass,0,20,0.1,,2,1,291,A typical spyglass lets you see eight times farther than normal.
|
||||
75,Magnifying Glass,0,40,0,,1,1,290,"This quality handheld lens gives you a +1 item bonus to Perception checks to notice minute details of documents, fabric, and the like."
|
||||
76,Lock (Simple),1,2,0,,2,1,290,Picking a simple lock requires three successful DC 20 Thievery checks.
|
||||
77,Manacles (Simple),1,3,0,,2,1,290,"You can manacle someone who is willing or otherwise at your mercy as an exploration activity taking 10–30 seconds depending on the creature’s size and how many manacles you apply. A two-legged creature with its legs bound takes a –15-foot circumstance penalty to its Speeds, and a two-handed creature with its wrists bound has to succeed at a DC 5 flat check any time it uses a manipulate action or else that action fails. This DC may be higher depending on how tightly the manacles constrain the hands. A creature bound to a stationary object is immobilized. For creatures with more or fewer limbs, the GM determines what effect manacles have, if any. Freeing a creature from simple manacles requires three successes at DC 22."
|
||||
78,Tent (Pavilion),2,40,12,,2,1,288,
|
||||
79,Disguise Kit (Elite Cosmetics),3,0.5,0,,,1,290,"This small wooden box contains cosmetics, false facial hair, spirit gum, and a few simple wigs. You usually need a disguise kit to set up a disguise in order to Impersonate someone using the Deception skill. An elite disguise kit adds a +1 item bonus to relevant checks. If you’ve crafted a large number of disguises, you can replenish your cosmetics supply with replacement cosmetics suitable for the type of your disguise kit."
|
||||
80,Thieve's Tools (Infiltrator Picks),3,3,0,,,1,291,"You need thieves’ tools to Pick Locks or Disable Devices (of some types) using the Thievery skill. Infiltrator thieves’ tools add a +1 item bonus to checks to Pick Locks and Disable Devices. If your thieves’ tools are broken, you can repair them by replacing the lock picks with replacement picks appropriate to your tools; this doesn’t require using the Repair action."
|
||||
81,Scholarly Journal,3,6,0.1,Uncommon,1,1,291,"Scholarly journals are uncommon. Each scholarly journal is a folio on a very specific topic, such as vampires or the history of a single town or neighborhood of a city. If you spend 1 minute referencing an academic journal before attempting a skill check to Recall Knowledge about the subject, you gain a +1 item bonus to the check."
|
||||
82,Survey Map,3,10,0.1,Uncommon,1,1,291,"Maps are uncommon. Most maps you can find are simple and functional. A survey map details a single location in excellent detail. One of these maps gives you a +1 item bonus to Survival checks and any skill checks to Recall Knowledge, provided the checks are related to the location detailed on the map."
|
||||
83,Lock (Average),3,15,0,,2,1,290,Picking an average lock requires four successes at DC 25.
|
||||
84,Compass (Lensatic),3,20,0.1,,1,1,290,"A compass helps you Sense Direction or navigate, provided you’re in a location with uniform magnetic fields. Without a compass, you take a –2 item penalty to these checks (similar to using a shoddy item). A lensatic compass gives you a +1 item bonus to these checks."
|
||||
85,Crowbar (Levered),3,20,0.1,,2,1,290,"When Forcing Open an object that doesn’t have an easy grip, a crowbar makes it easier to gain the necessary leverage. Without a crowbar, prying something open takes a –2 item penalty to the Athletics check to Force Open (similar to using a shoddy item). A levered crowbar grants you a +1 item bonus to Athletics checks to Force Open anything that can be pried open. "
|
||||
86,Fishing Tackle (Professional),3,20,1,,2,1,290,"This kit include a collapsible fishing pole, fishhooks, line, lures, and a fishing net. Professional fishing tackle grants a +1 item bonus to checks to fish."
|
||||
87,Manacles (Average),3,20,0,,2,1,290,"You can manacle someone who is willing or otherwise at your mercy as an exploration activity taking 10–30 seconds depending on the creature’s size and how many manacles you apply. A two-legged creature with its legs bound takes a –15-foot circumstance penalty to its Speeds, and a two-handed creature with its wrists bound has to succeed at a DC 5 flat check any time it uses a manipulate action or else that action fails. This DC may be higher depending on how tightly the manacles constrain the hands. A creature bound to a stationary object is immobilized. For creatures with more or fewer limbs, the GM determines what effect manacles have, if any. Freeing a creature from average manacles require four successes at DC 27."
|
||||
88,Repair Kit (Superb),3,25,1,,2,1,291,"A repair kit allows you to perform simple repairs while traveling. It contains a portable anvil, tongs, woodworking tools, a whetstone, and oils for conditioning leather and wood. You can use a repair kit to Repair items using the Crafting skill. A superb repair kit gives you a +1 item bonus to the check."
|
||||
89,Scholarly Journal (Compendium),3,30,0.1,Uncommon,1,1,291,"Scholarly journals are uncommon. Each scholarly journal is a folio on a very specific topic, such as vampires or the history of a single town or neighborhood of a city. If you spend 1 minute referencing an academic journal before attempting a skill check to Recall Knowledge about the subject, you gain a +1 item bonus to the check. A compendium of journals costs five times as much as a single journal and requires both hands to use; each compendium contains several journals and grants its bonus on a broader topic, such as all undead or a whole city. The GM determines what scholarly journals are available in any location."
|
||||
90,Disguise Kit (Elite),3,40,0.1,,,1,290,"This small wooden box contains cosmetics, false facial hair, spirit gum, and a few simple wigs. You usually need a disguise kit to set up a disguise in order to Impersonate someone using the Deception skill. An elite disguise kit adds a +1 item bonus to relevant checks. If you’ve crafted a large number of disguises, you can replenish your cosmetics supply with replacement cosmetics suitable for the type of your disguise kit."
|
||||
91,Artisan's Tools (Sterling),3,50,2,,2,1,287,"You need these tools to create items from raw materials with the Craft skill. Sterling artisan’s tools give you a +1 item bonus to the check. Different sets are needed for different work, as determined by the GM; for example, blacksmith’s tools differ from woodworker’s tools."
|
||||
92,Healer's Tools (Expanded),3,50,1,,2,1,290,"This kit of bandages, herbs, and suturing tools is necessary for Medicine checks to Administer First Aid, Treat Disease, Treat Poison, or Treat Wounds. Expanded healer’s tools provide a +1 item bonus to such checks. When you carry the tools from place to place, you keep many of the components handy on your person, in pockets or bandoliers."
|
||||
93,Musical Instrument (Virtuoso Handheld),3,50,1,,2,1,290,"Handheld instruments include bagpipes, a small set of chimes, small drums, fiddles and viols, flutes and recorders, small harps, lutes, trumpets, and similarly sized instruments. The GM might rule that an especially large handheld instrument (like a tuba) has greater Bulk. \n\n A virtuoso instrument gives a +1 item bonus to Performance checks using that instrument."
|
||||
94,Survey Map (Atlas),3,50,0.1,Uncommon,2,1,291,"Maps are uncommon. Most maps you can find are simple and functional. A survey map details a single location in excellent detail. One of these maps gives you a +1 item bonus to Survival checks and any skill checks to Recall Knowledge, provided the checks are related to the location detailed on the map. Maps sometimes come in atlases, containing a number of maps of the same quality, often on similar topics. An atlas costs five times as much as a single map and requires both hands to use. The GM determines what maps are available in any location."
|
||||
95,Thieve's Tools (Infiltrator),3,50,0.1,,2,1,291,"You need thieves’ tools to Pick Locks or Disable Devices (of some types) using the Thievery skill. Infiltrator thieves’ tools add a +1 item bonus to checks to Pick Locks and Disable Devices. If your thieves’ tools are broken, you can repair them by replacing the lock picks with replacement picks appropriate to your tools; this doesn’t require using the Repair action."
|
||||
96,Alchemist's Tools (Expanded),3,55,2,,2,1,287,"These beakers and chemicals can be used to set up a mobile alchemical laboratory. Expanded alchemist’s tools give a +1 item bonus to Crafting checks to create alchemical items. When you carry the tools from place to place, you keep many of the components handy on your person, in pockets or bandoliers."
|
||||
97,Clothing (High-Fashion Fine),3,55,0.1,,,1,287,"Fine clothing, suitable for a noble or royal, is made with expensive fabrics, precious metals, and intricate patterns. You gain a +1 item bonus to checks to Make an Impression on nobility or other upper-class folk while wearing high-fashion fine clothing."
|
||||
98,Snare Kit (Specialist),3,55,2,,2,1,291,This kit contains tools and materials for creating snares. A snare kit allows you to Craft snares using the Crafting skill. A specialist snare kit gives you a +1 item bonus to the check.
|
||||
99,Musical Instrument (Virtuoso Heavy),3,100,16,,2,1,290,"Handheld instruments include bagpipes, a small set of chimes, small drums, fiddles and viols, flutes and recorders, small harps, lutes, trumpets, and similarly sized instruments. The GM might rule that an especially large handheld instrument (like a tuba) has greater Bulk. Heavy instruments such as large drums, a full set of chimes, and keyboard instruments are less portable and generally need to be stationary while played. \n\n A virtuoso instrument gives a +1 item bonus to Performance checks using that instrument. "
|
||||
100,Spyglass (Fine),4,80,0.1,,2,1,291,A typical spyglass lets you see eight times farther than normal. A fine spyglass adds a +1 item bonus to Perception checks to notice details at a distance.
|
||||
101,Lock (Good),9,200,0,,2,1,290,Picking a good lock requires five successes at DC 30.
|
||||
102,Manacles (Good),9,250,0,,2,1,290,"You can manacle someone who is willing or otherwise at your mercy as an exploration activity taking 10–30 seconds depending on the creature’s size and how many manacles you apply. A two-legged creature with its legs bound takes a –15-foot circumstance penalty to its Speeds, and a two-handed creature with its wrists bound has to succeed at a DC 5 flat check any time it uses a manipulate action or else that action fails. This DC may be higher depending on how tightly the manacles constrain the hands. A creature bound to a stationary object is immobilized. For creatures with more or fewer limbs, the GM determines what effect manacles have, if any. Freeing a creature from good manacles require five successes at DC 32."
|
||||
103,Lock (Superior),17,4500,0,,2,1,290,Picking a superior lock six successes at DC 40.
|
||||
104,Manacles (Superior),17,5000,0,,2,1,290,"You can manacle someone who is willing or otherwise at your mercy as an exploration activity taking 10–30 seconds depending on the creature’s size and how many manacles you apply. A two-legged creature with its legs bound takes a –15-foot circumstance penalty to its Speeds, and a two-handed creature with its wrists bound has to succeed at a DC 5 flat check any time it uses a manipulate action or else that action fails. This DC may be higher depending on how tightly the manacles constrain the hands. A creature bound to a stationary object is immobilized. For creatures with more or fewer limbs, the GM determines what effect manacles have, if any. Freeing a creature from superior manacles require six successes at DC 42."
|
||||
|
@@ -0,0 +1,173 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Scrape data from aon2e and generate csvs to import in to sqlite"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Dependencies\n",
|
||||
"import pandas as pd\n",
|
||||
"from bs4 import BeautifulSoup as bs, Tag, NavigableString\n",
|
||||
"import os\n",
|
||||
"from splinter import Browser\n",
|
||||
"\n",
|
||||
"# Setting up Selenium\n",
|
||||
"chrome_driver = os.path.join('..', 'chromedriver.exe')\n",
|
||||
"executable_path = {'executable_path': chrome_driver}\n",
|
||||
"browser = Browser('chrome', **executable_path, headless=False)\n",
|
||||
"\n",
|
||||
"# Pandas config\n",
|
||||
"pd.set_option('display.max_columns', None)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def scrape_description(url, id_number):\n",
|
||||
"\n",
|
||||
" # Empty lists to store the scraped values\n",
|
||||
" name_list = []\n",
|
||||
" description_list = []\n",
|
||||
"\n",
|
||||
" print(f'Beginning Data Retrieval')\n",
|
||||
" print(f'------------------------')\n",
|
||||
"\n",
|
||||
" # Loop from 1 to the value in weapon_number\n",
|
||||
" for page in range(1, id_number+1):\n",
|
||||
"\n",
|
||||
" browser.visit(url + str(page))\n",
|
||||
" html = browser.html\n",
|
||||
" soup = bs(html, 'html.parser')\n",
|
||||
"\n",
|
||||
" # Select only the content section\n",
|
||||
" content = soup.find(id='ctl00_MainContent_DetailedOutput')\n",
|
||||
"\n",
|
||||
" try:\n",
|
||||
" # Store the name and description\n",
|
||||
" name = content.find('h1', class_='title')\n",
|
||||
" name.span.decompose()\n",
|
||||
" name = name.text\n",
|
||||
"\n",
|
||||
" except:\n",
|
||||
" name = f'name: {page}'\n",
|
||||
"\n",
|
||||
" try:\n",
|
||||
" description = ''\n",
|
||||
" start = content.find('hr')\n",
|
||||
" for e in start.next_siblings:\n",
|
||||
" if isinstance(e, Tag):\n",
|
||||
" description = description + e.text.strip()\n",
|
||||
" elif isinstance(e, NavigableString):\n",
|
||||
" description = description + e\n",
|
||||
"\n",
|
||||
" except:\n",
|
||||
" description = f'name: {page}'\n",
|
||||
"\n",
|
||||
" print(f'{page} of {id_number} | {name}')\n",
|
||||
"\n",
|
||||
" # Append values to our empty lists\n",
|
||||
" name_list.append(name) \n",
|
||||
" description_list.append(description)\n",
|
||||
"\n",
|
||||
" print(f'------------------------')\n",
|
||||
" print(f'Data Retrieval Complete')\n",
|
||||
" \n",
|
||||
" # Create df with the scraped data\n",
|
||||
" data = {'Name': name_list, 'description': description_list}\n",
|
||||
" \n",
|
||||
" # Returns a data frame\n",
|
||||
" return pd.DataFrame(data)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# scrape the descriptions\n",
|
||||
"url_gear = 'https://2e.aonprd.com/Equipment.aspx?ID='\n",
|
||||
"number_gear = 65 #65 to scrape\n",
|
||||
"\n",
|
||||
"gear_description = scrape_description(url_gear, number_gear)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Directory of csv files which are taken from https://2e.aonprd.com/Weapons.aspx\n",
|
||||
"gear = pd.read_csv('gear.csv')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"gear_description"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"gear = gear.merge(gear_description, how='left', on='Name')\n",
|
||||
"gear['Level'].fillna(0, inplace=True)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"gear.to_csv('gear.csv')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.6.9"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 4
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
#!/usr/bin/env python
|
||||
# coding: utf-8
|
||||
|
||||
# # Scrape data from aon2e and generate csvs to import in to sqlite
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
# Dependencies
|
||||
import pandas as pd
|
||||
from bs4 import BeautifulSoup as bs, Tag, NavigableString
|
||||
import os
|
||||
from splinter import Browser
|
||||
|
||||
# Setting up Selenium
|
||||
chrome_driver = os.path.join('..', 'chromedriver.exe')
|
||||
executable_path = {'executable_path': chrome_driver}
|
||||
browser = Browser('chrome', **executable_path, headless=False)
|
||||
|
||||
# Pandas config
|
||||
pd.set_option('display.max_columns', None)
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
def scrape_description(url, id_number):
|
||||
|
||||
# Empty lists to store the scraped values
|
||||
name_list = []
|
||||
description_list = []
|
||||
|
||||
print(f'Beginning Data Retrieval')
|
||||
print(f'------------------------')
|
||||
|
||||
# Loop from 1 to the value in weapon_number
|
||||
for page in range(1, id_number+1):
|
||||
|
||||
browser.visit(url + str(page))
|
||||
html = browser.html
|
||||
soup = bs(html, 'html.parser')
|
||||
|
||||
# Select only the content section
|
||||
content = soup.find(id='ctl00_MainContent_DetailedOutput')
|
||||
|
||||
try:
|
||||
# Store the name and description
|
||||
name = content.find('h1', class_='title')
|
||||
name.span.decompose()
|
||||
name = name.text
|
||||
|
||||
except:
|
||||
name = f'name: {page}'
|
||||
|
||||
try:
|
||||
description = ''
|
||||
start = content.find('hr')
|
||||
for e in start.next_siblings:
|
||||
if isinstance(e, Tag):
|
||||
description = description + e.text.strip()
|
||||
elif isinstance(e, NavigableString):
|
||||
description = description + e
|
||||
|
||||
except:
|
||||
description = f'name: {page}'
|
||||
|
||||
print(f'{page} of {id_number} | {name}')
|
||||
|
||||
# Append values to our empty lists
|
||||
name_list.append(name)
|
||||
description_list.append(description)
|
||||
|
||||
print(f'------------------------')
|
||||
print(f'Data Retrieval Complete')
|
||||
|
||||
# Create df with the scraped data
|
||||
data = {'Name': name_list, 'description': description_list}
|
||||
|
||||
# Returns a data frame
|
||||
return pd.DataFrame(data)
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
# scrape the descriptions
|
||||
url_gear = 'https://2e.aonprd.com/Equipment.aspx?ID='
|
||||
number_gear = 65 #65 to scrape
|
||||
|
||||
gear_description = scrape_description(url_gear, number_gear)
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
# Directory of csv files which are taken from https://2e.aonprd.com/Weapons.aspx
|
||||
gear = pd.read_csv('gear.csv')
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
gear_description
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
gear = gear.merge(gear_description, how='left', on='Name')
|
||||
gear['Level'].fillna(0, inplace=True)
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
gear.to_csv('gear.csv')
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
# This directory scrapes the weapons from the [Archives of Nethys](https://2e.aonprd.com/Weapons.aspx)
|
||||
|
||||
## Steps to scrape the weapons
|
||||
1. Install the requirements from [the previous readme](../README.md)
|
||||
2. Generate .csv files from copy pasting the tables from [here](https://2e.aonprd.com/Weapons.aspx) and save them in this directory
|
||||
3. Set the number_of_weapons variable to the number of weapons in the database it is currently 83
|
||||
4. Run the [python file](scrape.py) or [Jupyter Notebook](scrape.ipynb)
|
||||
@@ -0,0 +1,5 @@
|
||||
ammunition_id,name,price_gp,amount,bulk,group,source_id,source_pg,description
|
||||
1,Arrows,0.1,10,L,Bow,1,282,These projectiles are the ammunition for bows. The shaft of an arrow is made of wood. It is stabilized in flight by fletching at one end and bears a metal head on the other.
|
||||
2,Blowgun Darts,0.05,10,L,Dart,1,281,"These thin, light darts are typically made of hardwood and stabilized with fletching of down or fur. They are often hollow so they can be used to deliver poison."
|
||||
3,Bolts,0.1,10,L,Bow,1,281,"Shorter than traditional arrows but similar in construction, bolts are the ammunition used by crossbows."
|
||||
4,Sling Bullets,0.01,10,L,Sling,1,282,"These are small metal balls, typically either iron or lead, designed to be used as ammunition in slings."
|
||||
|
@@ -0,0 +1,68 @@
|
||||
weapon_id,name,category,price_gp,dice_size,damage_type,bulk,hands,group,traits,sources_id,sources_pg,description
|
||||
0,Fist,Unarmed,0,4,B,0,1,Brawling,"Agile, Finesse, Nonlethal, Unarmed",1,280,Nethys Note: no description was provided for this item
|
||||
1,Clan Dagger,Simple,2,4,P,0.1,1,Knife,"Agile, Dwarf, Parry, Uncommon, Versatile B",1,280,"This broad dagger is carried by dwarves as a weapon, tool, and designation of clan. Losing or having to surrender a clan dagger is considered a mark of embarrassment to most dwarves."
|
||||
2,Club,Simple,0,6,B,1,1,Club,"Thrown 10 ft., Thrown",1,280,This is a piece of stout wood shaped or repurposed to bludgeon an enemy. Clubs can be intricately carved pieces of martial art or as simple as a tree branch or piece of wood.
|
||||
3,Dagger,Simple,0.2,4,P,0.1,1,Knife,"Agile, Finesse, Thrown 10 ft., Versatile S, Thrown, Versatile",1,280,"This small, bladed weapon is held in one hand and used to stab a creature in close combat. It can also be thrown."
|
||||
4,Gauntlet,Simple,0.2,4,B,0.1,1,Brawling,"Agile, Free-Hand",1,280,"A pair of these metal gloves comes with full plate, half plate, and splint armor; they can also be purchased separately and worn with other types of armor. They not only protect your hands but also transform your hands into lethal weapons."
|
||||
5,Katar,Simple,0.3,4,P,0.1,1,Knife,"Agile, Deadly d6, Monk, Uncommon, Deadly",1,280,"Also known as punching daggers, katars are characterized by their H-shaped hand grip that allows the blade to jut out from the knuckles."
|
||||
6,Light Mace,Simple,0.4,4,B,0.1,1,Club,"Agile, Finesse, Shove",1,280,"A light mace has a short wooden or metal shaft ending with a dense metal head. Used much like a club, it delivers heavy bludgeoning blows, but with extra power derived from the head’s metal ridges or spikes."
|
||||
7,Longspear,Simple,0.5,8,P,2,2,Spear,Reach,1,280,"This very long spear, sometimes called a pike, is purely for thrusting rather than throwing. Used by many soldiers and city watch for crowd control and defense against charging enemies, it must be wielded with two hands."
|
||||
8,Mace,Simple,1,6,B,1,1,Club,Shove,1,280,"With a stout haft and a heavy metal head, a mace is sturdy and allows its wielder to deliver powerful blows and dent armor."
|
||||
9,Morningstar,Simple,1,6,B,1,1,Club,"Versatile P, Versatile",1,280,This weapon has a short shaft ending in a metal ball studded with spikes.
|
||||
10,Sickle,Simple,0.2,4,S,0.1,1,Knife,"Agile, Finesse, Trip",1,280,"Originally a farming tool used for reaping grain, this one-handed weapon has a short wooden handle ending in a curved blade, sometimes sharpened on both sides."
|
||||
11,Spear,Simple,0.1,6,P,1,1,Spear,"Thrown 20 ft., Thrown",1,280,"A long metal shaft ending with a metal spike, a spear can be used one-handed as a melee weapon and can be thrown."
|
||||
12,Spiked Gauntlet,Simple,0.3,4,P,0.1,1,Brawling,"Agile, Free-Hand",1,280,"Providing the same defensive function as a standard gauntlet, this version has a group of spikes protruding from the knuckles to deliver piercing damage with a punch."
|
||||
13,Staff,Simple,0,4,B,1,1,Club,"Two-Hand d8, Two-Hand",1,280,This long piece of wood can aid in walking and deliver a mighty blow.
|
||||
14,Bastard Sword,Martial,4,8,S,1,1,Sword,"Two-Hand d12, Two-Hand",1,280,"This broad-bladed sword, sometimes called the hand‑and‑a‑half sword, has a longer grip so it can be held in one hand or used with two hands to provide extra piercing or slashing power."
|
||||
15,Battle Axe,Martial,0.1,8,S,1,1,Axe,Sweep,1,280,"These axes are designed explicitly as weapons, rather than tools. They typically weigh less, with a shaft reinforced with metal bands or bolts, and have a sharper blade, making them ideal for chopping limbs rather than wood."
|
||||
16,Bo Staff,Martial,0.2,8,B,2,2,Club,"Monk, Parry, Reach, Trip",1,280,This strong but slender staff is tapered at the ends and well balanced. It’s designed to be an offensive and defensive weapon.
|
||||
17,Dogslicer,Martial,0.1,6,S,0.1,1,Sword,"Agile, Backstabber, Finesse, Goblin, Uncommon",1,280,"This short, curved, and crude makeshift blade often has holes drilled into it to reduce its weight. It’s a favored weapon of goblins."
|
||||
18,Elven Curve Blade,Martial,4,8,S,2,2,Sword,"Elf, Finesse, Forceful",1,281,"Essentially a longer version of the scimitar, this traditional elven weapon has a thinner blade than its cousin."
|
||||
19,Falchion,Martial,3,10,S,2,2,Sword,"Forceful, Sweep",1,280,"This weapon is a heavier, two-handed version of the curved-bladed scimitar. It is weighted toward the blade’s end, making it a powerful slashing weapon."
|
||||
20,Filcher's Fork,Martial,1,4,P,0.1,1,Spear,"Agile, Backstabber, Deadly d6, Finesse, Halfling, Thrown 20 ft., Uncommon, Deadly, Thrown",1,281,"This halfling weapon looks like a long, two-pronged fork and is used as both a weapon and a cooking implement."
|
||||
21,Flail,Martial,1,6,B,1,1,Flail,"Disarm, Sweep, Trip",1,280,"This weapon consists of a wooden handle attached to a spiked ball or cylinder by a chain, rope, or strap of leather."
|
||||
22,Glaive,Martial,2,8,S,2,2,Polearm,"Deadly d8, Forceful, Reach, Deadly",1,280,"This polearm consists of a long, single-edged blade on the end of a 7-foot pole. It is extremely effective at delivering lethal cuts at a distance."
|
||||
23,Gnome Hooked Hammer,Martial,2,6,B,1,1,Hammer,"Gnome, Trip, Two-Hand d10, Uncommon, Versatile P, Versatile, Two-Hand",1,281,This gnome tool and weapon features a hammer at one end and a curved pick on the other. It’s such a strange and awkward weapon that others think the gnomes are slightly erratic for using it.
|
||||
24,Greataxe,Martial,1,12,S,2,2,Axe,Sweep,1,280,"This large battle axe is too heavy to wield with only one hand. Many greataxes incorporate two blades, and they are often “bearded,” having a hook at the bottom to increase the strength of their chopping power."
|
||||
25,Greatclub,Martial,1,10,B,2,2,Club,"Backswing, Shove",1,280,"While many greatclubs are intricately carved, others are little more than a sturdy tree branch. These massive clubs are too heavy to wield with only one hand."
|
||||
26,Greatpick,Martial,2,10,P,2,2,Pick,"Fatal d12, Fatal",1,280,This pick has a longer handle and broader head than a regular pick. It is too heavy to wield in one hand.
|
||||
27,Greatsword,Martial,2,12,S,2,2,Sword,"Versatile P, Versatile",1,280,This immense two-handed sword is nearly as tall as its wielder. Its lower blade is often somewhat dulled to allow it to be gripped for extra leverage in close-quarter fights.
|
||||
28,Guisarme,Martial,2,10,S,2,2,Polearm,"Reach, Trip",1,280,"This polearm bears a long, often one‑sided, curved blade with a hook protruding from the blunt side of the blade, which can allow its wielder to trip opponents at a distance. Its shaft is usually 8 feet long."
|
||||
29,Halberd,Martial,2,10,P,2,2,Polearm,"Reach, Versatile S, Versatile",1,280,"This polearm has a relatively short, 5-foot shaft. The business end is a long spike with an axe blade attached."
|
||||
30,Hatchet,Martial,0.4,6,S,0.1,1,Axe,"Agile, Sweep, Thrown 10 ft., Thrown",1,280,This small axe can be used in close combat or thrown.
|
||||
31,Horsechopper,Martial,0.9,8,S,2,2,Polearm,"Goblin, Reach, Trip, Uncommon, Versatile P, Versatile",1,281,"Created by goblins to battle horses, this weapon is essentially a long shaft ending in a blade with a large hook."
|
||||
32,Kama,Martial,1,6,S,0.1,1,Knife,"Agile, Monk, Trip, Uncommon",1,281,"Similar to a sickle and used in some regions to reap grain, a kama has a short, slightly curved blade and a wooden handle."
|
||||
33,Katana,Martial,2,6,S,1,1,Sword,"Deadly d8, Two-Hand d10, Uncommon, Versatile P, Deadly, Two-Hand, Versatile",1,281,"A katana is a curved, single-edged sword known for its wickedly sharped blade."
|
||||
34,Kukri,Martial,0.6,6,S,0.1,1,Knife,"Agile, Finesse, Trip, Uncommon",1,281,The blade of this foot-long knife curves inward and lacks a cross guard at the hilt.
|
||||
35,Lance,Martial,1,8,P,2,2,Spear,"Deadly d8, Jousting d6, Reach, Deadly, Jousting",1,280,This spear-like weapon is used by a mounted creature to deal a great deal of damage.
|
||||
36,Light Hammer,Martial,0.3,6,B,0.1,1,Hammer,"Agile, Thrown 20 ft., Thrown",1,281,"This smaller version of the warhammer has a wooden or metal shaft ending in a metal head. Unlike its heavier cousin, it is light enough to throw."
|
||||
37,Light Pick,Martial,0.4,4,P,0.1,1,Pick,"Agile, Fatal d8, Fatal",1,281,A light pick is a modified mining implement with a wooden shaft ending in a pick head crafted more to pierce armor and flesh than chip rocks.
|
||||
38,Longsword,Martial,1,8,S,1,1,Sword,"Versatile P, Versatile",1,281,Longswords can be one-edged or two‑edged swords. Their blades are heavy and they’re between 3 and 4 feet in length.
|
||||
39,Main-gauche,Martial,0.5,4,P,0.1,1,Knife,"Agile, Disarm, Finesse, Parry, Versatile S, Versatile",1,281,This parrying dagger features a robust guard to protect the wielder’s hand.
|
||||
40,Maul,Martial,3,12,B,2,2,Hammer,Shove,1,281,Mauls are massive warhammers that must be swung with two hands.
|
||||
41,Nunchaku,Martial,0.2,6,B,0.1,1,Club,"Backswing, Disarm, Finesse, Monk, Uncommon",1,281,The nunchaku is constructed of two wooden or metal bars connected by a short length of rope or chain.
|
||||
42,Orc Knuckle Dagger,Martial,0.7,6,P,0.1,1,Knife,"Agile, Disarm, Orc, Uncommon",1,281,"This stout, metal blade of orc design has a horizontal basket hilt with blades jutting from each end, or sometimes one blade like that of a katar."
|
||||
43,Pick,Martial,0.7,6,P,1,1,Pick,"Fatal d10, Fatal",1,281,"A pick designed solely for combat has a sturdy wooden shaft and a heavy, pointed head to deliver devastating blows."
|
||||
44,Ranseur,Martial,2,10,P,2,2,Polearm,"Disarm, Reach",1,281,This polearm is a long trident with a central prong that’s longer than the other two.
|
||||
45,Rapier,Martial,2,6,P,1,1,Sword,"Deadly d8, Disarm, Finesse, Deadly",1,281,The rapier is a long and thin piercing blade with a basket hilt. It is prized among many as a dueling weapon.
|
||||
46,Sai,Martial,0.6,4,P,0.1,1,Knife,"Agile, Disarm, Finesse, Monk, Uncommon, Versatile B, Versatile",1,281,This piercing dagger is a metal spike flanked by a pair of prongs that can be used to trap an enemy’s weapon.
|
||||
47,Sap,Martial,0.1,6,B,0.1,1,Club,"Agile, Nonlethal",1,281,"A sap has a soft wrapping around a dense core, typically a leather sheath around a lead rod. Its head is wider than its grip to disperse the force of a blow, as the weapon’s purpose is to knock out its victim rather than to draw blood."
|
||||
48,Scimitar,Martial,1,6,S,1,1,Sword,"Forceful, Sweep",1,281,This one-handed curved blade is sharp on one side.
|
||||
49,Scythe,Martial,2,10,S,2,2,Polearm,"Deadly d10, Trip, Deadly",1,281,"Derived from a farming tool used to mow down long grains and cereals, this weapon has a long wooden shaft with protruding handles, capped with a curved blade set at a right angle."
|
||||
50,Shield Bash,Martial,0,4,B,0,1,Shield,,1,281,"A shield bash is not actually a weapon, but a maneuver in which you thrust or swing your shield to hit your foe with an impromptu attack."
|
||||
51,Shield Boss,Martial,0.5,6,B,0,1,Shield,Attached to Shield,1,281,"Typically a round, convex, or conical piece of thick metal attached to the center of a shield, a shield boss increases the bludgeoning damage of a shield bash."
|
||||
52,Shield Spikes,Martial,0.5,6,P,0,1,Shield,Attached to Shield,1,281,These metal spikes are strategically placed on the defensive side of the shield to deal piercing damage with a shield bash.
|
||||
53,Shortsword,Martial,0.9,6,P,0.1,1,Sword,"Agile, Finesse, Versatile S, Versatile",1,281,"These blades come in a variety of shapes and styles, but they are typically 2 feet long."
|
||||
54,Spiked Chain,Martial,3,8,S,1,2,Flail,"Disarm, Finesse, Trip, Uncommon",1,281,This 4‑foot‑long length of chain is covered with barbs and has spikes on one or both ends. Some feature metal hoops used as handgrips.
|
||||
55,Starknife,Martial,2,4,P,0.1,1,Knife,"Agile, Deadly d6, Finesse, Thrown 20 ft., Versatile S, Deadly, Thrown, Versatile",1,281,"From a central metal ring, four tapering metal blades extend like points on a compass rose. When gripping a starknife from the center, the wielder can use it as a melee weapon. It can also be thrown short distances."
|
||||
56,Temple Sword,Martial,2,8,S,1,1,Sword,"Monk, Trip, Uncommon",1,281,"This heavy blade is favored by guardians of religious sites. It has a distinctive, crescent-shaped blade that seems to be a mix of a sickle and sword. It often has holes drilled into the blade or the pommel so that bells or other holy trinkets can be affixed to the weapon as an aid for prayer or mediation."
|
||||
57,Trident,Martial,1,8,P,1,1,Spear,"Thrown 20 ft., Thrown",1,281,"This three-pronged, spear-like weapon typically has a 4-foot shaft. Like a spear, it can be wielded with one hand or thrown."
|
||||
58,War Flair,Martial,2,10,B,2,2,Flail,"Disarm, Sweep, Trip",1,281,
|
||||
59,Warhammer,Martial,1,8,B,1,1,Hammer,Shove,1,281,"This weapon has a wooden shaft ending in a large, heavy metal head. The head of the hammer might be single-sided or double-sided, but it’s always capable of delivering powerful bludgeoning blows."
|
||||
60,Whip,Martial,0.1,4,S,1,1,Flail,"Disarm, Finesse, Nonlethal, Reach, Trip",1,281,"This long strand of thick leather, often braided, delivers a painful but nonlethal slash at a distance, usually accompanied by a distinctive cracking sound."
|
||||
61,Aklys,Advanced,5,6,B,1,1,Club,"Ranged Trip, Tethered, Thrown 20 feet, Trip, Uncommon, Thrown",2,85,
|
||||
62,Dwarven War Axe,Advanced,3,8,S,2,1,Axe,"Dwarf, Sweep, Two-Hand d12, Two-Hand",1,281,"This favored weapon of the dwarves has a large, ornate head mounted on a thick handle. This powerful axe can be wielded with one hand or two."
|
||||
63,Gnome Flickmace,Advanced,3,8,B,2,1,Flail,"Gnome, Reach, Uncommon",1,281,"More a flail than a mace, this weapon has a short handle attached to a length of chain with a ball at the end. The ball is propelled to its reach with the flick of the wrist, the momentum of which brings the ball back to the wielder after the strike."
|
||||
64,Orc Necksplitter,Advanced,2,8,S,1,1,Axe,"Forceful, Orc, Sweep, Uncommon",1,281,This single-bladed bearded axe has a jagged blade that’s perfect for separating bone from tendon and cartilage.
|
||||
65,Sawtooth Saber,Advanced,5,8,S,0.1,1,Sword,"Agile, Finesse, Twin, Uncommon",1,281,"The signature weapon of the Red Mantis assassins, this curved blade is serrated like a saw, hence the name."
|
||||
66,Ogre Hook,Advanced,1,10,P,2,2,Pick,"Deadly 1d10, Trip, Uncommon, Deadly",2,253,"Ogres are known for using immense, curved picks called ogre hooks."
|
||||
|
@@ -0,0 +1,15 @@
|
||||
weapon_id,name,category,price_gp,dice_size,damage_type,range,reload,bulk,hands,group,traits,sources_id,sources_pg,description
|
||||
67,Blowgun,Simple,0.1,1,P,20,1,0.1,1,Dart,"Agile, Nonlethal",1,281,"This long, narrow tube is used for shooting blowgun darts, using only the power of a forcefully exhaled breath."
|
||||
68,Crossbow,Simple,3,8,P,120,1,1,2,Bow,,1,281,"This ranged weapon has a bow-like assembly mounted on a handled frame called a tiller. The tiller has a mechanism to lock the bowstring in place, attached to a trigger mechanism that releases the tension and launches a bolt."
|
||||
69,Dart,Simple,0.01,4,P,20,,0.1,1,Dart,"Agile, Thrown",1,281,This thrown weapon is larger than an arrow but shorter than a javelin. It typically has a short shaft of wood ending in a metal tip and is sometimes stabilized by feathers or fur.
|
||||
70,Hand Crossbow,Simple,3,6,P,60,1,0.1,1,Bow,,1,281,"Sometimes referred to as an alley bow by rogues or ruffians, this small crossbow fires small bolts that are sometimes used to deliver poison to the target. It's small enough to be shot one-handed, but it still requires two hands to load."
|
||||
71,Heavy Crossbow,Simple,4,10,P,120,2,2,2,Bow,,1,281,"This large crossbow is harder to load and more substantial than a regular crossbow, but it packs a greater punch."
|
||||
72,Javelin,Simple,0.1,6,P,30,,0.1,1,Dart,Thrown,1,282,This thin spear is well balanced for throwing but is not designed for melee use.
|
||||
73,Sling,Simple,0,6,B,50,1,0.1,1,Sling,Propulsive,1,282,"Little more than a leather cup attached to a pair of straps, a sling can be used to fling smooth stones or sling bullets at a range."
|
||||
74,Alchemical Bomb,Martial,,,,20,,0.1,1,Bomb,,1,282,"These bombs come in a variety of types and levels of power, but no matter the variety, you throw the bomb at the target and it explodes, unleashing its alchemical blast."
|
||||
75,Composite Longbow,Martial,20,8,P,100,0,2,1+,Bow,"Deadly d10, Propulsive, Volley 30 ft., Deadly, Volley",1,282,"This projectile weapon is made from horn, wood, and sinew laminated together to increase the power of its pull and the force of its projectile. Like all longbows, its great size also increases the bow's range and power. You must use two hands to fire it, and it cannot be used while mounted. Any time an ability is specifically restricted to a longbow, such as Erastil's favored weapon, it also applies to composite longbows unless otherwise stated."
|
||||
76,Composite Shortbow,Martial,14,6,P,60,0,1,1+,Bow,"Deadly d10, Propulsive, Deadly",1,282,"This shortbow is made from horn, wood, and sinew laminated together to increase the power of its pull and the force of its projectile. Its compact size and power make it a favorite of mounted archers. Any time an ability is specifically restricted to a shortbow, it also applies to composite shortbows unless otherwise stated."
|
||||
77,Halfling Sling Staff,Martial,5,10,B,80,1,1,2,Sling,"Halfling, Propulsive, Uncommon",1,282,This staff ends in a Y-shaped split that cradles a sling. The length of the staff provides excellent leverage when used two‑handed to fling rocks or bullets from the sling.
|
||||
78,Longbow,Martial,6,8,P,100,0,2,1+,Bow,"Deadly d10, Volley 30 ft., Deadly, Volley",1,282,"This 5-foot-tall bow, usually made of a single piece of elm, hickory, or yew, has a powerful draw and is excellent at propelling arrows with great force and at an extreme distance. You must use two hands to fire a longbow, and it can't be used while mounted."
|
||||
79,Shortbow,Martial,3,6,P,60,0,1,1+,Bow,"Deadly d10, Deadly",1,282,This smaller bow is made of a single piece of wood and favored by skirmishers and cavalry.
|
||||
80,Shuriken,Martial,0.01,4,P,20,0,,1,Dart,"Agile, Monk, Thrown, Uncommon",1,282,"This throwing star is a small piece of flat metal with sharp edges, designed to be flung with a flick of the wrist."
|
||||
|
@@ -0,0 +1,162 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Scrape data from aon2e and generate csvs to import in to sqlite"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Dependencies\n",
|
||||
"import pandas as pd\n",
|
||||
"from bs4 import BeautifulSoup as bs\n",
|
||||
"import os\n",
|
||||
"from splinter import Browser\n",
|
||||
"\n",
|
||||
"# Setting up Selenium\n",
|
||||
"chrome_driver = os.path.join('..', 'chromedriver.exe')\n",
|
||||
"executable_path = {'executable_path': chrome_driver}\n",
|
||||
"browser = Browser('chrome', **executable_path, headless=False)\n",
|
||||
"\n",
|
||||
"# Pandas config\n",
|
||||
"pd.set_option('display.max_columns', None)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# url that contains all the links\n",
|
||||
"url_weapon = 'https://2e.aonprd.com/Weapons.aspx?ID='\n",
|
||||
"\n",
|
||||
"# Number of weapons\n",
|
||||
"number_of_weapons = 83\n",
|
||||
"\n",
|
||||
"# Empty lists to store the scraped values\n",
|
||||
"name_list = []\n",
|
||||
"description_list = []\n",
|
||||
"\n",
|
||||
"print(f'Beginning Data Retrieval')\n",
|
||||
"print(f'------------------------')\n",
|
||||
"\n",
|
||||
"# Loop from 1 to the value in weapon_number\n",
|
||||
"for weapon in range(1, number_of_weapons+1):\n",
|
||||
" \n",
|
||||
" url = url_weapon + str(weapon)\n",
|
||||
" browser.visit(url)\n",
|
||||
" html = browser.html\n",
|
||||
" soup = bs(html, 'html.parser')\n",
|
||||
"\n",
|
||||
" # Select only the content section\n",
|
||||
" content = soup.find(id='ctl00_MainContent_DetailedOutput')\n",
|
||||
"\n",
|
||||
" try:\n",
|
||||
" # Store the name and description\n",
|
||||
" name = content.find('a').text.strip()\n",
|
||||
" \n",
|
||||
" except:\n",
|
||||
" name = f'weapon: {weapon}'\n",
|
||||
"\n",
|
||||
" try:\n",
|
||||
" description = content.find('hr').next.text.strip()\n",
|
||||
" \n",
|
||||
" except:\n",
|
||||
" description = content.find('hr').next.strip()\n",
|
||||
" \n",
|
||||
" print(f'Processing Weapon {weapon} of {number_of_weapons} | {name}')\n",
|
||||
"\n",
|
||||
" # Append values to our empty lists\n",
|
||||
" name_list.append(name) \n",
|
||||
" description_list.append(description)\n",
|
||||
"\n",
|
||||
"print(f'------------------------')\n",
|
||||
"print(f'Data Retrieval Complete')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Directory of csv files which are taken from https://2e.aonprd.com/Weapons.aspx\n",
|
||||
"melee = pd.read_csv('melee.csv')\n",
|
||||
"ranged = pd.read_csv('ranged.csv')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"data = {'Name': name_list, 'description': description_list}\n",
|
||||
"scrape = pd.DataFrame(data)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"melee = melee.merge(scrape, how='left', on='Name')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"ranged = ranged.merge(scrape, how='left', on='Name')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"melee.to_csv('melee.csv')\n",
|
||||
"ranged.to_csv('ranged.csv')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.6.9"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 4
|
||||
}
|
||||
@@ -0,0 +1,112 @@
|
||||
#!/usr/bin/env python
|
||||
# coding: utf-8
|
||||
|
||||
# # Scrape data from aon2e and generate csvs to import in to sqlite
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
# Dependencies
|
||||
import pandas as pd
|
||||
from bs4 import BeautifulSoup as bs
|
||||
import os
|
||||
from splinter import Browser
|
||||
|
||||
# Setting up Selenium
|
||||
chrome_driver = os.path.join('..', 'chromedriver.exe')
|
||||
executable_path = {'executable_path': chrome_driver}
|
||||
browser = Browser('chrome', **executable_path, headless=False)
|
||||
|
||||
# Pandas config
|
||||
pd.set_option('display.max_columns', None)
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
# url that contains all the links
|
||||
url_weapon = 'https://2e.aonprd.com/Weapons.aspx?ID='
|
||||
|
||||
# Number of weapons
|
||||
number_of_weapons = 83
|
||||
|
||||
# Empty lists to store the scraped values
|
||||
name_list = []
|
||||
description_list = []
|
||||
|
||||
print(f'Beginning Data Retrieval')
|
||||
print(f'------------------------')
|
||||
|
||||
# Loop from 1 to the value in weapon_number
|
||||
for weapon in range(1, number_of_weapons+1):
|
||||
|
||||
url = url_weapon + str(weapon)
|
||||
browser.visit(url)
|
||||
html = browser.html
|
||||
soup = bs(html, 'html.parser')
|
||||
|
||||
# Select only the content section
|
||||
content = soup.find(id='ctl00_MainContent_DetailedOutput')
|
||||
|
||||
try:
|
||||
# Store the name and description
|
||||
name = content.find('a').text.strip()
|
||||
|
||||
except:
|
||||
name = f'weapon: {weapon}'
|
||||
|
||||
try:
|
||||
description = content.find('hr').next.text.strip()
|
||||
|
||||
except:
|
||||
description = content.find('hr').next.strip()
|
||||
|
||||
print(f'Processing Weapon {weapon} of {number_of_weapons} | {name}')
|
||||
|
||||
# Append values to our empty lists
|
||||
name_list.append(name)
|
||||
description_list.append(description)
|
||||
|
||||
print(f'------------------------')
|
||||
print(f'Data Retrieval Complete')
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
# Directory of csv files which are taken from https://2e.aonprd.com/Weapons.aspx
|
||||
melee = pd.read_csv('melee.csv')
|
||||
ranged = pd.read_csv('ranged.csv')
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
data = {'Name': name_list, 'description': description_list}
|
||||
scrape = pd.DataFrame(data)
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
melee = melee.merge(scrape, how='left', on='Name')
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
ranged = ranged.merge(scrape, how='left', on='Name')
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
melee.to_csv('melee.csv')
|
||||
ranged.to_csv('ranged.csv')
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,244 @@
|
||||
import csv
|
||||
import sqlite3
|
||||
|
||||
def main():
|
||||
# load json into python
|
||||
print("loading melee.csv and ranged.csv")
|
||||
## read file into memory
|
||||
rows = []
|
||||
with open('melee.csv') as f:
|
||||
reader = csv.DictReader(f)
|
||||
# print(reader)
|
||||
for row in reader:
|
||||
rows.append(row)
|
||||
|
||||
ranged_rows = []
|
||||
with open('ranged.csv') as f:
|
||||
reader = csv.DictReader(f)
|
||||
# print(reader)
|
||||
for row in reader:
|
||||
ranged_rows.append(row)
|
||||
|
||||
|
||||
## Get database connection
|
||||
conn = sqlite3.connect('../../pf2.db')
|
||||
## Set pragmas to make it go FAST
|
||||
pragma1 = "PRAGMA synchronous=OFF;"
|
||||
pragma2 = "PRAGMA count_changes=OFF;"
|
||||
pragma3 = "PRAGMA journal_mode=MEMORY;"
|
||||
pragma4 = "PRAGMA temp_store=MEMORY;"
|
||||
pragma5 = "PRAGMA foreign_keys=ON;"
|
||||
conn.execute(pragma1)
|
||||
conn.execute(pragma2)
|
||||
conn.execute(pragma3)
|
||||
conn.execute(pragma4)
|
||||
conn.execute(pragma5)
|
||||
|
||||
# load in ids for traits from traits table so we only call this once
|
||||
# instead of every spell
|
||||
stmt = "SELECT trait_id, short_name FROM traits"
|
||||
c = conn.cursor()
|
||||
c.execute(stmt)
|
||||
traits = c.fetchall()
|
||||
# print("Printing traits")
|
||||
# print(traits)
|
||||
|
||||
for row in rows:
|
||||
insert_melee_weapon_basics(row, conn)
|
||||
insert_traits(row, conn, traits)
|
||||
insert_fks(row, conn)
|
||||
|
||||
for row in ranged_rows:
|
||||
insert_ranged_weapon_basics(row, conn)
|
||||
insert_traits(row, conn, traits)
|
||||
insert_fks(row, conn)
|
||||
|
||||
print("finished weapons")
|
||||
|
||||
def insert_fks(row, conn):
|
||||
# get category id
|
||||
rcat = row['category']
|
||||
res_id = None
|
||||
if rcat == "Unarmed":
|
||||
res_id = 1
|
||||
elif rcat == "Simple":
|
||||
res_id = 2
|
||||
elif rcat == "Martial":
|
||||
res_id = 3
|
||||
elif rcat == "Advanced":
|
||||
res_id = 4
|
||||
else:
|
||||
print("Something went wrong here in weapon category land.")
|
||||
|
||||
grp = row['group']
|
||||
grp_id = None
|
||||
if grp == 'Axe':
|
||||
grp_id = 1
|
||||
elif grp == 'Bomb':
|
||||
grp_id = 2
|
||||
elif grp == 'Bow':
|
||||
grp_id = 3
|
||||
elif grp == 'Brawling':
|
||||
grp_id = 4
|
||||
elif grp == 'Club':
|
||||
grp_id = 5
|
||||
elif grp == 'Dart':
|
||||
grp_id = 6
|
||||
elif grp == 'Flail':
|
||||
grp_id = 7
|
||||
elif grp == 'Hammer':
|
||||
grp_id = 8
|
||||
elif grp == 'Knife':
|
||||
grp_id = 9
|
||||
elif grp == 'Pick':
|
||||
grp_id = 10
|
||||
elif grp == 'Polearm':
|
||||
grp_id = 11
|
||||
elif grp == 'Shield':
|
||||
grp_id = 12
|
||||
elif grp == 'Sling':
|
||||
grp_id = 13
|
||||
elif grp == 'Spear':
|
||||
grp_id = 14
|
||||
elif grp == 'Sword':
|
||||
grp_id = 15
|
||||
else:
|
||||
print("Something went wrong here in weapon group land.")
|
||||
|
||||
dmg = row['damage_type']
|
||||
dmg_id = None
|
||||
if dmg == 'B':
|
||||
dmg_id = 1
|
||||
elif dmg == 'P':
|
||||
dmg_id = 2
|
||||
elif dmg == 'S':
|
||||
dmg_id = 3
|
||||
elif row['name'] == "Alchemical Bomb":
|
||||
dmg_id = None
|
||||
else:
|
||||
print("Something went wrong here in weapon damage type land.{}".format(row))
|
||||
|
||||
inp = (res_id, grp_id, dmg_id, row['weapon_id'])
|
||||
stmt = "UPDATE weapons SET weaponcategories_id=?, weapongroups_id=?, damagetypes_id=? WHERE weapons_id=?;"
|
||||
try:
|
||||
conn.execute(stmt, inp)
|
||||
except sqlite.Error as e:
|
||||
print("Error inserting weapon category information: {}".format(e))
|
||||
else:
|
||||
conn.commit()
|
||||
# print("Successfully inserted row")
|
||||
|
||||
def insert_traits (row, conn, traits):
|
||||
|
||||
# get list of traits from row
|
||||
tmp = row['traits']
|
||||
# exit this if no traits
|
||||
if tmp == '':
|
||||
return
|
||||
splits = tmp.split(", ")
|
||||
# print(tmp)
|
||||
# print(tmp.split(", "))
|
||||
|
||||
trait_ids = []
|
||||
# get trait IDs
|
||||
for i in traits:
|
||||
for j in splits:
|
||||
if i[1] == j:
|
||||
# print("Trait_id:{}\tname:{}".format(i[0],i[1]))
|
||||
trait_ids.append(i[0])
|
||||
# print(trait_ids)
|
||||
# all this mess removes non weapon traits that have duplicate names like
|
||||
# Monk Ancestry versus Monk Weapon trait
|
||||
if len(splits) != len(trait_ids):
|
||||
remove_me = []
|
||||
for i in trait_ids:
|
||||
if i >= 217 and i <= 251:
|
||||
continue
|
||||
elif i >= 255 and i <= 269:
|
||||
continue
|
||||
# 203 = uncommon trait
|
||||
elif i == 203:
|
||||
continue
|
||||
else:
|
||||
remove_me.append(i)
|
||||
for i in remove_me:
|
||||
trait_ids.remove(i)
|
||||
# print(trait_ids)
|
||||
|
||||
stmt = "INSERT INTO weapons_traits (weapons_id, trait_id) VALUES (?,?);"
|
||||
|
||||
for i in trait_ids:
|
||||
inp = (row['weapon_id'], i)
|
||||
try:
|
||||
conn.execute(stmt, inp)
|
||||
except sqlite.Error as e:
|
||||
print("Error inserting trait information: {}".format(e))
|
||||
else:
|
||||
conn.commit()
|
||||
# print("Successfully inserted row")
|
||||
|
||||
|
||||
|
||||
def insert_ranged_weapon_basics(row, conn):
|
||||
# print("Inserting: {}".format(row['name']))
|
||||
# insert everything that's not a lookup
|
||||
stmt = """
|
||||
INSERT INTO weapons (
|
||||
weapons_id,
|
||||
sources_id,
|
||||
sources_pages,
|
||||
price_gp,
|
||||
dice_size,
|
||||
bulk,
|
||||
hands,
|
||||
name,
|
||||
descr,
|
||||
range,
|
||||
reload
|
||||
)
|
||||
VALUES (?,?,?,?,?,?,?,?,?,?,?);
|
||||
"""
|
||||
r = row
|
||||
inp = (r['weapon_id'],r['sources_id'],r['sources_pg'],r['price_gp'],
|
||||
r['dice_size'],r['bulk'],r['hands'],r['name'],r['description'],
|
||||
r['range'],r['reload'])
|
||||
|
||||
try:
|
||||
conn.execute(stmt, inp)
|
||||
except sqlite.Error as e:
|
||||
print("Error inserting basic ranged row information: {}".format(e))
|
||||
else:
|
||||
conn.commit()
|
||||
# print("Successfully inserted row")
|
||||
|
||||
def insert_melee_weapon_basics(row, conn):
|
||||
# print("Inserting: {}".format(row['name']))
|
||||
# insert everything that's not a lookup
|
||||
stmt = """
|
||||
INSERT INTO weapons (
|
||||
weapons_id,
|
||||
sources_id,
|
||||
sources_pages,
|
||||
price_gp,
|
||||
dice_size,
|
||||
bulk,
|
||||
hands,
|
||||
name,
|
||||
descr)
|
||||
VALUES (?,?,?,?,?,?,?,?,?);
|
||||
"""
|
||||
r = row
|
||||
inp = (r['weapon_id'],r['sources_id'],r['sources_pg'],r['price_gp'],
|
||||
r['dice_size'],r['bulk'],r['hands'],r['name'],r['description'])
|
||||
|
||||
try:
|
||||
conn.execute(stmt, inp)
|
||||
except sqlite3.Error as e:
|
||||
print("Error inserting basic melee row information: {}".format(e))
|
||||
else:
|
||||
conn.commit()
|
||||
# print("Successfully inserted row")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,4 @@
|
||||
pandas==0.24.2
|
||||
splinter==0.11.0
|
||||
beautifulsoup4==4.8.0
|
||||
selenium==3.141.0
|
||||
@@ -0,0 +1,43 @@
|
||||
id,name,level,price,bulk,usage,cantrips,1,2,3,4,5,6,7,8,9,source_id,source_pg,description
|
||||
,Animal Staff,4,90,1,,,,,,,,,,,,,,
|
||||
,Animal Staff (Greater),8,460,1,,,,,,,,,,,,,,
|
||||
,Animal Staff (Major),12,1900,1,,,,,,,,,,,,,,
|
||||
,Mentalist's Staff,4,230,1,,,,,,,,,,,,,,
|
||||
,Mentalist's Staff (Greater),8,900,1,,,,,,,,,,,,,,
|
||||
,Mentalist's Staff (Major),12,4000,1,,,,,,,,,,,,,,
|
||||
,Staff of Abjuration,6,230,1,,,,,,,,,,,,,,
|
||||
,Staff of Abjuration (Greater),10,900,1,,,,,,,,,,,,,,
|
||||
,Staff of Abjuration (Major),14,4000,1,,,,,,,,,,,,,,
|
||||
,Staff of Conjuration,6,230,1,,,,,,,,,,,,,,
|
||||
,Staff of Conjuration (Greater),10,900,1,,,,,,,,,,,,,,
|
||||
,Staff of Conjuration (Major),14,4000,1,,,,,,,,,,,,,,
|
||||
,Staff of Divination,6,230,1,,,,,,,,,,,,,,
|
||||
,Staff of Divination (Greater),10,900,1,,,,,,,,,,,,,,
|
||||
,Staff of Divination (Major),14,4000,1,,,,,,,,,,,,,,
|
||||
,Staff of Enchantment,6,230,1,,,,,,,,,,,,,,
|
||||
,Staff of Enchantment (Greater),10,900,1,,,,,,,,,,,,,,
|
||||
,Staff of Enchantment (Major),14,4000,1,,,,,,,,,,,,,,
|
||||
,Staff of Evocation,6,230,1,,,,,,,,,,,,,,
|
||||
,Staff of Evocation (Greater),10,900,1,,,,,,,,,,,,,,
|
||||
,Staff of Evocation (Major),14,4000,1,,,,,,,,,,,,,,
|
||||
,Staff of Fire,3,60,1,held in 1 hand,produce flame,burning hands,,,,,,,,,1,595,"This staff resembles a blackened and burned length of ashen wood. It smells faintly of soot and glows as if lit by embers. You can use an Interact action to touch the tip of this staff to a torch, tinder, or a flammable substance to ignite a flame. \n\n Activate Cast a Spell; Effect You expend a number of charges from the staff to cast a spell from its list. Craft Requirements Supply one casting of all listed levels of all listed spells."
|
||||
,Staff of Fire (Greater),8,450,1,held in 1 hand,produce flame,burning hands,"burning hands, flaming sphere","flaming sphere, fireball",,,,,,,1,595,"This staff resembles a blackened and burned length of ashen wood. It smells faintly of soot and glows as if lit by embers. You can use an Interact action to touch the tip of this staff to a torch, tinder, or a flammable substance to ignite a flame. \n\n Activate Cast a Spell; Effect You expend a number of charges from the staff to cast a spell from its list. Craft Requirements Supply one casting of all listed levels of all listed spells."
|
||||
,Staff of Fire (Major),12,1800,1,held in 1 hand,produce flame,burning hands,"burning hands, flaming sphere","flaming sphere, fireball","fire shield, fireball, wall of fire","fireball, wall of fire",,,,,1,595,"This staff resembles a blackened and burned length of ashen wood. It smells faintly of soot and glows as if lit by embers. You can use an Interact action to touch the tip of this staff to a torch, tinder, or a flammable substance to ignite a flame. \n\n Activate Cast a Spell; Effect You expend a number of charges from the staff to cast a spell from its list. Craft Requirements Supply one casting of all listed levels of all listed spells."
|
||||
,Staff of Healing,4,90,1,,,,,,,,,,,,,,
|
||||
,Staff of Healing (Greater),8,470,1,,,,,,,,,,,,,,
|
||||
,Staff of Healing (Major),12,1800,1,,,,,,,,,,,,,,
|
||||
,Staff of Healing (True),16,9200,1,,,,,,,,,,,,,,
|
||||
,Staff of Illumination,8,425,1,,,,,,,,,,,,,,
|
||||
,Staff of Illusion,6,230,1,,,,,,,,,,,,,,
|
||||
,Staff of Illusion (Greater),10,900,1,,,,,,,,,,,,,,
|
||||
,Staff of Illusion (Major),14,4000,1,,,,,,,,,,,,,,
|
||||
,Staff of Necromancy,6,230,1,,,,,,,,,,,,,,
|
||||
,Staff of Necromancy (Greater),10,900,1,,,,,,,,,,,,,,
|
||||
,Staff of Necromancy (Major),14,4000,1,,,,,,,,,,,,,,
|
||||
,Staff of Power,16,10000,1,,,,,,,,,,,,,,
|
||||
,Staff of the Magi,20,90000,1,,,,,,,,,,,,,,
|
||||
,Staff of Transmutation,6,230,1,,,,,,,,,,,,,,
|
||||
,Staff of Transmutation (Greater),10,900,1,,,,,,,,,,,,,,
|
||||
,Staff of Transmutation (Major),14,4000,1,,,,,,,,,,,,,,
|
||||
,Verdant Staff,6,225,1,,,,,,,,,,,,,,
|
||||
,Verdant Staff (Greater),12,1750,1,,,,,,,,,,,,,,
|
||||
|
@@ -0,0 +1,8 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
CREATE TABLE abilityscores (
|
||||
abilityscores_id INTEGER PRIMARY KEY,
|
||||
flag_rep INTEGER NOT NULL,
|
||||
short_name TEXT NOT NULL UNIQUE,
|
||||
long_name TEXT NOT NULL UNIQUE
|
||||
);
|
||||
@@ -0,0 +1,38 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
CREATE TABLE actioncosts (
|
||||
actioncosts_id INTEGER PRIMARY KEY,
|
||||
name TEXT NOT NULL UNIQUE,
|
||||
abbr TEXT NOT NULL UNIQUE
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE actioncategories (
|
||||
actioncategories_id INTEGER PRIMARY KEY,
|
||||
sources_id INTEGER NOT NULL,
|
||||
sources_pages TEXT NOT NULL,
|
||||
name TEXT NOT NULL UNIQUE,
|
||||
descr TEXT NOT NULL UNIQUE,
|
||||
FOREIGN KEY (sources_id) REFERENCES sources(sources_id)
|
||||
);
|
||||
|
||||
CREATE TABLE actions (
|
||||
actions_id INTEGER PRIMARY KEY,
|
||||
sources_id INTEGER NOT NULL,
|
||||
sources_pages TEXT NOT NULL,
|
||||
actioncategories_id INTEGER NOT NULL,
|
||||
actioncosts_id INTEGER,
|
||||
name TEXT NOT NULL UNIQUE,
|
||||
req TEXT,
|
||||
trigger TEXT,
|
||||
descr TEXT NOT NULL,
|
||||
FOREIGN KEY (actioncategories_id) REFERENCES actioncategories(actioncategories_id),
|
||||
FOREIGN KEY (actioncosts_id) REFERENCES actioncosts(actioncosts_id),
|
||||
FOREIGN KEY (sources_id) REFERENCES sources(sources_id)
|
||||
);
|
||||
|
||||
CREATE TABLE actions_traits (
|
||||
id INTEGER PRIMARY KEY,
|
||||
actions_id INTEGER NOT NULL,
|
||||
traits_id INTEGER NOT NULL
|
||||
);
|
||||
@@ -0,0 +1,9 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON;
|
||||
|
||||
CREATE TABLE alignments (
|
||||
alignments_id INTEGER PRIMARY KEY,
|
||||
"name" TEXT UNIQUE NOT NULL, -- 'Lawful Good'
|
||||
abbr TEXT UNIQUE NOT NULL -- 'LG'
|
||||
);
|
||||
@@ -0,0 +1,16 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
|
||||
CREATE TABLE ammunition (
|
||||
ammunition_id INTEGER PRIMARY KEY,
|
||||
sources_id INTEGER,
|
||||
sources_pages TEXT,
|
||||
"name" TEXT NOT NULL UNIQUE,
|
||||
price_gp REAL,
|
||||
amount INTEGER,
|
||||
bulk REAL,
|
||||
descr TEXT,
|
||||
FOREIGN KEY (sources_id) REFERENCES sources(sources_id)
|
||||
)
|
||||
@@ -0,0 +1,87 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
/*
|
||||
TODO Need to decide on whether to do a massive feats table, or to split feats
|
||||
into separate tables for general feats, ancestry feats, background feats, etc...
|
||||
|
||||
I think one big feat table that has a feat type in it and then an ancestry_feat
|
||||
table that matches feats to ancestries, etc..
|
||||
*/
|
||||
|
||||
CREATE TABLE ancestries (
|
||||
ancestry_id INTEGER PRIMARY KEY,
|
||||
sources_id INTEGER NOT NULL,
|
||||
sources_pages TEXT,
|
||||
short_name TEXT NOT NULL UNIQUE,
|
||||
flavor_text TEXT NOT NULL,
|
||||
hp INTEGER NOT NULL,
|
||||
size_id INTEGER NOT NULL,
|
||||
speed INTEGER NOT NULL,
|
||||
vision_id INTEGER NOT NULL,
|
||||
FOREIGN KEY (vision_id) REFERENCES senses(senses_id),
|
||||
FOREIGN KEY (size_id) REFERENCES sizes(size_id)
|
||||
);
|
||||
|
||||
CREATE TABLE ancestries_boosts (
|
||||
anc_boosts_id INTEGER PRIMARY KEY,
|
||||
ancestry_id INTEGER NOT NULL,
|
||||
abilityscores_id INTEGER NOT NULL,
|
||||
FOREIGN KEY (ancestry_id) REFERENCES ancestries(ancestry_id),
|
||||
FOREIGN KEY (abilityscores_id) REFERENCES abilityscores(abilityscores_id)
|
||||
);
|
||||
|
||||
CREATE TABLE ancestries_flaws (
|
||||
anc_flaws_id INTEGER PRIMARY KEY,
|
||||
ancestry_id INTEGER NOT NULL,
|
||||
abilityscores_id INTEGER NOT NULL,
|
||||
FOREIGN KEY (ancestry_id) REFERENCES ancestries(ancestry_id),
|
||||
FOREIGN KEY (abilityscores_id) REFERENCES abilityscores(abilityscores_id)
|
||||
);
|
||||
|
||||
|
||||
/* Need to figure out how to model heritages that also have reactions / feats
|
||||
etc.. */
|
||||
|
||||
/* has partial data */
|
||||
CREATE TABLE heritages (
|
||||
heritage_id INTEGER PRIMARY KEY,
|
||||
short_name TEXT NOT NULL UNIQUE,
|
||||
description TEXT NOT NULL,
|
||||
bonus_type TEXT, -- TODO Should this be text, or should this have its own table and FK?
|
||||
bonus_id INTEGER -- TODO What is this referencing from data/heritages.sql ???
|
||||
);
|
||||
|
||||
CREATE TABLE ancestries_heritages (
|
||||
id INTEGER PRIMARY KEY,
|
||||
ancestry_id INTEGER NOT NULL,
|
||||
heritage_id INTEGER NOT NULL,
|
||||
UNIQUE(ancestry_id, heritage_id),
|
||||
FOREIGN KEY (ancestry_id) REFERENCES ancestries(ancestry_id),
|
||||
FOREIGN KEY (heritage_id) REFERENCES heritages(heritage_id)
|
||||
);
|
||||
|
||||
|
||||
/* has partial data */
|
||||
CREATE TABLE ancestries_traits (
|
||||
id INTEGER PRIMARY KEY,
|
||||
ancestry_id INTEGER NOT NULL,
|
||||
trait_id INTEGER NOT NULL,
|
||||
UNIQUE(ancestry_id, trait_id),
|
||||
FOREIGN KEY (ancestry_id) REFERENCES ancestries(ancestry_id),
|
||||
FOREIGN KEY (trait_id) REFERENCES traits(trait_id)
|
||||
);
|
||||
|
||||
CREATE TABLE ancestries_langs (
|
||||
id INTEGER PRIMARY KEY,
|
||||
ancestry_id INTEGER NOT NULL,
|
||||
lang_id INTEGER NOT NULL,
|
||||
FOREIGN KEY (ancestry_id) REFERENCES ancestries(ancestry_id),
|
||||
FOREIGN KEY (lang_id) REFERENCES langs(lang_id));
|
||||
|
||||
CREATE TABLE ancestry_additionalangs (
|
||||
id INTEGER PRIMARY KEY,
|
||||
ancestry_id INTEGER NOT NULL,
|
||||
lang_id INTEGER NOT NULL,
|
||||
FOREIGN KEY (ancestry_id) REFERENCES ancestries(ancestry_id),
|
||||
FOREIGN KEY (lang_id) REFERENCES langs(lang_id)
|
||||
);
|
||||
@@ -0,0 +1,46 @@
|
||||
|
||||
CREATE TABLE armorgroup (
|
||||
grp_id INTEGER PRIMARY KEY,
|
||||
sources_id INTEGER NOT NULL,
|
||||
sources_pages TEXT NOT NULL,
|
||||
short_name TEXT NOT NULL UNIQUE,
|
||||
descr TEXT NOT NULL,
|
||||
FOREIGN KEY (sources_id) REFERENCES sources(sources_id)
|
||||
);
|
||||
|
||||
CREATE TABLE armorcategory (
|
||||
armor_category_id INTEGER PRIMARY KEY,
|
||||
short_name TEXT NOT NULL UNIQUE
|
||||
);
|
||||
|
||||
CREATE TABLE armor (
|
||||
armor_id INTEGER PRIMARY KEY,
|
||||
sources_id INTEGER NOT NULL,
|
||||
sources_pages TEXT,
|
||||
armor_category_id INTEGER NOT NULL,
|
||||
short_name TEXT NOT NULL,
|
||||
item_level INTEGER,
|
||||
price_text TEXT NOT NULL,
|
||||
price_gp FLOAT NOT NULL,
|
||||
ac_bonus INTEGER NOT NULL,
|
||||
dex_cap INTEGER,
|
||||
check_penalty INTEGER,
|
||||
speed_penalty INTEGER,
|
||||
strength INTEGER,
|
||||
bulk_id INTEGER NOT NULL,
|
||||
grp_id INTEGER,
|
||||
descr TEXT NOT NULL,
|
||||
FOREIGN KEY (bulk_id) REFERENCES bulks(bulk_id),
|
||||
FOREIGN KEY (grp_id) REFERENCES armorgroup(grp_id),
|
||||
FOREIGN KEY (sources_id) REFERENCES sources(sources_id)
|
||||
);
|
||||
|
||||
CREATE TABLE armor_traits (
|
||||
id INTEGER PRIMARY KEY,
|
||||
armor_id INTEGER NOT NULL,
|
||||
trait_id INTEGER NOT NULL,
|
||||
FOREIGN KEY (armor_id) REFERENCES armor(armor_id),
|
||||
FOREIGN KEY (trait_id) REFERENCES traits(trait_id)
|
||||
);
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
CREATE TABLE backgrounds (
|
||||
bg_id INTEGER PRIMARY KEY,
|
||||
"name" TEXT NOT NULL UNIQUE,
|
||||
descr TEXT NOT NULL,
|
||||
sources_id INTEGER NOT NULL,
|
||||
sources_pages TEXT NOT NULL,
|
||||
is_comty_use BOOLEAN NOT NULL, -- false = no community use policy required
|
||||
is_specific_to_adv BOOLEAN NOT NULL, -- means the background is specific to its adventure
|
||||
FOREIGN KEY (sources_id) REFERENCES sources(sources_id)
|
||||
);
|
||||
@@ -0,0 +1,10 @@
|
||||
CREATE TABLE bulks (
|
||||
bulk_id INTEGER PRIMARY KEY,
|
||||
sources_id INTEGER NOT NULL,
|
||||
sources_pages TEXT NOT NULL,
|
||||
short_name TEXT NOT NULL,
|
||||
long_name TEXT NOT NULL,
|
||||
numerical FLOAT NOT NULL,
|
||||
FOREIGN KEY (sources_id) REFERENCES sources(sources_id)
|
||||
);
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
CREATE TABLE conditions (
|
||||
conditions_id INTEGER PRIMARY KEY,
|
||||
name TEXT UNIQUE NOT NULL,
|
||||
short_descr TEXT NOT NULL,
|
||||
descr TEXT NOT NULL,
|
||||
sources_id INTEGER NOT NULL,
|
||||
sources_pages TEXT,
|
||||
FOREIGN KEY (sources_id) REFERENCES sources(sources_id)
|
||||
);
|
||||
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
-- CREATE TABLE abilityscores (
|
||||
-- abilityscores_id INTEGER PRIMARY KEY,
|
||||
-- flag_rep INTEGER NOT NULL,
|
||||
-- short_name TEXT NOT NULL UNIQUE,
|
||||
-- long_name TEXT NOT NULL UNIQUE
|
||||
-- );
|
||||
|
||||
|
||||
CREATE TABLE damagecategories (
|
||||
damagecategories_id INTEGER PRIMARY KEY,
|
||||
sources_id INTEGER,
|
||||
sources_pages TEXT,
|
||||
"name" TEXT NOT NULL UNIQUE,
|
||||
descr TEXT,
|
||||
FOREIGN KEY (sources_id) REFERENCES sources(sources_id)
|
||||
);
|
||||
|
||||
CREATE TABLE damagetypes (
|
||||
damagetypes_id INTEGER PRIMARY KEY,
|
||||
sources_id INTEGER,
|
||||
sources_pages TEXT,
|
||||
damagecategories_id INTEGER NOT NULL,
|
||||
"abbr" TEXT,
|
||||
"name" TEXT NOT NULL UNIQUE,
|
||||
FOREIGN KEY (damagecategories_id) REFERENCES damagecategories(damagecategories_id),
|
||||
FOREIGN KEY (sources_id) REFERENCES sources(sources_id)
|
||||
);
|
||||
@@ -0,0 +1,47 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
/* MUST BE CALLED AFTER TRAITS TABLE IS FORMED */
|
||||
|
||||
/* Need to rethink how to model the various prerequisites */
|
||||
|
||||
|
||||
CREATE TABLE feats (
|
||||
feat_id INTEGER PRIMARY KEY,
|
||||
sources_id INTEGER NOT NULL,
|
||||
sources_pages TEXT NOT NULL,
|
||||
short_name TEXT NOT NULL UNIQUE,
|
||||
descr TEXT NOT NULL,
|
||||
action_id INTEGER,
|
||||
frequency_id INTEGER,
|
||||
triggers_id INTEGER,
|
||||
requirements_id INTEGER,
|
||||
FOREIGN KEY (sources_id) REFERENCES sources(sources_id),
|
||||
FOREIGN KEY (action_id) REFERENCES actioncosts(actioncosts_id),
|
||||
FOREIGN KEY (frequency_id) REFERENCES frequency(freq_id),
|
||||
FOREIGN KEY (triggers_id) REFERENCES triggers(triggers_id),
|
||||
FOREIGN KEY (requirements_id) REFERENCES requirements(requirements_id)
|
||||
);
|
||||
|
||||
CREATE TABLE featprereqs (
|
||||
featprereqs_id INTEGER PRIMARY KEY,
|
||||
descr TEXT NOT NULL UNIQUE,
|
||||
feat_id INTEGER, -- this can be NULL since not all prereqs are feats
|
||||
FOREIGN KEY (feat_id) REFERENCES feats(feat_id)
|
||||
);
|
||||
|
||||
CREATE TABLE feats_featprereqs (
|
||||
id INTEGER PRIMARY KEY,
|
||||
feat_id INTEGER NOT NULL,
|
||||
featprereqs_id INTEGER NOT NULL,
|
||||
FOREIGN KEY (feat_id) REFERENCES feats(feat_id),
|
||||
FOREIGN KEY (featprereqs_id) REFERENCES featprereqs(featprereqs_id)
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE feats_traits (
|
||||
id INTEGER PRIMARY KEY,
|
||||
feat_id INTEGER NOT NULL,
|
||||
trait_id INTEGER NOT NULL,
|
||||
FOREIGN KEY (feat_id) REFERENCES feats(feat_id),
|
||||
FOREIGN KEY (trait_id) REFERENCES traits(trait_id)
|
||||
);
|
||||
@@ -0,0 +1,6 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
CREATE TABLE frequency (
|
||||
freq_id INTEGER PRIMARY KEY,
|
||||
freq_descr TEXT NOT NULL UNIQUE
|
||||
);
|
||||
@@ -0,0 +1,21 @@
|
||||
CREATE TABLE gear(
|
||||
"gear_id" INTEGER PRIMARY KEY,
|
||||
"name" TEXT NOT NULL UNIQUE,
|
||||
"level" INTEGER,
|
||||
"price" REAL,
|
||||
"bulk" REAL,
|
||||
"hands" INTEGER,
|
||||
"sources_id" INTEGER,
|
||||
"sources_pages" TEXT,
|
||||
"descr" TEXT NOT NULL,
|
||||
FOREIGN KEY (sources_id) REFERENCES sources(sources_id)
|
||||
);
|
||||
|
||||
CREATE TABLE gear_traits(
|
||||
id INTEGER PRIMARY KEY,
|
||||
gear_id INTEGER NOT NULL,
|
||||
trait_id INTEGER NOT NULL,
|
||||
FOREIGN KEY (gear_id) REFERENCES gear(gear_id),
|
||||
FOREIGN KEY (trait_id) REFERENCES traits(trait_id)
|
||||
);
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
CREATE TABLE langsrarity (
|
||||
rarity_id INTEGER PRIMARY KEY,
|
||||
rarity_name TEXT NOT NULL UNIQUE
|
||||
);
|
||||
|
||||
CREATE TABLE langs (
|
||||
lang_id INTEGER PRIMARY KEY,
|
||||
lang TEXT NOT NULL UNIQUE,
|
||||
speakers TEXT NOT NULL UNIQUE,
|
||||
rarity_id INTEGER NOT NULL,
|
||||
sources_id INTEGER NOT NULL,
|
||||
sources_pages TEXT NOT NULL,
|
||||
FOREIGN KEY (rarity_id) REFERENCES langsrarity(rarity_id),
|
||||
FOREIGN KEY (sources_id) REFERENCES sources(sources_id)
|
||||
);
|
||||
|
||||
@@ -0,0 +1,129 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON;
|
||||
|
||||
-- TODO needs data
|
||||
|
||||
-- Rarity will be by trait
|
||||
-- Monster 'type' will be by trait
|
||||
-- Monster category is also by trait
|
||||
|
||||
-- So the bestiary breaks down trait versus category or family, but then sticks
|
||||
-- them all in the trait position on the stat block, so I think we just do it
|
||||
-- all with traits. Thoughts?
|
||||
|
||||
CREATE TABLE monsters (
|
||||
monster_id INTEGER PRIMARY KEY,
|
||||
is_comty_use BOOLEAN NOT NULL, -- false = no community use policy req
|
||||
sourceentry_id INTEGER, -- new style source entries
|
||||
-- monstercategories_id INTEGER, -- Humanoid etc..
|
||||
"name" TEXT NOT NULL UNIQUE,
|
||||
"level" INTEGER,
|
||||
alignment_id INTEGER, -- i.e. NG, LE etc..
|
||||
perception INTEGER,
|
||||
size_id INTEGER, -- i.e. large medium small etc..
|
||||
ac INTEGER,
|
||||
fortitude INTEGER,
|
||||
reflex INTEGER,
|
||||
will INTEGER,
|
||||
hp INTEGER,
|
||||
land_speed INTEGER, -- we decided to make the speeds flattened as they don't
|
||||
-- save much extra space
|
||||
burrow_speed INTEGER,
|
||||
climb_speed INTEGER,
|
||||
fly_speed INTEGER,
|
||||
swim_speed INTEGER,
|
||||
str_mod INTEGER,
|
||||
dex_mod INTEGER,
|
||||
con_mod INTEGER,
|
||||
int_mod INTEGER,
|
||||
wis_mod INTEGER,
|
||||
cha_mod INTEGER,
|
||||
specific_monster_flavortext TEXT,
|
||||
FOREIGN KEY (alignment_id) REFERENCES alignments(alignments_id),
|
||||
FOREIGN KEY (size_id) REFERENCES sizes(size_id),
|
||||
FOREIGN KEY (sourceentry_id) REFERENCES sourceentries(sourceentry_id)
|
||||
);
|
||||
|
||||
CREATE TABLE monsterflavortexttypes (
|
||||
monsterflavortexttype_id INTEGER PRIMARY KEY,
|
||||
"name" TEXT NOT NULL UNIQUE
|
||||
-- page 7 Bestiary
|
||||
-- 'Monster Category' -- i.e. "Bear"
|
||||
-- THE FOLLOWING ARE THE SIDEBAR CONTENT FROM BESTIARY
|
||||
-- 'Advice and Rules'
|
||||
-- 'Related Creatures'
|
||||
-- 'Additional Lore'
|
||||
-- 'Treasure and Rewards'
|
||||
-- 'Locations'
|
||||
);
|
||||
|
||||
CREATE TABLE monsterflavortexts (
|
||||
monsterflavortext_id INTEGER PRIMARY KEY,
|
||||
monsterflavortexttype_id INTEGER,
|
||||
heading TEXT NOT NULL,
|
||||
mft_text TEXT NOT NULL,
|
||||
FOREIGN KEY (monsterflavortexttype_id) REFERENCES monsterflavortexttypes(monsterflavortexttype_id)
|
||||
);
|
||||
|
||||
CREATE TABLE monsters_monsterflavortexts (
|
||||
id INTEGER PRIMARY KEY,
|
||||
monster_id,
|
||||
monsterflavortext_id,
|
||||
FOREIGN KEY (monster_id) REFERENCES monsters(monster_id),
|
||||
FOREIGN KEY (monsterflavortext_id) REFERENCES monsterflavortexts(monsterflavortext_id)
|
||||
);
|
||||
|
||||
CREATE TABLE monsters_senses (
|
||||
id INTEGER PRIMARY KEY,
|
||||
monster_id INTEGER NOT NULL,
|
||||
sense_id INTEGER NOT NULL,
|
||||
FOREIGN KEY (monster_id) REFERENCES monsters(monster_id),
|
||||
FOREIGN KEY (sense_id) REFERENCES senses(senses_id)
|
||||
);
|
||||
|
||||
CREATE TABLE monsters_immunities (
|
||||
id INTEGER PRIMARY KEY,
|
||||
monsters_id INTEGER NOT NULL,
|
||||
immunities_id INTEGER NOT NULL,
|
||||
FOREIGN KEY (monsters_id) REFERENCES monsters(monsters_id),
|
||||
FOREIGN KEY (immunities_id) REFERENCES immunities(immunities_id)
|
||||
);
|
||||
|
||||
CREATE TABLE monsters_skills (
|
||||
id INTEGER PRIMARY KEY,
|
||||
monster_id INTEGER NOT NULL,
|
||||
skills_id INTEGER NOT NULL, -- will ID the specific skill
|
||||
skill_mod INTEGER NOT NULL, -- will hold the modifier value
|
||||
UNIQUE(monster_id, skills_id), -- so we don't get duplicate rows for a specific monster
|
||||
FOREIGN KEY (monster_id) REFERENCES monsters(monster_id),
|
||||
FOREIGN KEY (skills_id) REFERENCES skills(skills_id)
|
||||
);
|
||||
|
||||
CREATE TABLE monsters_traits (
|
||||
id INTEGER PRIMARY KEY,
|
||||
monster_id INTEGER NOT NULL,
|
||||
trait_id INTEGER NOT NULL,
|
||||
FOREIGN KEY (monster_id) REFERENCES monsters(monster_id),
|
||||
FOREIGN KEY (trait_id) REFERENCES traits(trait_id)
|
||||
);
|
||||
|
||||
CREATE TABLE monsters_langs (
|
||||
id INTEGER PRIMARY KEY,
|
||||
monster_id INTEGER NOT NULL,
|
||||
lang_id INTEGER NOT NULL,
|
||||
FOREIGN KEY (monster_id) REFERENCES monsters(monster_id),
|
||||
FOREIGN KEY (lang_id) REFERENCES langs(lang_id)
|
||||
);
|
||||
|
||||
CREATE TABLE monsteractions (
|
||||
monsteraction_id INTEGER PRIMARY KEY,
|
||||
"name" TEXT
|
||||
-- TODO
|
||||
);
|
||||
|
||||
CREATE TABLE monsters_actions (
|
||||
id INTEGER PRIMARY KEY,
|
||||
monster_id INTEGER NOT NULL,
|
||||
monsteraction_id INTEGER NOT NULL
|
||||
);
|
||||
@@ -0,0 +1,12 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON;
|
||||
|
||||
-- TODO needs data
|
||||
|
||||
CREATE TABLE movements (
|
||||
movements_id INTEGER PRIMARY KEY,
|
||||
"name" TEXT UNIQUE NOT NULL
|
||||
);
|
||||
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
CREATE TABLE requirements (
|
||||
requirements_id INTEGER PRIMARY KEY,
|
||||
requirements_descr TEXT NOT NULL UNIQUE
|
||||
);
|
||||
@@ -0,0 +1,12 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
/* TODO change visions to a senses table */
|
||||
|
||||
CREATE TABLE senses (
|
||||
senses_id INTEGER PRIMARY KEY,
|
||||
sources_id INTEGER,
|
||||
sources_pages TEXT,
|
||||
short_name TEXT NOT NULL UNIQUE,
|
||||
description TEXT,
|
||||
FOREIGN KEY (sources_id) REFERENCES sources(sources_id)
|
||||
);
|
||||
@@ -0,0 +1,10 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
|
||||
CREATE TABLE sizes (
|
||||
size_id INTEGER PRIMARY KEY,
|
||||
short_name TEXT NOT NULL UNIQUE,
|
||||
space_in_ft INTEGER NOT NULL,
|
||||
reach_tall_ft INTEGER NOT NULL,
|
||||
reach_long_ft INTEGER NOT NULL
|
||||
);
|
||||
@@ -0,0 +1,12 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON;
|
||||
|
||||
CREATE TABLE skills (
|
||||
skills_id INTEGER PRIMARY KEY,
|
||||
sources_id INTEGER,
|
||||
sources_pages TEXT,
|
||||
"name" TEXT UNIQUE NOT NULL,
|
||||
descr TEXT,
|
||||
FOREIGN KEY (sources_id) REFERENCES sources(sources_id)
|
||||
);
|
||||
@@ -0,0 +1,35 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
-- MUST BE CALLED EARLY IN SCRIPT
|
||||
|
||||
CREATE TABLE sources (
|
||||
sources_id INTEGER PRIMARY KEY,
|
||||
isbn TEXT,
|
||||
pzocode TEXT,
|
||||
sources_full_name TEXT NOT NULL UNIQUE,
|
||||
sources_short_name TEXT NOT NULL UNIQUE,
|
||||
sources_abbrev TEXT NOT NULL UNIQUE,
|
||||
sources_descr TEXT NOT NULL,
|
||||
release_date TEXT NOT NULL, -- in YYYY-MM-DD format
|
||||
first_party BOOLEAN NOT NULL,
|
||||
ogl_copyright_block TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE sourceentries (
|
||||
sourceentry_id INTEGER PRIMARY KEY,
|
||||
sources_id INTEGER NOT NULL,
|
||||
page_start INTEGER,
|
||||
page_stop INTEGER,
|
||||
UNIQUE (sources_id, page_start, page_stop), -- prevent duplicates
|
||||
FOREIGN KEY (sources_id) REFERENCES sources(sources_id)
|
||||
);
|
||||
|
||||
CREATE TABLE monsters_sourceentries (
|
||||
id INTEGER PRIMARY KEY,
|
||||
monster_id INTEGER NOT NULL,
|
||||
sourceentry_id INTEGER NOT NULL,
|
||||
FOREIGN KEY (monster_id) REFERENCES monsters(monster_id),
|
||||
FOREIGN KEY (sourceentry_id) REFERENCES sourceentries(sourceentry_id)
|
||||
);
|
||||
|
||||
-- TODO add in new many-to-many tables for the various things we want to have sources be listed this way
|
||||
@@ -0,0 +1,75 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
CREATE TABLE spelltypes (
|
||||
spelltypes_id INTEGER PRIMARY KEY,
|
||||
name TEXT NOT NULL UNIQUE
|
||||
);
|
||||
|
||||
CREATE TABLE spellcomponents (
|
||||
spellcomponents_id INTEGER PRIMARY KEY,
|
||||
name TEXT NOT NULL UNIQUE
|
||||
);
|
||||
|
||||
CREATE TABLE spelltraditions (
|
||||
spelltraditions_id INTEGER PRIMARY KEY,
|
||||
name TEXT NOT NULL UNIQUE
|
||||
);
|
||||
|
||||
CREATE TABLE spelltargets (
|
||||
spelltargets_id INTEGER PRIMARY KEY,
|
||||
name TEXT NOT NULL UNIQUE
|
||||
);
|
||||
|
||||
CREATE TABLE spellschools (
|
||||
spellschools_id INTEGER PRIMARY KEY,
|
||||
sources_id INTEGER NOT NULL,
|
||||
sources_pages TEXT,
|
||||
name TEXT NOT NULL UNIQUE,
|
||||
descr TEXT NOT NULL,
|
||||
FOREIGN KEY (sources_id) REFERENCES sources(sources_id)
|
||||
);
|
||||
|
||||
-- TODO eventually once data is finalized, lock down variables as NOT NULL /
|
||||
-- UNIQUE as sanity requires :)
|
||||
-- TODO Area eventually needs its own table
|
||||
CREATE TABLE spells (
|
||||
spells_id INTEGER PRIMARY KEY,
|
||||
sources_id INTEGER NOT NULL, -- generated in spells.py from scraped data
|
||||
sources_pages TEXT, -- generated in spells.py from scraped data
|
||||
"name" TEXT NOT NULL UNIQUE, -- scraped from github repo
|
||||
"level" INTEGER, -- scraped from github repo
|
||||
"trigger" TEXT, -- scraped from spells.py NOTE, there are no duplicate triggers
|
||||
-- as of CRB, so not bothering with a separate spell triggers
|
||||
-- table at this time
|
||||
descr TEXT, -- scraped from github repo
|
||||
spelltypes_id INTEGER, -- generated from spells.py
|
||||
range_text TEXT, -- scraped from github repo
|
||||
range_ft INTEGER, -- generated from text in spells.py
|
||||
area_text TEXT, -- TODO need to figure out some sort of programmatic representation for this too
|
||||
spelltargets_id INTEGER,
|
||||
nethysurl TEXT, -- scraped from github repo
|
||||
actioncosts_id INTEGER,
|
||||
FOREIGN KEY (actioncosts_id) REFERENCES actioncosts(actioncosts_id),
|
||||
FOREIGN KEY (sources_id) REFERENCES sources(sources_id),
|
||||
FOREIGN KEY (spelltypes_id) REFERENCES spelltypes(spelltypes_id),
|
||||
FOREIGN KEY (spelltargets_id) REFERENCES spelltargets(spelltargets_id)
|
||||
);
|
||||
|
||||
CREATE TABLE spells_spellcomponents(
|
||||
id INTEGER PRIMARY KEY,
|
||||
spells_id INTEGER NOT NULL,
|
||||
spellcomponents_id INTEGER NOT NULL,
|
||||
FOREIGN KEY (spells_id) REFERENCES spells(spells_id),
|
||||
FOREIGN KEY (spellcomponents_id) REFERENCES spellcomponents(spellcomponents_id)
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE spells_traits (
|
||||
id INTEGER PRIMARY KEY,
|
||||
spells_id INTEGER NOT NULL,
|
||||
trait_id INTEGER NOT NULL,
|
||||
UNIQUE(spells_id, trait_id),
|
||||
FOREIGN KEY (spells_id) REFERENCES spells(spells_id),
|
||||
FOREIGN KEY (trait_id) REFERENCES traits(trait_id)
|
||||
);
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
-- Parent table -- Table for Staves --
|
||||
CREATE TABLE staff (
|
||||
staff_id INTEGER PRIMARY KEY,
|
||||
"name" TEXT NOT NULL UNIQUE, -- every staff should have a name --
|
||||
"level" INTEGER NOT NULL, -- every staff should have a level --
|
||||
price INTEGER, /* stored in GP
|
||||
could add NOT NULL and store 0s */
|
||||
bulk INTEGER, -- could add NOT NULL and store 0s --
|
||||
usage TEXT, /* always "held in 1 hand"
|
||||
Consider storing in another table */
|
||||
item_bonus INTEGER, -- If the staff gives an item bonus --
|
||||
craft_requirements TEXT, -- "Supply one casting of all listed levels of all listed spells." --
|
||||
-- Consider storing in another table --
|
||||
source_id INTEGER NOT NULL,
|
||||
source_pages INTEGER NOT NULL,
|
||||
"description" TEXT,
|
||||
FOREIGN KEY (source_id) REFERENCES sources(sources_id)
|
||||
);
|
||||
|
||||
-- Child table -- many-to-many --
|
||||
CREATE TABLE staffactivations (
|
||||
staffactivations_id INTEGER PRIMARY KEY,
|
||||
"activation" TEXT NOT NULL,
|
||||
effect TEXT NOT NULL,
|
||||
UNIQUE (staffactivations_id, "activation", effect)
|
||||
);
|
||||
|
||||
-- Joining table --
|
||||
CREATE TABLE staff_staffactivations (
|
||||
id INTEGER PRIMARY KEY,
|
||||
staff_id INTEGER NOT NULL,
|
||||
staffactivations_id INTEGER NOT NULL,
|
||||
UNIQUE (id, staff_id, staffactivations_id),
|
||||
FOREIGN KEY (staff_id) REFERENCES staff(staff_id),
|
||||
FOREIGN KEY (staffactivations_id) REFERENCES staffactivations(staffactivations_id)
|
||||
);
|
||||
|
||||
-- Joining table --
|
||||
CREATE TABLE staff_trait (
|
||||
id INTEGER PRIMARY KEY,
|
||||
staff_id INTEGER NOT NULL,
|
||||
trait_id INTEGER NOT NULL,
|
||||
UNIQUE (id, staff_id, trait_id),
|
||||
FOREIGN KEY (staff_id) REFERENCES staff(staff_id),
|
||||
FOREIGN KEY (trait_id) REFERENCES traits(trait_id)
|
||||
);
|
||||
|
||||
-- Joining table --
|
||||
CREATE TABLE staff_spell (
|
||||
id INTEGER PRIMARY KEY,
|
||||
staff_id INTEGER NOT NULL,
|
||||
"level" INTEGER NOT NULL, -- This represents the level of the spell in the staff where 0 = cantrip --
|
||||
spell_id INTEGER NOT NULL,
|
||||
UNIQUE (id, staff_id, "level", spell_id),
|
||||
FOREIGN KEY (staff_id) REFERENCES staff(staff_id),
|
||||
FOREIGN KEY (spell_id) REFERENCES spells(spells_id)
|
||||
);
|
||||
@@ -0,0 +1,17 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
CREATE TABLE traittypes (
|
||||
traittype_id INTEGER PRIMARY KEY,
|
||||
name TEXT NOT NULL
|
||||
);
|
||||
|
||||
/* TODO can the description var be UNIQUE? */
|
||||
/* has partial data done */
|
||||
CREATE TABLE traits (
|
||||
trait_id INTEGER PRIMARY KEY,
|
||||
traittype INTEGER,
|
||||
short_name TEXT NOT NULL,
|
||||
description TEXT NOT NULL,
|
||||
FOREIGN KEY (traittype) REFERENCES traittypes(traittype_id)
|
||||
);
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
CREATE TABLE triggers (
|
||||
triggers_id INTEGER PRIMARY KEY,
|
||||
triggers_descr TEXT NOT NULL UNIQUE
|
||||
);
|
||||
@@ -0,0 +1,47 @@
|
||||
-- -*- mode:sql sql-product:sqlite -*-
|
||||
|
||||
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||
-- on PER CONNECTION
|
||||
|
||||
CREATE TABLE weapongroups (
|
||||
weapongroups_id INTEGER PRIMARY KEY,
|
||||
sources_id INTEGER,
|
||||
sources_pages TEXT,
|
||||
"name" TEXT NOT NULL UNIQUE,
|
||||
descr TEXT,
|
||||
FOREIGN KEY (sources_id) REFERENCES sources(sources_id)
|
||||
);
|
||||
|
||||
CREATE TABLE weaponcategories (
|
||||
weaponcategories_id INTEGER PRIMARY KEY,
|
||||
"name" TEXT NOT NULL UNIQUE
|
||||
);
|
||||
|
||||
CREATE TABLE weapons (
|
||||
weapons_id INTEGER PRIMARY KEY,
|
||||
sources_id INTEGER,
|
||||
sources_pages TEXT,
|
||||
weaponcategories_id INTEGER,
|
||||
weapongroups_id INTEGER,
|
||||
price_gp TEXT, --Text to fix the floating point error
|
||||
dice_size INTEGER,
|
||||
damagetypes_id INTEGER,
|
||||
"bulk" TEXT, --Text to fix the floating point error
|
||||
hands TEXT, -- '1+' is different than '1' per the rules
|
||||
range INTEGER,
|
||||
reload TEXT, -- '-' is significant in the rules
|
||||
"name" TEXT NOT NULL UNIQUE,
|
||||
descr TEXT,
|
||||
FOREIGN KEY (weapongroups_id) REFERENCES weapongroups(weapongroups_id),
|
||||
FOREIGN KEY (weaponcategories_id) REFERENCES weaponcategories(weaponcategories_id),
|
||||
FOREIGN KEY (sources_id) REFERENCES sources(sources_id)
|
||||
);
|
||||
|
||||
CREATE TABLE weapons_traits (
|
||||
id INTEGER PRIMARY KEY,
|
||||
weapons_id INTEGER NOT NULL,
|
||||
trait_id INTEGER NOT NULL,
|
||||
UNIQUE(weapons_id, trait_id)
|
||||
FOREIGN KEY (weapons_id) REFERENCES weapons(weapons_id),
|
||||
FOREIGN KEY (trait_id) REFERENCes traits(trait_id)
|
||||
);
|
||||
@@ -0,0 +1,147 @@
|
||||
ancestries:
|
||||
- boosts:
|
||||
- CON
|
||||
- WIS
|
||||
- Free1
|
||||
flavor_text: TODO
|
||||
flaws:
|
||||
- CHA
|
||||
hp: 10
|
||||
name: Dwarf
|
||||
senses: Darkvision
|
||||
size: Medium
|
||||
source:
|
||||
- abbr: CRB
|
||||
page_start: 35
|
||||
page_stop: 35
|
||||
speed: 20
|
||||
traits:
|
||||
- Dwarf
|
||||
- Humanoid
|
||||
- boosts:
|
||||
- DEX
|
||||
- INT
|
||||
- Free1
|
||||
flavor_text: TODO
|
||||
flaws:
|
||||
- CON
|
||||
hp: 6
|
||||
name: Elf
|
||||
senses: Low-Light Vision
|
||||
size: Medium
|
||||
source:
|
||||
- abbr: CRB
|
||||
page_start: 39
|
||||
page_stop: 39
|
||||
speed: 30
|
||||
traits:
|
||||
- Elf
|
||||
- Humanoid
|
||||
- boosts:
|
||||
- CON
|
||||
- CHA
|
||||
- Free1
|
||||
flavor_text: TODO
|
||||
flaws:
|
||||
- STR
|
||||
hp: 8
|
||||
name: Gnome
|
||||
senses: Low-Light Vision
|
||||
size: Small
|
||||
source:
|
||||
- abbr: CRB
|
||||
page_start: 43
|
||||
page_stop: 43
|
||||
speed: 25
|
||||
traits:
|
||||
- Gnome
|
||||
- Humanoid
|
||||
- boosts:
|
||||
- DEX
|
||||
- CHA
|
||||
- Free1
|
||||
flavor_text: TODO
|
||||
flaws:
|
||||
- WIS
|
||||
hp: 6
|
||||
name: Goblin
|
||||
senses: Darkvision
|
||||
size: Small
|
||||
source:
|
||||
- abbr: CRB
|
||||
page_start: 47
|
||||
page_stop: 47
|
||||
speed: 25
|
||||
traits:
|
||||
- Goblin
|
||||
- Humanoid
|
||||
- boosts:
|
||||
- DEX
|
||||
- WIS
|
||||
- Free1
|
||||
flavor_text: TODO
|
||||
flaws:
|
||||
- STR
|
||||
hp: 6
|
||||
name: Halfling
|
||||
senses: Keen Eyes
|
||||
size: Small
|
||||
source:
|
||||
- abbr: CRB
|
||||
page_start: 51
|
||||
page_stop: 51
|
||||
speed: 25
|
||||
traits:
|
||||
- Halfling
|
||||
- Humanoid
|
||||
- boosts:
|
||||
- Free1
|
||||
- Free2
|
||||
flavor_text: TODO
|
||||
flaws: null
|
||||
hp: 8
|
||||
name: Human
|
||||
senses: None
|
||||
size: Medium
|
||||
source:
|
||||
- abbr: CRB
|
||||
page_start: 55
|
||||
page_stop: 55
|
||||
speed: 25
|
||||
traits:
|
||||
- Human
|
||||
- Humanoid
|
||||
- boosts: null
|
||||
flavor_text: TODO
|
||||
flaws: null
|
||||
hp: 8
|
||||
name: Half-Elf
|
||||
senses: None
|
||||
size: Medium
|
||||
source:
|
||||
- abbr: CRB
|
||||
page_start: 55
|
||||
page_stop: 55
|
||||
speed: 25
|
||||
traits:
|
||||
- Elf
|
||||
- Human
|
||||
- Humanoid
|
||||
- Half-Elf
|
||||
- boosts: null
|
||||
flavor_text: TODO
|
||||
flaws: null
|
||||
hp: 8
|
||||
name: Half-Orc
|
||||
senses: None
|
||||
size: Medium
|
||||
source:
|
||||
- abbr: CRB
|
||||
page_start: 55
|
||||
page_stop: 55
|
||||
speed: 25
|
||||
traits:
|
||||
- Humanoid
|
||||
- Human
|
||||
- Orc
|
||||
- Half-Orc
|
||||
@@ -0,0 +1,489 @@
|
||||
import yaml
|
||||
import re
|
||||
|
||||
def main():
|
||||
|
||||
cleanuphtmlstuff()
|
||||
|
||||
with open("tmp-monsters-html-cleanup.yaml", 'r') as content_file:
|
||||
data = yaml.full_load(content_file)
|
||||
|
||||
counter = 0
|
||||
for i in data:
|
||||
counter += 1
|
||||
#print("{}\t{}".format(counter, i['name']))
|
||||
|
||||
# Set some data points before iteration
|
||||
i['saves_special'] = {}
|
||||
|
||||
# clean up ability mods
|
||||
for k, v in i['ability_mods'].items():
|
||||
i['ability_mods'][k] = int(v)
|
||||
# print(k, i['ability_mods'][k])
|
||||
|
||||
# clean up skills
|
||||
for k, v in i['skills'].items():
|
||||
i['skills'][k] = int(v)
|
||||
# print(k, i['ability_mods'][k])
|
||||
|
||||
# clean up saves
|
||||
for k, v in i['saves'].items():
|
||||
# print(k, v)
|
||||
i['saves_special'][k] = None
|
||||
if ',' in v:
|
||||
# print("WE GOT A COMMA")
|
||||
i['saves'][k] = v.replace(',', '')
|
||||
if ';' in v:
|
||||
# print("WE GOT A SPECIAL")
|
||||
a = v.split('; ')
|
||||
# print(a)
|
||||
i['saves_special'][k] = a[1]
|
||||
i['saves'][k] = a[0]
|
||||
elif '(' in v:
|
||||
#print("we got a parentheses")
|
||||
#print(v)
|
||||
a = v.split(' (')
|
||||
# print(a)
|
||||
i['saves_special'][k] = a[1]
|
||||
i['saves'][k] = a[0]
|
||||
i['saves'][k] = int(i['saves'][k])
|
||||
# print(k, i['saves'][k])
|
||||
|
||||
# clean up immunities
|
||||
if i['immunities'] == "None":
|
||||
i['immunities'] = None
|
||||
else:
|
||||
tmp = i['immunities']
|
||||
splits = tmp.split(',')
|
||||
res = []
|
||||
for z in splits:
|
||||
res.append(z.strip())
|
||||
i['immunities'] = res
|
||||
|
||||
# clean up traits with trailing or leading whitespace
|
||||
traitslist = []
|
||||
#print(i['traits'])
|
||||
for x in i['traits']:
|
||||
traitslist.append(x.strip())
|
||||
#print(x.strip())
|
||||
#print(traitslist)
|
||||
i['traits'] = traitslist
|
||||
|
||||
# clean up traits underneath proactive actions with trailing or leading whitespace
|
||||
#print(i['proactive_abilities'])
|
||||
for x in i['proactive_abilities']:
|
||||
traitslist = []
|
||||
if x['traits'] != None:
|
||||
if len(x['traits']) == 0:
|
||||
x['traits'] = None
|
||||
else:
|
||||
for y in x['traits']:
|
||||
traitslist.append(y.strip())
|
||||
#print(y.strip())
|
||||
x['traits'] = traitslist
|
||||
|
||||
# clean up traits underneath automatic_abilities with trailing or leading whitespace
|
||||
for x in i['automatic_abilities']:
|
||||
# this one line fixes leading and trailing whitespace
|
||||
x['description'] = x['description'].strip()
|
||||
traitslist = []
|
||||
if x['traits'] != None:
|
||||
if len(x['traits']) == 0:
|
||||
x['traits'] = None
|
||||
else:
|
||||
for y in x['traits']:
|
||||
traitslist.append(y.strip())
|
||||
#print(y.strip())
|
||||
x['traits'] = traitslist
|
||||
|
||||
# clean up traits underneath melee with trailing or leading whitespace
|
||||
for x in i['melee']:
|
||||
traitslist = []
|
||||
if x['traits'] != None:
|
||||
if len(x['traits']) == 0:
|
||||
x['traits'] = None
|
||||
else:
|
||||
for y in x['traits']:
|
||||
traitslist.append(y.strip())
|
||||
#print(y.strip())
|
||||
x['traits'] = traitslist
|
||||
|
||||
# clean up traits underneath ranged with trailing or leading whitespace
|
||||
for x in i['ranged']:
|
||||
traitslist = []
|
||||
if x['traits'] != None:
|
||||
if len(x['traits']) == 0:
|
||||
x['traits'] = None
|
||||
else:
|
||||
for y in x['traits']:
|
||||
traitslist.append(y.strip())
|
||||
#print(y.strip())
|
||||
x['traits'] = traitslist
|
||||
|
||||
# clean up senses
|
||||
|
||||
senseslist = []
|
||||
if i['senses'] != None:
|
||||
if len(i['senses']) == 0:
|
||||
i['senses'] = None
|
||||
else:
|
||||
for x in i['senses']:
|
||||
senseslist.append(x.strip())
|
||||
i['senses'] = senseslist
|
||||
|
||||
# clean up spell DC
|
||||
if i['spell_dc'] == "None":
|
||||
i['spell_dc'] = None
|
||||
else:
|
||||
i['spell_dc'] = int(i['spell_dc'])
|
||||
|
||||
# clean up innate_spell levels
|
||||
if 'innate_spells' not in i:
|
||||
i['innate_spells'] = None
|
||||
elif i['innate_spells'] == "None":
|
||||
i['innate_spells'] = None
|
||||
else:
|
||||
for x in i['innate_spells']:
|
||||
x['level'] = int(x['level'])
|
||||
|
||||
# clean up level
|
||||
i['level'] = int(i['level'])
|
||||
|
||||
# clean up AC and HP and Perception
|
||||
###print("AC:\t{}".format(i['ac']))
|
||||
###print("HP:\t{}".format(i['hp']))
|
||||
res = re.match('(\d+)', i['ac'].strip())
|
||||
i['ac'] = int(res.group(1))
|
||||
res = re.match('(\d+)', i['hp'].strip())
|
||||
i['hp'] = int(res.group(1))
|
||||
|
||||
# clean up melee to hit
|
||||
if 'melee' not in i:
|
||||
i['melee'] = None
|
||||
elif i['melee'] == "None":
|
||||
i['melee'] = None
|
||||
else:
|
||||
for x in i['melee']:
|
||||
if 'to_hit' not in x:
|
||||
x['to_hit'] = None
|
||||
else:
|
||||
res = re.search('(\d+)', x['to_hit'])
|
||||
#print("{}\t{}".format(counter, i['name']))
|
||||
if res:
|
||||
x['to_hit'] = int(res.group(1))
|
||||
|
||||
# clean up ranged to hit
|
||||
if 'ranged' not in i:
|
||||
i['ranged'] = None
|
||||
elif i['ranged'] == "None":
|
||||
i['ranged'] = None
|
||||
else:
|
||||
for x in i['ranged']:
|
||||
if 'to_hit' not in x:
|
||||
x['to_hit'] = None
|
||||
else:
|
||||
res = re.search('(\d+)', x['to_hit'])
|
||||
#print("{}\t{}".format(counter, i['name']))
|
||||
if res:
|
||||
x['to_hit'] = int(res.group(1))
|
||||
|
||||
# clean up spell attack to hit
|
||||
if 'spell_attack_to_hit' not in i:
|
||||
i['spell_attack_to_hit'] = None
|
||||
elif i['spell_attack_to_hit'] == "None":
|
||||
i['spell_attack_to_hit'] = None
|
||||
else:
|
||||
res = re.search('(\d+)', i['spell_attack_to_hit'])
|
||||
#print("{}\t{}".format(counter, i['name']))
|
||||
if res:
|
||||
i['spell_attack_to_hit'] = int(res.group(1))
|
||||
|
||||
###if i['perception'] == None or i['perception'] == "":
|
||||
### print("{}\t{}".format(counter, i['name']))
|
||||
### print("\t\t\t\t{}".format(i['perception']))
|
||||
if type(i['perception']) is str:
|
||||
#print("{}\t{}".format(counter, i['name']))
|
||||
res = re.match('(\d+)', i['perception'])
|
||||
#print(res.group(1))
|
||||
i['perception'] = int(res.group(1))
|
||||
|
||||
# clean up nulls for empty lists
|
||||
|
||||
if i['automatic_abilities'] == []:
|
||||
i['automatic_abilities'] = None
|
||||
if i['ranged'] == []:
|
||||
i['ranged'] = None
|
||||
if i['melee'] == []:
|
||||
i['melee'] = None
|
||||
|
||||
# clean up resistances
|
||||
|
||||
# set Nones to null
|
||||
if i['resistances'] == "None":
|
||||
i['resistances'] = None
|
||||
|
||||
# remove trailing ;
|
||||
elif i['resistances'].endswith(";"):
|
||||
i['resistances'] = i['resistances'][:-1]
|
||||
#print("\t{}".format(i['resistances']))
|
||||
|
||||
if i['resistances'] != None:
|
||||
#print("{}\t{}".format(counter, i['name']))
|
||||
#print("\t{}".format(i['resistances']))
|
||||
# print("{}\t{}".format(counter, i['name']))
|
||||
res = processResistances(i['resistances'])
|
||||
i['resistances'] = res
|
||||
#print(res)
|
||||
|
||||
#if type(i['resistances']) == str:
|
||||
# print("{}\t{}".format(counter, i['name']))
|
||||
# print("\t\t\t\t{}".format(i['resistances']))
|
||||
|
||||
# clean up speeds
|
||||
newspeed = []
|
||||
if 'land' in i['speed']:
|
||||
# get number
|
||||
res = re.match('(\d+)', i['speed']['land'])
|
||||
amt = int(res.group(1))
|
||||
newspeed.append({"type": "Land", "amount": amt })
|
||||
if 'fly' in i['speed']:
|
||||
if 'from fly' in i['speed']['fly']:
|
||||
# do the from fly version
|
||||
res = re.match('(\d+)', i['speed']['fly'])
|
||||
amt = int(res.group(1))
|
||||
newspeed.append({"type": "Fly (from Fly)", "amount": amt })
|
||||
else:
|
||||
# get number
|
||||
res = re.match('(\d+)', i['speed']['fly'])
|
||||
amt = int(res.group(1))
|
||||
newspeed.append({"type": "Fly", "amount": amt })
|
||||
if 'swim' in i['speed']:
|
||||
# get number
|
||||
res = re.match('(\d+)', i['speed']['swim'])
|
||||
amt = int(res.group(1))
|
||||
newspeed.append({"type": "Swim", "amount": amt })
|
||||
if 'burrow' in i['speed']:
|
||||
# get number
|
||||
res = re.match('(\d+)', i['speed']['burrow'])
|
||||
amt = int(res.group(1))
|
||||
newspeed.append({"type": "Burrow", "amount": amt })
|
||||
if 'climb' in i['speed']:
|
||||
# get number
|
||||
res = re.match('(\d+)', i['speed']['climb'])
|
||||
amt = int(res.group(1))
|
||||
newspeed.append({"type": "Climb", "amount": amt })
|
||||
if 'iceclimb' in i['speed']:
|
||||
# get number
|
||||
res = re.match('(\d+)', i['speed']['iceclimb'])
|
||||
amt = int(res.group(1))
|
||||
newspeed.append({"type": "Ice Climb", "amount": amt })
|
||||
if 'climbstone' in i['speed']:
|
||||
# get number
|
||||
res = re.match('(\d+)', i['speed']['climbstone'])
|
||||
amt = int(res.group(1))
|
||||
newspeed.append({"type": "Climb Stone", "amount": amt })
|
||||
if 'burrowsnowonly' in i['speed']:
|
||||
# get number
|
||||
res = re.match('(\d+)', i['speed']['burrowsnowonly'])
|
||||
amt = int(res.group(1))
|
||||
newspeed.append({"type": "Burrow (snow only)", "amount": amt })
|
||||
if 'burrowsandonly' in i['speed']:
|
||||
# get number
|
||||
res = re.match('(\d+)', i['speed']['burrowsandonly'])
|
||||
amt = int(res.group(1))
|
||||
newspeed.append({"type": "Burrow (sand only)", "amount": amt })
|
||||
if 'special' in i['speed']:
|
||||
for x in i['speed']['special']:
|
||||
if x == "ice stride":
|
||||
newspeed.append({"type": "Ice Stride", "amount": None })
|
||||
if x == "trickster's step":
|
||||
newspeed.append({"type": "Trickster's Step", "amount": None })
|
||||
if x == "earth glide":
|
||||
newspeed.append({"type": "Earth Glide", "amount": None })
|
||||
if x == "sand glide":
|
||||
newspeed.append({"type": "Sand Glide", "amount": None })
|
||||
if x == "glide":
|
||||
newspeed.append({"type": "Glide", "amount": None })
|
||||
if x == "compression":
|
||||
newspeed.append({"type": "Compression", "amount": None })
|
||||
if x == "suction":
|
||||
newspeed.append({"type": "Suction", "amount": None })
|
||||
if x == "swamp stride":
|
||||
newspeed.append({"type": "Swamp Stride", "amount": None })
|
||||
if x == "powerful jumper":
|
||||
newspeed.append({"type": "Powerful Jumper", "amount": None })
|
||||
if x == "woodland stride":
|
||||
newspeed.append({"type": "Woodland Stride", "amount": None })
|
||||
if x == "trackless step":
|
||||
newspeed.append({"type": "Trackless Step", "amount": None })
|
||||
if x == "cloud walk":
|
||||
newspeed.append({"type": "Cloud Walk", "amount": None })
|
||||
if x == "swiftness":
|
||||
newspeed.append({"type": "Swiftness", "amount": None })
|
||||
if x == "freedom of movement (constant)":
|
||||
newspeed.append({"type": "Freedom of Movement (constant)", "amount": None })
|
||||
if x == "spider climb (constant)":
|
||||
newspeed.append({"type": "Spider Climb (constant)", "amount": None })
|
||||
if x == "unstoppable burrow":
|
||||
newspeed.append({"type": "Unstoppable Burrow", "amount": None })
|
||||
if x == "walk in shadow":
|
||||
newspeed.append({"type": "Walk in Shadow", "amount": None })
|
||||
if x == "magma swim":
|
||||
newspeed.append({"type": "Magma Swim", "amount": None })
|
||||
if x == "Can't Move":
|
||||
newspeed.append({"type": "Can't Move", "amount": None })
|
||||
if x == "Air Walk (constant)":
|
||||
newspeed.append({"type": "Air Walk (constant)", "amount": None })
|
||||
|
||||
|
||||
i['speed'] = newspeed
|
||||
|
||||
|
||||
final = yaml.safe_dump(data, allow_unicode=True)
|
||||
|
||||
|
||||
with open("tmp-monsters.yaml", 'w') as f:
|
||||
f.write(final)
|
||||
|
||||
def cleanuphtmlstuff():
|
||||
with open("monsters.yaml", 'r') as f:
|
||||
lines = f.readlines()
|
||||
for num, _ in enumerate(lines):
|
||||
lines[num] = cleanupalinks(lines[num])
|
||||
lines[num] = cleanupilinks(lines[num])
|
||||
lines[num] = cleanupblinks(lines[num])
|
||||
lines[num] = cleanupbrlinks(lines[num])
|
||||
lines[num] = cleanupulinks(lines[num])
|
||||
lines[num] = cleanupspellslinks(lines[num])
|
||||
lines[num] = cleanupimglinks(lines[num])
|
||||
lines[num] = cleanuptlinks(lines[num])
|
||||
|
||||
with open("tmp-monsters-html-cleanup.yaml", 'w') as f:
|
||||
f.writelines(lines)
|
||||
|
||||
def cleanupalinks(x):
|
||||
tmp = re.sub('<a.+?>', '', x)
|
||||
tmp2 = re.sub('</a>', '', tmp)
|
||||
return tmp2
|
||||
|
||||
def cleanuptlinks(x):
|
||||
tmp = re.sub('<t>', '', x)
|
||||
return tmp
|
||||
|
||||
def cleanupimglinks(x):
|
||||
res = re.search('(<img.+?>)', x)
|
||||
if res != None:
|
||||
print(res)
|
||||
if res:
|
||||
if 'Single Action' in res.group(0):
|
||||
print("SingleAction")
|
||||
tmp = re.sub('<img.+?>', '|1|', x)
|
||||
tmp = re.sub('\|1\|\|1\|', '|1|', tmp)
|
||||
elif 'Two Actions' in res.group(0):
|
||||
print("TwoActions")
|
||||
tmp = re.sub('<img.+?>', '|2|', x)
|
||||
tmp = re.sub('\|2\|\|2\|', '|2|', tmp)
|
||||
elif 'Three Actions' in res.group(0):
|
||||
print("ThreeActions")
|
||||
tmp = re.sub('<img.+?>', '|3|', x)
|
||||
tmp = re.sub('\|3\|\|3\|', '|3|', tmp)
|
||||
elif 'Free Action' in res.group(0):
|
||||
print("FreeAction")
|
||||
tmp = re.sub('<img.+?>', '|F|', x)
|
||||
tmp = re.sub('\|F\|\|F\|', '|F|', tmp)
|
||||
|
||||
print(tmp)
|
||||
return tmp
|
||||
else:
|
||||
return x
|
||||
|
||||
def cleanupspellslinks(x):
|
||||
tmp = re.sub('<spells.+?>', '', x)
|
||||
tmp2 = re.sub('</spells.+?>', '', tmp)
|
||||
return tmp2
|
||||
|
||||
def cleanupilinks(x):
|
||||
tmp = re.sub('<i>', '*', x)
|
||||
tmp2 = re.sub('</i>', '*', tmp)
|
||||
return tmp2
|
||||
|
||||
def cleanupulinks(x):
|
||||
tmp = re.sub('<u>', '', x)
|
||||
tmp2 = re.sub('</u>', '', tmp)
|
||||
return tmp2
|
||||
|
||||
def cleanupblinks(x):
|
||||
tmp = re.sub('<b>', '**', x)
|
||||
tmp2 = re.sub('</b>', '**', tmp)
|
||||
return tmp2
|
||||
|
||||
def cleanupbrlinks(x):
|
||||
return re.sub('<br>', '\n', x)
|
||||
|
||||
|
||||
def processResistances(r):
|
||||
if '(' in r:
|
||||
# TODO This is what needs to be done
|
||||
#print("\t\tTODO: Need to process with parentheses")
|
||||
|
||||
# this tree does the simple ones without multiple items
|
||||
if ',' not in r:
|
||||
rr = re.split('(\d+)', r)
|
||||
return [{"type": rr[0].strip() + ' ' + rr[2].strip(), "amount": int(rr[1])},]
|
||||
elif ',' in r:
|
||||
# FIGURE OUT BRANCH FOR THE COMMA IS NOT INSIDE THE PARENTHETICAL
|
||||
test = re.search('(\(.+\))', r)
|
||||
tstr = test.group(0)
|
||||
if ',' in tstr:
|
||||
# TODO here's the case for comma IS inside the parenthetical
|
||||
print("\n")
|
||||
print(r)
|
||||
if 'haunted form' not in r:
|
||||
# DO the majority of them
|
||||
rr = re.split('(\d+)', r)
|
||||
print(rr)
|
||||
return [{"type": rr[0].strip() + ' ' + rr[2].strip(), "amount": int(rr[1])},]
|
||||
elif 'haunted form' in r:
|
||||
# DO the single haunted form one
|
||||
##### NOTE I'm hard coding this in as it will be faster than writing regex
|
||||
result = [{"type": "all (except force, ghost touch, or positive; double resistance against non-magical)", "amount": 8},
|
||||
{"type": "haunted form", "amount": 12}]
|
||||
print(result)
|
||||
return result
|
||||
else:
|
||||
# TODO Here's the case for comma is NOT inside the parenthetical
|
||||
splits = re.split(',', r)
|
||||
mysplitlist = []
|
||||
for x in splits:
|
||||
rr = re.split('(\d+)', x)
|
||||
mysplitlist.append({"type": rr[0].strip() + ' ' + rr[2].strip(), "amount": int(rr[1])})
|
||||
return mysplitlist
|
||||
else:
|
||||
print("else has been run")
|
||||
return None
|
||||
else:
|
||||
#print("\t\tNo parentheses")
|
||||
# split on commas
|
||||
res = r.split(',')
|
||||
#print(r.split(','))
|
||||
#print(res)
|
||||
results_list = []
|
||||
for i in res:
|
||||
#print(i)
|
||||
#tmp = re.search('(\d+)', i)
|
||||
#print(tmp.groups())
|
||||
tmp = re.split('(\d+)', i)
|
||||
#print(tmp)
|
||||
tmpres = {"type": tmp[0].strip(), "amount": int(tmp[1])}
|
||||
results_list.append(tmpres)
|
||||
|
||||
return results_list
|
||||
|
||||
|
||||
return "Something went wrong"
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
#
|
||||
import csv
|
||||
import yaml
|
||||
|
||||
def main():
|
||||
# Load the CSV file and print out the false ones that need to be updated
|
||||
csvlist = []
|
||||
with open('../../scripts/feat_level.csv') as csvfile:
|
||||
reader = csv.DictReader(csvfile)
|
||||
for row in reader:
|
||||
if row['match'] == "False":
|
||||
csvlist.append(dict(row))
|
||||
res = yaml.safe_dump(csvlist, allow_unicode=True, width=100000)
|
||||
with open('feats-levels-false-matches.yaml', 'w') as f:
|
||||
f.write(res)
|
||||
|
||||
# Load the CSV file and make YAML file for the matched ones
|
||||
truelist = []
|
||||
with open('../../scripts/feat_level.csv') as csvfile:
|
||||
reader = csv.DictReader(csvfile)
|
||||
for row in reader:
|
||||
if row['match'] == "True":
|
||||
r = dict(row)
|
||||
tmp = {'name': r['name'], 'level': r['level']}
|
||||
truelist.append(tmp)
|
||||
trueres = yaml.safe_dump(truelist, allow_unicode=True, width=100000)
|
||||
with open('feats-levels-true-matches.yaml', 'w') as f:
|
||||
f.write(trueres)
|
||||
|
||||
# open up feats.yaml
|
||||
with open('feats.yaml') as yamlfile:
|
||||
y = yaml.safe_load(yamlfile)
|
||||
|
||||
z = yaml.safe_load(trueres)
|
||||
|
||||
# y is original yaml to be modified
|
||||
# z is new true list
|
||||
for i in z:
|
||||
#print("Looking for a match for: {}".format(i['name']))
|
||||
match = False
|
||||
for j in y['feat']:
|
||||
if i['name'] == j['name']:
|
||||
match = True
|
||||
j['level'] = int(i['level'])
|
||||
#print('We got a match for: {}'.format(i['name']))
|
||||
if match == False:
|
||||
print("We never got a match for: {}'.format(i['name'])")
|
||||
final = yaml.safe_dump(y, allow_unicode=True, width=100000)
|
||||
with open('feats.yaml', 'w') as f:
|
||||
f.write(final)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,420 @@
|
||||
- level: '4'
|
||||
match: 'False'
|
||||
name: Refocus
|
||||
name_aon: Arcane School Spell
|
||||
url_aon: https://2e.aonprd.com/Feats.aspx?ID=743
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Refocus
|
||||
- level: '2'
|
||||
match: 'False'
|
||||
name: Call on Ancient Blood
|
||||
name_aon: Call of the Wild
|
||||
url_aon: https://2e.aonprd.com/Feats.aspx?ID=317
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Call on Ancient Blood
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Burn It!
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Burn+It!
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Burn It!
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Very, Very Sneaky
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Very%2c+Very+Sneaky
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Very, Very Sneaky
|
||||
- level: '9'
|
||||
match: 'False'
|
||||
name: Cooperataive Soul
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Spells.aspx?ID=21
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Cooperataive Soul
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Craft Philosopher's Stone
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Craft+Philosopher%u2019s+Stone
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Craft Philosopher’s Stone
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Dragon’s Rage Breath
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Dragon%u2019s+Rage+Breath
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Dragon’s Rage Breath
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Giant’s Stature
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Giant%u2019s+Stature
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Giant’s Stature
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Spirits’ Interference
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Spirits%u2019+Interference
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Spirits’ Interference
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Come and Get Me
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Come+and+Get+Me
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Come and Get Me
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Dragon’s Rage Wings
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Dragon%u2019s+Rage+Wings
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Dragon’s Rage Wings
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Predator’s Pounce
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Predator%u2019s+Pounce
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Predator’s Pounce
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Spirit’s Wrath
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Spirit%u2019s+Wrath
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Spirit’s Wrath
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Titan’s Stature
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Titan%u2019s+Stature
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Titan’s Stature
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Giant’s Lunge
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Giant%u2019s+Lunge
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Giant’s Lunge
|
||||
- level: '1'
|
||||
match: 'False'
|
||||
name: Lingering Composition
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Spells.aspx?ID=389
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Lingering Composition
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Loremaster’s Etude
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Loremaster%u2019s+Etude
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Loremaster’s Etude
|
||||
- level: '2'
|
||||
match: 'False'
|
||||
name: Inspire Defense
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Spells.aspx?ID=387
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Inspire Defense
|
||||
- level: '4'
|
||||
match: 'False'
|
||||
name: Inspire Heroics
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Spells.aspx?ID=388
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Inspire Heroics
|
||||
- level: '20'
|
||||
match: 'False'
|
||||
name: Symphony of the Muse
|
||||
name_aon: Symphony of the Muses
|
||||
url_aon: https://2e.aonprd.com/Feats.aspx?ID=213
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Symphony of the Muse
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Deity’s Domain
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Deity%u2019s+Domain
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Deity’s Domain
|
||||
- level: '3'
|
||||
match: 'False'
|
||||
name: Litany Against Wrath
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Spells.aspx?ID=397
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Litany Against Wrath
|
||||
- level: '6'
|
||||
match: 'False'
|
||||
name: Loyal Warhouse
|
||||
name_aon: Loyal Warhorse
|
||||
url_aon: https://2e.aonprd.com/Feats.aspx?ID=228
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Loyal Warhouse
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Advanced Deity’s Domain
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Advanced+Deity%u2019s+Domain
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Advanced Deity’s Domain
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Champion’s Sacrifice
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Champion%u2019s+Sacrifice
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Champion’s Sacrifice
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Deity’s Protection
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Deity%u2019s+Protection
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Deity’s Protection
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Avatar’s Audience
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Avatar%u2019s+Audience
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Avatar’s Audience
|
||||
- level: '4'
|
||||
match: 'False'
|
||||
name: Mature Animal Companion (Druid)
|
||||
name_aon: Mature Animal Companion (Druid)
|
||||
url_aon: https://2e.aonprd.com/Feats.aspx?ID=322
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Mature Animal Companion
|
||||
- level: '8'
|
||||
match: 'False'
|
||||
name: Incredible Companion (Druid)
|
||||
name_aon: Incredible Companion (Druid)
|
||||
url_aon: https://2e.aonprd.com/Feats.aspx?ID=332
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Incredible Companion
|
||||
- level: '10'
|
||||
match: 'False'
|
||||
name: Side by Side (Druid)
|
||||
name_aon: Side by Side (Druid)
|
||||
url_aon: https://2e.aonprd.com/Feats.aspx?ID=339
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Side by Side
|
||||
- level: '14'
|
||||
match: 'False'
|
||||
name: Specialized Companion (Druid)
|
||||
name_aon: Specialized Companion (Druid)
|
||||
url_aon: https://2e.aonprd.com/Feats.aspx?ID=344
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Specialized Companion
|
||||
- level: '8'
|
||||
match: 'False'
|
||||
name: Impaling Briars
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Spells.aspx?ID=475
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Impaling Briars
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Hierophant’s Power
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Hierophant%u2019s+Power
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Hierophant’s Power
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Guardian’s Deflection
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Guardian%u2019s+Deflection
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Guardian’s Deflection
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Paragon’s Guard
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Paragon%u2019s+Guard
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Paragon’s Guard
|
||||
- level: '14'
|
||||
match: 'False'
|
||||
name: Improved Twin Riposte (Fighter)
|
||||
name_aon: Improved Twin Riposte (Fighter)
|
||||
url_aon: https://2e.aonprd.com/Feats.aspx?ID=418
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Improved Twin Riposte
|
||||
- level: '14'
|
||||
match: 'False'
|
||||
name: Stance Savant (Fighter)
|
||||
name_aon: Stance Savant (Fighter)
|
||||
url_aon: https://2e.aonprd.com/Feats.aspx?ID=419
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Stance Savant
|
||||
- level: '20'
|
||||
match: 'False'
|
||||
name: Boudless Reprisals
|
||||
name_aon: Boundless Reprisals
|
||||
url_aon: https://2e.aonprd.com/Feats.aspx?ID=428
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Boudless Reprisals
|
||||
- level: '1'
|
||||
match: 'False'
|
||||
name: Ki Strike
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Spells.aspx?ID=486
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Ki Strike
|
||||
- level: '3'
|
||||
match: 'False'
|
||||
name: Ki Blast
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Spells.aspx?ID=484
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Ki Blast
|
||||
- level: '14'
|
||||
match: 'False'
|
||||
name: Stance Savant (Monk)
|
||||
name_aon: Stance Savant (Fighter)
|
||||
url_aon: https://2e.aonprd.com/Feats.aspx?ID=419
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Stance Savant
|
||||
- level: '8'
|
||||
match: 'False'
|
||||
name: Quivering Palm
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Spells.aspx?ID=487
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Quivering Palm
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Hunter’s Aim
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Hunter%u2019s+Aim
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Hunter’s Aim
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Companion’s Cry
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Companion%u2019s+Cry
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Companion’s Cry
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Scout’s Warning
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Scout%u2019s+Warning
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Scout’s Warning
|
||||
- level: '4'
|
||||
match: 'False'
|
||||
name: Mature Animal Companion (Ranger)
|
||||
name_aon: Mature Animal Companion (Druid)
|
||||
url_aon: https://2e.aonprd.com/Feats.aspx?ID=322
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Mature Animal Companion
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Warden’s Boon
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Warden%u2019s+Boon
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Warden’s Boon
|
||||
- level: '8'
|
||||
match: 'False'
|
||||
name: Incredible Companion (Ranger)
|
||||
name_aon: Incredible Companion (Druid)
|
||||
url_aon: https://2e.aonprd.com/Feats.aspx?ID=332
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Incredible Companion
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Warden’s Step
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Warden%u2019s+Step
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Warden’s Step
|
||||
- level: '10'
|
||||
match: 'False'
|
||||
name: Side by Side (Ranger)
|
||||
name_aon: Side by Side (Druid)
|
||||
url_aon: https://2e.aonprd.com/Feats.aspx?ID=339
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Side by Side
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Warden’s Guidance
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Warden%u2019s+Guidance
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Warden’s Guidance
|
||||
- level: '14'
|
||||
match: 'False'
|
||||
name: Improved Twin Riposte (Ranger)
|
||||
name_aon: Improved Twin Riposte (Fighter)
|
||||
url_aon: https://2e.aonprd.com/Feats.aspx?ID=418
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Improved Twin Riposte
|
||||
- level: '14'
|
||||
match: 'False'
|
||||
name: Specialized Companion (Ranger)
|
||||
name_aon: Specialized Companion (Druid)
|
||||
url_aon: https://2e.aonprd.com/Feats.aspx?ID=344
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Specialized Companion
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: You’re Next
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=You%u2019re+Next
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=You’re Next
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Gang Up
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Gang+Up
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Gang Up
|
||||
- level: '20'
|
||||
match: 'False'
|
||||
name: Sly Striker
|
||||
name_aon: Impossible Striker
|
||||
url_aon: https://2e.aonprd.com/Feats.aspx?ID=600
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Sly Striker
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Trickster’s Ace
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Trickster%u2019s+Ace
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Trickster’s Ace
|
||||
- level: '12'
|
||||
match: 'False'
|
||||
name: Counterspell (Spontaneous)
|
||||
name_aon: Clever Counterspell
|
||||
url_aon: https://2e.aonprd.com/Feats.aspx?ID=653
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Counterspell
|
||||
- level: '12'
|
||||
match: 'False'
|
||||
name: Counterspell (Prepared)
|
||||
name_aon: Clever Counterspell
|
||||
url_aon: https://2e.aonprd.com/Feats.aspx?ID=653
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Counterspell
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Archwizard’s Might
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Archwizard%u2019s+Might
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Archwizard’s Might
|
||||
- level: '6'
|
||||
match: 'False'
|
||||
name: Advanced Conoction
|
||||
name_aon: Advanced Weapon Training
|
||||
url_aon: https://2e.aonprd.com/Feats.aspx?ID=378
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Advanced Conoction
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Juggernaut’s Fortitude
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Juggernaut%u2019s+Fortitude
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Juggernaut’s Fortitude
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Basic Muse’s Whispers
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Basic+Muse%u2019s+Whispers
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Basic Muse’s Whispers
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Advanced Muse’s Whispers
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Advanced+Muse%u2019s+Whispers
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Advanced Muse’s Whispers
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Champion’s Reaction
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Champion%u2019s+Reaction
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Champion’s Reaction
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Monk’s Flurry
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Monk%u2019s+Flurry
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Monk’s Flurry
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Perfection’s Path
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Perfection%u2019s+Path
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Perfection’s Path
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Basic Hunter’s Trick
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Basic+Hunter%u2019s+Trick
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Basic Hunter’s Trick
|
||||
- level: '-1'
|
||||
match: 'False'
|
||||
name: Advanced Hunter’s Trick
|
||||
name_aon: ''
|
||||
url_aon: https://2e.aonprd.com/Search.aspx?query=Advanced+Hunter%u2019s+Trick
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Advanced Hunter’s Trick
|
||||
- level: '1'
|
||||
match: 'False'
|
||||
name: Lie To Me
|
||||
name_aon: Lie to Me
|
||||
url_aon: https://2e.aonprd.com/Feats.aspx?ID=811
|
||||
url_search: https://2e.aonprd.com/Search.aspx?query=Lie To Me
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,31 @@
|
||||
import yaml
|
||||
import pprint
|
||||
|
||||
def main():
|
||||
|
||||
with open('ancestries.yaml') as anc:
|
||||
anc_data = yaml.full_load(anc)
|
||||
with open('heritages.yaml') as her:
|
||||
her_data = yaml.full_load(her)
|
||||
|
||||
print(anc_data)
|
||||
print(her_data)
|
||||
|
||||
for i in anc_data['ancestries']:
|
||||
i['heritages'] = []
|
||||
for j in her_data:
|
||||
print(j)
|
||||
if i['name'] in j['name']:
|
||||
i['heritages'].append(j)
|
||||
|
||||
pp = pprint.PrettyPrinter(indent=1)
|
||||
|
||||
pp.pprint(anc_data)
|
||||
|
||||
final = yaml.safe_dump(anc_data, allow_unicode=True)
|
||||
with open('tmp-ancestriesheritages.yaml', 'w') as f:
|
||||
f.write(final)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,187 @@
|
||||
- descr: Dwarven heroes of old could shrug off their enemies' magic, and some of that
|
||||
resistance manifests in you. You gain the Call on Ancient Blood reaction.
|
||||
feat: Call on Ancient Blood
|
||||
name: Ancient-Blooded Dwarf
|
||||
- descr: Your ancestors have been tomb guardians for generations, and the power they
|
||||
cultivated to ward off necromancy has passed on to you. If you roll a success
|
||||
on a saving throw against a necromancy effect, you get a critical success instead.
|
||||
feat: null
|
||||
name: Death Warden Dwarf
|
||||
- descr: You have a remarkable adaptation to hot environments from ancestors who inhabited
|
||||
blazing deserts or volcanic chambers beneath the earth. This grants you fire resistance
|
||||
equal to half your level (minimum 1), and you treat environmental heat effects
|
||||
as if they were one step less extreme (incredible heat becomes extreme, extreme
|
||||
heat becomes severe, and so on).
|
||||
feat: null
|
||||
name: Forge Dwarf
|
||||
- descr: Your ancestors lived and worked among the great ancient stones of the mountains
|
||||
or the depths of the earth. This makes you solid as a rock when you plant your
|
||||
feet. You gain a +2 circumstance bonus to your Fortitude or Reflex DC against
|
||||
attempts to Shove or Trip you. This bonus also applies to saving throws against
|
||||
spells or effects that attempt to knock you prone.
|
||||
feat: null
|
||||
name: Rock Dwarf
|
||||
- descr: Your blood runs hearty and strong, and you can shake off toxins. You gain
|
||||
poison resistance equal to half your level (minimum 1), and each of your successful
|
||||
saving throws against a poison affliction reduces its stage by 2, or by 1 for
|
||||
a virulent poison. Each critical success against an ongoing poison reduces its
|
||||
stage by 3, or by 2 for a virulent poison.
|
||||
feat: null
|
||||
name: Strong-Blooded Dwarf
|
||||
- descr: You dwell deep in the frozen north and have gained incredible resilience
|
||||
against cold environments, granting you cold resistance equal to half your level
|
||||
(minimum 1). You treat environmental cold effects as if they were one step less
|
||||
extreme (incredible cold becomes extreme, extreme cold becomes severe, and so
|
||||
on).
|
||||
feat: null
|
||||
name: Arctic Elf
|
||||
- descr: You were born or spent many years in underground tunnels or caverns where
|
||||
light is scarce. You gain darkvision.
|
||||
feat: null
|
||||
name: Cavern Elf
|
||||
- descr: You have an inborn ability to detect and understand magical phenomena. You
|
||||
can cast the detect magic cantrip as an arcane innate spell at will. A cantrip
|
||||
is heightened to a spell level equal to half your level rounded up. In addition,
|
||||
you gain a +1 circumstance bonus to checks to Identify Magic and to Decipher Writing
|
||||
of a magical nature. These skill actions typically use the Arcana, Nature, Occultism,
|
||||
or Religion skill.
|
||||
feat: null
|
||||
name: Seer Elf
|
||||
- descr: Your ears are finely tuned, able to detect even the slightest whispers of
|
||||
sound. As long as you can hear normally, you can use the Seek action to sense
|
||||
undetected creatures in a 60-foot cone instead of a 30-foot cone. You also gain
|
||||
a +2 circumstance bonus to locate undetected creatures that you could hear within
|
||||
30 feet with a Seek action.
|
||||
feat: null
|
||||
name: Whisper Elf
|
||||
- descr: You’re adapted to life in the forest or the deep jungle, and you know how
|
||||
to climb trees and use foliage to your advantage. When Climbing trees, vines,
|
||||
and other foliage, you move at half your Speed on a success and at full Speed
|
||||
on a critical success (and you move at full Speed on a success if you have Quick
|
||||
Climb). This doesn’t affect you if you’re using a climb Speed.
|
||||
feat: null
|
||||
name: Woodland Elf
|
||||
- descr: The color of your hair and skin is mutable, possibly due to latent magic.
|
||||
You can slowly change the vibrancy and the exact color, and the coloration can
|
||||
be different across your body, allowing you to create patterns or other colorful
|
||||
designs. It takes a single action for minor localized shifts and up to an hour
|
||||
for dramatic shifts throughout your body. While you’re asleep, the colors shift
|
||||
on their own in tune with your dreams, giving you an unusual coloration each morning.
|
||||
When you’re in an area where your coloration is roughly similar to the environment
|
||||
(for instance, forest green in a forest), you can use the single action to make
|
||||
minor localized shifts designed to help you blend into your surroundings. This
|
||||
grants you a +2 circumstance bonus to Stealth checks until your surroundings shift
|
||||
in coloration or pattern.
|
||||
feat: null
|
||||
name: Chameleon Gnome
|
||||
- descr: The blood of the fey is so strong within you that you’re truly one of them.
|
||||
You gain the fey trait, in addition to the gnome and humanoid traits. Choose one
|
||||
cantrip from the <%SPELL.LIST%Primal%%>primal spell list. You can cast this spell
|
||||
as a primal innate spell at will. A cantrip is heightened to a spell level equal
|
||||
to half your level rounded up. You can change this cantrip to a different one
|
||||
from the same list once per day by meditating to realign yourself with the First
|
||||
World; this is a 10-minute activity that has the concentrate trait.
|
||||
feat: null
|
||||
name: Fey-Touched Gnome
|
||||
- descr: 'You see all colors as brighter, hear all sounds as richer, and especially
|
||||
smell all scents with incredible detail. You gain a special sense: imprecise scent
|
||||
with a range of 30 feet. This means you can use your sense of smell to determine
|
||||
the exact location of a creature (as explained on page 465). The GM will usually
|
||||
double the range if you’re downwind from the creature or halve the range if you’re
|
||||
upwind.'
|
||||
feat: null
|
||||
name: Sensate Gnome
|
||||
- descr: Whether from a connection to dark or shadowy fey, from the underground deep
|
||||
gnomes also known as svirfneblin, or another source, you can see in complete darkness.
|
||||
You gain darkvision.
|
||||
feat: null
|
||||
name: Umbral Gnome
|
||||
- descr: Some other source of magic has a greater hold on you than the primal magic
|
||||
of your fey lineage does. This connection might come from an occult plane or an
|
||||
ancient occult song; a deity, celestial, or fiend; magical effluent left behind
|
||||
by a mage war; or ancient rune magic.
|
||||
feat: null
|
||||
name: Wellspring Gnome
|
||||
- descr: Your ancestors have always had a connection to fire and a thicker skin, which
|
||||
allows you to resist burning. You gain fire resistance equal to half your level
|
||||
(minimum 1). You can also recover from being on fire more easily. Your flat check
|
||||
to remove persistent fire damage is DC 10 instead of DC 15, which is reduced to
|
||||
DC 5 if another creature uses a particularly appropriate action to help.
|
||||
feat: null
|
||||
name: Charhide Goblin
|
||||
- descr: You can subsist on food that most folks would consider spoiled. You can keep
|
||||
yourself fed with poor meals in a settlement as long as garbage is readily available,
|
||||
without using the Subsist downtime activity. You can eat and drink things when
|
||||
you are sickened.
|
||||
feat: null
|
||||
name: Irongut Goblin
|
||||
- descr: Your family’s teeth are formidable weapons. You gain a jaws unarmed attack
|
||||
that deals 1d6 piercing damage. Your jaws are in the brawling group and have the
|
||||
finesse and unarmed traits.
|
||||
feat: null
|
||||
name: Razortooth Goblin
|
||||
- descr: You are acclimated to living in frigid lands and have skin ranging from sky
|
||||
blue to navy in color, as well as blue fur. You gain cold resistance equal to
|
||||
half your level (minimum 1). You treat environmental cold effects as if they were
|
||||
one step less extreme (incredible cold becomes extreme, extreme cold becomes severe,
|
||||
and so on).
|
||||
feat: null
|
||||
name: Snow Goblin
|
||||
- descr: You’re able to bounce back from injuries easily due to an exceptionally thick
|
||||
skull, cartilaginous bones, or some other mixed blessing. You gain 10 Hit Points
|
||||
from your ancestry instead of 6. When you fall, reduce the falling damage you
|
||||
take as though you had fallen half the distance.
|
||||
feat: null
|
||||
name: Unbreakable Goblin
|
||||
- descr: Your family line is known for keeping a level head and staving off fear when
|
||||
the chips were down, making them wise leaders and sometimes even heroes. When
|
||||
you roll a success on a saving throw against an emotion effect, you get a critical
|
||||
success instead.
|
||||
feat: null
|
||||
name: Gutsy Halfling
|
||||
- descr: Accustomed to a calm life in the hills, your people find rest and relaxation
|
||||
especially replenishing, particularly when indulging in creature comforts. When
|
||||
you regain Hit Points overnight, add your level to the Hit Points regained. When
|
||||
anyone uses the Medicine skill to Treat your Wounds, you can eat a snack to add
|
||||
your level to the Hit Points you regain from their treatment.
|
||||
feat: null
|
||||
name: Hillock Halfling
|
||||
- descr: 'Your ancestors have traveled from place to place for generations, never
|
||||
content to settle down. You gain two additional languages of your choice, chosen
|
||||
from among the common and uncommon languages available to you, and every time
|
||||
you take the '
|
||||
feat: null
|
||||
name: Nomadic Halfling
|
||||
- descr: Your ancestors performed many secret acts under the concealing cover of dusk,
|
||||
whether for good or ill, and over time they developed the ability to see in twilight
|
||||
beyond even the usual keen sight of halflings. You gain low-light vision.
|
||||
feat: null
|
||||
name: Twilight Halfling
|
||||
- descr: You hail from deep in a jungle or forest, and you’ve learned how to use your
|
||||
small size to wriggle through undergrowth, vines, and other obstacles. You ignore
|
||||
difficult terrain from trees, foliage, and undergrowth.
|
||||
feat: null
|
||||
name: Wildwood Halfling
|
||||
- descr: Either one of your parents was an elf, or one or both were half-elves. You
|
||||
have pointed ears and other telltale signs of elf heritage. You gain the elf trait
|
||||
and low-light vision. In addition, you can select elf, half-elf, and human feats
|
||||
whenever you gain an ancestry feat.
|
||||
feat: null
|
||||
name: Half-Elf
|
||||
- descr: One of your parents was an orc, or one or both were half-orcs. You have a
|
||||
green tinge to your skin and other indicators of orc heritage. You gain the orc
|
||||
trait and low-light vision. In addition, you can select orc, half-orc, and human
|
||||
feats whenever you gain an ancestry feat.
|
||||
feat: null
|
||||
name: Half-Orc
|
||||
- descr: Your ingenuity allows you to train in a wide variety of skills. You become
|
||||
trained in one skill of your choice. At 5th level, you become an expert in the
|
||||
chosen skill.
|
||||
feat: null
|
||||
name: Skilled Heritage
|
||||
- descr: Humanity’s versatility and ambition have fueled its ascendance to be the
|
||||
most common ancestry in most nations throughout the world. Select a general feat
|
||||
of your choice for which you meet the prerequisites (as with your ancestry feat,
|
||||
you can select this general feat at any point during character creation).
|
||||
feat: null
|
||||
name: Versatile Heritage
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,53 @@
|
||||
import yaml
|
||||
import sqlite3
|
||||
|
||||
|
||||
def main():
|
||||
q = "SELECT short_name, description, sources_pages FROM senses"
|
||||
|
||||
conn = sqlite3.connect('../../pf2.db')
|
||||
|
||||
c = conn.cursor()
|
||||
|
||||
c.execute(q)
|
||||
data = c.fetchall()
|
||||
|
||||
datalist = []
|
||||
for i in data:
|
||||
# print(i)
|
||||
print(i[2])
|
||||
if i[2] != "TODO":
|
||||
print("We got an int")
|
||||
d = {
|
||||
'name': i[0],
|
||||
'descr': i[1],
|
||||
'source': {
|
||||
'abbr': 'CRB',
|
||||
'page_start': int(i[2]),
|
||||
'page_stop': int(i[2])
|
||||
}
|
||||
}
|
||||
datalist.append(d)
|
||||
else:
|
||||
d = {
|
||||
'name': i[0],
|
||||
'descr': i[1],
|
||||
'source': {
|
||||
'abbr': 'CRB',
|
||||
'page_start': 9999999,
|
||||
'page_stop': 9999999,
|
||||
'comment': "TODO fix the source page start and stop"
|
||||
}
|
||||
}
|
||||
datalist.append(d)
|
||||
|
||||
|
||||
tmpd = {'senses': datalist}
|
||||
final = yaml.safe_dump(tmpd, allow_unicode=True)
|
||||
|
||||
with open('tmp-senses.yaml', 'w') as f:
|
||||
f.write(final)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,37 @@
|
||||
import sqlite3
|
||||
import yaml
|
||||
|
||||
def main():
|
||||
q = """
|
||||
select traits.short_name, traits.description, traittypes.name FROM traits INNER JOIN traittypes ON traits.traittype=traittypes.traittype_id;
|
||||
"""
|
||||
|
||||
q = """
|
||||
select short_name, description FROM heritages;
|
||||
"""
|
||||
|
||||
conn = sqlite3.connect('../../../pf2.db')
|
||||
|
||||
c = conn.cursor()
|
||||
|
||||
c.execute(q)
|
||||
data = c.fetchall()
|
||||
|
||||
# transform tuples into list of dicts
|
||||
|
||||
datalist = []
|
||||
|
||||
for i in data:
|
||||
print(i)
|
||||
d = { 'name': i[0], 'descr': i[1], 'feat': None}
|
||||
datalist.append(d)
|
||||
|
||||
|
||||
# now dump to yaml
|
||||
final = yaml.safe_dump(datalist, allow_unicode=True)
|
||||
with open('tmp-heritages.yaml', 'w') as f:
|
||||
f.write(final)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,34 @@
|
||||
import sqlite3
|
||||
import yaml
|
||||
|
||||
def main():
|
||||
q = """
|
||||
select traits.short_name, traits.description, traittypes.name FROM traits INNER JOIN traittypes ON traits.traittype=traittypes.traittype_id;
|
||||
"""
|
||||
|
||||
conn = sqlite3.connect('../../pf2.db')
|
||||
|
||||
c = conn.cursor()
|
||||
|
||||
c.execute(q)
|
||||
data = c.fetchall()
|
||||
|
||||
# transform tuples into list of dicts
|
||||
|
||||
datalist = []
|
||||
|
||||
for i in data:
|
||||
print(i)
|
||||
d = { 'type': i[2], 'name': i[0], 'descr': i[1]}
|
||||
datalist.append(d)
|
||||
|
||||
tmpd = { 'trait': datalist }
|
||||
|
||||
# now dump to yaml
|
||||
final = yaml.safe_dump(tmpd, allow_unicode=True)
|
||||
with open('tmp-traits.yaml', 'w') as f:
|
||||
f.write(final)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,27 @@
|
||||
import sqlite3
|
||||
import yaml
|
||||
|
||||
def main():
|
||||
q = """
|
||||
SELECT is_comty_use, is_specific_to_adv, name, descr, sources_id, sources_pages
|
||||
FROM backgrounds;
|
||||
"""
|
||||
|
||||
conn = sqlite3.connect('../../pf2.db')
|
||||
|
||||
# so we get a dict out of our query
|
||||
conn.row_factory = sqlite3.Row
|
||||
c = conn.cursor()
|
||||
|
||||
c.execute(q)
|
||||
# data = c.fetchall()
|
||||
data = [dict(row) for row in c.fetchall()]
|
||||
print(data)
|
||||
|
||||
final = yaml.safe_dump(data, allow_unicode=True)
|
||||
with open('tmp-backgrounds.yaml', 'w') as f:
|
||||
f.write(final)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,25 @@
|
||||
import yaml
|
||||
|
||||
def main():
|
||||
|
||||
with open('monsters.yaml') as m:
|
||||
data = yaml.full_load(m)
|
||||
|
||||
monsterlist = []
|
||||
for i in data:
|
||||
if 'ac_special' in i:
|
||||
monsterlist.append(i)
|
||||
else:
|
||||
i['ac_special'] = None
|
||||
monsterlist.append(i)
|
||||
|
||||
finaldata = {'monsters': monsterlist}
|
||||
|
||||
final = yaml.safe_dump(finaldata, allow_unicode=True)
|
||||
|
||||
with open('tmp-monsters.yaml', 'w') as f:
|
||||
f.write(final)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,57 @@
|
||||
import sqlite3
|
||||
import yaml
|
||||
|
||||
def main():
|
||||
q = """
|
||||
SELECT * FROM actions;
|
||||
"""
|
||||
|
||||
conn = sqlite3.connect('../../pf2.db')
|
||||
|
||||
# so we get a dict out of our query
|
||||
conn.row_factory = sqlite3.Row
|
||||
c = conn.cursor()
|
||||
|
||||
c.execute(q)
|
||||
# data = c.fetchall()
|
||||
data = [dict(row) for row in c.fetchall()]
|
||||
# print(data)
|
||||
|
||||
for i in data:
|
||||
del i['actions_id']
|
||||
page = int(i['sources_pages'])
|
||||
del i['sources_pages']
|
||||
i['source'] = [{'abbr': 'CRB', 'page_start': page, 'page_stop': page }]
|
||||
x = i['actioncategories_id']
|
||||
if x == 1:
|
||||
i['actioncategory'] = "Basic"
|
||||
elif x ==2:
|
||||
i['actioncategory'] = "Specialty Basic"
|
||||
del i['actioncategories_id']
|
||||
y = i['actioncosts_id']
|
||||
if y == 0:
|
||||
i['actioncost_name'] = "Varies"
|
||||
elif y == 1:
|
||||
i['actioncost_name'] = "Single Action"
|
||||
elif y == 2:
|
||||
i['actioncost_name'] = "Two Actions"
|
||||
elif y == 3:
|
||||
i['actioncost_name'] = "Three Actions"
|
||||
elif y == 5:
|
||||
i['actioncost_name'] = "Free Action"
|
||||
elif y == 5:
|
||||
i['actioncost_name'] = "Reaction"
|
||||
del i['actioncosts_id']
|
||||
|
||||
|
||||
|
||||
|
||||
data = {"action": data}
|
||||
|
||||
final = yaml.safe_dump(data, allow_unicode=True)
|
||||
with open('tmp-actions.yaml', 'w') as f:
|
||||
f.write(final)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,50 @@
|
||||
import sqlite3
|
||||
import yaml
|
||||
|
||||
|
||||
def main():
|
||||
conn = sqlite3.connect('../../pf2.db')
|
||||
|
||||
conn.row_factory = sqlite3.Row
|
||||
c = conn.cursor()
|
||||
c.execute("select * from ammunition;")
|
||||
res = [dict(row) for row in c.fetchall()]
|
||||
|
||||
# for i in res:
|
||||
# print(i)
|
||||
|
||||
reslist = []
|
||||
for i in res:
|
||||
tmp = {
|
||||
"name":
|
||||
i['name'],
|
||||
"price_gp":
|
||||
i['price_gp'],
|
||||
"amount":
|
||||
i['amount'],
|
||||
"bulk":
|
||||
i['bulk'],
|
||||
"descr":
|
||||
i['descr'],
|
||||
"source": [
|
||||
{
|
||||
'abbr': 'CRB',
|
||||
'page_start': int(i['sources_pages']),
|
||||
'page_stop': int(i['sources_pages'])
|
||||
},
|
||||
]
|
||||
}
|
||||
reslist.append(tmp)
|
||||
|
||||
# print(reslist)
|
||||
|
||||
tmpd = {'ammunition': reslist}
|
||||
|
||||
# now dump to yaml
|
||||
final = yaml.safe_dump(tmpd, allow_unicode=True)
|
||||
with open('tmp-ammo.yaml', 'w') as f:
|
||||
f.write(final)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -0,0 +1,138 @@
|
||||
import sqlite3
|
||||
import yaml
|
||||
|
||||
def main():
|
||||
conn = sqlite3.connect('../../pf2.db')
|
||||
|
||||
conn.row_factory = sqlite3.Row
|
||||
c = conn.cursor()
|
||||
stmt = """
|
||||
SELECT ancestries.short_name as name,
|
||||
flavor_text,
|
||||
hp,
|
||||
sizes.short_name AS size,
|
||||
speed,
|
||||
senses.short_name AS senses,
|
||||
ancestries.sources_pages
|
||||
FROM ancestries
|
||||
INNER JOIN
|
||||
sizes ON sizes.size_id = ancestries.size_id
|
||||
INNER JOIN
|
||||
senses ON senses.senses_id = ancestries.vision_id;
|
||||
"""
|
||||
c.execute(stmt)
|
||||
res = [dict(row) for row in c.fetchall()]
|
||||
print(res)
|
||||
|
||||
# for i in res:
|
||||
# if i['hands'] == None or i['hands'] == '':
|
||||
# i['hands'] = 0
|
||||
|
||||
reslist = []
|
||||
for i in res:
|
||||
tmp = {
|
||||
"name": i['name'],
|
||||
"flavor_text": i['flavor_text'],
|
||||
"hp": i['hp'],
|
||||
"size": i['size'],
|
||||
'speed': i['speed'],
|
||||
'senses': i['senses'],
|
||||
"source": [
|
||||
{
|
||||
'abbr': 'CRB',
|
||||
'page_start': int(i['sources_pages']),
|
||||
'page_stop': int(i['sources_pages'])
|
||||
},
|
||||
],
|
||||
'boosts': None,
|
||||
'flaws': None,
|
||||
'traits': None
|
||||
}
|
||||
# add in boosts
|
||||
stmt = """
|
||||
SELECT abilityscores.short_name
|
||||
FROM abilityscores
|
||||
INNER JOIN
|
||||
ancestries_boosts ON abilityscores.abilityscores_id = ancestries_boosts.abilityscores_id
|
||||
INNER JOIN
|
||||
ancestries ON ancestries.ancestry_id = ancestries_boosts.ancestry_id
|
||||
WHERE ancestries.ancestry_id = (
|
||||
SELECT ancestries.ancestry_id
|
||||
WHERE ancestries.short_name = ?
|
||||
);
|
||||
"""
|
||||
c.execute(stmt, (i['name'],))
|
||||
resboosts = [dict(row) for row in c.fetchall()]
|
||||
print(resboosts)
|
||||
if len(resboosts) == 0:
|
||||
tmp['boosts'] = None
|
||||
else:
|
||||
boostslist = []
|
||||
for j in resboosts:
|
||||
boostslist.append(j['short_name'])
|
||||
tmp['boosts'] = boostslist
|
||||
|
||||
|
||||
# add in flaws
|
||||
stmt = """
|
||||
SELECT abilityscores.short_name
|
||||
FROM abilityscores
|
||||
INNER JOIN
|
||||
ancestries_flaws ON abilityscores.abilityscores_id = ancestries_flaws.abilityscores_id
|
||||
INNER JOIN
|
||||
ancestries ON ancestries.ancestry_id = ancestries_flaws.ancestry_id
|
||||
WHERE ancestries.ancestry_id = (
|
||||
SELECT ancestries.ancestry_id
|
||||
WHERE ancestries.short_name = ?
|
||||
);
|
||||
"""
|
||||
c.execute(stmt, (i['name'],))
|
||||
resflaws = [dict(row) for row in c.fetchall()]
|
||||
print(resflaws)
|
||||
if len(resflaws) == 0:
|
||||
tmp['flaws'] = None
|
||||
else:
|
||||
flawslist = []
|
||||
for j in resflaws:
|
||||
flawslist.append(j['short_name'])
|
||||
tmp['flaws'] = flawslist
|
||||
# add in traits
|
||||
stmt = """
|
||||
SELECT traits.short_name
|
||||
FROM traits
|
||||
INNER JOIN
|
||||
ancestries_traits ON traits.trait_id = ancestries_traits.trait_id
|
||||
INNER JOIN
|
||||
ancestries ON ancestries.ancestry_id = ancestries_traits.ancestry_id
|
||||
WHERE ancestries.ancestry_id = (
|
||||
SELECT ancestries.ancestry_id
|
||||
WHERE ancestries.short_name = ?
|
||||
);
|
||||
"""
|
||||
c.execute(stmt, (i['name'],))
|
||||
restraits = [dict(row) for row in c.fetchall()]
|
||||
print(restraits)
|
||||
if len(restraits) == 0:
|
||||
tmp['traits'] = None
|
||||
else:
|
||||
traitslist = []
|
||||
for j in restraits:
|
||||
traitslist.append(j['short_name'])
|
||||
tmp['traits'] = traitslist
|
||||
|
||||
|
||||
|
||||
reslist.append(tmp)
|
||||
|
||||
# # print(reslist)
|
||||
|
||||
tmpd = {'ancestries': reslist}
|
||||
|
||||
# now dump to yaml
|
||||
final = yaml.safe_dump(tmpd, allow_unicode=True)
|
||||
with open('tmp-ancestries.yaml', 'w') as f:
|
||||
f.write(final)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,126 @@
|
||||
import yaml
|
||||
import sqlite3
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
acats = ["Unarmored", "Light Armor", "Medium Armor", "Heavy Armor"]
|
||||
|
||||
# DO ARMORGROUP
|
||||
q = "SELECT short_name, descr FROM armorgroup"
|
||||
|
||||
conn = sqlite3.connect('../../pf2.db')
|
||||
|
||||
c = conn.cursor()
|
||||
|
||||
c.execute(q)
|
||||
data = c.fetchall()
|
||||
|
||||
datalist = []
|
||||
for i in data:
|
||||
d = {
|
||||
'name': i[0],
|
||||
'descr': i[1],
|
||||
'source': [{
|
||||
'abbr': 'CRB',
|
||||
'page_start': 275,
|
||||
'page_stop': 275
|
||||
}]
|
||||
}
|
||||
datalist.append(d)
|
||||
|
||||
# DO MAIN ARMOR TABLE
|
||||
|
||||
qq = """
|
||||
SELECT
|
||||
armor.short_name,
|
||||
item_level,
|
||||
price_text,
|
||||
price_gp,
|
||||
ac_bonus,
|
||||
dex_cap,
|
||||
check_penalty,
|
||||
speed_penalty,
|
||||
strength,
|
||||
bulks.short_name AS bulkname,
|
||||
armorgroup.short_name AS grpname,
|
||||
armorcategory.short_name AS catname
|
||||
FROM armor
|
||||
LEFT JOIN
|
||||
bulks ON bulks.bulk_id = armor.bulk_id
|
||||
LEFT JOIN
|
||||
armorgroup ON armorgroup.grp_id = armor.grp_id
|
||||
LEFT JOIN
|
||||
armorcategory ON armorcategory.armor_category_id = armor.armor_category_id;
|
||||
"""
|
||||
|
||||
c.execute(qq)
|
||||
data2 = c.fetchall()
|
||||
|
||||
armorlist = []
|
||||
for i in data2:
|
||||
print('\n')
|
||||
print(i)
|
||||
|
||||
t = {
|
||||
'name': i[0],
|
||||
'level': i[1],
|
||||
'price_text': i[2],
|
||||
'price_gp': i[3],
|
||||
'ac_bonus': i[4],
|
||||
'dex_cap': i[5],
|
||||
'check_penalty': i[6],
|
||||
'speed_penalty': i[7],
|
||||
'strength': i[8],
|
||||
'bulk': i[9],
|
||||
'group': i[10],
|
||||
'category': i[11],
|
||||
'source': [
|
||||
{
|
||||
'abbr': 'CRB',
|
||||
'page_start': 275,
|
||||
'page_stop': 275
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
armorlist.append(t)
|
||||
|
||||
# datalist = []
|
||||
# for i in data:
|
||||
# # print(i)
|
||||
# print(i[2])
|
||||
# if i[2] != "TODO":
|
||||
# print("We got an int")
|
||||
# d = {
|
||||
# 'name': i[0],
|
||||
# 'descr': i[1],
|
||||
# 'source': {
|
||||
# 'abbr': 'CRB',
|
||||
# 'page_start': int(i[2]),
|
||||
# 'page_stop': int(i[2])
|
||||
# }
|
||||
# }
|
||||
# datalist.append(d)
|
||||
# else:
|
||||
# d = {
|
||||
# 'name': i[0],
|
||||
# 'descr': i[1],
|
||||
# 'source': {
|
||||
# 'abbr': 'CRB',
|
||||
# 'page_start': 9999999,
|
||||
# 'page_stop': 9999999,
|
||||
# 'comment': "TODO fix the source page start and stop"
|
||||
# }
|
||||
# }
|
||||
# datalist.append(d)
|
||||
print(armorlist)
|
||||
tmpd = {'armorcategory': acats, 'armorgroup': datalist, 'armor': armorlist}
|
||||
final = yaml.safe_dump(tmpd, allow_unicode=True)
|
||||
|
||||
with open('tmp-armor.yaml', 'w') as f:
|
||||
f.write(final)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
File diff suppressed because it is too large.
Load diff
Loaded 100 of 138 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user