Files
dungeon-sheets/dungeonsheets/spells.py
T

335 lines
11 KiB
Python

class Spell():
"""A magical spell castable by a player character."""
level = 0
casting_time = "1 action"
casting_range = "60 ft"
components = ("V", "S")
duration = "instantaneous"
magic_school = ""
classes = ()
def __str__(self):
return self.name
def __repr__(self):
return f'<{self.name}>'
class AcidSplash(Spell):
"""You hurl a bubble of acid. Choose one creature within range, or
choose two crealures within range that are within 5 feet of each
other. A target must succeed on a Dexterity saving throw or take
1d6 acid damage.
This spell's damage increases by 1d6 when you reach 5th level
(2d6), 11th level (3d6), and 17th level (4d6).
"""
name = "Acid Splash"
classes = ('Sorceror', 'Wizard', )
magic_school = "Conjuration"
class BlindnessDeafness(Spell):
"""Vou can blind or deafen a foe. Choose one creature that you can see
within range to make a Constitution saving throw. If it fails, the
target is either blinded or deafened (your choice) for the
duration. At the end of each of its turns, the target can make a
Constitution saving throw. On a success, the spell ends.
At Higher Levels. When you cast this spell using a spell slot of
3rd level or higher, you can target one additional creature for
each slot level above 2nd.
"""
name = "Blindness/Deafness"
magic_school = "Necromancy"
level = 2
casting_range = "30 feet"
components = ("V", )
duration = "1 minute"
classes = ('Wizard', )
class BurningHands(Spell):
"""As you hold your hands with lhumbs touching and fingers spread, a
thin sheet of flames shoots forth from your outstretched
fingertips. Each creature in a 15-foot cone must make a Dexterity
saving throw. A creature takes 3d6 fire damage on a failed save,
or half as much damage on a successful one.
The fire ignites any flammable objecls in lhe area that aren't
being worn or carried.
**At Higher Levels.** When you cast lhis spell using a spell slot
of 2nd level or higher, lhe damage increases by 1d6 for each slot
level above 1st.
"""
name = "Burning Hands"
level = 1
casting_time = "1 action"
casting_range = "Self (15 foot cone)"
components = ("V", "S")
duration = "Instantaneous"
magic_school = "Evocation"
classes = ('Wizard', )
class DetectMagic(Spell):
"""For the duration, you sense the presence of magic within 30 feet of
you. If you sense magic in this way, you can use your action to
see a faint aura around any visible creature or object in the area
that bears magic, and you learn its school of magic, if any.
The spell can penetrate most barriers, but is blocked by 1 foot of
stone, 1 inch of common metal, a thin sheet of lead, or 3 feet of
wood or dirt.
"""
name = "Detect Magic"
level = 1
casting_time = "1 action"
casting_range = "Self (30 feet)"
components = ("V", "S")
duration = "Concentration, Up to 10 minutes"
magic_school = "Divination"
classes = ('Bard', 'Cleric', 'Druid', 'Paladin', 'Ranger', 'Sorceror', 'Wizard', )
class FalseLife(Spell):
"""Bolstering yourself with a necromantic facsimile of life, you gain
1d4+4 temporary hit points for the duration.
At Higher Levels: When you cast this spell using a spell slot of
2nd level or higher, you gain 5 additional temporary hit points
for each slot level above 1st.
"""
name = "False Life"
level = 1
casting_time = "1 action"
casting_range = "Self (30 feet)"
components = ("V", "S", "M")
materials = "A small amount of alcohol or distilled spirits"
duration = "1 hour"
magic_school = "Necromancy"
classes = ('Sorceror', 'Wizard', )
class MageArmor(Spell):
"""You touch a willing creature who isn't wearing armor, and a
protective magical force surrounds it until the spell ends. The
target's base AC becomes 13 + its Dexterity modifier. The spell
ends it if the target dons armor or if you dismiss the spell as an
action.
"""
name = "Mage Armor"
level = 1
casting_time = "1 action"
casting_range = "Touch"
components = ("V", "S", "M")
materials = "A piece of cured leather"
duration = "8 hours"
magic_school = "Abjuration"
classes = ('Sorceror', 'Wizard', )
class MageHand(Spell):
"""A spectral, floating hand appears at a point you choose within
range. The hand lasts for the duration or until you dismiss it as
an action. The hand vanishes if it is ever more than 30 feet away
from you or if you cast this spell again.
You can use your action to control the hand. You can use the hand
to manipulate an object, open an unlocked door or container, stow
or retrieve an item from an open container, or pour the contents
out of a vial. You can move the hand up to 30 feet each time you
use it.
The hand can't attack, activate magical items, or carry more than
10 pounds.
"""
name = "Mage Hand"
level = 0
casting_time = "1 action"
casting_range = "30 feet"
components = ("V", "S", )
duration = "1 minute"
magic_school = "Conjuration"
classes = ('Bard', 'Sorceror', 'Warlock', 'Wizard', )
class MagicMissile(Spell):
"""You create three glowing darts of magical force. Each dart hits a
creature of your choice that you can see within range. A dart
deals 1d4+1 force damage to its target. The darts all strike
simultaneously and you can direct them to hit one creature or
several.
At Higher Levels: When you cast this spell using a spell slot of
2nd level or higher, the spell creates one more dart for each slot
above 1st.
"""
name = "Magic Missile"
level = 1
casting_time = "1 action"
casting_range = "120 feet"
components = ("V", "S", )
duration = "Instantaneous"
magic_school = "Evocation"
classes = ('Sorceror', 'Wizard', )
class Prestidigitation(Spell):
"""This spell is a minor magical trick that novice spellcasters use
for practice. You create one of the following magical effects
within range.
- You create an instantaneous, harmless sensory effect, such as a
shower of sparks, a puff of wind, faint musical notes, or an odd
odor.
- You instantaneously light or snuff out a candle, a torch, or a
small campfire.
- You instantaneously clean or soil an object no larger than 1
cubic foot.
- You chill, warm, or flavor up to 1 cubic foot of nonliving
material for 1 hour.
- You make a color, a small mark, or a symbol appear on an object
or a surface for 1 hour.
- You create a nonmagical trinket or an illusory image that can
fit in your hand and that lasts until the end of your next turn.
If you cast this spell multiple times, you can have up to three of
its non-instantaneous effects active at a time, and you can
dismiss such an effect as an action.
"""
name = "Prestidigitation"
level = 0
casting_time = "1 action"
casting_range = "10 feet"
components = ("V", "S", )
duration = "1 hour"
magic_school = "Transmutation"
classes = ('Bard', 'Sorceror', 'Warlock', 'Wizard', )
class RayOfFrost(Spell):
"""A frigid beam of blue-white light streaks toward a creature within
range. Make a ranged spell attack against the target. On a hit, it
takes 1d8 cold damage, and its speed is reduced by 10 feet until
the start of your next turn.
The spell's damage increases by 1d8 when you reach 5th level
(2d8), 11th level (3d8), and 17th level (4d8).
"""
name = "Ray of Frost"
level = 0
casting_time = "1 action"
casting_range = "60 feet"
components = ("V", "S", )
duration = "Instantaneous"
magic_school = "Evocation"
classes = ('Sorceror', 'Wizard', )
class RayOfSickness(Spell):
"""A ray of sickening greenish energy lashes out toward a creature
within range. Make a ranged spell attack against the target. On a
hit, the target takes 2d8 poison damage and must make a
Constitution saving throw. On a failed save, it is also poisoned
until the end of your next turn.
At Higher Levels. When you cast this spell using a spell slot of
2nd level or higher, the damage increases by 1d8 for each slot
level above 1st.
"""
name = "Ray of Sickness"
level = 1
casting_time = "1 action"
casting_range = "60 feet"
components = ("V", "S", )
duration = "Instantaneous"
magic_school = "Necromancy"
classes = ('Sorceror', 'Wizard', )
class Shield(Spell):
"""An invisible barrier of magical force appears and protects
you. Until the start of your next turn, you have a +5 bonus to AC,
including against the triggering attack, and you take no damage
from magic missile.
"""
name = "Shield"
level = 1
casting_time = "1 reaction"
casting_range = "Self"
components = ("V", "S", )
duration = "1 round"
magic_school = "Abjuration"
classes = ('Sorceror', 'Wizard', )
class ShockingGrasp(Spell):
"""Lightning springs from your hand to deliver a shock to a creature
you try to touch. Make a melee spell attack against the
target. You have advantage on the attack roll if the target is
wearing armor made of metal. On a hit, the target takes 1d8
lightning damage, and it can't take reactions until the start of
its next turn.
The spell's damage increases by 1d8 when you reach 5th level
(2d8), 11th level (3d8), and 17th level (4d8).
"""
name = "Shocking Grasp"
level = 0
casting_time = "1 action"
casting_range = "Touch"
components = ("V", "S", )
duration = "Instantaneous"
magic_school = "Evocation"
classes = ('Sorceror', 'Wizard', )
class Sleep(Spell):
"""This spell sends creatures into a magical slumber. Roll 5d8, the
total is how many hit points of creatures this spell can
affect. Creatures within 20 feet of a point you choose within
range are affected in ascending order of their current hit points
(ignoring unconscious creatures).
Starting with the creature that has the lowest current hit points,
each creature affected by this spell falls unconscious until the
spell ends, the sleeper takes damage, or someone uses an action to
shake or slap the sleeper awake. Subtract each creature's hit
points from the total before moving on to the creature with the
next lowest hit points. A creature's hit points must be equal to
or less than the remaining total for that creature to be affected.
Undead and creatures immune to being charmed aren't affected by
this spell.
At Higher Levels: When you cast this spell using a spell slot of
2nd level or higher, roll an additional 2d8 for each slot level
above 1st.
"""
name = "Sleep"
level = 1
casting_time = "1 action"
casting_range = "90 feet"
components = ("V", "S", "M", )
materials = "A pinch of fine sand, rose petals, or a cricket"
duration = "1 minutes"
magic_school = "Enchantment"
classes = ('Bard', 'Sorceror', 'Wizard', )