How to use the dungeonsheets.spells.Spell function in dungeonsheets

To help you get started, we’ve selected a few dungeonsheets examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github canismarko / dungeon-sheets / tests / test_spells.py View on Github external
def test_spell_str(self):
        spell = Spell()
        spell.name = "My spell"
        self.assertEqual(str(spell), 'My spell')
        # Try with a ritual
        spell.ritual = True
        self.assertEqual(str(spell), 'My spell (R)')
        # Try with a ritual and a concentration
        spell.concentration = True
        self.assertEqual(str(spell), 'My spell (R, C)')
github canismarko / dungeon-sheets / dungeonsheets / spells.py View on Github external
a portal from the nonportal side has no effect. The mist that
    fills each portal is opaque and blocks vision through it. On your
    turn, you can rotate the rings as a bonus action so that the
    active side faces in a different direction.
    
    """
    level = 6
    casting_time = "1 action"
    casting_range = "500 ft"
    components = ("V", "S")
    duration = "Concentration, up to 10 minutes"
    magic_school = "Conjuration"
    classes = ('Sorceror', 'Warlock', 'Wizard')


class ArcaneLock(Spell):
    """You touch a closed door, window, gate, chest, or other entryway,
    and it becomes locked for the duration. You and the creatures you
    designate when you cast this spell can open the object
    normally. You can also set a password that, when spoken within 5
    feet of the object, suppresses this spell for 1 minute. Otherwise,
    it is impassable until it is broken or the spell is dispelled or
    suppressed. Casting knock on the object suppresses arcane lock for
    10 minutes.
    
    While affected by this spell, the object is more difficult to
    break or force open; the DC to break it or pick any locks on it
    increases by 10.
    
    """
    level = 2
    casting_time = "1 action"
github canismarko / dungeon-sheets / dungeonsheets / spells.py View on Github external
"""
    level = 2
    casting_time = "1 minute"
    casting_range = "Self"
    components = ("V", "S", "M")
    materials = "specially marked sticks, bones, or similar tokens worth at least 25 gp"
    duration = "instantaneous"
    magic_school = "Divination"
    classes = ('Cleric', )





class BlindnessDeafness(Spell):

    """You 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"
github canismarko / dungeon-sheets / dungeonsheets / spells.py View on Github external
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', )
github canismarko / dungeon-sheets / dungeonsheets / spells.py View on Github external
If you are returned to your body prematurely, your companions
    remain in their astral forms and must find their own way back to
    their bodies, usually by dropping to 0 hit points.
    
    """
    level = 9
    casting_time = "1 hour"
    casting_range = "10 ft"
    components = ("V", "S", "M")
    materials = "For each creature you affect with this spell, you must provide one jacinth worth at least 1000 GP and one ornately carved bar of silver worth at least 100 GP, all of which the spell consumes."
    duration = "Special"
    magic_school = "Necromancy"
    classes = ('Necromancy', 'Cleric', 'Warlock', 'Wizard', 'Monk')


class Augury(Spell):
    """By casting gem-inlaid sticks, rolling dragon bones, laying out
    ornate cards, or employing some other divining tool, you receive
    an omen from an otherworldly entity about the results of a
    specific course of action that you plan to take within the next 30
    minutes. The DM chooses from the following possible omens:
    
    - Weal, for good results
    - Woe, for bad results
    - Weal and woe, for both good and bad results
    - Nothing, for results that aren’t especially good or bad
    
    The spell doesn’t take into account any possible circumstances
    that might change the outcome, such as the casting of additional
    spells or the loss or gain of a companion. If you cast the spell
    two or more times before completing your next long rest, there is
    a cumulative 25 percent chance for each casting after the first
github canismarko / dungeon-sheets / dungeonsheets / spells.py View on Github external
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"
github canismarko / dungeon-sheets / dungeonsheets / spells.py View on Github external
by the nature of its new form, and it can’t speak or cast spells.
    
    The target’s gear melds into the new form. The target can’t
    activate, wield, or otherwise benefit from any of its equipment.
    
    """
    level = 8
    casting_time = "1 action"
    casting_range = "30 ft"
    components = ("V", "S")
    duration = "Concentration, up to 24 hours"
    magic_school = "Transmutation"
    classes = ('Druid',)


class AnimateDead(Spell):
    """This spell creates an undead servant. Choose a pile of bones or a
    corpse of a medium or small humanoid within range. Your spell
    imbues the target with a foul mimicry of life, raising it as an
    undead creature. The target becomes a skeleton if you chose bones
    or a zombie if you chose a corpse (the DM has the creature’s game
    statistics).
    
    On each of your turns, you can use a bonus action to mentally
    command any creature you made with this spell if the creature is
    within 60 feet of you (if you control multiple creatures, you can
    command any or all of them at the same time, issuing the same
    command to each one). You decide what action the creature will
    take and where it will move during its next turn, or you can issue
    a general command, such as to guard a particular chamber or
    corridor. If you issue no commands, the creature only defends
    itself against hostile creatures. Once given an order, the
github canismarko / dungeon-sheets / dungeonsheets / spells.py View on Github external
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', )

github canismarko / dungeon-sheets / dungeonsheets / spells.py View on Github external
At Higher Levels: If you cast this spell using a spell slot of 3rd
    level or higher, the duration of the spell increases by 48 hours
    for each slot level above 2nd.
    
    """
    level = 2
    casting_time = "1 action"
    casting_range = "30 ft"
    components = ("V", "S", "M")
    materials = "A morsel of food"
    duration = "24 hours"
    magic_school = "Enchantment"
    classes = ('Bard', 'Druid', 'Ranger')


class AnimalShapes(Spell):
    """Your magic turns others into beasts. Choose any number of willing
    creatures that you can see within range. You transform each target
    into the form of a Large or smaller beast with a challenge rating
    of 4 or lower. On subsequent turns, you can use your action to
    transform affected creatures into new forms.
    
    The transformation lasts for the duration for each target, or
    until the target drops to 0 hit points or dies. You can choose a
    different form for each target. A target’s game statistics are
    replaced by the statistics of the chosen beast, though the target
    retains its alignment and Intelligence, Wisdom and Charisma
    scores. The target assumes the hit points of its new form, and
    when it reverts to its normal form, it returns to the number of
    hit points it had before it transformed. If it reverts as a result
    of dropping to 0 hit points, any excess damage carries over to its
    normal form. As long as the excess damage doesn't reduce the
github canismarko / dungeon-sheets / dungeonsheets / spells.py View on Github external
While affected by this spell, the object is more difficult to
    break or force open; the DC to break it or pick any locks on it
    increases by 10.
    
    """
    level = 2
    casting_time = "1 action"
    casting_range = "Touch"
    components = ("V", "S", "M")
    materials = "Gold dust worth at least 25 gp, which the spell consumes"
    duration = "Until dispelled"
    magic_school = "Abjuration"
    classes = ('Wizard',)


class ArmorOfAgathys(Spell):
    """A protective magical force surrounds you, manifesting as a spectral
    frost that covers you and your gear. You gain 5 temporary hit
    points for the duration. If a creature hits you with a melee
    attack while you have these hit points, the creature takes 5 cold
    damage.
    
    At Higher Levels: When you cast this spell using a spell slot of
    2nd level or higher, both the temporary hit points and the cold
    damage increase by 5 for each slot level above 1st.
    
    """
    level = 1
    casting_time = "1 action"
    casting_range = "Self"
    components = ("V", "S", "M")
    materials = "A cup of water"