aboutsummaryrefslogtreecommitdiff
path: root/parser/monsters
diff options
context:
space:
mode:
authorYour Name <you@example.com>2021-04-15 15:23:23 -0400
committerYour Name <you@example.com>2021-04-15 15:23:23 -0400
commitdfce4d0398a8bafbb7ad7a31345af181c0269c09 (patch)
tree695162ff8cc25e146f52d9e26fe19ffa9934b3d6 /parser/monsters
parent9034c3d2533177f7cb7a7ce939ec53f7fa63f60e (diff)
downloaddmtool-dfce4d0398a8bafbb7ad7a31345af181c0269c09.tar.gz
dmtool-dfce4d0398a8bafbb7ad7a31345af181c0269c09.tar.bz2
dmtool-dfce4d0398a8bafbb7ad7a31345af181c0269c09.zip
Added spells
Diffstat (limited to 'parser/monsters')
-rw-r--r--parser/monsters/acolyte.json39
-rw-r--r--parser/monsters/androsphinx.json56
-rw-r--r--parser/monsters/archmage.json100
-rw-r--r--parser/monsters/assassin.json45
-rw-r--r--parser/monsters/azer.json25
-rw-r--r--parser/monsters/balor.json35
-rw-r--r--parser/monsters/bandit.json45
-rw-r--r--parser/monsters/bandit_captain.json45
-rw-r--r--parser/monsters/bearded_devil.json19
-rw-r--r--parser/monsters/berserker.json26
-rw-r--r--parser/monsters/bugbear.json48
-rw-r--r--parser/monsters/centaur.json38
-rw-r--r--parser/monsters/cloud_giant.json47
-rw-r--r--parser/monsters/commoner.json17
-rw-r--r--parser/monsters/couatl.json36
-rw-r--r--parser/monsters/cult_fanatic.json56
-rw-r--r--parser/monsters/cultist.json26
-rw-r--r--parser/monsters/deva.json36
-rw-r--r--parser/monsters/djinni.json53
-rw-r--r--parser/monsters/drider.json57
-rw-r--r--parser/monsters/druid.json49
-rw-r--r--parser/monsters/dryad.json46
-rw-r--r--parser/monsters/duergar.json48
-rw-r--r--parser/monsters/dust_mephit.json14
-rw-r--r--parser/monsters/efreeti.json50
-rw-r--r--parser/monsters/elf_drow.json66
-rw-r--r--parser/monsters/erinyes.json44
-rw-r--r--parser/monsters/ettin.json32
-rw-r--r--parser/monsters/fire_giant.json26
-rw-r--r--parser/monsters/flying_sword.json17
-rw-r--r--parser/monsters/frost_giant.json18
-rw-r--r--parser/monsters/glabrezu.json24
-rw-r--r--parser/monsters/gladiator.json34
-rw-r--r--parser/monsters/gnoll.json53
-rw-r--r--parser/monsters/gnome_deep_svirfneblin.json45
-rw-r--r--parser/monsters/goblin.json52
-rw-r--r--parser/monsters/green_hag.json16
-rw-r--r--parser/monsters/guard.json34
-rw-r--r--parser/monsters/guardian_naga.json56
-rw-r--r--parser/monsters/gynosphinx.json51
-rw-r--r--parser/monsters/half_red_dragon_veteran.json63
-rw-r--r--parser/monsters/harpy.json17
-rw-r--r--parser/monsters/hill_giant.json17
-rw-r--r--parser/monsters/hobgoblin.json52
-rw-r--r--parser/monsters/ice_mephit.json14
-rw-r--r--parser/monsters/knight.json46
-rw-r--r--parser/monsters/kobold.json36
-rw-r--r--parser/monsters/lamia.json49
-rw-r--r--parser/monsters/lich.json82
-rw-r--r--parser/monsters/lizardfolk.json25
-rw-r--r--parser/monsters/mage.json71
-rw-r--r--parser/monsters/magma_mephit.json14
-rw-r--r--parser/monsters/marilith.json17
-rw-r--r--parser/monsters/medusa.json37
-rw-r--r--parser/monsters/merfolk.json18
-rw-r--r--parser/monsters/minotaur.json18
-rw-r--r--parser/monsters/minotaur_skeleton.json18
-rw-r--r--parser/monsters/mummy_lord.json56
-rw-r--r--parser/monsters/night_hag.json23
-rw-r--r--parser/monsters/noble.json25
-rw-r--r--parser/monsters/ogre.json42
-rw-r--r--parser/monsters/ogre_zombie.json15
-rw-r--r--parser/monsters/oni.json51
-rw-r--r--parser/monsters/orc.json43
-rw-r--r--parser/monsters/pit_fiend.json39
-rw-r--r--parser/monsters/planetar.json50
-rw-r--r--parser/monsters/priest.json59
-rw-r--r--parser/monsters/rakshasa.json36
-rw-r--r--parser/monsters/sahuagin.json18
-rw-r--r--parser/monsters/salamander.json18
-rw-r--r--parser/monsters/satyr.json44
-rw-r--r--parser/monsters/scout.json45
-rw-r--r--parser/monsters/skeleton.json36
-rw-r--r--parser/monsters/solar.json48
-rw-r--r--parser/monsters/spirit_naga.json49
-rw-r--r--parser/monsters/sprite.json43
-rw-r--r--parser/monsters/spy.json37
-rw-r--r--parser/monsters/steam_mephit.json14
-rw-r--r--parser/monsters/storm_giant.json50
-rw-r--r--parser/monsters/thug.json43
-rw-r--r--parser/monsters/tribal_warrior.json26
-rw-r--r--parser/monsters/unicorn.json24
-rw-r--r--parser/monsters/veteran.json63
-rw-r--r--parser/monsters/wight.json44
84 files changed, 1312 insertions, 1947 deletions
diff --git a/parser/monsters/acolyte.json b/parser/monsters/acolyte.json
index 421308d..5a6dd56 100644
--- a/parser/monsters/acolyte.json
+++ b/parser/monsters/acolyte.json
@@ -29,22 +29,7 @@
"inventory": [
{
"name": "club",
- "cost": 10,
- "damage": {
- "dmg_type": "bludgeoning",
- "dmg_die_count": 1,
- "dmg_die_sides": 4
- },
- "weight": 2.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "light"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +2 to hit, reach 5 ft., one target. _Hit:_ 2 (1d4) bludgeoning damage."
}
],
@@ -54,7 +39,27 @@
{
"name": "spellcasting",
"text": "The acolyte is a 1st-level spellcaster. Its spellcasting ability is Wisdom (spell save DC 12, +4 to hit with spell attacks). The acolyte has following cleric spells prepared: \nCantrips (at will): **_light, sacred flame, thaumaturgy_** \n1st level (3 slots): **_bless, cure wounds, sanctuary_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "wis",
+ "innate": false,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "light",
+ "sacred flame",
+ "thaumaturgy"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "bless",
+ "cure wounds",
+ "sanctuary"
+ ]
+ }
+ ]
}
],
"prof": 2
diff --git a/parser/monsters/androsphinx.json b/parser/monsters/androsphinx.json
index b05fd25..bf438d9 100644
--- a/parser/monsters/androsphinx.json
+++ b/parser/monsters/androsphinx.json
@@ -88,7 +88,61 @@
{
"name": "spellcasting",
"text": "The sphinx is a 12th-level spellcaster. Its spellcasting ability is Wisdom (spell save DC 18, +10 to hit with spell attacks). It requires no material components to cast its spells. The sphinx has the following cleric spells prepared: \nCantrips (at will): **_sacred flame, spare the dying, thaumaturgy_** \n1st level (4 slots): **_command, detect evil and good, detect magic_** \n2nd level (3 slots): **_lesser restoration, zone of truth_** \n3rd level (3 slots): **_dispel magic, tongues_** \n4th level (3 slots): **_banishment, freedom of movement_** \n5th level (2 slots): **_flame strike, greater restoration_** \n6th level (1 slot): **_heroes' feast_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "wis",
+ "innate": false,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "sacred flame",
+ "spare the dying",
+ "thaumaturgy"
+ ]
+ },
+ {
+ "slots": 4,
+ "spells": [
+ "command",
+ "detect evil and good",
+ "detect magic"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "lesser restoration",
+ "zone of truth"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "dispel magic",
+ "tongues"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "banishment",
+ "freedom of movement"
+ ]
+ },
+ {
+ "slots": 2,
+ "spells": [
+ "flame strike",
+ "greater restoration"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "heroes' feast"
+ ]
+ }
+ ]
},
{
"name": "multiattack",
diff --git a/parser/monsters/archmage.json b/parser/monsters/archmage.json
index be68e4d..3870e88 100644
--- a/parser/monsters/archmage.json
+++ b/parser/monsters/archmage.json
@@ -45,24 +45,7 @@
"inventory": [
{
"name": "dagger",
- "cost": 200,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 4
- },
- "weight": 1.0,
- "range": [
- 20,
- 60
- ],
- "reach": 5,
- "properties": [
- "finesse",
- "light",
- "thrown"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee or _Ranged Weapon Attack:__ +6 to hit, reach 5 ft. or range 20/60 ft., one target. _Hit:_ 4 (1d4 + 2) piercing damage."
}
],
@@ -77,7 +60,86 @@
{
"name": "spellcasting",
"text": "The archmage is an 18th-level spellcaster. Its spellcasting ability is Intelligence (spell save DC 17, +9 to hit with spell attacks). The archmage can cast **_disguise self_** and **_invisibility_** at will and has the following wizard spells prepared: \nCantrips (at will): **_fire bolt, light, mage hand, prestidigitation, shocking grasp_** \n1st level (4 slots): **_detect magic, identify, mage armor, magic missile_** \n2nd level (3 slots): **_detect thoughts, mirror image, misty step_** \n3rd level (3 slots): **_counterspell, fly, lightning bolt_** \n4th level (3 slots): **_banishment, fire shield, stoneskin_** \n5th level (3 slots): **_cone of cold, scrying, wall of force_** \n6th level (1 slot): **_globe of invulnerability_** \n7th level (1 slot): **_teleport_** \n8th level (1 slot): **_mind blank_** \n9th level (1 slot): **_time stop_** \n*The archmage casts **_mind blank, stoneskin and magic armor_** spells on itself before combat.",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "int",
+ "innate": false,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "fire bolt",
+ "light",
+ "mage hand",
+ "prestidigitation",
+ "shocking grasp"
+ ]
+ },
+ {
+ "slots": 4,
+ "spells": [
+ "detect magic",
+ "identify",
+ "mage armor",
+ "magic missile"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "detect thoughts",
+ "mirror image",
+ "misty step"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "counterspell",
+ "fly",
+ "lightning bolt"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "banishment",
+ "fire shield",
+ "stoneskin"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "cone of cold",
+ "scrying",
+ "wall of force"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "globe of invulnerability"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "teleport"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "mind blank"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "time stop"
+ ]
+ }
+ ]
}
],
"prof": 4
diff --git a/parser/monsters/assassin.json b/parser/monsters/assassin.json
index 45f4687..98bc9b4 100644
--- a/parser/monsters/assassin.json
+++ b/parser/monsters/assassin.json
@@ -39,54 +39,17 @@
"inventory": [
{
"name": "studded leather",
- "cost": 4500,
- "ac": 12,
- "strength": 0,
- "disadvantage": false,
- "weight": 13.0,
- "type": "light"
+ "type": "armor",
+ "text": "studded leather armor"
},
{
"name": "shortsword",
- "cost": 1000,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 2.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "finesse",
- "light"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +6 to hit, reach 5 ft., one target. _Hit:_ 6 (1d6 + 3) piercing damage, and the target must make a DC 15 Constitution saving throw, taking 24 (7d6) poison damage on a failed save, or half as much damage on a successful one."
},
{
"name": "light crossbow",
- "cost": 2500,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 8
- },
- "weight": 5.0,
- "range": [
- 80,
- 320
- ],
- "reach": 0,
- "properties": [
- "ammunition",
- "loading",
- "two-handed"
- ],
- "type": "simple ranged weapons",
+ "type": "weapon",
"text": "_Ranged Weapon Attack:_ +6 to hit, range 80/320 ft., one target. _Hit:_ 7 (1d8 + 3) piercing damage, and the target must make a DC 15 Constitution saving throw, taking 24 (7d6) poison damage on a failed save, or half as much damage on a successful one."
}
],
diff --git a/parser/monsters/azer.json b/parser/monsters/azer.json
index 8bceff9..7a34b77 100644
--- a/parser/monsters/azer.json
+++ b/parser/monsters/azer.json
@@ -42,31 +42,12 @@
"inventory": [
{
"name": "shield",
- "cost": 1000,
- "ac": 2,
- "strength": 0,
- "disadvantage": false,
- "weight": 6.0,
- "type": "shield"
+ "type": "armor",
+ "text": "shield armor"
},
{
"name": "warhammer",
- "cost": 1500,
- "damage": {
- "dmg_type": "bludgeoning",
- "dmg_die_count": 1,
- "dmg_die_sides": 8
- },
- "weight": 2.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "versatile"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +5 to hit, reach 5 ft., one target. _Hit:_ 7 (1d8 + 3) bludgeoning damage, or 8 (1d10 + 3) bludgeoning damage if used with two hands to make a melee attack, plus 3 (1d6) fire damage."
}
],
diff --git a/parser/monsters/balor.json b/parser/monsters/balor.json
index 3c5aea2..5c5bf1d 100644
--- a/parser/monsters/balor.json
+++ b/parser/monsters/balor.json
@@ -74,43 +74,12 @@
"inventory": [
{
"name": "longsword",
- "cost": 1500,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 3,
- "dmg_die_sides": 8
- },
- "weight": 3.0,
- "range": [
- 0,
- 0
- ],
- "reach": 10,
- "properties": [
- "versatile"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +14 to hit, reach 10 ft., one target. _Hit:_ 21 (3d8 + 8) slashing damage plus 13 (3d8) lightning damage. If the balor scores a critical hit, it rolls damage dice three times, instead of twice."
},
{
"name": "whip",
- "cost": 200,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 2,
- "dmg_die_sides": 6
- },
- "weight": 3.0,
- "range": [
- 0,
- 0
- ],
- "reach": 30,
- "properties": [
- "finesse",
- "reach"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +14 to hit, reach 30 ft., one target. _Hit:_ 15 (2d6 + 8) slashing damage plus 10 (3d6) fire damage, and the target must succeed on a DC 20 Strength saving throw or be pulled up to 25 feet toward the balor."
}
],
diff --git a/parser/monsters/bandit.json b/parser/monsters/bandit.json
index f00fc25..09522a8 100644
--- a/parser/monsters/bandit.json
+++ b/parser/monsters/bandit.json
@@ -26,54 +26,17 @@
"inventory": [
{
"name": "leather",
- "cost": 1000,
- "ac": 11,
- "strength": 0,
- "disadvantage": false,
- "weight": 10.0,
- "type": "light"
+ "type": "armor",
+ "text": "leather armor"
},
{
"name": "scimitar",
- "cost": 2500,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 3.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "finesse",
- "light"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +3 to hit, reach 5 ft., one target. _Hit:_ 4 (1d6 + 1) slashing damage."
},
{
"name": "light crossbow",
- "cost": 2500,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 8
- },
- "weight": 5.0,
- "range": [
- 80,
- 320
- ],
- "reach": 0,
- "properties": [
- "ammunition",
- "loading",
- "two-handed"
- ],
- "type": "simple ranged weapons",
+ "type": "weapon",
"text": "_Ranged Weapon Attack:_ +3 to hit, range 80 ft./320 ft., one target. _Hit:_ 5 (1d8 + 1) piercing damage."
}
],
diff --git a/parser/monsters/bandit_captain.json b/parser/monsters/bandit_captain.json
index 34d187e..9517970 100644
--- a/parser/monsters/bandit_captain.json
+++ b/parser/monsters/bandit_captain.json
@@ -33,54 +33,17 @@
"inventory": [
{
"name": "studded leather",
- "cost": 4500,
- "ac": 12,
- "strength": 0,
- "disadvantage": false,
- "weight": 13.0,
- "type": "light"
+ "type": "armor",
+ "text": "studded leather armor"
},
{
"name": "scimitar",
- "cost": 2500,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 3.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "finesse",
- "light"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +5 to hit, reach 5 ft., one target. _Hit:_ 6 (1d6 + 3) slashing damage."
},
{
"name": "dagger",
- "cost": 200,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 4
- },
- "weight": 1.0,
- "range": [
- 20,
- 60
- ],
- "reach": 5,
- "properties": [
- "finesse",
- "light",
- "thrown"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee or _Ranged Weapon Attack:__ +5 to hit, reach 5 ft. or range 20/60 ft., one target. _Hit:_ 5 (1d4 + 3) piercing damage."
}
],
diff --git a/parser/monsters/bearded_devil.json b/parser/monsters/bearded_devil.json
index f2bea13..b3727b6 100644
--- a/parser/monsters/bearded_devil.json
+++ b/parser/monsters/bearded_devil.json
@@ -72,24 +72,7 @@
"inventory": [
{
"name": "glaive",
- "cost": 2000,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 1,
- "dmg_die_sides": 10
- },
- "weight": 6.0,
- "range": [
- 0,
- 0
- ],
- "reach": 10,
- "properties": [
- "heavy",
- "reach",
- "two-handed"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +5 to hit, reach 10 ft., one target. _Hit:_ 8 (1d10 + 3) slashing damage. If the target is a creature other than an undead or a construct, it must succeed on a DC 12 Constitution saving throw or lose 5 (1d10) hit points at the start of each of its turns due to an infernal wound. Each time the devil hits the wounded target with this attack, the damage dealt by the wound increases by 5 (1d10). Any creature can take an action to stanch the wound with a successful DC 12 Wisdom (Medicine) check. The wound also closes if the target receives magical healing."
}
],
diff --git a/parser/monsters/berserker.json b/parser/monsters/berserker.json
index 7b5dc1e..b53db87 100644
--- a/parser/monsters/berserker.json
+++ b/parser/monsters/berserker.json
@@ -26,32 +26,12 @@
"inventory": [
{
"name": "hide",
- "cost": 1000,
- "ac": 12,
- "strength": 0,
- "disadvantage": false,
- "weight": 12.0,
- "type": "medium"
+ "type": "armor",
+ "text": "hide armor"
},
{
"name": "greataxe",
- "cost": 3000,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 1,
- "dmg_die_sides": 12
- },
- "weight": 7.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "heavy",
- "two-handed"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +5 to hit, reach 5 ft., one target. _Hit:_ 9 (1d12 + 3) slashing damage."
}
],
diff --git a/parser/monsters/bugbear.json b/parser/monsters/bugbear.json
index cbbbf99..a1287f9 100644
--- a/parser/monsters/bugbear.json
+++ b/parser/monsters/bugbear.json
@@ -31,58 +31,22 @@
"inventory": [
{
"name": "hide",
- "cost": 1000,
- "ac": 12,
- "strength": 0,
- "disadvantage": false,
- "weight": 12.0,
- "type": "medium"
+ "type": "armor",
+ "text": "hide armor"
},
{
"name": "shield",
- "cost": 1000,
- "ac": 2,
- "strength": 0,
- "disadvantage": false,
- "weight": 6.0,
- "type": "shield"
+ "type": "armor",
+ "text": "shield armor"
},
{
"name": "morningstar",
- "cost": 1500,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 2,
- "dmg_die_sides": 8
- },
- "weight": 4.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +4 to hit, reach 5 ft., one target. _Hit:_ 11 (2d8 + 2) piercing damage."
},
{
"name": "javelin",
- "cost": 50,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 2,
- "dmg_die_sides": 6
- },
- "weight": 2.0,
- "range": [
- 30,
- 120
- ],
- "reach": 5,
- "properties": [
- "thrown"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee or Ranged Weapon Attack:_ +4 to hit, reach 5 ft. or range 30/120 ft., one target. _Hit:_ 9 (2d6 + 2) piercing damage in melee or 5 (1d6 + 2) piercing damage at range."
}
],
diff --git a/parser/monsters/centaur.json b/parser/monsters/centaur.json
index fb669d4..0d4492d 100644
--- a/parser/monsters/centaur.json
+++ b/parser/monsters/centaur.json
@@ -30,46 +30,12 @@
"inventory": [
{
"name": "pike",
- "cost": 500,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 10
- },
- "weight": 18.0,
- "range": [
- 0,
- 0
- ],
- "reach": 10,
- "properties": [
- "heavy",
- "reach",
- "two-handed"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +6 to hit, reach 10 ft., one target. _Hit:_ 9 (1d10 + 4) piercing damage."
},
{
"name": "longbow",
- "cost": 5000,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 8
- },
- "weight": 2.0,
- "range": [
- 150,
- 600
- ],
- "reach": 0,
- "properties": [
- "ammunition",
- "heavy",
- "two-handed"
- ],
- "type": "martial ranged weapons",
+ "type": "weapon",
"text": "_Ranged Weapon Attack:_ +4 to hit, range 150/600 ft., one target. _Hit:_ 6 (1d8 + 2) piercing damage."
}
],
diff --git a/parser/monsters/cloud_giant.json b/parser/monsters/cloud_giant.json
index ef34a28..c850ed1 100644
--- a/parser/monsters/cloud_giant.json
+++ b/parser/monsters/cloud_giant.json
@@ -33,20 +33,7 @@
"inventory": [
{
"name": "morningstar",
- "cost": 1500,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 3,
- "dmg_die_sides": 8
- },
- "weight": 4.0,
- "range": [
- 0,
- 0
- ],
- "reach": 10,
- "properties": [],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +12 to hit, reach 10 ft., one target. _Hit:_ 21 (3d8 + 8) piercing damage."
}
],
@@ -64,9 +51,37 @@
"type": "feature"
},
{
- "name": "innate spellcasting",
+ "name": "spellcasting",
"text": "The giant's innate spellcasting ability is Charisma. It can innately cast the following spells, requiring no material components: \nAt will: **_detect magic_**, **_fog cloud_**, **_light_** \n3/day each: **_feather fall_**, **_fly_**, **_misty step_**, **_telekinesis_** \n1/day each: **_control weather_**, **_gaseous form_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "cha",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "detect magic",
+ "fog cloud",
+ "light"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "feather fall",
+ "fly",
+ "misty step",
+ "telekinesis"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "control weather",
+ "gaseous form"
+ ]
+ }
+ ]
},
{
"name": "multiattack",
diff --git a/parser/monsters/commoner.json b/parser/monsters/commoner.json
index 8faae12..fb1153e 100644
--- a/parser/monsters/commoner.json
+++ b/parser/monsters/commoner.json
@@ -26,22 +26,7 @@
"inventory": [
{
"name": "club",
- "cost": 10,
- "damage": {
- "dmg_type": "bludgeoning",
- "dmg_die_count": 1,
- "dmg_die_sides": 4
- },
- "weight": 2.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "light"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +2 to hit, reach 5 ft., one target. _Hit:_ 2 (1d4) bludgeoning damage."
}
],
diff --git a/parser/monsters/couatl.json b/parser/monsters/couatl.json
index cb313fb..341b5d9 100644
--- a/parser/monsters/couatl.json
+++ b/parser/monsters/couatl.json
@@ -67,9 +67,41 @@
"description": "",
"features": [
{
- "name": "innate spellcasting",
+ "name": "spellcasting",
"text": "The couatl's spellcasting ability is Charisma (spell save DC 14). It can innately cast the following spells, requiring only verbal components: \nAt will: **_detect evil and good_**, **_detect magic_**, **_detect thoughts_** \n3/day each: **_bless_**, **_create food and water_**, **_cure wounds_**, **_lesser restoration_**, **_protection from poison_**, **_sanctuary_**, **_shield_** \n1/day each: **_dream_**, **_greater restoration_**, **_scrying_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "cha",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "detect evil and good",
+ "detect magic",
+ "detect thoughts"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "bless",
+ "create food and water",
+ "cure wounds",
+ "lesser restoration",
+ "protection from poison",
+ "sanctuary",
+ "shield"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "dream",
+ "greater restoration",
+ "scrying"
+ ]
+ }
+ ]
},
{
"name": "magic weapons",
diff --git a/parser/monsters/cult_fanatic.json b/parser/monsters/cult_fanatic.json
index 5f00ced..427bd03 100644
--- a/parser/monsters/cult_fanatic.json
+++ b/parser/monsters/cult_fanatic.json
@@ -30,33 +30,12 @@
"inventory": [
{
"name": "leather",
- "cost": 1000,
- "ac": 11,
- "strength": 0,
- "disadvantage": false,
- "weight": 10.0,
- "type": "light"
+ "type": "armor",
+ "text": "leather armor"
},
{
"name": "dagger",
- "cost": 200,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 4
- },
- "weight": 1.0,
- "range": [
- 20,
- 60
- ],
- "reach": 5,
- "properties": [
- "finesse",
- "light",
- "thrown"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee or Ranged Weapon Attack:_ +4 to hit, reach 5 ft. or range 20/60 ft., one creature. _Hit:_ 4 (1d4 + 2) piercing damage."
}
],
@@ -71,7 +50,34 @@
{
"name": "spellcasting",
"text": "The fanatic is a 4th-level spellcaster. Its spellcasting ability is Wisdom (spell save DC 11, +3 to hit with spell attacks). The fanatic has the following cleric spells prepared: \nCantrips (at will): **_light, sacred flame, thaumaturgy_** \n1st level (4 slots): **_command, inflict wounds, shield of faith_** \n2nd level (3 slots): **_hold person, spiritual weapon_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "wis",
+ "innate": false,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "light",
+ "sacred flame",
+ "thaumaturgy"
+ ]
+ },
+ {
+ "slots": 4,
+ "spells": [
+ "command",
+ "inflict wounds",
+ "shield of faith"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "hold person",
+ "spiritual weapon"
+ ]
+ }
+ ]
},
{
"name": "multiattack",
diff --git a/parser/monsters/cultist.json b/parser/monsters/cultist.json
index 2802267..51c2aa6 100644
--- a/parser/monsters/cultist.json
+++ b/parser/monsters/cultist.json
@@ -29,32 +29,12 @@
"inventory": [
{
"name": "leather",
- "cost": 1000,
- "ac": 11,
- "strength": 0,
- "disadvantage": false,
- "weight": 10.0,
- "type": "light"
+ "type": "armor",
+ "text": "leather armor"
},
{
"name": "scimitar",
- "cost": 2500,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 3.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "finesse",
- "light"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +3 to hit, reach 5 ft., one creature. _Hit:_ 4 (1d6 + 1) slashing damage."
}
],
diff --git a/parser/monsters/deva.json b/parser/monsters/deva.json
index 8296cdc..d63deed 100644
--- a/parser/monsters/deva.json
+++ b/parser/monsters/deva.json
@@ -70,20 +70,7 @@
"inventory": [
{
"name": "mace",
- "cost": 500,
- "damage": {
- "dmg_type": "bludgeoning",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 4.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +8 to hit, reach 5 ft., one target. _Hit:_ 7 (1d6 + 4) bludgeoning damage plus 18 (4d8) radiant damage."
}
],
@@ -101,9 +88,26 @@
"type": "feature"
},
{
- "name": "innate spellcasting",
+ "name": "spellcasting",
"text": "The deva's spellcasting ability is Charisma (spell save DC 17). The deva can innately cast the following spells, requiring only verbal components: \nAt will: **_detect evil and good_** \n1/day each: **_commune_**, **_raise dead_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "cha",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "detect evil and good"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "commune",
+ "raise dead"
+ ]
+ }
+ ]
},
{
"name": "magic resistance",
diff --git a/parser/monsters/djinni.json b/parser/monsters/djinni.json
index 2fad248..d4abb34 100644
--- a/parser/monsters/djinni.json
+++ b/parser/monsters/djinni.json
@@ -41,23 +41,7 @@
"inventory": [
{
"name": "scimitar",
- "cost": 2500,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 2,
- "dmg_die_sides": 6
- },
- "weight": 3.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "finesse",
- "light"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +9 to hit, reach 5 ft., one target. _Hit:_ 12 (2d6 + 5) slashing damage plus 3 (1d6) lightning or thunder damage (djinni's choice)."
}
],
@@ -75,9 +59,40 @@
"type": "feature"
},
{
- "name": "innate spellcasting",
+ "name": "spellcasting",
"text": "The djinni's innate spellcasting ability is Charisma (spell save DC 17, +9 to hit with spell attacks). It can innately cast the following spells, requiring no material components: \nAt will: **_detect evil and good_**, **_detect magic_**, **_thunderwave_** \n3/day each: **_create food and water_** (can create wine instead of water), **_tongues_**, **_wind walk_** \n1/day each: **_conjure elemental_** (air elemental only), **_creation_**, **_gaseous form_**, **_invisibility_**, **_major image_**, **_plane shift_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "cha",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "detect evil and good",
+ "detect magic",
+ "thunderwave"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "create food and water",
+ "tongues",
+ "wind walk"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "conjure elemental",
+ "creation",
+ "gaseous form",
+ "invisibility",
+ "major image",
+ "plane shift"
+ ]
+ }
+ ]
},
{
"name": "multiattack",
diff --git a/parser/monsters/drider.json b/parser/monsters/drider.json
index 9ec5f18..0300cc9 100644
--- a/parser/monsters/drider.json
+++ b/parser/monsters/drider.json
@@ -31,44 +31,12 @@
"inventory": [
{
"name": "longsword",
- "cost": 1500,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 1,
- "dmg_die_sides": 8
- },
- "weight": 3.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "versatile"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +6 to hit, reach 5 ft., one target. _Hit:_ 7 (1d8 + 3) slashing damage, or 8 (1d10 + 3) slashing damage if used with two hands."
},
{
"name": "longbow",
- "cost": 5000,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 8
- },
- "weight": 2.0,
- "range": [
- 150,
- 600
- ],
- "reach": 0,
- "properties": [
- "ammunition",
- "heavy",
- "two-handed"
- ],
- "type": "martial ranged weapons",
+ "type": "weapon",
"text": "_Ranged Weapon Attack:_ +6 to hit, range 150/600 ft., one target. _Hit:_ 7 (1d8 + 3) piercing damage plus 4 (1d8) poison damage."
}
],
@@ -86,9 +54,26 @@
"type": "feature"
},
{
- "name": "innate spellcasting",
+ "name": "spellcasting",
"text": "The drider's innate spellcasting ability is Wisdom (spell save DC 13). The drider can innately cast the following spells, requiring no material components: \nAt will: **_dancing lights_** \n1/day each: **_darkness_**, **_faerie fire_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "wis",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "dancing lights"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "darkness",
+ "faerie fire"
+ ]
+ }
+ ]
},
{
"name": "spider climb",
diff --git a/parser/monsters/druid.json b/parser/monsters/druid.json
index fca3cff..30ed85a 100644
--- a/parser/monsters/druid.json
+++ b/parser/monsters/druid.json
@@ -30,22 +30,7 @@
"inventory": [
{
"name": "quarterstaff",
- "cost": 20,
- "damage": {
- "dmg_type": "bludgeoning",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 4.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "versatile"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +2 to hit (+4 to hit with shillelagh), reach 5 ft., one target. _Hit:_ 3 (1d6) bludgeoning damage, 4 (1d8) bludgeoning damage if wielded with two hands, or 6 (1d8 + 2) bludgeoning damage with shillelagh."
}
],
@@ -53,9 +38,37 @@
"description": "Druids dwell in forests and other secluded wilderness locations, where they protect the natural world from monsters and the encroachment of civilization. Some are tribal shamans who heal the sick, pray to animal spirits, and provide spiritual guidance.",
"features": [
{
- "name": "*spellcasting",
+ "name": "spellcasting",
"text": "* The druid is a 4th-level spellcaster. Its spellcasting ability is Wisdom (spell save DC 12, +4 to hit with spell attacks). It has the following druid spells prepared: \nCantrips (at will): **_druidcraft, produce flame, shillelagh_** \n1st level (4 slots): **_entangle, longstrider, speak with animals, thunderwave_** \n2nd level (3 slots): **_animal messenger, barkskin_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "wis",
+ "innate": false,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "druidcraft",
+ "produce flame",
+ "shillelagh"
+ ]
+ },
+ {
+ "slots": 4,
+ "spells": [
+ "entangle",
+ "longstrider",
+ "speak with animals",
+ "thunderwave"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "animal messenger",
+ "barkskin"
+ ]
+ }
+ ]
}
],
"prof": 2
diff --git a/parser/monsters/dryad.json b/parser/monsters/dryad.json
index 169df4c..c2b85b8 100644
--- a/parser/monsters/dryad.json
+++ b/parser/monsters/dryad.json
@@ -31,22 +31,7 @@
"inventory": [
{
"name": "club",
- "cost": 10,
- "damage": {
- "dmg_type": "bludgeoning",
- "dmg_die_count": 1,
- "dmg_die_sides": 4
- },
- "weight": 2.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "light"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +2 to hit (+6 to hit with shillelagh), reach 5 ft., one target. _Hit:_ 2 (1d4) bludgeoning damage, or 8 (1d8 + 4) bludgeoning damage with shillelagh."
}
],
@@ -54,9 +39,34 @@
"description": "",
"features": [
{
- "name": "innate spellcasting",
+ "name": "spellcasting",
"text": "The dryad's innate spellcasting ability is Charisma (spell save DC 14). The dryad can innately cast the following spells, requiring no material components: \nAt will: **_druidcraft_** \n3/day each: **_entangle_**, **_goodberry_** \n1/day each: **_barkskin_**, **_pass without trace_**, **_shillelagh_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "cha",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "druidcraft"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "entangle",
+ "goodberry"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "barkskin",
+ "pass without trace",
+ "shillelagh"
+ ]
+ }
+ ]
},
{
"name": "magic resistance",
diff --git a/parser/monsters/duergar.json b/parser/monsters/duergar.json
index 904dedf..5642d4e 100644
--- a/parser/monsters/duergar.json
+++ b/parser/monsters/duergar.json
@@ -33,58 +33,22 @@
"inventory": [
{
"name": "scale mail",
- "cost": 5000,
- "ac": 14,
- "strength": 0,
- "disadvantage": false,
- "weight": 45.0,
- "type": "medium"
+ "type": "armor",
+ "text": "scale mail armor"
},
{
"name": "shield",
- "cost": 1000,
- "ac": 2,
- "strength": 0,
- "disadvantage": false,
- "weight": 6.0,
- "type": "shield"
+ "type": "armor",
+ "text": "shield armor"
},
{
"name": "war pick",
- "cost": 500,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 8
- },
- "weight": 2.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +4 to hit, reach 5 ft., one target. _Hit:_ 6 (1d8 + 2) piercing damage, or 11 (2d8 + 2) piercing damage while enlarged."
},
{
"name": "javelin",
- "cost": 50,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 2.0,
- "range": [
- 30,
- 120
- ],
- "reach": 5,
- "properties": [
- "thrown"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee or _Ranged Weapon Attack:__ +4 to hit, reach 5 ft. or range 30/120 ft., one target. _Hit:_ 5 (1d6 + 2) piercing damage, or 9 (2d6 + 2) piercing damage while enlarged."
}
],
diff --git a/parser/monsters/dust_mephit.json b/parser/monsters/dust_mephit.json
index 81f9c3a..5dc6356 100644
--- a/parser/monsters/dust_mephit.json
+++ b/parser/monsters/dust_mephit.json
@@ -53,9 +53,19 @@
"type": "feature"
},
{
- "name": "innate spellcasting (1/day)",
+ "name": "spellcasting",
"text": "The mephit can innately cast **_sleep_**, requiring no material components. Its innate spellcasting ability is Charisma.",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "cha",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 1,
+ "spells": [
+ "sleep"
+ ]
+ }
+ ]
},
{
"name": "claws",
diff --git a/parser/monsters/efreeti.json b/parser/monsters/efreeti.json
index 0f28b31..93546d5 100644
--- a/parser/monsters/efreeti.json
+++ b/parser/monsters/efreeti.json
@@ -37,23 +37,7 @@
"inventory": [
{
"name": "scimitar",
- "cost": 2500,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 2,
- "dmg_die_sides": 6
- },
- "weight": 3.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "finesse",
- "light"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +10 to hit, reach 5 ft., one target. _Hit:_ 13 (2d6 + 6) slashing damage plus 7 (2d6) fire damage."
}
],
@@ -71,9 +55,37 @@
"type": "feature"
},
{
- "name": "innate spellcasting",
+ "name": "spellcasting",
"text": "The efreeti's innate spellcasting ability is Charisma (spell save DC 15, +7 to hit with spell attacks). It can innately cast the following spells, requiring no material components: \nAt will: **_detect magic_** \n3/day: **_enlarge/reduce_**, **_tongues_** \n1/day each: **_conjure elemental_** (fire elemental only), **_gaseous form_**, **_invisibility_**, **_major image_**, **_plane shift_**, **_wall of fire_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "cha",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "detect magic"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "enlarge/reduce",
+ "tongues"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "conjure elemental",
+ "gaseous form",
+ "invisibility",
+ "major image",
+ "plane shift",
+ "wall of fire"
+ ]
+ }
+ ]
},
{
"name": "multiattack",
diff --git a/parser/monsters/elf_drow.json b/parser/monsters/elf_drow.json
index 5f394b7..7d5061c 100644
--- a/parser/monsters/elf_drow.json
+++ b/parser/monsters/elf_drow.json
@@ -31,54 +31,17 @@
"inventory": [
{
"name": "chain shirt",
- "cost": 5000,
- "ac": 13,
- "strength": 0,
- "disadvantage": false,
- "weight": 20.0,
- "type": "medium"
+ "type": "armor",
+ "text": "chain shirt armor"
},
{
"name": "shortsword",
- "cost": 1000,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 2.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "finesse",
- "light"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +4 to hit, reach 5 ft., one target. _Hit:_ 5 (1d6 + 2) piercing damage."
},
{
"name": "hand crossbow",
- "cost": 7500,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 3.0,
- "range": [
- 30,
- 120
- ],
- "reach": 0,
- "properties": [
- "ammunition",
- "light",
- "loading"
- ],
- "type": "martial ranged weapons",
+ "type": "weapon",
"text": "_Ranged Weapon Attack:_ +4 to hit, range 30/120 ft., one target. _Hit:_ 5 (1d6 + 2) piercing damage, and the target must succeed on a DC 13 Constitution saving throw or be poisoned for 1 hour. If the saving throw fails by 5 or more, the target is also unconscious while poisoned in this way. The target wakes up if it takes damage or if another creature takes an action to shake it awake."
}
],
@@ -91,9 +54,26 @@
"type": "feature"
},
{
- "name": "innate spellcasting",
+ "name": "spellcasting",
"text": "The drow's spellcasting ability is Charisma (spell save DC 11). It can innately cast the following spells, requiring no material components: \nAt will: **_dancing lights_** \n1/day each: **_darkness_**, **_faerie fire_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "cha",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "dancing lights"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "darkness",
+ "faerie fire"
+ ]
+ }
+ ]
},
{
"name": "sunlight sensitivity",
diff --git a/parser/monsters/erinyes.json b/parser/monsters/erinyes.json
index a40ce63..cbeb5f6 100644
--- a/parser/monsters/erinyes.json
+++ b/parser/monsters/erinyes.json
@@ -73,53 +73,17 @@
"inventory": [
{
"name": "plate",
- "cost": 150000,
- "ac": 18,
- "strength": 15,
- "disadvantage": false,
- "weight": 65.0,
- "type": "heavy"
+ "type": "armor",
+ "text": "plate armor"
},
{
"name": "longsword",
- "cost": 1500,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 1,
- "dmg_die_sides": 8
- },
- "weight": 3.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "versatile"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +8 to hit, reach 5 ft., one target. _Hit:_ 8 (1d8 + 4) slashing damage, or 9 (1d10 + 4) slashing damage if used with two hands, plus 13 (3d8) poison damage."
},
{
"name": "longbow",
- "cost": 5000,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 8
- },
- "weight": 2.0,
- "range": [
- 150,
- 600
- ],
- "reach": 0,
- "properties": [
- "ammunition",
- "heavy",
- "two-handed"
- ],
- "type": "martial ranged weapons",
+ "type": "weapon",
"text": "_Ranged Weapon Attack:_ +7 to hit, range 150/600 ft., one target. _Hit:_ 7 (1d8 + 3) piercing damage plus 13 (3d8) poison damage, and the target must succeed on a DC 14 Constitution saving throw or be poisoned. The poison lasts until it is removed by the lesser restoration spell or similar magic."
}
],
diff --git a/parser/monsters/ettin.json b/parser/monsters/ettin.json
index fb2822d..8c37497 100644
--- a/parser/monsters/ettin.json
+++ b/parser/monsters/ettin.json
@@ -30,40 +30,12 @@
"inventory": [
{
"name": "battleaxe",
- "cost": 1000,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 2,
- "dmg_die_sides": 8
- },
- "weight": 4.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "versatile"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +7 to hit, reach 5 ft., one target. _Hit:_ 14 (2d8 + 5) slashing damage."
},
{
"name": "morningstar",
- "cost": 1500,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 2,
- "dmg_die_sides": 8
- },
- "weight": 4.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +7 to hit, reach 5 ft., one target. _Hit:_ 14 (2d8 + 5) piercing damage."
}
],
diff --git a/parser/monsters/fire_giant.json b/parser/monsters/fire_giant.json
index fe8bd0c..33983ab 100644
--- a/parser/monsters/fire_giant.json
+++ b/parser/monsters/fire_giant.json
@@ -38,32 +38,12 @@
"inventory": [
{
"name": "plate",
- "cost": 150000,
- "ac": 18,
- "strength": 15,
- "disadvantage": false,
- "weight": 65.0,
- "type": "heavy"
+ "type": "armor",
+ "text": "plate armor"
},
{
"name": "greatsword",
- "cost": 5000,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 6,
- "dmg_die_sides": 6
- },
- "weight": 6.0,
- "range": [
- 0,
- 0
- ],
- "reach": 10,
- "properties": [
- "heavy",
- "two-handed"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +11 to hit, reach 10 ft., one target. _Hit:_ 28 (6d6 + 7) slashing damage."
}
],
diff --git a/parser/monsters/flying_sword.json b/parser/monsters/flying_sword.json
index 07105ba..96a77a3 100644
--- a/parser/monsters/flying_sword.json
+++ b/parser/monsters/flying_sword.json
@@ -68,22 +68,7 @@
"inventory": [
{
"name": "longsword",
- "cost": 1500,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 1,
- "dmg_die_sides": 8
- },
- "weight": 3.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "versatile"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +3 to hit, reach 5 ft., one target. _Hit:_ 5 (1d8 + 1) slashing damage."
}
],
diff --git a/parser/monsters/frost_giant.json b/parser/monsters/frost_giant.json
index ce92e32..cb14525 100644
--- a/parser/monsters/frost_giant.json
+++ b/parser/monsters/frost_giant.json
@@ -38,23 +38,7 @@
"inventory": [
{
"name": "greataxe",
- "cost": 3000,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 3,
- "dmg_die_sides": 12
- },
- "weight": 7.0,
- "range": [
- 0,
- 0
- ],
- "reach": 10,
- "properties": [
- "heavy",
- "two-handed"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +9 to hit, reach 10 ft., one target. _Hit:_ 25 (3d12 + 6) slashing damage."
}
],
diff --git a/parser/monsters/glabrezu.json b/parser/monsters/glabrezu.json
index 3c8f475..03b0719 100644
--- a/parser/monsters/glabrezu.json
+++ b/parser/monsters/glabrezu.json
@@ -81,9 +81,29 @@
"description": "",
"features": [
{
- "name": "innate spellcasting",
+ "name": "spellcasting",
"text": "The glabrezu's spellcasting ability is Intelligence (spell save DC 16). The glabrezu can innately cast the following spells, requiring no material components: \nAt will: **_darkness_**, **_detect magic_**, **_dispel magic_** \n1/day each: **_confusion_**, **_fly_**, **_power word stun_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "int",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "darkness",
+ "detect magic",
+ "dispel magic"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "confusion",
+ "fly",
+ "power word stun"
+ ]
+ }
+ ]
},
{
"name": "magic resistance",
diff --git a/parser/monsters/gladiator.json b/parser/monsters/gladiator.json
index 3c9a31b..bff8bd1 100644
--- a/parser/monsters/gladiator.json
+++ b/parser/monsters/gladiator.json
@@ -33,41 +33,17 @@
"inventory": [
{
"name": "studded leather",
- "cost": 4500,
- "ac": 12,
- "strength": 0,
- "disadvantage": false,
- "weight": 13.0,
- "type": "light"
+ "type": "armor",
+ "text": "studded leather armor"
},
{
"name": "shield",
- "cost": 1000,
- "ac": 2,
- "strength": 0,
- "disadvantage": false,
- "weight": 6.0,
- "type": "shield"
+ "type": "armor",
+ "text": "shield armor"
},
{
"name": "spear",
- "cost": 100,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 2,
- "dmg_die_sides": 6
- },
- "weight": 3.0,
- "range": [
- 20,
- 60
- ],
- "reach": 5,
- "properties": [
- "thrown",
- "versatile"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee or _Ranged Weapon Attack:__ +7 to hit, reach 5 ft. and range 20/60 ft., one target. _Hit:_ 11 (2d6 + 4) piercing damage, or 13 (2d8 + 4) piercing damage if used with two hands to make a melee attack."
}
],
diff --git a/parser/monsters/gnoll.json b/parser/monsters/gnoll.json
index f325c5c..af7a559 100644
--- a/parser/monsters/gnoll.json
+++ b/parser/monsters/gnoll.json
@@ -28,63 +28,22 @@
"inventory": [
{
"name": "hide",
- "cost": 1000,
- "ac": 12,
- "strength": 0,
- "disadvantage": false,
- "weight": 12.0,
- "type": "medium"
+ "type": "armor",
+ "text": "hide armor"
},
{
"name": "shield",
- "cost": 1000,
- "ac": 2,
- "strength": 0,
- "disadvantage": false,
- "weight": 6.0,
- "type": "shield"
+ "type": "armor",
+ "text": "shield armor"
},
{
"name": "spear",
- "cost": 100,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 3.0,
- "range": [
- 20,
- 60
- ],
- "reach": 5,
- "properties": [
- "thrown",
- "versatile"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee_ or _Ranged Weapon Attack:_ +4 to hit, reach 5 ft. or range 20/60 ft., one target. _Hit:_ 5 (1d6 + 2) piercing damage, or 6 (1d8 + 2) piercing damage if used with two hands to make a melee attack."
},
{
"name": "longbow",
- "cost": 5000,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 8
- },
- "weight": 2.0,
- "range": [
- 150,
- 600
- ],
- "reach": 0,
- "properties": [
- "ammunition",
- "heavy",
- "two-handed"
- ],
- "type": "martial ranged weapons",
+ "type": "weapon",
"text": "_Ranged Weapon Attack:_ +3 to hit, range 150/600 ft., one target. _Hit:_ 5 (1d8 + 1) piercing damage."
}
],
diff --git a/parser/monsters/gnome_deep_svirfneblin.json b/parser/monsters/gnome_deep_svirfneblin.json
index 509f076..62d1682 100644
--- a/parser/monsters/gnome_deep_svirfneblin.json
+++ b/parser/monsters/gnome_deep_svirfneblin.json
@@ -32,29 +32,12 @@
"inventory": [
{
"name": "chain shirt",
- "cost": 5000,
- "ac": 13,
- "strength": 0,
- "disadvantage": false,
- "weight": 20.0,
- "type": "medium"
+ "type": "armor",
+ "text": "chain shirt armor"
},
{
"name": "war pick",
- "cost": 500,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 8
- },
- "weight": 2.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +4 to hit, reach 5 ft., one target. _Hit:_ 6 (1d8 + 2) piercing damage."
}
],
@@ -72,9 +55,27 @@
"type": "feature"
},
{
- "name": "innate spellcasting",
+ "name": "spellcasting",
"text": "The gnome's innate spellcasting ability is Intelligence (spell save DC 11). It can innately cast the following spells, requiring no material components: \nAt will: **_nondetection_** (self only) \n1/day each: **_blindness/deafness_**, **_blur_**, **_disguise self_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "int",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "nondetection"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "blindness/deafness",
+ "blur",
+ "disguise self"
+ ]
+ }
+ ]
},
{
"name": "poisoned dart",
diff --git a/parser/monsters/goblin.json b/parser/monsters/goblin.json
index dc5108c..bafc92d 100644
--- a/parser/monsters/goblin.json
+++ b/parser/monsters/goblin.json
@@ -30,62 +30,22 @@
"inventory": [
{
"name": "leather",
- "cost": 1000,
- "ac": 11,
- "strength": 0,
- "disadvantage": false,
- "weight": 10.0,
- "type": "light"
+ "type": "armor",
+ "text": "leather armor"
},
{
"name": "shield",
- "cost": 1000,
- "ac": 2,
- "strength": 0,
- "disadvantage": false,
- "weight": 6.0,
- "type": "shield"
+ "type": "armor",
+ "text": "shield armor"
},
{
"name": "scimitar",
- "cost": 2500,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 3.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "finesse",
- "light"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +4 to hit, reach 5 ft., one target. _Hit:_ 5 (1d6 + 2) slashing damage."
},
{
"name": "shortbow",
- "cost": 2500,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 2.0,
- "range": [
- 80,
- 320
- ],
- "reach": 0,
- "properties": [
- "ammunition",
- "two-handed"
- ],
- "type": "simple ranged weapons",
+ "type": "weapon",
"text": "_Ranged Weapon Attack:_ +4 to hit, range 80/320 ft., one target. _Hit:_ 5 (1d6 + 2) piercing damage."
}
],
diff --git a/parser/monsters/green_hag.json b/parser/monsters/green_hag.json
index 12c6de8..21073b9 100644
--- a/parser/monsters/green_hag.json
+++ b/parser/monsters/green_hag.json
@@ -45,9 +45,21 @@
"type": "feature"
},
{
- "name": "innate spellcasting",
+ "name": "spellcasting",
"text": "The hag's innate spellcasting ability is Charisma (spell save DC 12). She can innately cast the following spells, requiring no material components: \nAt will: **_dancing lights_**, **_minor illusion_**, **_vicious mockery_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "cha",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "dancing lights",
+ "minor illusion",
+ "vicious mockery"
+ ]
+ }
+ ]
},
{
"name": "mimicry",
diff --git a/parser/monsters/guard.json b/parser/monsters/guard.json
index 08109ed..bcfbbc5 100644
--- a/parser/monsters/guard.json
+++ b/parser/monsters/guard.json
@@ -28,41 +28,17 @@
"inventory": [
{
"name": "chain shirt",
- "cost": 5000,
- "ac": 13,
- "strength": 0,
- "disadvantage": false,
- "weight": 20.0,
- "type": "medium"
+ "type": "armor",
+ "text": "chain shirt armor"
},
{
"name": "shield",
- "cost": 1000,
- "ac": 2,
- "strength": 0,
- "disadvantage": false,
- "weight": 6.0,
- "type": "shield"
+ "type": "armor",
+ "text": "shield armor"
},
{
"name": "spear",
- "cost": 100,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 3.0,
- "range": [
- 20,
- 60
- ],
- "reach": 5,
- "properties": [
- "thrown",
- "versatile"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee_ or _Ranged Weapon Attack:_ +3 to hit, reach 5 ft. or range 20/60 ft., one target. _Hit:_ 4 (1d6 + 1) piercing damage, or 5 (1d8 + 1) piercing damage if used with two hands to make a melee attack."
}
],
diff --git a/parser/monsters/guardian_naga.json b/parser/monsters/guardian_naga.json
index 7976bf3..cf8ef15 100644
--- a/parser/monsters/guardian_naga.json
+++ b/parser/monsters/guardian_naga.json
@@ -62,7 +62,61 @@
{
"name": "spellcasting",
"text": "The naga is an 11th-level spellcaster. Its spellcasting ability is Wisdom (spell save DC 16, +8 to hit with spell attacks), and it needs only verbal components to cast its spells. It has the following cleric spells prepared: \nCantrips (at will): **_mending, sacred flame, thaumaturgy_** \n1st level (4 slots): **_command, cure wounds, shield of faith_** \n2nd level (3 slots): **_calm emotions, hold person_** \n3rd level (3 slots): **_bestow curse, clairvoyance_** \n4th level (3 slots): **_banishment, freedom of movement_** \n5th level (2 slots): **_flame strike, geas_** \n6th level (1 slot): **_true seeing_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "wis",
+ "innate": false,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "mending",
+ "sacred flame",
+ "thaumaturgy"
+ ]
+ },
+ {
+ "slots": 4,
+ "spells": [
+ "command",
+ "cure wounds",
+ "shield of faith"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "calm emotions",
+ "hold person"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "bestow curse",
+ "clairvoyance"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "banishment",
+ "freedom of movement"
+ ]
+ },
+ {
+ "slots": 2,
+ "spells": [
+ "flame strike",
+ "geas"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "true seeing"
+ ]
+ }
+ ]
},
{
"name": "bite",
diff --git a/parser/monsters/gynosphinx.json b/parser/monsters/gynosphinx.json
index 1a8dbd3..169bec7 100644
--- a/parser/monsters/gynosphinx.json
+++ b/parser/monsters/gynosphinx.json
@@ -85,7 +85,56 @@
{
"name": "spellcasting",
"text": "The sphinx is a 9th-level spellcaster. Its spellcasting ability is Intelligence (spell save DC 16, +8 to hit with spell attacks). It requires no material components to cast its spells. The sphinx has the following wizard spells prepared: \nCantrips (at will): **_mage hand, minor illusion, prestidigitation_** \n1st level (4 slots): **_detect magic, identify, shield_** \n2nd level (3 slots): **_darkness, locate object, suggestion_** \n3rd level (3 slots): **_dispel magic, remove curse, tongues_** \n4th level (3 slots): **_banishment, greater invisibility_** \n5th level (1 slot): **_legend lore_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "int",
+ "innate": false,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "mage hand",
+ "minor illusion",
+ "prestidigitation"
+ ]
+ },
+ {
+ "slots": 4,
+ "spells": [
+ "detect magic",
+ "identify",
+ "shield"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "darkness",
+ "locate object",
+ "suggestion"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "dispel magic",
+ "remove curse",
+ "tongues"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "banishment",
+ "greater invisibility"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "legend lore"
+ ]
+ }
+ ]
},
{
"name": "multiattack",
diff --git a/parser/monsters/half_red_dragon_veteran.json b/parser/monsters/half_red_dragon_veteran.json
index c63a2ad..b4c1138 100644
--- a/parser/monsters/half_red_dragon_veteran.json
+++ b/parser/monsters/half_red_dragon_veteran.json
@@ -37,75 +37,22 @@
"inventory": [
{
"name": "plate",
- "cost": 150000,
- "ac": 18,
- "strength": 15,
- "disadvantage": false,
- "weight": 65.0,
- "type": "heavy"
+ "type": "armor",
+ "text": "plate armor"
},
{
"name": "longsword",
- "cost": 1500,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 1,
- "dmg_die_sides": 8
- },
- "weight": 3.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "versatile"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +5 to hit, reach 5 ft., one target. _Hit:_ 7 (1d8 + 3) slashing damage, or 8 (1d10 + 3) slashing damage if used with two hands."
},
{
"name": "shortsword",
- "cost": 1000,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 2.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "finesse",
- "light"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +5 to hit, reach 5 ft., one target. _Hit:_ 6 (1d6 + 3) piercing damage."
},
{
"name": "heavy crossbow",
- "cost": 5000,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 10
- },
- "weight": 18.0,
- "range": [
- 100,
- 400
- ],
- "reach": 0,
- "properties": [
- "ammunition",
- "heavy",
- "loading",
- "two-handed"
- ],
- "type": "martial ranged weapons",
+ "type": "weapon",
"text": "_Ranged Weapon Attack:_ +3 to hit, range 100/400 ft., one target. _Hit:_ 6 (1d10 + 1) piercing damage."
}
],
diff --git a/parser/monsters/harpy.json b/parser/monsters/harpy.json
index 232d198..974be2b 100644
--- a/parser/monsters/harpy.json
+++ b/parser/monsters/harpy.json
@@ -26,22 +26,7 @@
"inventory": [
{
"name": "club",
- "cost": 10,
- "damage": {
- "dmg_type": "bludgeoning",
- "dmg_die_count": 1,
- "dmg_die_sides": 4
- },
- "weight": 2.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "light"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +3 to hit, reach 5 ft., one target. _Hit:_ 3 (1d4 + 1) bludgeoning damage."
}
],
diff --git a/parser/monsters/hill_giant.json b/parser/monsters/hill_giant.json
index 542e394..3f8d453 100644
--- a/parser/monsters/hill_giant.json
+++ b/parser/monsters/hill_giant.json
@@ -28,22 +28,7 @@
"inventory": [
{
"name": "greatclub",
- "cost": 20,
- "damage": {
- "dmg_type": "bludgeoning",
- "dmg_die_count": 3,
- "dmg_die_sides": 8
- },
- "weight": 10.0,
- "range": [
- 0,
- 0
- ],
- "reach": 10,
- "properties": [
- "two-handed"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +8 to hit, reach 10 ft., one target. _Hit:_ 18 (3d8 + 5) bludgeoning damage."
}
],
diff --git a/parser/monsters/hobgoblin.json b/parser/monsters/hobgoblin.json
index 261d928..c8f6903 100644
--- a/parser/monsters/hobgoblin.json
+++ b/parser/monsters/hobgoblin.json
@@ -28,62 +28,22 @@
"inventory": [
{
"name": "chain mail",
- "cost": 7500,
- "ac": 16,
- "strength": 13,
- "disadvantage": false,
- "weight": 55.0,
- "type": "heavy"
+ "type": "armor",
+ "text": "chain mail armor"
},
{
"name": "shield",
- "cost": 1000,
- "ac": 2,
- "strength": 0,
- "disadvantage": false,
- "weight": 6.0,
- "type": "shield"
+ "type": "armor",
+ "text": "shield armor"
},
{
"name": "longsword",
- "cost": 1500,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 1,
- "dmg_die_sides": 8
- },
- "weight": 3.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "versatile"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +3 to hit, reach 5 ft., one target. _Hit:_ 5 (1d8 + 1) slashing damage, or 6 (1d10 + 1) slashing damage if used with two hands."
},
{
"name": "longbow",
- "cost": 5000,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 8
- },
- "weight": 2.0,
- "range": [
- 150,
- 600
- ],
- "reach": 0,
- "properties": [
- "ammunition",
- "heavy",
- "two-handed"
- ],
- "type": "martial ranged weapons",
+ "type": "weapon",
"text": "_Ranged Weapon Attack:_ +3 to hit, range 150/600 ft., one target. _Hit:_ 5 (1d8 + 1) piercing damage."
}
],
diff --git a/parser/monsters/ice_mephit.json b/parser/monsters/ice_mephit.json
index 2d5da54..64dbff3 100644
--- a/parser/monsters/ice_mephit.json
+++ b/parser/monsters/ice_mephit.json
@@ -66,9 +66,19 @@
"type": "feature"
},
{
- "name": "innate spellcasting (1/day)",
+ "name": "spellcasting",
"text": "The mephit can innately cast **_fog cloud_**, requiring no material components. Its innate spellcasting ability is Charisma.",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "cha",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 1,
+ "spells": [
+ "fog cloud"
+ ]
+ }
+ ]
},
{
"name": "claws",
diff --git a/parser/monsters/knight.json b/parser/monsters/knight.json
index 7d57075..bc34c1a 100644
--- a/parser/monsters/knight.json
+++ b/parser/monsters/knight.json
@@ -29,55 +29,17 @@
"inventory": [
{
"name": "plate",
- "cost": 150000,
- "ac": 18,
- "strength": 15,
- "disadvantage": false,
- "weight": 65.0,
- "type": "heavy"
+ "type": "armor",
+ "text": "plate armor"
},
{
"name": "greatsword",
- "cost": 5000,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 2,
- "dmg_die_sides": 6
- },
- "weight": 6.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "heavy",
- "two-handed"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +5 to hit, reach 5 ft., one target. _Hit:_ 10 (2d6 + 3) slashing damage."
},
{
"name": "heavy crossbow",
- "cost": 5000,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 10
- },
- "weight": 18.0,
- "range": [
- 100,
- 400
- ],
- "reach": 0,
- "properties": [
- "ammunition",
- "heavy",
- "loading",
- "two-handed"
- ],
- "type": "martial ranged weapons",
+ "type": "weapon",
"text": "_Ranged Weapon Attack:_ +2 to hit, range 100/400 ft., one target. _Hit:_ 5 (1d10) piercing damage."
}
],
diff --git a/parser/monsters/kobold.json b/parser/monsters/kobold.json
index 0fe4603..7fc300e 100644
--- a/parser/monsters/kobold.json
+++ b/parser/monsters/kobold.json
@@ -28,44 +28,12 @@
"inventory": [
{
"name": "dagger",
- "cost": 200,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 4
- },
- "weight": 1.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "finesse",
- "light",
- "thrown"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +4 to hit, reach 5 ft., one target. _Hit:_ 4 (1d4 + 2) piercing damage."
},
{
"name": "sling",
- "cost": 10,
- "damage": {
- "dmg_type": "bludgeoning",
- "dmg_die_count": 1,
- "dmg_die_sides": 4
- },
- "weight": 0.0,
- "range": [
- 30,
- 120
- ],
- "reach": 0,
- "properties": [
- "ammunition"
- ],
- "type": "simple ranged weapons",
+ "type": "weapon",
"text": "_Ranged Weapon Attack:_ +4 to hit, range 30/120 ft., one target. _Hit:_ 4 (1d4 + 2) bludgeoning damage."
}
],
diff --git a/parser/monsters/lamia.json b/parser/monsters/lamia.json
index d2cee42..f881e3f 100644
--- a/parser/monsters/lamia.json
+++ b/parser/monsters/lamia.json
@@ -32,24 +32,7 @@
"inventory": [
{
"name": "dagger",
- "cost": 200,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 4
- },
- "weight": 1.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "finesse",
- "light",
- "thrown"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +5 to hit, reach 5 ft., one target. _Hit:_ 5 (1d4 + 3) piercing damage."
}
],
@@ -62,9 +45,35 @@
"description": "",
"features": [
{
- "name": "innate spellcasting",
+ "name": "spellcasting",
"text": "The lamia's innate spellcasting ability is Charisma (spell save DC 13). It can innately cast the following spells, requiring no material components. \nAt will: **_disguise self_** (any humanoid form), **_major image_** \n3/day each: **_charm person_**, **_mirror image_**, **_scrying_**, **_suggestion_** \n1/day: **_geas_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "cha",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "disguise self",
+ "major image"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "charm person",
+ "mirror image",
+ "scrying",
+ "suggestion"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "geas"
+ ]
+ }
+ ]
},
{
"name": "multiattack",
diff --git a/parser/monsters/lich.json b/parser/monsters/lich.json
index 7ebf22b..f7c3bca 100644
--- a/parser/monsters/lich.json
+++ b/parser/monsters/lich.json
@@ -113,7 +113,87 @@
{
"name": "spellcasting",
"text": "The lich is an 18th-level spellcaster. Its spellcasting ability is Intelligence (spell save DC 20, +12 to hit with spell attacks). The lich has the following wizard spells prepared: \nCantrips (at will): **_mage hand, prestidigitation, ray of frost_** \n1st level (4 slots): **_detect magic, magic missile, shield, thunderwave_** \n2nd level (3 slots): **_acid arrow, detect thoughts, invisibility, mirror image_** \n3rd level (3 slots): **_animate dead, counterspell, dispel magic, fireball_** \n4th level (3 slots): **_blight, dimension door_** \n5th level (3 slots): **_cloudkill, scrying_** \n6th level (1 slot): **_disintegrate, globe of invulnerability_** \n7th level (1 slot): **_finger of death, plane shift_** \n8th level (1 slot): **_dominate monster, power word stun_** \n9th level (1 slot): **_power word kill_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "int",
+ "innate": false,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "mage hand",
+ "prestidigitation",
+ "ray of frost"
+ ]
+ },
+ {
+ "slots": 4,
+ "spells": [
+ "detect magic",
+ "magic missile",
+ "shield",
+ "thunderwave"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "acid arrow",
+ "detect thoughts",
+ "invisibility",
+ "mirror image"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "animate dead",
+ "counterspell",
+ "dispel magic",
+ "fireball"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "blight",
+ "dimension door"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "cloudkill",
+ "scrying"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "disintegrate",
+ "globe of invulnerability"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "finger of death",
+ "plane shift"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "dominate monster",
+ "power word stun"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "power word kill"
+ ]
+ }
+ ]
},
{
"name": "turn resistance",
diff --git a/parser/monsters/lizardfolk.json b/parser/monsters/lizardfolk.json
index bc74009..a8272b6 100644
--- a/parser/monsters/lizardfolk.json
+++ b/parser/monsters/lizardfolk.json
@@ -30,31 +30,12 @@
"inventory": [
{
"name": "shield",
- "cost": 1000,
- "ac": 2,
- "strength": 0,
- "disadvantage": false,
- "weight": 6.0,
- "type": "shield"
+ "type": "armor",
+ "text": "shield armor"
},
{
"name": "javelin",
- "cost": 50,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 2.0,
- "range": [
- 30,
- 120
- ],
- "reach": 5,
- "properties": [
- "thrown"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee or _Ranged Weapon Attack:__ +4 to hit, reach 5 ft. or range 30/120 ft., one target. _Hit:_ 5 (1d6 + 2) piercing damage."
}
],
diff --git a/parser/monsters/mage.json b/parser/monsters/mage.json
index 44b7b06..70430cd 100644
--- a/parser/monsters/mage.json
+++ b/parser/monsters/mage.json
@@ -32,24 +32,7 @@
"inventory": [
{
"name": "dagger",
- "cost": 200,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 4
- },
- "weight": 1.0,
- "range": [
- 20,
- 60
- ],
- "reach": 5,
- "properties": [
- "finesse",
- "light",
- "thrown"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee or _Ranged Weapon Attack:__ +5 to hit, reach 5 ft. or range 20/60 ft., one target. _Hit:_ 4 (1d4 + 2) piercing damage."
}
],
@@ -59,7 +42,57 @@
{
"name": "spellcasting",
"text": "The mage is a 9th-level spellcaster. Its spellcasting ability is Intelligence (spell save DC 14, +6 to hit with spell attacks). The mage has the following wizard spells prepared: \nCantrips (at will): **_fire bolt, light, mage hand, prestidigitation_** \n1st level (4 slots): **_detect magic, mage armor, magic missile, shield_** \n2nd level (3 slots): **_misty step, suggestion_** \n3rd level (3 slots): **_counterspell, fireball, fly_** \n4th level (3 slots): **_greater invisibility, ice storm_** \n5th level (1 slot): **_cone of cold_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "int",
+ "innate": false,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "fire bolt",
+ "light",
+ "mage hand",
+ "prestidigitation"
+ ]
+ },
+ {
+ "slots": 4,
+ "spells": [
+ "detect magic",
+ "mage armor",
+ "magic missile",
+ "shield"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "misty step",
+ "suggestion"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "counterspell",
+ "fireball",
+ "fly"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "greater invisibility",
+ "ice storm"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "cone of cold"
+ ]
+ }
+ ]
}
],
"prof": 3
diff --git a/parser/monsters/magma_mephit.json b/parser/monsters/magma_mephit.json
index 0ed51a6..3398b5d 100644
--- a/parser/monsters/magma_mephit.json
+++ b/parser/monsters/magma_mephit.json
@@ -61,9 +61,19 @@
"type": "feature"
},
{
- "name": "innate spellcasting (1/day)",
+ "name": "spellcasting",
"text": "The mephit can innately cast **_heat metal_** (spell save DC 10), requiring no material components. Its innate spellcasting ability is Charisma.",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "cha",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 1,
+ "spells": [
+ "heat metal"
+ ]
+ }
+ ]
},
{
"name": "claws",
diff --git a/parser/monsters/marilith.json b/parser/monsters/marilith.json
index 11e8c19..041c07c 100644
--- a/parser/monsters/marilith.json
+++ b/parser/monsters/marilith.json
@@ -74,22 +74,7 @@
"inventory": [
{
"name": "longsword",
- "cost": 1500,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 2,
- "dmg_die_sides": 8
- },
- "weight": 3.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "versatile"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +9 to hit, reach 5 ft., one target. _Hit:_ 13 (2d8 + 4) slashing damage."
}
],
diff --git a/parser/monsters/medusa.json b/parser/monsters/medusa.json
index 25b5685..46c966c 100644
--- a/parser/monsters/medusa.json
+++ b/parser/monsters/medusa.json
@@ -33,45 +33,12 @@
"inventory": [
{
"name": "shortsword",
- "cost": 1000,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 2.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "finesse",
- "light"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +5 to hit, reach 5 ft., one target. _Hit:_ 5 (1d6 + 2) piercing damage."
},
{
"name": "longbow",
- "cost": 5000,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 8
- },
- "weight": 2.0,
- "range": [
- 150,
- 600
- ],
- "reach": 0,
- "properties": [
- "ammunition",
- "heavy",
- "two-handed"
- ],
- "type": "martial ranged weapons",
+ "type": "weapon",
"text": "_Ranged Weapon Attack:_ +5 to hit, range 150/600 ft., one target. _Hit:_ 6 (1d8 + 2) piercing damage plus 7 (2d6) poison damage."
}
],
diff --git a/parser/monsters/merfolk.json b/parser/monsters/merfolk.json
index 108d011..0c2b294 100644
--- a/parser/monsters/merfolk.json
+++ b/parser/monsters/merfolk.json
@@ -28,23 +28,7 @@
"inventory": [
{
"name": "spear",
- "cost": 100,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 3.0,
- "range": [
- 20,
- 60
- ],
- "reach": 5,
- "properties": [
- "thrown",
- "versatile"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee or _Ranged Weapon Attack:__ +2 to hit, reach 5 ft. or range 20/60 ft., one target. _Hit:_ 3 (1d6) piercing damage, or 4 (1d8) piercing damage if used with two hands to make a melee attack."
}
],
diff --git a/parser/monsters/minotaur.json b/parser/monsters/minotaur.json
index e30aa7d..e5407a3 100644
--- a/parser/monsters/minotaur.json
+++ b/parser/monsters/minotaur.json
@@ -30,23 +30,7 @@
"inventory": [
{
"name": "greataxe",
- "cost": 3000,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 2,
- "dmg_die_sides": 12
- },
- "weight": 7.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "heavy",
- "two-handed"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +6 to hit, reach 5 ft., one target. _Hit:_ 17 (2d12 + 4) slashing damage."
}
],
diff --git a/parser/monsters/minotaur_skeleton.json b/parser/monsters/minotaur_skeleton.json
index 98c3cc1..9ffacc9 100644
--- a/parser/monsters/minotaur_skeleton.json
+++ b/parser/monsters/minotaur_skeleton.json
@@ -47,23 +47,7 @@
"inventory": [
{
"name": "greataxe",
- "cost": 3000,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 2,
- "dmg_die_sides": 12
- },
- "weight": 7.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "heavy",
- "two-handed"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +6 to hit, reach 5 ft., one target. _Hit:_ 17 (2d12 + 4) slashing damage."
}
],
diff --git a/parser/monsters/mummy_lord.json b/parser/monsters/mummy_lord.json
index a7c9560..c1f0373 100644
--- a/parser/monsters/mummy_lord.json
+++ b/parser/monsters/mummy_lord.json
@@ -108,7 +108,61 @@
{
"name": "spellcasting",
"text": "The mummy lord is a 10th-level spellcaster. Its spellcasting ability is Wisdom (spell save DC 17, +9 to hit with spell attacks). The mummy lord has the following cleric spells prepared: \nCantrips (at will): **_sacred flame, thaumaturgy_** \n1st level (4 slots): **_command, guiding bolt, shield of faith_** \n2nd level (3 slots): **_hold person, silence, spiritual weapon_** \n3rd level (3 slots): **_animate dead, dispel magic_** \n4th level (3 slots): **_divination, guardian of faith_** \n5th level (2 slots): **_contagion, insect plague_** \n6th level (1 slot): **_harm_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "wis",
+ "innate": false,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "sacred flame",
+ "thaumaturgy"
+ ]
+ },
+ {
+ "slots": 4,
+ "spells": [
+ "command",
+ "guiding bolt",
+ "shield of faith"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "hold person",
+ "silence",
+ "spiritual weapon"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "animate dead",
+ "dispel magic"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "divination",
+ "guardian of faith"
+ ]
+ },
+ {
+ "slots": 2,
+ "spells": [
+ "contagion",
+ "insect plague"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "harm"
+ ]
+ }
+ ]
},
{
"name": "multiattack",
diff --git a/parser/monsters/night_hag.json b/parser/monsters/night_hag.json
index ec60910..ddb371d 100644
--- a/parser/monsters/night_hag.json
+++ b/parser/monsters/night_hag.json
@@ -72,9 +72,28 @@
"description": "",
"features": [
{
- "name": "innate spellcasting",
+ "name": "spellcasting",
"text": "The hag's innate spellcasting ability is Charisma (spell save DC 14, +6 to hit with spell attacks). She can innately cast the following spells, requiring no material components: \nAt will: **_detect magic_**, **_magic missile_** \n2/day each: **_plane shift_** (self only), **_ray of enfeeblement_**, **_sleep_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "cha",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "detect magic",
+ "magic missile"
+ ]
+ },
+ {
+ "slots": 2,
+ "spells": [
+ "plane shift",
+ "ray of enfeeblement",
+ "sleep"
+ ]
+ }
+ ]
},
{
"name": "magic resistance",
diff --git a/parser/monsters/noble.json b/parser/monsters/noble.json
index 26aad47..4c6494e 100644
--- a/parser/monsters/noble.json
+++ b/parser/monsters/noble.json
@@ -30,31 +30,12 @@
"inventory": [
{
"name": "breastplate",
- "cost": 40000,
- "ac": 14,
- "strength": 0,
- "disadvantage": false,
- "weight": 20.0,
- "type": "medium"
+ "type": "armor",
+ "text": "breastplate armor"
},
{
"name": "rapier",
- "cost": 2500,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 8
- },
- "weight": 2.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "finesse"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +3 to hit, reach 5 ft., one target. _Hit:_ 5 (1d8 + 1) piercing damage."
}
],
diff --git a/parser/monsters/ogre.json b/parser/monsters/ogre.json
index 56f4b91..11b98de 100644
--- a/parser/monsters/ogre.json
+++ b/parser/monsters/ogre.json
@@ -28,51 +28,17 @@
"inventory": [
{
"name": "hide",
- "cost": 1000,
- "ac": 12,
- "strength": 0,
- "disadvantage": false,
- "weight": 12.0,
- "type": "medium"
+ "type": "armor",
+ "text": "hide armor"
},
{
"name": "greatclub",
- "cost": 20,
- "damage": {
- "dmg_type": "bludgeoning",
- "dmg_die_count": 2,
- "dmg_die_sides": 8
- },
- "weight": 10.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "two-handed"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +6 to hit, reach 5 ft., one target. _Hit:_ 13 (2d8 + 4) bludgeoning damage."
},
{
"name": "javelin",
- "cost": 50,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 2,
- "dmg_die_sides": 6
- },
- "weight": 2.0,
- "range": [
- 30,
- 120
- ],
- "reach": 5,
- "properties": [
- "thrown"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee or Ranged Weapon Attack:_ +6 to hit, reach 5 ft. or range 30/120 ft., one target. _Hit:_ 11 (2d6 + 4) piercing damage."
}
],
diff --git a/parser/monsters/ogre_zombie.json b/parser/monsters/ogre_zombie.json
index 4bf5da7..dfafaaa 100644
--- a/parser/monsters/ogre_zombie.json
+++ b/parser/monsters/ogre_zombie.json
@@ -40,20 +40,7 @@
"inventory": [
{
"name": "morningstar",
- "cost": 1500,
- "damage": {
- "dmg_type": "bludgeoning",
- "dmg_die_count": 2,
- "dmg_die_sides": 8
- },
- "weight": 4.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +6 to hit, reach 5 ft., one target. _Hit:_ 13 (2d8 + 4) bludgeoning damage."
}
],
diff --git a/parser/monsters/oni.json b/parser/monsters/oni.json
index d13fcd2..5f770a1 100644
--- a/parser/monsters/oni.json
+++ b/parser/monsters/oni.json
@@ -37,33 +37,12 @@
"inventory": [
{
"name": "chain mail",
- "cost": 7500,
- "ac": 16,
- "strength": 13,
- "disadvantage": false,
- "weight": 55.0,
- "type": "heavy"
+ "type": "armor",
+ "text": "chain mail armor"
},
{
"name": "glaive",
- "cost": 2000,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 2,
- "dmg_die_sides": 10
- },
- "weight": 6.0,
- "range": [
- 0,
- 0
- ],
- "reach": 10,
- "properties": [
- "heavy",
- "reach",
- "two-handed"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +7 to hit, reach 10 ft., one target. _Hit:_ 15 (2d10 + 4) slashing damage, or 9 (1d10 + 4) slashing damage in Small or Medium form."
}
],
@@ -71,9 +50,29 @@
"description": "",
"features": [
{
- "name": "innate spellcasting",
+ "name": "spellcasting",
"text": "The oni's innate spellcasting ability is Charisma (spell save DC 13). The oni can innately cast the following spells, requiring no material components: \nAt will: **_darkness, invisibility_** \n1/day each: **_charm person, cone of cold, gaseous form, sleep_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "cha",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "darkness",
+ "invisibility"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "charm person",
+ "cone of cold",
+ "gaseous form",
+ "sleep"
+ ]
+ }
+ ]
},
{
"name": "magic weapons",
diff --git a/parser/monsters/orc.json b/parser/monsters/orc.json
index 82a2f52..22bc68c 100644
--- a/parser/monsters/orc.json
+++ b/parser/monsters/orc.json
@@ -30,52 +30,17 @@
"inventory": [
{
"name": "hide",
- "cost": 1000,
- "ac": 12,
- "strength": 0,
- "disadvantage": false,
- "weight": 12.0,
- "type": "medium"
+ "type": "armor",
+ "text": "hide armor"
},
{
"name": "greataxe",
- "cost": 3000,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 1,
- "dmg_die_sides": 12
- },
- "weight": 7.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "heavy",
- "two-handed"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +5 to hit, reach 5 ft., one target. _Hit:_ 9 (1d12 + 3) slashing damage."
},
{
"name": "javelin",
- "cost": 50,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 2.0,
- "range": [
- 30,
- 120
- ],
- "reach": 5,
- "properties": [
- "thrown"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee or _Ranged Weapon Attack:__ +5 to hit, reach 5 ft. or range 30/120 ft., one target. _Hit:_ 6 (1d6 + 3) piercing damage."
}
],
diff --git a/parser/monsters/pit_fiend.json b/parser/monsters/pit_fiend.json
index 0b6d077..430125c 100644
--- a/parser/monsters/pit_fiend.json
+++ b/parser/monsters/pit_fiend.json
@@ -72,20 +72,7 @@
"inventory": [
{
"name": "mace",
- "cost": 500,
- "damage": {
- "dmg_type": "bludgeoning",
- "dmg_die_count": 2,
- "dmg_die_sides": 6
- },
- "weight": 4.0,
- "range": [
- 0,
- 0
- ],
- "reach": 10,
- "properties": [],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +14 to hit, reach 10 ft., one target. _Hit:_ 15 (2d6 + 8) bludgeoning damage plus 21 (6d6) fire damage."
}
],
@@ -113,9 +100,27 @@
"type": "feature"
},
{
- "name": "innate spellcasting",
- "text": "The pit fiend's spellcasting ability is Charisma (spell save DC 21). The pit fiend can innately cast the following spells, requiring no material components: \nAt will: **_detect magic, fireball 3/day each: hold monster, wall of fire_**",
- "type": "feature"
+ "name": "spellcasting",
+ "text": "The pit fiend's spellcasting ability is Charisma (spell save DC 21). The pit fiend can innately cast the following spells, requiring no material components: \nAt will: **_detect magic, fireball_**\n 3/day each: **_hold monster, wall of fire_**",
+ "type": "spellcasting",
+ "spellcasting_ability": "cha",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "detect magic",
+ "fireball"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "hold monster",
+ "wall of fire"
+ ]
+ }
+ ]
},
{
"name": "multiattack",
diff --git a/parser/monsters/planetar.json b/parser/monsters/planetar.json
index b30097e..5eac3f8 100644
--- a/parser/monsters/planetar.json
+++ b/parser/monsters/planetar.json
@@ -70,23 +70,7 @@
"inventory": [
{
"name": "greatsword",
- "cost": 5000,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 4,
- "dmg_die_sides": 6
- },
- "weight": 6.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "heavy",
- "two-handed"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +12 to hit, reach 5 ft., one target. _Hit:_ 21 (4d6 + 7) slashing damage plus 22 (5d8) radiant damage."
}
],
@@ -109,9 +93,37 @@
"type": "feature"
},
{
- "name": "innate spellcasting",
+ "name": "spellcasting",
"text": "The planetar's spellcasting ability is Charisma (spell save DC 20). The planetar can innately cast the following spells, requiring no material components: \nAt will: **_detect evil and good_**, **_invisibility_** (self only) \n3/day each: **_blade barrier_**, **_dispel evil and good_**, **_flame strike_**, **_raise dead_** \n1/day each: **_commune_**, **_control weather_**, **_insect plague_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "cha",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "detect evil and good",
+ "invisibility"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "blade barrier",
+ "dispel evil and good",
+ "flame strike",
+ "raise dead"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "commune",
+ "control weather",
+ "insect plague"
+ ]
+ }
+ ]
},
{
"name": "magic resistance",
diff --git a/parser/monsters/priest.json b/parser/monsters/priest.json
index 87b00f1..af7f946 100644
--- a/parser/monsters/priest.json
+++ b/parser/monsters/priest.json
@@ -30,29 +30,12 @@
"inventory": [
{
"name": "chain shirt",
- "cost": 5000,
- "ac": 13,
- "strength": 0,
- "disadvantage": false,
- "weight": 20.0,
- "type": "medium"
+ "type": "armor",
+ "text": "chain shirt armor"
},
{
"name": "mace",
- "cost": 500,
- "damage": {
- "dmg_type": "bludgeoning",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 4.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +2 to hit, reach 5 ft., one target. _Hit:_ 3 (1d6) bludgeoning damage."
}
],
@@ -67,7 +50,41 @@
{
"name": "spellcasting",
"text": "The priest is a 5th-level spellcaster. Its spellcasting ability is Wisdom (spell save DC 13, +5 to hit with spell attacks). The priest has the following cleric spells prepared: \nCantrips (at will): **_light, sacred flame, thaumaturgy_** \n1st level (4 slots): **_cure wounds, guiding bolt, sanctuary_** \n2nd level (3 slots): **_lesser restoration, spiritual weapon_** \n3rd level (2 slots): **_dispel magic, spirit guardians_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "wis",
+ "innate": false,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "light",
+ "sacred flame",
+ "thaumaturgy"
+ ]
+ },
+ {
+ "slots": 4,
+ "spells": [
+ "cure wounds",
+ "guiding bolt",
+ "sanctuary"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "lesser restoration",
+ "spiritual weapon"
+ ]
+ },
+ {
+ "slots": 2,
+ "spells": [
+ "dispel magic",
+ "spirit guardians"
+ ]
+ }
+ ]
}
],
"prof": 2
diff --git a/parser/monsters/rakshasa.json b/parser/monsters/rakshasa.json
index c6b1e05..83927ac 100644
--- a/parser/monsters/rakshasa.json
+++ b/parser/monsters/rakshasa.json
@@ -62,9 +62,41 @@
"type": "feature"
},
{
- "name": "innate spellcasting",
+ "name": "spellcasting",
"text": "The rakshasa's innate spellcasting ability is Charisma (spell save DC 18, +10 to hit with spell attacks). The rakshasa can innately cast the following spells, requiring no material components: \nAt will: **_detect thoughts, disguise self, mage hand, minor illusion_** \n3/day each: **_charm person, detect magic, invisibility, major image, suggestion_** \n1/day each: **_dominate person, fly, plane shift, true seeing_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "cha",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "detect thoughts",
+ "disguise self",
+ "mage hand",
+ "minor illusion"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "charm person",
+ "detect magic",
+ "invisibility",
+ "major image",
+ "suggestion"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "dominate person",
+ "fly",
+ "plane shift",
+ "true seeing"
+ ]
+ }
+ ]
},
{
"name": "multiattack",
diff --git a/parser/monsters/sahuagin.json b/parser/monsters/sahuagin.json
index 12acafe..d06cb0e 100644
--- a/parser/monsters/sahuagin.json
+++ b/parser/monsters/sahuagin.json
@@ -30,23 +30,7 @@
"inventory": [
{
"name": "spear",
- "cost": 100,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 3.0,
- "range": [
- 20,
- 60
- ],
- "reach": 5,
- "properties": [
- "thrown",
- "versatile"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee or _Ranged Weapon Attack:__ +3 to hit, reach 5 ft. or range 20/60 ft., one target. _Hit:_ 4 (1d6 + 1) piercing damage, or 5 (1d8 + 1) piercing damage if used with two hands to make a melee attack."
}
],
diff --git a/parser/monsters/salamander.json b/parser/monsters/salamander.json
index 271e249..347bd8e 100644
--- a/parser/monsters/salamander.json
+++ b/parser/monsters/salamander.json
@@ -57,23 +57,7 @@
"inventory": [
{
"name": "spear",
- "cost": 100,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 2,
- "dmg_die_sides": 6
- },
- "weight": 3.0,
- "range": [
- 20,
- 60
- ],
- "reach": 5,
- "properties": [
- "thrown",
- "versatile"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee or _Ranged Weapon Attack:__ +7 to hit, reach 5 ft. or range 20 ft./60 ft., one target. _Hit:_ 11 (2d6 + 4) piercing damage, or 13 (2d8 + 4) piercing damage if used with two hands to make a melee attack, plus 3 (1d6) fire damage."
}
],
diff --git a/parser/monsters/satyr.json b/parser/monsters/satyr.json
index e3407fc..3721336 100644
--- a/parser/monsters/satyr.json
+++ b/parser/monsters/satyr.json
@@ -30,53 +30,17 @@
"inventory": [
{
"name": "leather",
- "cost": 1000,
- "ac": 11,
- "strength": 0,
- "disadvantage": false,
- "weight": 10.0,
- "type": "light"
+ "type": "armor",
+ "text": "leather armor"
},
{
"name": "shortsword",
- "cost": 1000,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 2.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "finesse",
- "light"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +5 to hit, reach 5 ft., one target. _Hit:_ 6 (1d6 + 3) piercing damage."
},
{
"name": "shortbow",
- "cost": 2500,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 2.0,
- "range": [
- 80,
- 320
- ],
- "reach": 0,
- "properties": [
- "ammunition",
- "two-handed"
- ],
- "type": "simple ranged weapons",
+ "type": "weapon",
"text": "_Ranged Weapon Attack:_ +5 to hit, range 80/320 ft., one target. _Hit:_ 6 (1d6 + 3) piercing damage."
}
],
diff --git a/parser/monsters/scout.json b/parser/monsters/scout.json
index e977fa8..d59773b 100644
--- a/parser/monsters/scout.json
+++ b/parser/monsters/scout.json
@@ -31,54 +31,17 @@
"inventory": [
{
"name": "leather",
- "cost": 1000,
- "ac": 11,
- "strength": 0,
- "disadvantage": false,
- "weight": 10.0,
- "type": "light"
+ "type": "armor",
+ "text": "leather armor"
},
{
"name": "shortsword",
- "cost": 1000,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 2.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "finesse",
- "light"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +4 to hit, reach 5 ft., one target. _Hit:_ 5 (1d6 + 2) piercing damage."
},
{
"name": "longbow",
- "cost": 5000,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 8
- },
- "weight": 2.0,
- "range": [
- 0,
- 0
- ],
- "reach": 0,
- "properties": [
- "ammunition",
- "heavy",
- "two-handed"
- ],
- "type": "martial ranged weapons",
+ "type": "weapon",
"text": "_Ranged Weapon Attack:_ +4 to hit, ranged 150/600 ft., one target. _Hit:_ 6 (1d8 + 2) piercing damage."
}
],
diff --git a/parser/monsters/skeleton.json b/parser/monsters/skeleton.json
index 10e1b7a..e377fea 100644
--- a/parser/monsters/skeleton.json
+++ b/parser/monsters/skeleton.json
@@ -47,44 +47,12 @@
"inventory": [
{
"name": "shortsword",
- "cost": 1000,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 2.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "finesse",
- "light"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +4 to hit, reach 5 ft., one target. _Hit:_ 5 (1d6 + 2) piercing damage."
},
{
"name": "shortbow",
- "cost": 2500,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 2.0,
- "range": [
- 80,
- 320
- ],
- "reach": 0,
- "properties": [
- "ammunition",
- "two-handed"
- ],
- "type": "simple ranged weapons",
+ "type": "weapon",
"text": "_Ranged Weapon Attack:_ +4 to hit, range 80/320 ft., one target. _Hit:_ 5 (1d6 + 2) piercing damage."
}
],
diff --git a/parser/monsters/solar.json b/parser/monsters/solar.json
index bdfa106..16ca1b2 100644
--- a/parser/monsters/solar.json
+++ b/parser/monsters/solar.json
@@ -83,23 +83,7 @@
"inventory": [
{
"name": "greatsword",
- "cost": 5000,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 4,
- "dmg_die_sides": 6
- },
- "weight": 6.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "heavy",
- "two-handed"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +15 to hit, reach 5 ft., one target. _Hit:_ 22 (4d6 + 8) slashing damage plus 27 (6d8) radiant damage."
}
],
@@ -122,9 +106,35 @@
"type": "feature"
},
{
- "name": "innate spellcasting",
+ "name": "spellcasting",
"text": "The solar's spellcasting ability is Charisma (spell save DC 25). It can innately cast the following spells, requiring no material components: \nAt will: **_detect evil and good_**, **_invisibility_** (self only) \n3/day each: **_blade barrier_**, **_dispel evil and good_**, **_resurrection_** \n1/day each: **_commune_**, **_control weather_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "cha",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "detect evil and good",
+ "invisibility"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "blade barrier",
+ "dispel evil and good",
+ "resurrection"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "commune",
+ "control weather"
+ ]
+ }
+ ]
},
{
"name": "magic resistance",
diff --git a/parser/monsters/spirit_naga.json b/parser/monsters/spirit_naga.json
index 8209aab..d7ba61d 100644
--- a/parser/monsters/spirit_naga.json
+++ b/parser/monsters/spirit_naga.json
@@ -61,7 +61,54 @@
{
"name": "spellcasting",
"text": "The naga is a 10th-level spellcaster. Its spellcasting ability is Intelligence (spell save DC 14, +6 to hit with spell attacks), and it needs only verbal components to cast its spells. It has the following wizard spells prepared: \nCantrips (at will): **_mage hand, minor illusion, ray of frost_** \n1st level (4 slots): **_charm person, detect magic, sleep_** \n2nd level (3 slots): **_detect thoughts, hold person_** \n3rd level (3 slots): **_lightning bolt, water breathing_** \n4th level (3 slots): **_blight, dimension door_** \n5th level (2 slots): **_dominate person_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "int",
+ "innate": false,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "mage hand",
+ "minor illusion",
+ "ray of frost"
+ ]
+ },
+ {
+ "slots": 4,
+ "spells": [
+ "charm person",
+ "detect magic",
+ "sleep"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "detect thoughts",
+ "hold person"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "lightning bolt",
+ "water breathing"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "blight",
+ "dimension door"
+ ]
+ },
+ {
+ "slots": 2,
+ "spells": [
+ "dominate person"
+ ]
+ }
+ ]
},
{
"name": "bite",
diff --git a/parser/monsters/sprite.json b/parser/monsters/sprite.json
index 484c00e..42c85ff 100644
--- a/parser/monsters/sprite.json
+++ b/parser/monsters/sprite.json
@@ -29,52 +29,17 @@
"inventory": [
{
"name": "leather",
- "cost": 1000,
- "ac": 11,
- "strength": 0,
- "disadvantage": false,
- "weight": 10.0,
- "type": "light"
+ "type": "armor",
+ "text": "leather armor"
},
{
"name": "longsword",
- "cost": 1500,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 1,
- "dmg_die_sides": 1
- },
- "weight": 3.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "versatile"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +2 to hit, reach 5 ft., one target. _Hit:_ 1 slashing damage."
},
{
"name": "shortbow",
- "cost": 2500,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 1
- },
- "weight": 2.0,
- "range": [
- 40,
- 160
- ],
- "reach": 0,
- "properties": [
- "ammunition",
- "two-handed"
- ],
- "type": "simple ranged weapons",
+ "type": "weapon",
"text": "_Ranged Weapon Attack:_ +6 to hit, range 40/160 ft., one target. _Hit:_ 1 piercing damage, and the target must succeed on a DC 10 Constitution saving throw or become poisoned for 1 minute. If its saving throw result is 5 or lower, the poisoned target falls unconscious for the same duration, or until it takes damage or another creature takes an action to shake it awake."
}
],
diff --git a/parser/monsters/spy.json b/parser/monsters/spy.json
index 56f6fb6..ec5d4a6 100644
--- a/parser/monsters/spy.json
+++ b/parser/monsters/spy.json
@@ -34,45 +34,12 @@
"inventory": [
{
"name": "shortsword",
- "cost": 1000,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 2.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "finesse",
- "light"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +4 to hit, reach 5 ft., one target. _Hit:_ 5 (1d6 + 2) piercing damage."
},
{
"name": "hand crossbow",
- "cost": 7500,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 3.0,
- "range": [
- 30,
- 120
- ],
- "reach": 0,
- "properties": [
- "ammunition",
- "light",
- "loading"
- ],
- "type": "martial ranged weapons",
+ "type": "weapon",
"text": "_Ranged Weapon Attack:_ +4 to hit, range 30/120 ft., one target. _Hit:_ 5 (1d6 + 2) piercing damage."
}
],
diff --git a/parser/monsters/steam_mephit.json b/parser/monsters/steam_mephit.json
index 70942da..f8c7d39 100644
--- a/parser/monsters/steam_mephit.json
+++ b/parser/monsters/steam_mephit.json
@@ -49,9 +49,19 @@
"type": "feature"
},
{
- "name": "innate spellcasting (1/day)",
+ "name": "spellcasting",
"text": "The mephit can innately cast **_blur_**, requiring no material components. Its innate spellcasting ability is Charisma.",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "cha",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 1,
+ "spells": [
+ "blur"
+ ]
+ }
+ ]
},
{
"name": "claws",
diff --git a/parser/monsters/storm_giant.json b/parser/monsters/storm_giant.json
index d982436..bc4fc80 100644
--- a/parser/monsters/storm_giant.json
+++ b/parser/monsters/storm_giant.json
@@ -50,32 +50,12 @@
"inventory": [
{
"name": "scale mail",
- "cost": 5000,
- "ac": 14,
- "strength": 0,
- "disadvantage": false,
- "weight": 45.0,
- "type": "medium"
+ "type": "armor",
+ "text": "scale mail armor"
},
{
"name": "greatsword",
- "cost": 5000,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 6,
- "dmg_die_sides": 6
- },
- "weight": 6.0,
- "range": [
- 0,
- 0
- ],
- "reach": 10,
- "properties": [
- "heavy",
- "two-handed"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +14 to hit, reach 10 ft., one target. _Hit:_ 30 (6d6 + 9) slashing damage."
}
],
@@ -88,9 +68,29 @@
"type": "feature"
},
{
- "name": "innate spellcasting",
+ "name": "spellcasting",
"text": "The giant's innate spellcasting ability is Charisma (spell save DC 17). It can innately cast the following spells, requiring no material components: \nAt will: **_detect magic_**, **_feather fall_**, **_levitate_**, **_light_** \n3/day each: **_control weather_**, **_water breathing_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "cha",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "detect magic",
+ "feather fall",
+ "levitate",
+ "light"
+ ]
+ },
+ {
+ "slots": 3,
+ "spells": [
+ "control weather",
+ "water breathing"
+ ]
+ }
+ ]
},
{
"name": "multiattack",
diff --git a/parser/monsters/thug.json b/parser/monsters/thug.json
index 802dc7a..02eac96 100644
--- a/parser/monsters/thug.json
+++ b/parser/monsters/thug.json
@@ -28,52 +28,17 @@
"inventory": [
{
"name": "leather",
- "cost": 1000,
- "ac": 11,
- "strength": 0,
- "disadvantage": false,
- "weight": 10.0,
- "type": "light"
+ "type": "armor",
+ "text": "leather armor"
},
{
"name": "mace",
- "cost": 500,
- "damage": {
- "dmg_type": "bludgeoning",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 4.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +4 to hit, reach 5 ft., one creature. _Hit:_ 5 (1d6 + 2) bludgeoning damage."
},
{
"name": "heavy crossbow",
- "cost": 5000,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 10
- },
- "weight": 18.0,
- "range": [
- 100,
- 400
- ],
- "reach": 0,
- "properties": [
- "ammunition",
- "heavy",
- "loading",
- "two-handed"
- ],
- "type": "martial ranged weapons",
+ "type": "weapon",
"text": "_Ranged Weapon Attack:_ +2 to hit, range 100/400 ft., one target. _Hit:_ 5 (1d10) piercing damage."
}
],
diff --git a/parser/monsters/tribal_warrior.json b/parser/monsters/tribal_warrior.json
index f581958..c0ff134 100644
--- a/parser/monsters/tribal_warrior.json
+++ b/parser/monsters/tribal_warrior.json
@@ -26,32 +26,12 @@
"inventory": [
{
"name": "hide",
- "cost": 1000,
- "ac": 12,
- "strength": 0,
- "disadvantage": false,
- "weight": 12.0,
- "type": "medium"
+ "type": "armor",
+ "text": "hide armor"
},
{
"name": "spear",
- "cost": 100,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 3.0,
- "range": [
- 20,
- 60
- ],
- "reach": 5,
- "properties": [
- "thrown",
- "versatile"
- ],
- "type": "simple melee weapons",
+ "type": "weapon",
"text": "_Melee or _Ranged Weapon Attack:__ +3 to hit, reach 5 ft. or range 20/60 ft., one target. _Hit:_ 4 (1d6 + 1) piercing damage, or 5 (1d8 + 1) piercing damage if used with two hands to make a melee attack."
}
],
diff --git a/parser/monsters/unicorn.json b/parser/monsters/unicorn.json
index a1014ac..fa9ff39 100644
--- a/parser/monsters/unicorn.json
+++ b/parser/monsters/unicorn.json
@@ -53,9 +53,29 @@
"type": "feature"
},
{
- "name": "innate spellcasting",
+ "name": "spellcasting",
"text": "The unicorn's innate spellcasting ability is Charisma (spell save DC 14). The unicorn can innately cast the following spells, requiring no components: \nAt will: **_detect evil and good, druidcraft, pass without trace_** \n1/day each: **_calm emotions, dispel evil and good, entangle_**",
- "type": "feature"
+ "type": "spellcasting",
+ "spellcasting_ability": "cha",
+ "innate": true,
+ "levels": [
+ {
+ "slots": 0,
+ "spells": [
+ "detect evil and good",
+ "druidcraft",
+ "pass without trace"
+ ]
+ },
+ {
+ "slots": 1,
+ "spells": [
+ "calm emotions",
+ "dispel evil and good",
+ "entangle"
+ ]
+ }
+ ]
},
{
"name": "magic resistance",
diff --git a/parser/monsters/veteran.json b/parser/monsters/veteran.json
index 5968267..8186d1b 100644
--- a/parser/monsters/veteran.json
+++ b/parser/monsters/veteran.json
@@ -29,75 +29,22 @@
"inventory": [
{
"name": "splint",
- "cost": 20000,
- "ac": 17,
- "strength": 15,
- "disadvantage": false,
- "weight": 60.0,
- "type": "heavy"
+ "type": "armor",
+ "text": "splint armor"
},
{
"name": "longsword",
- "cost": 1500,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 1,
- "dmg_die_sides": 8
- },
- "weight": 3.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "versatile"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +5 to hit, reach 5 ft., one target. _Hit:_ 7 (1d8 + 3) slashing damage, or 8 (1d10 + 3) slashing damage if used with two hands."
},
{
"name": "shortsword",
- "cost": 1000,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 6
- },
- "weight": 2.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "finesse",
- "light"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +5 to hit, reach 5 ft., one target. _Hit:_ 6 (1d6 + 3) piercing damage."
},
{
"name": "heavy crossbow",
- "cost": 5000,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 10
- },
- "weight": 18.0,
- "range": [
- 100,
- 400
- ],
- "reach": 0,
- "properties": [
- "ammunition",
- "heavy",
- "loading",
- "two-handed"
- ],
- "type": "martial ranged weapons",
+ "type": "weapon",
"text": "_Ranged Weapon Attack:_ +3 to hit, range 100/400 ft., one target. _Hit:_ 6 (1d10 + 1) piercing damage."
}
],
diff --git a/parser/monsters/wight.json b/parser/monsters/wight.json
index 63dc25e..65a7223 100644
--- a/parser/monsters/wight.json
+++ b/parser/monsters/wight.json
@@ -71,53 +71,17 @@
"inventory": [
{
"name": "studded leather",
- "cost": 4500,
- "ac": 12,
- "strength": 0,
- "disadvantage": false,
- "weight": 13.0,
- "type": "light"
+ "type": "armor",
+ "text": "studded leather armor"
},
{
"name": "longsword",
- "cost": 1500,
- "damage": {
- "dmg_type": "slashing",
- "dmg_die_count": 1,
- "dmg_die_sides": 8
- },
- "weight": 3.0,
- "range": [
- 0,
- 0
- ],
- "reach": 5,
- "properties": [
- "versatile"
- ],
- "type": "martial melee weapons",
+ "type": "weapon",
"text": "_Melee Weapon Attack:_ +4 to hit, reach 5 ft., one target. _Hit:_ 6 (1d8 + 2) slashing damage, or 7 (1d10 + 2) slashing damage if used with two hands."
},
{
"name": "longbow",
- "cost": 5000,
- "damage": {
- "dmg_type": "piercing",
- "dmg_die_count": 1,
- "dmg_die_sides": 8
- },
- "weight": 2.0,
- "range": [
- 150,
- 600
- ],
- "reach": 0,
- "properties": [
- "ammunition",
- "heavy",
- "two-handed"
- ],
- "type": "martial ranged weapons",
+ "type": "weapon",
"text": "_Ranged Weapon Attack:_ +4 to hit, range 150/600 ft., one target. _Hit:_ 6 (1d8 + 2) piercing damage."
}
],