Merge branch 'weapons'
commit
bf07fc7e15
|
@ -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,29 @@
|
||||||
|
-- -*- mode:sql sql-product:sqlite -*-
|
||||||
|
|
||||||
|
PRAGMA foreign_keys = ON; -- database requires foreign key checking to be turned
|
||||||
|
-- on PER CONNECTION
|
||||||
|
|
||||||
|
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;
|
8
gendb.sh
8
gendb.sh
|
@ -16,6 +16,8 @@ sqlite3 pf2.db < schema/senses.sql
|
||||||
sqlite3 pf2.db < schema/ancestries.sql
|
sqlite3 pf2.db < schema/ancestries.sql
|
||||||
sqlite3 pf2.db < schema/armor.sql
|
sqlite3 pf2.db < schema/armor.sql
|
||||||
sqlite3 pf2.db < schema/gear.sql
|
sqlite3 pf2.db < schema/gear.sql
|
||||||
|
sqlite3 pf2.db < schema/weapons.sql
|
||||||
|
sqlite3 pf2.db < schema/ammunition.sql
|
||||||
echo 'loading data'
|
echo 'loading data'
|
||||||
sqlite3 pf2.db < data/sources.sql
|
sqlite3 pf2.db < data/sources.sql
|
||||||
sqlite3 pf2.db < data/damagetypes.sql
|
sqlite3 pf2.db < data/damagetypes.sql
|
||||||
|
@ -34,10 +36,16 @@ sqlite3 pf2.db < data/ancestries.sql
|
||||||
sqlite3 pf2.db < data/armor.sql
|
sqlite3 pf2.db < data/armor.sql
|
||||||
sqlite3 pf2.db < data/gear.sql
|
sqlite3 pf2.db < data/gear.sql
|
||||||
sqlite3 pf2.db < data/heritages.sql
|
sqlite3 pf2.db < data/heritages.sql
|
||||||
|
sqlite3 pf2.db < data/weapons.sql
|
||||||
|
sqlite3 pf2.db < data/ammunition.sql
|
||||||
# Comment out the following three lines if you don't want to generate the spell data.
|
# Comment out the following three lines if you don't want to generate the spell data.
|
||||||
cd data/third_party_json
|
cd data/third_party_json
|
||||||
python3 spells.py
|
python3 spells.py
|
||||||
cd ../..
|
cd ../..
|
||||||
|
# Comment out the following when we don't want to generate weapons
|
||||||
|
cd src/weapons
|
||||||
|
python3 weapons.py
|
||||||
|
cd ../..
|
||||||
|
|
||||||
# TODO Eventually we will stop relying on the spells.py script and I will have
|
# 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
|
# the actual .sql files for the spell data; I am waiting to see if the
|
||||||
|
|
|
@ -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,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 REAL,
|
||||||
|
dice_size INTEGER,
|
||||||
|
damagetypes_id INTEGER,
|
||||||
|
"bulk" REAL,
|
||||||
|
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)
|
||||||
|
);
|
|
@ -1,68 +1,68 @@
|
||||||
weapon_m_id,name,category,price_gp,dice_size,damage_type,bulk,hands,group,traits,sources_id,sources_pg,description
|
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
|
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."
|
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.,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.
|
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",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."
|
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."
|
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",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."
|
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."
|
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."
|
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."
|
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,1,280,This weapon has a short shaft ending in a metal ball studded with spikes.
|
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."
|
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.,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."
|
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."
|
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,1,280,This long piece of wood can aid in walking and deliver a mighty blow.
|
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,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."
|
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."
|
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.
|
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."
|
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."
|
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."
|
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",1,281,"This halfling weapon looks like a long, two-pronged fork and is used as both a weapon and a cooking implement."
|
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."
|
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",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."
|
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",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.
|
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."
|
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."
|
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,1,280,This pick has a longer handle and broader head than a regular pick. It is too heavy to wield in 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,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.
|
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."
|
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",1,280,"This polearm has a relatively short, 5-foot shaft. The business end is a long spike with an axe blade attached."
|
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.",1,280,This small axe can be used in close combat or thrown.
|
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",1,281,"Created by goblins to battle horses, this weapon is essentially a long shaft ending in a blade with a large hook."
|
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."
|
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",1,281,"A katana is a curved, single-edged sword known for its wickedly sharped blade."
|
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.
|
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",1,280,This spear-like weapon is used by a mounted creature to deal a great deal of damage.
|
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.",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."
|
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",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.
|
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,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.
|
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",1,281,This parrying dagger features a robust guard to protect the wielder’s hand.
|
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.
|
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.
|
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."
|
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,1,281,"A pick designed solely for combat has a sturdy wooden shaft and a heavy, pointed head to deliver devastating blows."
|
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.
|
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",1,281,The rapier is a long and thin piercing blade with a basket hilt. It is prized among many as a dueling weapon.
|
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",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.
|
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."
|
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.
|
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",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."
|
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."
|
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."
|
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.
|
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",1,281,"These blades come in a variety of shapes and styles, but they are typically 2 feet long."
|
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.
|
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",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."
|
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."
|
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.,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."
|
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,
|
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."
|
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."
|
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",2,85,
|
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",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."
|
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."
|
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.
|
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."
|
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",2,253,"Ogres are known for using immense, curved picks called ogre hooks."
|
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."
|
||||||
|
|
|
|
@ -1,15 +1,15 @@
|
||||||
weapon_r_id,name,category,price_gp,dice_size,damage_type,range,Reload,Bulk,Hands,group,traits,source_id,source_pg,Description
|
weapon_id,name,category,price_gp,dice_size,damage_type,range,reload,bulk,hands,group,traits,sources_id,sources_pg,description
|
||||||
0,Blowgun,Simple,1 sp,1,P,20,1,0.1,1,Dart,"Agile, Nonlethal",1,,"This long, narrow tube is used for shooting blowgun darts, using only the power of a forcefully exhaled breath."
|
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."
|
||||||
1,Crossbow,Simple,3 gp,8,P,120,1,1,2,Bow,,1,,"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."
|
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."
|
||||||
2,Dart,Simple,1 cp,4,P,20,,0.1,1,Dart,"Agile, Thrown",1,,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.
|
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.
|
||||||
3,Hand Crossbow,Simple,3 gp,6,P,60,1,0.1,1,Bow,,1,,"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."
|
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."
|
||||||
4,Heavy Crossbow,Simple,4 gp,10,P,120,2,2,2,Bow,,1,,"This large crossbow is harder to load and more substantial than a regular crossbow, but it packs a greater punch."
|
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."
|
||||||
5,Javelin,Simple,1 sp,6,P,30,,0.1,1,Dart,Thrown,1,,This thin spear is well balanced for throwing but is not designed for melee use.
|
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.
|
||||||
6,Sling,Simple,0,6,B,50,1,0.1,1,Sling,Propulsive,1,,"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."
|
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."
|
||||||
7,Alchemical Bomb,Martial,,,,20,,0.1,1,Bomb,,1,,"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."
|
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."
|
||||||
8,Composite Longbow,Martial,20 gp,8,P,100,0,2,1+,Bow,"Deadly d10, Propulsive, Volley 30 ft.",1,,"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."
|
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."
|
||||||
9,Composite Shortbow,Martial,14 gp,6,P,60,0,1,1+,Bow,"Deadly d10, Propulsive",1,,"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."
|
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."
|
||||||
10,Halfling Sling Staff,Martial,5 gp,10,B,80,1,1,2,Sling,"Halfling, Propulsive, Uncommon",1,,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.
|
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.
|
||||||
11,Longbow,Martial,6 gp,8,P,100,0,2,1+,Bow,"Deadly d10, Volley 30 ft.",1,,"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."
|
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."
|
||||||
12,Shortbow,Martial,3 gp,6,P,60,0,1,1+,Bow,Deadly d10,1,,This smaller bow is made of a single piece of wood and favored by skirmishers and cavalry.
|
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.
|
||||||
13,Shuriken,Martial,1 cp,4,P,20,0,,1,Dart,"Agile, Monk, Thrown, Uncommon",1,,"This throwing star<EFBFBD> is a small piece of flat metal with sharp edges, designed to be flung with a flick of the wrist."
|
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,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()
|
Loading…
Reference in New Issue