Cleaned up the PDF for GM monster stats.

This commit is contained in:
Mark Wolfman
2021-06-09 21:22:12 -05:00
parent 62f6876f69
commit bd895c4efc
12 changed files with 490 additions and 80 deletions
+33 -26
View File
@@ -9,7 +9,7 @@
\DndMonsterBasics[
armor-class = {[[ monster.armor_class ]]},
hit-points = {[[ monster.hp_max ]] ([[ monster.hit_dice ]])},
speed = {[[ monster.speed ]] ft.[% if monster.swim_speed %], [[ monster.swim_speed ]]ft. swim[% endif %][% if monster.fly_speed %], [[ monster.fly_speed ]] ft. fly[% endif %]},
speed = {[[ monster.speed ]] ft.[% if monster.swim_speed %], [[ monster.swim_speed ]] ft. swim[% endif %][% if monster.fly_speed %], [[ monster.fly_speed ]] ft. fly[% endif %][% if monster.burrow_speed %], [[ monster.burrow_speed ]] ft. burrow[% endif %]},
]
\DndMonsterAbilityScores[
@@ -22,16 +22,16 @@
]
\DndMonsterDetails[
%saving-throws = {Str +0, Dex +0, Con +0, Int +0, Wis +0, Cha +0},
skills = {[[ monster.skills ]]},
%damage-vulnerabilities = {cold},
damage-resistances = {[[ monster.damage_resistance ]]},
%damage-immunities = {poison},
condition-immunities = {[[ monster.condition_immunities ]]},
senses = {[[ monster.senses ]]},
languages = {[% if monster.languages %][[ monster.languages ]][% else %] --- [% endif %]},
challenge = {[[ monster.challenge_rating ]]},
]
saving-throws = {[[ monster.saving_throws ]]},
skills = {[[ monster.skills ]]},
damage-vulnerabilities = {[[ monster.damage_vulnerabilities ]]},
damage-resistances = {[[ monster.damage_resistances ]]},
damage-immunities = {[[ monster.damage_immunities ]]},
condition-immunities = {[[ monster.condition_immunities ]]},
senses = {[[ monster.senses ]]},
languages = {[% if monster.languages %][[ monster.languages ]][% else %] --- [% endif %]},
challenge = {[[ monster.challenge_rating ]]},
]
%\DndMonsterSection{Actions}
[[ monster.__doc__ | rst_to_latex(top_heading_level=2) ]]
\end{DndMonster}
@@ -45,7 +45,7 @@
\subsection*{[[ monster.description ]]}
[% endif %]
\begin{tabular}{c | c | c}
\begin{tabular}{c c c}
Armor Class & Hit Points & Speed \\
\hline
[[ monster.armor_class ]] &
@@ -57,31 +57,38 @@
[% if monster.fly_speed %]
& & [[ monster.fly_speed ]] fly \\
[% endif %]
[% if monster.burrow_speed %]
& & [[ monster.burrow_speed ]] burrow \\
[% endif %]
\end{tabular}
\vspace{0.2cm}
\begin{tabular}{c | c | c}
STR & DEX & CON \\
\begin{tabular}{c c c c c c}
STR & DEX & CON & INT & WIS & CHA \\
\hline
[[ monster.strength.value ]] ([[ monster.strength.modifier|mod_str ]]) &
[[ monster.dexterity.value ]] ([[ monster.dexterity.modifier|mod_str ]]) &
[[ monster.constitution.value ]] ([[ monster.constitution.modifier|mod_str ]]) \\
[[ monster.strength.value ]] & [[ monster.dexterity.value ]] & [[ monster.constitution.value ]] &
[[ monster.intelligence.value ]] & [[ monster.wisdom.value ]] & [[ monster.charisma.value ]] \\
([[ monster.strength.modifier|mod_str ]]) & ([[ monster.dexterity.modifier|mod_str ]]) &
([[ monster.constitution.modifier|mod_str ]]) & ([[ monster.intelligence.modifier|mod_str ]]) &
([[ monster.wisdom.modifier|mod_str ]]) & ([[ monster.charisma.modifier|mod_str ]]) \\
\end{tabular}
\vspace{0.2cm}
\begin{tabular}{p{0.1\textwidth} p{0.32\textwidth}}
\textbf{Skills:} & [[ monster.skills ]] \\
\textbf{Senses:} & [[ monster.senses ]] \\
\textbf{Languages:} & [[ monster.languages ]] \\
\textbf{Resistance:} & [[ monster.damage_resistance ]] \\
\textbf{Immunities:} & [[ monster.condition_immunities ]] \\
\end{tabular}
\begin{description}
\item [Senses:] [% if monster.senses != "" %][[ monster.senses ]][% else %]--[% endif %]
\item [Languages:] [% if monster.languages != "" %][[ monster.languages ]][% else %]--[% endif %]
[% if monster.damage_resistances != "" %]\item [Damage Resistances:] [[ monster.damage_resistances ]][% endif %]
[% if monster.damage_immunities != "" %]\item [Damage Immunities:] [[ monster.damage_immunities ]][% endif %]
[% if monster.damage_vulnerabilities != "" %]\item [Damage Vulnerabilities:] [[ monster.damage_vulnerabilities ]][% endif %]
[% if monster.condition_immunities != "" %]\item [Condition Immunuties:] [[ monster.condition_immunities ]][% endif %]
[% if monster.saving_throws != "" %]\item [Saving Throws:] [[ monster.saving_throws ]][% endif %]
\item [Challenge:] [[ monster.challenge_rating ]]
\end{description}
\vspace{0.2cm}
[[ monster.__doc__ | rst_to_latex(top_heading_level=2) ]]
} %\color
@@ -1,7 +1,7 @@
\section*{Party}
[% if use_dnd_decorations %]
\begin{DndTable}[header=Nice Table]{l c c c c c c c c}
\begin{DndTable}{r c c c c c c c c}
& AC & Str & Dex & Con & Int & Wis & Cha \\
[% for member in party %]
[[ member.name[:14] ]]
@@ -16,7 +16,7 @@
[% endfor %]
\end{DndTable}
[% else %]
\begin{tabular}{l | c c c c c c c}
\begin{tabular}{r | c c c c c c c}
& AC & Str & Dex & Con & Int & Wis & Cha \\
\hline\hline
[% for member in party %]
+20 -3
View File
@@ -9,7 +9,7 @@ import re
from pathlib import Path
from multiprocessing import Pool, cpu_count
from itertools import product
from typing import Union, Mapping, Sequence, Optional
from typing import Union, Sequence, Optional
from jinja2 import Environment, PackageLoader
@@ -93,7 +93,7 @@ def create_monsters_tex(
def create_party_summary_tex(
party: Sequence[Entity],
use_dnd_decorations: bool = False,
) -> str:
) -> str:
template = jinja_env.get_template("party_summary_template.tex")
return template.render(party=party, use_dnd_decorations=use_dnd_decorations)
@@ -211,7 +211,24 @@ def make_gm_sheet(
create_party_summary_tex(party, use_dnd_decorations=fancy_decorations)
)
# Add the monsters
monsters_ = [findattr(monsters, m)() for m in gm_props.get("monsters", [])]
monsters_ = []
for monster in gm_props.get("monsters", []):
if isinstance(monster, monsters.Monster):
# It's already a monster, so just add it
new_monster = monster
else:
try:
MyMonster = findattr(monsters, monster)
except AttributeError:
msg = (
f"Monster '{monster}' not found. Please add it to"
" ``monsters.py``"
)
warnings.warn(msg)
continue
else:
new_monster = MyMonster()
monsters_.append(new_monster)
if len(monsters_) > 0:
tex.append(
create_monsters_tex(monsters_, use_dnd_decorations=fancy_decorations)
+6
View File
@@ -14,12 +14,18 @@ class Monster(Entity):
description = ""
challenge_rating = 0
skills = "Perception +3, Stealth +4"
damage_resistances = ""
damage_immunities = ""
damane_vulnerabilities = ""
condition_immunities = ""
saving_throws = ""
# TODO: Consider refactoring stats.Speed to consider all of these
# just like we do stats.Ability
swim_speed = 0
fly_speed = 0
climb_speed = 0
burrow_speed = 0
hp_max = 10
hit_dice = "1d6"
+53 -18
View File
@@ -9,21 +9,51 @@ from dungeonsheets.stats import Ability
class Aboleth(Monster):
"""
**Amphibious**: The aboleth can breathe air and water.
"""Amphibious
The aboleth can breathe air and water.
Mucous Cloud
While underwater, the aboleth is surrounded by transformative
mucus. A creature that touches the aboleth or that hits it with
a melee attack while within 5 ft. of it must make a DC 14
Constitution saving throw. On a failure, the creature is
diseased for 1d4 hours. The diseased creature can breathe only
underwater.
Probing Telepathy
If a creature communicates telepathically with the aboleth, the
aboleth learns the creature's greatest desires if the aboleth
can see the creature.
Multiattack
The aboleth makes three tentacle attacks.
Tentacle
Melee Weapon Attack: +9 to hit, reach 10 ft., one target. Hit:
12 (2d6 + 5) bludgeoning damage. If the target is a creature, it
must succeed on a DC 14 Constitution saving throw or become
diseased. The disease has no effect for 1 minute and can be
removed by any magic that cures disease. After 1 minute, the
diseased creature's skin becomes translucent and slimy, the
creature can't regain hit points unless it is underwater, and
the disease can be removed only by heal or another
disease-curing spell of 6th level or higher. When the creature
is outside a body of water, it takes 6 (1d12) acid damage every
10 minutes unless moisture is applied to the skin before 10
minutes have passed.
Tail
Melee Weapon Attack: +9 to hit, reach 10 ft. one target. Hit: 15
(3d6 + 5) bludgeoning damage.
Enslave
The aboleth targets one creature it can see within 30 ft. of
it. The target must succeed on a DC 14 Wisdom saving throw or be
magically charmed by the aboleth until the aboleth dies or until
it is on a different plane of existence from the target. The
charmed target is under the aboleth's control and can't take
reactions, and the aboleth and the target can communicate
telepathically with each other over any distance.
Whenever the charmed target takes damage, the target can repeat
the saving throw. On a success, the effect ends. No more than
once every 24 hours, the target can also repeat the saving throw
when it is at least 1 mile away from the aboleth.
**Mucous Cloud**: While underwater, the aboleth is surrounded by transformative mucus. A creature that touches the aboleth or that hits it with a melee attack while within 5 ft. of it must make a DC 14 Constitution saving throw. On a failure, the creature is diseased for 1d4 hours. The diseased creature can breathe only underwater.
**Probing Telepathy**: If a creature communicates telepathically with the aboleth, the aboleth learns the creature's greatest desires if the aboleth can see the creature.
**Multiattack**: The aboleth makes three tentacle attacks.
**Tentacle**: Melee Weapon Attack: +9 to hit, reach 10 ft., one target. Hit: 12 (2d6 + 5) bludgeoning damage. If the target is a creature, it must succeed on a DC 14 Constitution saving throw or become diseased. The disease has no effect for 1 minute and can be removed by any magic that cures disease. After 1 minute, the diseased creature's skin becomes translucent and slimy, the creature can't regain hit points unless it is underwater, and the disease can be removed only by heal or another disease-curing spell of 6th level or higher. When the creature is outside a body of water, it takes 6 (1d12) acid damage every 10 minutes unless moisture is applied to the skin before 10 minutes have passed.
**Tail**: Melee Weapon Attack: +9 to hit, reach 10 ft. one target. Hit: 15 (3d6 + 5) bludgeoning damage.
**Enslave**: The aboleth targets one creature it can see within 30 ft. of it. The target must succeed on a DC 14 Wisdom saving throw or be magically charmed by the aboleth until the aboleth dies or until it is on a different plane of existence from the target. The charmed target is under the aboleth's control and can't take reactions, and the aboleth and the target can communicate telepathically with each other over any distance.
Whenever the charmed target takes damage, the target can repeat the saving throw. On a success, the effect ends. No more than once every 24 hours, the target can also repeat the saving throw when it is at least 1 mile away from the aboleth.
"""
name = "Aboleth"
@@ -48,15 +78,20 @@ class Aboleth(Monster):
class Acolyte(Monster):
"""
**Spellcasting**: 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:
"""Spellcasting
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:
- Cantrips (at will): light, sacred flame, thaumaturgy
- 1st level (3 slots): bless, cure wounds, sanctuary
**Club**: Melee Weapon Attack: +2 to hit, reach 5 ft., one target. Hit: 2 (1d4) bludgeoning damage.
"""
Club
Melee Weapon Attack: +2 to hit, reach 5 ft., one target. Hit: 2
(1d4) bludgeoning damage.
"""
name = "Acolyte"
description = "Medium humanoid, any alignment"
challenge_rating = 0.25
+154 -17
View File
@@ -425,17 +425,88 @@ class BlackDragonWyrmling(Monster):
hit_dice = "6d8"
# PotA
class BlackEarthPriest(Monster):
"""Spellcasting.
The priest is a 5th-level spellcaster. Its spellcasting ability
is Charisma (spell save DC 13, +5 to hit with spell attacks). It
knows the following sorcerer spells (an asterisked spell is from
*Princes of the Apocalypse* appendix B):
Cantrips (at will):
acid splash, blade ward, light, mending, mold earth*
1st level (4 slots):
earth tremor,* expeditious retreat, shield
2nd level (3 slots):
shatter, spider climb
3rd level (2 slots):
slow
Multiattack.
The priest makes two melee attacks.
Glaive.
*Melee Weapon Attack:* +4 to hit, reach 10 ft., one
target. *Hit:* 7 (1d10 + 2) slashing damage.
Unyielding.
When the priest is subjected to an effect that would move it,
knock it prone, or both, it can use its reaction to be neither
moved nor knocked prone.
The priests of the Black Earth are drivers and organizers of
Ogrémoch's cult. They are the true believers, seeing Ogrémoch as a
divine force, and they have developed a twisted dogma to explain
how the evil of elemental earth is destined to remake the world
and rule over all. The Black Earth priests form a cabal of leaders
whose fanaticism and magical power serve as the backbone of the
cult. Individuals ofunusual power hold higher rank in the cult,
but the priests provide the cult leader with his or her authority
over the rest of Ogrémoch's followers.
"""
name = "Black Earth Priest"
description = "Medium humanoid (human), neutral evil"
challenge_rating = 3
armor_class = 17
skills = "Intimidation +5, Religion +3, Persuasion +5"
senses = "passive Perception 10"
languages = "Common, Terran"
strength = Ability(15)
dexterity = Ability(11)
constitution = Ability(14)
intelligence = Ability(12)
wisdom = Ability(10)
charisma = Ability(16)
speed = 30
swim_speed = 0
fly_speed = 0
climb_speed = 0
hp_max = 45
hit_dice = "7d8 + 14"
class BlackPudding(Monster):
"""Amorphous.
The pudding can move through a space as narrow as 1 inch wide without squeezing.
Corrosive Form.
A creature that touches the pudding or hits it with a melee
attack while within 5 feet of it takes 4 (1d8) acid damage. Any
nonmagical weapon made of metal or wood that hits the pudding
corrodes. After dealing damage, the weapon takes a permanent and
cumulative -1 penalty to damage rolls. If its penalty drops to
-5, the weapon is destroyed. Nonmagical ammunition made of metal
or wood that hits the pudding is destroyed after dealing
damage. The pudding can eat through 2-inch-thick, nonmagical
wood or metal in 1 round.
Spider Climb.
The pudding can climb difficult surfaces, including upside down
on ceilings, without needing to make an ability check.
Pseudopod.
Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 6
(1d6 + 3) bludgeoning damage plus 18 (4d8) acid damage. In
addition, nonmagical armor worn by the target is partly
dissolved and takes a permanent and cumulative -1 penalty to the
AC it offers. The armor is destroyed if the penalty reduces its
AC to 10.
"""
**Amorphous**: The pudding can move through a space as narrow as 1 inch wide without squeezing.
**Corrosive Form**: A creature that touches the pudding or hits it with a melee attack while within 5 feet of it takes 4 (1d8) acid damage. Any nonmagical weapon made of metal or wood that hits the pudding corrodes. After dealing damage, the weapon takes a permanent and cumulative -1 penalty to damage rolls. If its penalty drops to -5, the weapon is destroyed. Nonmagical ammunition made of metal or wood that hits the pudding is destroyed after dealing damage. The pudding can eat through 2-inch-thick, nonmagical wood or metal in 1 round.
**Spider Climb**: The pudding can climb difficult surfaces, including upside down on ceilings, without needing to make an ability check.
**Pseudopod**: Melee Weapon Attack: +5 to hit, reach 5 ft., one target. Hit: 6 (1d6 + 3) bludgeoning damage plus 18 (4d8) acid damage. In addition, nonmagical armor worn by the target is partly dissolved and takes a permanent and cumulative -1 penalty to the AC it offers. The armor is destroyed if the penalty reduces its AC to 10.
"""
name = "Black Pudding"
description = "Large ooze, unaligned"
challenge_rating = 4
@@ -735,15 +806,81 @@ class Bugbear(Monster):
hit_dice = "5d8"
# PotA
class Burrowshark(Monster):
"""Elite warriors of the earth cult, burrowsharks are fierce champions
who ride trained bulettes into battle. While their powerful mounts
rend and tear foes to pieces, burrowsharks leap to the ground and
cut down their foes without mercy.
Burrowsharks are much like Black Earth guards, since both have
uncanny footing and special armor. For burrowsharks, an additional
gift of Ogremoch's might establishes a magical bond between the
burrowshark and a bulette, allowing the rider to burrow with its
mount and sense what its mount senses.
Bond of the Black Earth
The burrowshark is magically bound to a bulette trained to serve
as its mount. While mounted on its bulette, the burrowshark
shares the bulette's sense and can ride the bulette while it
burrows. The bonded bulette obeys the burrowshark's commands. If
its mount dies, the burrowshark can train a new bulette to serve
as its bonded mount, a process requiring a month.
Multiattack
The burrowshark makes three melee attacks.
Spear
Melee or ranged weapon attack: +6 to hit, reach 5ft. or range
20/60ft., one target. Hit: 7 (1d6+4) piercing damage, or 8
(1d8+4) piercing damage if used with two hands to make a melee
attack.
Unyielding
When the burrowshark is subjected to an effect that would move
it, knock it prone, or both, it can use its reaction to be
neither moved nor knocked prone.
"""
name = "Burrowshark"
description = "Medium humanoid (human), neutral evil"
challenge_rating = 4
armor_class = 18
skills = "Animal handling +2, Athletics +6, Intimidation + 3, Perception +2"
senses = "passive Perception 12"
languages = "Common"
strength = Ability(18)
dexterity = Ability(12)
constitution = Ability(16)
intelligence = Ability(10)
wisdom = Ability(11)
charisma = Ability(13)
speed = 30
swim_speed = 0
fly_speed = 0
climb_speed = 0
hp_max = 82
hit_dice = "11d8+33"
class Bulette(Monster):
"""Standing Leap
The bulette's long jump is up to 30 ft. and its high jump is up
to 15 ft., with or without a running start.
Bite
Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 30
(4d12 + 4) piercing damage.
Deadly Leap
If the bulette jumps at least 15 ft. as part of its movement, it
can then use this action to land on its ft. in a space that
contains one or more other creatures. Each of those creatures
must succeed on a DC 16 Strength or Dexterity saving throw
(target's choice) or be knocked prone and take 14 (3d6 + 4)
bludgeoning damage plus 14 (3d6 + 4) slashing damage. On a
successful save, the creature takes only half the damage, isn't
knocked prone, and is pushed 5 ft. out of the bulette's space
into an unoccupied space of the creature's choice. If no
unoccupied space is within range, the creature instead falls
prone in the bulette's space.
"""
**Standing Leap**: The bulette's long jump is up to 30 ft. and its high jump is up to 15 ft., with or without a running start.
**Bite**: Melee Weapon Attack: +7 to hit, reach 5 ft., one target. Hit: 30 (4d12 + 4) piercing damage.
**Deadly Leap**: If the bulette jumps at least 15 ft. as part of its movement, it can then use this action to land on its ft. in a space that contains one or more other creatures. Each of those creatures must succeed on a DC 16 Strength or Dexterity saving throw (target's choice) or be knocked prone and take 14 (3d6 + 4) bludgeoning damage plus 14 (3d6 + 4) slashing damage. On a successful save, the creature takes only half the damage, isn't knocked prone, and is pushed 5 ft. out of the bulette's space into an unoccupied space of the creature's choice. If no unoccupied space is within range, the creature instead falls prone in the bulette's space.
"""
name = "Bulette"
description = "Large monstrosity, unaligned"
challenge_rating = 5
@@ -762,4 +899,4 @@ class Bulette(Monster):
fly_speed = 0
climb_speed = 0
hp_max = 94
hit_dice = "9d10"
hit_dice = "9d10+45"
+57
View File
@@ -8,6 +8,63 @@ from dungeonsheets.monsters.monsters import Monster
from dungeonsheets.stats import Ability
class Dao(Monster):
"""Earth Glide.
The dao can burrow through nonmagical unworked earth and
stone. While doing so, the dao doesn't distrub the material it
moves through.
Elemental Demise.
If the dao dies, its body disintegrates into crystalline powder,
leaving behind only equipment the dao was wearing or carrying.
Innate Spellcasting.
The dao's innate spellcasting ability is Charisma (spell save DC
14, +6 to hit with spell attacks). It can innately cast the
following spells, requiring no material components:
At will: detect evil and good, detect magic, stone shape. 3/day
each: passwall, move earth, tongues. 1/day each: conjure
elemental (earth elemental only), gaseous form, invisibility,
phantasmal killer, plane shift, wall of stone.
Sure-Footed.
The dao has advantage on Strength and Dexterity saving throws
made against effects that would knock it prone.
Multiattack.
The dao makes two fist attacks or two maul attacks.
Fist.
*Melee weapon attack:* +10 to hit, reach 5ft., one
target. *Hit:* 15 (2d8 + 6) bludgeoning damage.
Maul.
*Melee weapon attack:* +10 to hit, reach 5ft., one
target. *Hit:* 20 (4d6 + 6) bludgeoning damage. If the target is
a Huge or smaller creature, it must succeed on a DC 18 Strength
check or be knocked prone.
"""
name = "Dao"
description = "Large elemental, neutral evil"
challenge_rating = 11
armor_class = 18
skills = ""
saving_throws = "Int +5, Wis +5, Cha +6"
condition_immunities = "petrified"
senses = "darkvision 120ft., passive Perception 11"
languages = "Terran"
strength = Ability(23)
dexterity = Ability(12)
constitution = Ability(24)
intelligence = Ability(12)
wisdom = Ability(13)
charisma = Ability(14)
speed = 30
swim_speed = 0
fly_speed = 30
climb_speed = 0
burrow_speed = 30
hp_max = 187
hit_dice = "15d10 + 105"
class Darkmantle(Monster):
"""
**Echolocation**: The darkmantle can't use its blindsight while deafened.
+12 -5
View File
@@ -237,12 +237,19 @@ class Hippogriff(Monster):
class Hobgoblin(Monster):
"""
**Martial Advantage**: Once per turn, the hobgoblin can deal an extra 7 (2d6) damage to a creature it hits with a weapon attack if that creature is within 5 ft. of an ally of the hobgoblin that isn't incapacitated.
"""Martial Advantage.
Once per turn, the hobgoblin can deal an extra 7 (2d6) damage to
a creature it hits with a weapon attack if that creature is
within 5 ft. of an ally of the hobgoblin that isn't
incapacitated.
Longsword.
*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.
Longbow.
*Ranged Weapon Attack:* +3 to hit, range 150/600 ft., one
target. *Hit:* 5 (1d8+1) piercing damage.
**Longsword**: 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.
**Longbow**: Ranged Weapon Attack: +3 to hit, range 150/600 ft., one target. Hit: 5 (1d8 + 1) piercing damage.
"""
name = "Hobgoblin"
+104 -1
View File
@@ -299,6 +299,47 @@ class Shadow(Monster):
hit_dice = "3d8"
class ShadowDemon(Monster):
"""Incorporeal Movement.
The demon can move through other creatures and objects as if
they were difficult terrain. It takes 5 (1d10) force damage if
it ends its turn inside an object.
Light Sensitivity.
While in bright light, the demon has disadvantage on attack
rolls, as well as on Wisdom (Perception) checks that rely on
sight.
Shadow Stealth.
While in dim light or darkness, the demon can take the Hide
action as a bonus action.
Claws.
*Melee Weapon Attack:* +5 to hit, reach 5ft., one
creature. *Hit:* 10 (2d6+3) psychic damage or, if the demon
had advantage on the attack roll, 17 (4d6+3) psychic damage.
"""
name = "Shadow Demon"
description = "Medium fiend (demon), chaotic evil"
challenge_rating = 4
armor_class = 13
skills = "Stealth +7"
saving_throws = "Dex +5, Cha +4"
damage_vulnerabilities = "radiant"
damage_resistances = "acid, fire, necrotic, thunder; bludgeoning, piercing, and slashing from nonmagical attacks"
damage_immunities = "cold, lightning, poison"
condition_immunities = "exhaustion, grappled, paralyzed, petrified, poisoned, prone, restrained"
senses = "Darkvision 120 ft., Passive Perception 11"
languages = "Abyssal, telepathy 120 ft."
strength = Ability(1)
dexterity = Ability(17)
constitution = Ability(12)
intelligence = Ability(14)
wisdom = Ability(13)
charisma = Ability(14)
speed = 30
fly_speed = 30
hp_max = 66
hit_dice = "12d8 + 12"
class ShamblingMound(Monster):
"""
**Lightning Absorption**: Whenever the shambling mound is subjected to lightning damage, it takes no damage and regains a number of hit points equal to the lightning damage dealt.
@@ -771,7 +812,6 @@ class StoneGolem(Monster):
**Slow**: The golem targets one or more creatures it can see within 10 ft. of it. Each target must make a DC 17 Wisdom saving throw against this magic. On a failed save, a target can't use reactions, its speed is halved, and it can't make more than one attack on its turn. In addition, the target can take either an action or a bonus action on its turn, not both. These effects last for 1 minute. A target can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success.
"""
name = "Stone Golem"
description = "Large construct, unaligned"
challenge_rating = 10
@@ -793,6 +833,69 @@ class StoneGolem(Monster):
hit_dice = "17d10"
class Stonemelder(Monster):
"""Death Burst.
When the stonemelder dies, it turns to stone and explodes in a
burst of rock shards, becoming a smoking pile of rubble. Each
creature within 10 feet of the exploding stonemelder must make a
DC 14 Dexterity saving throw, taking 11 (2d10) bludgeoning
damage on a failed save, or half as much damage on a successful
one.
Spellcasting.
The stonemelder is a 7th-level spellcaster. Its spellcasting
ability is Charisma (spell save DC 13, +5 to hit with spell
attacks. It knows the following sorcerer spells (an asterisked
spell is from *Princes of the Apocalypse* appendix B):
Cantrips (at will):
acid splash, blade ward, light mending, mold earth*
1st level (4 slots):
expeditious retreat, false life, shield
2nd level (3 slots):
Maximilian's earthen grasp,* shatter
3rd level (3 slots):
erupting earth,* meld into stone
4th level (1 slots):
stoneskin
Black Earth Rod.
*Melee Weapon Attack:* +5 to hit, reach 5 ft., one
target. *Hit:* 5 (1d6 + 2) bludgeoning damage. The stonemelder
can also expend a spell slot to deal extra damage, dealing 2d8
bludgeoning damage for a 1st level slot, plus an additional 1d8
for each level of the slot above 1st.
Stonemelders are spellcasters who gain their power from Ogrémoch,
using elemental earth magic to sheathe their bodies in carapaces
of rock. They are elite champions of the cult and answer only to
the cult leaders. Not even the Black Earth priests tell
stonemelders what to do.
Each stonemelder carries a weapon known as a Black Earth rod. Such
a rod is like an ordinary mace, but in the hands of a stonemelder,
it serves as a conduit for Ogrémoch's wrath.
"""
name = "Stonemelder"
description = "Medium humanoid (human), neutral evil"
challenge_rating = 4
armor_class = 17
skills = "Intimidation +5, Perception +2"
senses = "termorsense 30 ft., passive Perception 12"
languages = "Common, Terran"
strength = Ability(15)
dexterity = Ability(10)
constitution = Ability(16)
intelligence = Ability(12)
wisdom = Ability(11)
charisma = Ability(17)
speed = 30
swim_speed = 0
fly_speed = 0
climb_speed = 0
hp_max = 75
hit_dice = "10d8 + 30"
class StormGiant(Monster):
"""
**Amphibious**: The giant can breathe air and water.
+5 -5
View File
@@ -157,11 +157,11 @@ class Alarm(Spell):
warded area. When you cast the spell, you can designate creatures that won't set
off the alarm. You also choose whether the alarm is mental or audible.
A
mental alarm alerts you with a ping in your mind if you are within 1 mile of the
warded area. This ping awakens you if you are sleeping.
An audible alarm
produces the sound of a hand bell for 10 seconds within 60 feet.
A mental alarm alerts you with a ping in your mind if you are
within 1 mile of the warded area. This ping awakens you if you are
sleeping. An audible alarm produces the sound of a hand bell for
10 seconds within 60 feet.
"""
name = "Alarm"