Added a test to check that all spells are valid rst.

This commit is contained in:
Mark Wolfman
2021-04-14 13:04:46 -05:00
parent 4aa43d2bec
commit c8577187b0
7 changed files with 133 additions and 111 deletions
+2 -1
View File
@@ -1,4 +1,5 @@
from dungeonsheets.spells.spells import Spell, create_spell
from dungeonsheets.spells.spells import Spell, create_spell, all_spells
from dungeonsheets.spells.spells_a import *
from dungeonsheets.spells.spells_b import *
from dungeonsheets.spells.spells_c import *
+11
View File
@@ -1,3 +1,14 @@
from dungeonsheets import spells
def all_spells():
"""Generate all the valid spell classes so far defined."""
for spell_name, spell in spells.__dict__.items():
# Check if it's (a) a class and (b) a subclass of ``Spell``
if isinstance(spell, type) and issubclass(spell, Spell):
yield spell
def create_spell(**params):
"""Create a new subclass of ``Spell`` with given default parameters.
+9 -9
View File
@@ -734,24 +734,24 @@ class AstralProjection(Spell):
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:
"""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
- 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
that you get a random reading. The DM makes this roll in secret.
"""
name = "Augury"
level = 2
+38 -37
View File
@@ -214,28 +214,30 @@ class ChainLightning(Spell):
class ChaosBolt(Spell):
"""You hurl an undulating, warbling mass of chaotic energy at one
creature in range. Make a ranged spell attack against the
target. On a hit, the target takes 2d8 + 1d6 damage. Choose one of
the dSs. The number rolled on that die determines the attacks
target. On a hit, the target takes ``2d8+1d6`` damage. Choose one
of the d8s. The number rolled on that die determines the attacks
damage type, as shown below.
d8 / Damage Type
1 / Acid
2
/ Cold
3 / Fire
4 / Force
5 / Lightning
6 / Poison
7 / Psychic
8 / Thunder
== ===========
d8 Damage Type
== ===========
1 Acid
2 Cold
3 Fire
4 Force
5 Lightning
6 Poison
7 Psychic
8 Thunder
== ===========
If you roll the same number on both d8s, the chaotic energy leaps
from the target to a different creature of your choice within 30
feet of it. Make a new attack roll against the new target, and
make a new damage roll, which could cause the chaotic energy to
leap again. A creature can be targeted only once by each casting
of this spell.
**At Higher Levels:** When you cast this spell using a spell slot of
2nd level or higher, each target takes 1d6 extra damage of the
type rolled for each slot level above 1st.
@@ -619,22 +621,20 @@ class CommuneWithNature(Spell):
natural underground settings, the radius is limited to 300
feet. The spell doesn't function where nature has been replaced by
construction, such as in dungeons and towns.
You instantly gain knowledge of up to three facts of your choice
about any of the following subjects as they relate to the area:
- terrain and bodies of water
- prevalent plants,
minerals, animals, or peoples
- powerful celestials, fey, fiends, elementals,
or undead
- influence from other planes of existence
- buildings
- terrain and bodies of water
- prevalent plants, minerals, animals, or peoples
- powerful celestials, fey, fiends, elementals, or undead
- influence from other planes of existence
- buildings
For example, you could determine the location of powerful undead
in the area, the location of major sources of safe drinking water,
and the location of any nearby towns.
"""
name = "Commune With Nature"
level = 5
@@ -1211,21 +1211,22 @@ class ContinualFlame(Spell):
class ControlFlames(Spell):
"""You choose a nonmagical flame that you can see within range and that fits within
a 5-foot cube. You affect it in one of the following ways:
"""You choose a nonmagical flame that you can see within range and
that fits within a 5-foot cube. You affect it in one of the
following ways:
- You instantaneously expand the flame 5 feet in one direction,
provided that wood or other fuel is present in the new location.
provided that wood or other fuel is present in the new location.
- You instantaneously extinguish the flames within the cube.
- You double or halve the area of bright light and dim light cast
by the flame, change its color, or both. The change lasts for 1
hour.
by the flame, change its color, or both. The change lasts for 1
hour.
- You cause simple shapes - such as the vague form of a creature,
an inanimate object, or a location - to appear within the flames
and animate as you like. The shapes last for 1 hour. If you
cast this spell multiple times, you can have up to three
non-instantaneous
an inanimate object, or a location - to appear within the flames
and animate as you like. The shapes last for 1 hour. If you
cast this spell multiple times, you can have up to three
non-instantaneous
"""
name = "Control Flames"
level = 0
+53 -62
View File
@@ -441,25 +441,26 @@ class GuardianOfNature(Spell):
powerful guardian. The transformation lasts until the spell
ends. You choose one of the following forms to assume: Primal
Beast or Great Tree.
**Primal Beast.** Bestial fur covers your body, your facial
features become feral, and you gain the following benefits:
- Your walking speed increases by 10 feet.
- You gain darkvision with a range of 120 feet.
- You make Strength-based attack rolls with advantage.
- Your melee weapon attacks deal an extra 1d6 force damage on a
hit.
hit.
**Great Tree.** Your skin appears barky, leaves sprout from your
hair, and you gain the following benefits:
- You gain 10 temporary hit points.
- You make Constitution saving throws with advantage.
- You make Dexterity- and Wisdom-based attack rolls with advantage.
- You make Dexterity- and Wisdom-based attack rolls with
advantage.
- While you are on the ground, the ground within 15 feet of you is
difficult terrain for your enemies.
difficult terrain for your enemies.
"""
name = "Guardian Of Nature"
level = 4
@@ -480,57 +481,49 @@ class GuardsAndWards(Spell):
tall, and shaped as you desire. You can ward several stories of a
stronghold by dividing the area among them, as long as you can
walk into each contiguous area while you are casting the spell.
When you cast this spell, you can specify individuals that are
unaffected by any or all of the effects that you choose. You can
also specify a password that, when spoken aloud, makes the speaker
immune to these effects.
Guards and wards creates the following effects within the warded
area.
Corridors: Fog fills all the warded corridors, making them heavily
obscured. In addition, at each intersection or branching passage
offering a choice of direction, there is a 50 percent chance that
a creature other than you will believe it is going in the opposite
direction from the one it chooses.
Doors: All doors in the warded area are magically locked, as if
sealed by an arcane lock spell. In addition, you can cover up to
ten doors with an illusion (equivalent to the illusory object
function of the m inor illusion spell) to make them appear as
plain sections of wall.
Stairs: Webs fill all stairs in the warded area from top to
bottom, as the web spell. These strands regrow in 10 minutes if
they are burned or torn away while guards and wards lasts.
Other Spell Effect: You can place your choice of one of the
following magical effects within the warded area of the
stronghold.
- Place dancing lights in four corridors. You can designate a
simple program that the lights repeat as long as guards and
wards lasts.
- Place magic mouth in two locations.
- Place stinking cloud in two locations. The vapors appear in the
places you designate; they return within 10 minutes if dispersed
by wind while guards and wards lasts.
- Place a constant gust of wind in one corridor or room.
- Place a suggestion in one location. You select an area of up to
5 feet square, and any creature that enters or passes through
the area receives the suggestion mentally.
- **Corridors.** Fog fills all the warded corridors, making them
heavily obscured. In addition, at each intersection or branching
passage offering a choice of direction, there is a 50 percent
chance that a creature other than you will believe it is going
in the opposite direction from the one it chooses.
- **Doors.** All doors in the warded area are magically locked, as
if sealed by an arcane lock spell. In addition, you can cover up
to ten doors with an illusion (equivalent to the illusory object
function of the m inor illusion spell) to make them appear as
plain sections of wall.
- **Stairs.** Webs fill all stairs in the warded area from top to
bottom, as the web spell. These strands regrow in 10 minutes if
they are burned or torn away while guards and wards lasts.
- **Other Spell Effect.** You can place your choice of one of the
following magical effects within the warded area of the
stronghold.
- Place dancing lights in four corridors. You can designate a
simple program that the lights repeat as long as guards and
wards lasts.
- Place magic mouth in two locations.
- Place stinking cloud in two locations. The vapors appear in
the places you designate; they return within 10 minutes if
dispersed by wind while guards and wards lasts.
- Place a constant gust of wind in one corridor or room.
- Place a suggestion in one location. You select an area of up
to 5 feet square, and any creature that enters or passes
through the area receives the suggestion mentally.
The whole warded area radiates magic. A dispel magic cast on a
specific effect, if successful, removes only that effect.
You can create a permanently guarded and warded structure by
casting this spell there every day for one year.
specific effect, if successful, removes only that effect. You can
create a permanently guarded and warded structure by casting this
spell there every day for one year.
"""
name = "Guards And Wards"
level = 6
@@ -619,19 +612,17 @@ class GuidingHand(Spell):
class Gust(Spell):
"""You seize the air and compel it to create one of the following
effects at a point you can see within range:
- One Medium or smaller creature that you choose must succeed on a
Strength saving throw or be pushed up to 5 feet away from you.
Strength saving throw or be pushed up to 5 feet away from you.
- You create a small blast of air capable of moving one object
that is neither held nor carried and that weighs no more than 5
pounds. The object is pushed up to 10 feet away from you. It
isn't pushed with enough force to cause damage.
that is neither held nor carried and that weighs no more than 5
pounds. The object is pushed up to 10 feet away from you. It
isn't pushed with enough force to cause damage.
- You create a harmless sensory affect using air, such as causing
leaves to rustle, wind to slam shutters shut, or your clothing
to ripple in a breeze.
leaves to rustle, wind to slam shutters shut, or your clothing
to ripple in a breeze.
"""
name = "Gust"
level = 0