mirror of
https://github.com/Threnklyn/dungeon-sheets.git
synced 2026-05-18 20:23:27 +02:00
Fixed remaining docstrings to be valid rst, and cleaned up TeX templates.
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
from dungeonsheets.features.features import Feature, create_feature, all_features
|
||||
|
||||
from dungeonsheets.features.artificer import *
|
||||
from dungeonsheets.features.backgrounds import *
|
||||
from dungeonsheets.features.barbarian import *
|
||||
@@ -5,7 +7,6 @@ from dungeonsheets.features.bard import *
|
||||
from dungeonsheets.features.cleric import *
|
||||
from dungeonsheets.features.druid import *
|
||||
from dungeonsheets.features.feats import *
|
||||
from dungeonsheets.features.features import Feature, create_feature
|
||||
from dungeonsheets.features.fighter import *
|
||||
from dungeonsheets.features.monk import *
|
||||
from dungeonsheets.features.paladin import *
|
||||
|
||||
@@ -378,18 +378,18 @@ class AlchemicalSavant(Feature):
|
||||
|
||||
|
||||
class RestorativeReagents(Feature):
|
||||
"""Starting at 9th level, you can incorporate
|
||||
restorative reagents into some of your works:
|
||||
|
||||
- Whenever a creature drinks an experimental elixir you created, the
|
||||
creature gains temporary hit points equal to 2d6 + your Intelligence
|
||||
modifier (minimum of 1 temporary hit point).
|
||||
|
||||
- You can cast lesser restoration without expending a spell slot and
|
||||
without preparing the spell, provided you use alchemist's supplies as the
|
||||
spellcasting focus. You can do so a number of times equal to your
|
||||
Intelligence modifier (minimum of once), and you regain all expended uses
|
||||
when you finish a long rest.
|
||||
"""Starting at 9th level, you can incorporate restorative reagents
|
||||
into some of your works:
|
||||
|
||||
- Whenever a creature drinks an experimental elixir you created,
|
||||
the creature gains temporary hit points equal to 2d6 + your
|
||||
Intelligence modifier (minimum of 1 temporary hit point).
|
||||
- You can cast lesser restoration without expending a spell slot
|
||||
and without preparing the spell, provided you use alchemist's
|
||||
supplies as the spellcasting focus. You can do so a number of
|
||||
times equal to your Intelligence modifier (minimum of once), and
|
||||
you regain all expended uses when you finish a long rest.
|
||||
|
||||
"""
|
||||
name = "Restorative Reagents"
|
||||
source = "Artificer (Alchemist)"
|
||||
@@ -397,17 +397,18 @@ class RestorativeReagents(Feature):
|
||||
|
||||
class ChemicalMastery(Feature):
|
||||
"""By 15th level, you have been exposed to so many chemicals that they
|
||||
pose little risk to you, and you can use them to quickly end certain
|
||||
ailments:
|
||||
|
||||
- You gain resistance to acid damage and poison damage, and you are immune
|
||||
to the poisoned condition.
|
||||
|
||||
- You can cast greater restoration and heal without expending a spell
|
||||
slot, without preparing the spell, and without material components,
|
||||
provided you use alchemist's supplies as the spellcasting focus. Once
|
||||
you cast either spell with this feature, you can't cast that spell with
|
||||
it again until you finish a long rest.
|
||||
pose little risk to you, and you can use them to quickly end
|
||||
certain ailments:
|
||||
|
||||
- You gain resistance to acid damage and poison damage, and you
|
||||
are immune to the poisoned condition.
|
||||
- You can cast greater restoration and heal without expending a
|
||||
spell slot, without preparing the spell, and without material
|
||||
components, provided you use alchemist's supplies as the
|
||||
spellcasting focus. Once you cast either spell with this
|
||||
feature, you can't cast that spell with it again until you
|
||||
finish a long rest.
|
||||
|
||||
"""
|
||||
name = "Chemical Mastery"
|
||||
source = "Artificer (Alchemist)"
|
||||
|
||||
@@ -672,25 +672,24 @@ class SoulOfTheForge(Feature):
|
||||
|
||||
|
||||
class DivineStrikeForge(DivineStrike):
|
||||
"""At 8th level, you gain the ability to infuse your weapon strikes with the
|
||||
fiery power of the forge. Once on each ofyour turns when you hit a creature
|
||||
with a weapon attack, you can cause the attack to deal an extra 1d8 fire
|
||||
damage to the target. When you reach 14th level, the extra damage
|
||||
increases to 2d8
|
||||
|
||||
"""At 8th level, you gain the ability to infuse your weapon strikes
|
||||
with the fiery power of the forge. Once on each ofyour turns when
|
||||
you hit a creature with a weapon attack, you can cause the attack
|
||||
to deal an extra 1d8 fire damage to the target. When you reach
|
||||
14th level, the extra damage increases to 2d8
|
||||
|
||||
"""
|
||||
source = "Cleric (Forge Domain)"
|
||||
|
||||
|
||||
class SaintOfForgeAndFire(Feature):
|
||||
"""At 17th level, your blessed affinity with fire and metal becomes more
|
||||
powerful:
|
||||
|
||||
• You gain immunity to fire damage.
|
||||
|
||||
• While wearing heavy armor, you have resistance to bludgeoning, piercing,
|
||||
and slashing damage from non-magical attacks
|
||||
|
||||
"""At 17th level, your blessed affinity with fire and metal becomes
|
||||
more powerful:
|
||||
|
||||
- You gain immunity to fire damage.
|
||||
- While wearing heavy armor, you have resistance to bludgeoning,
|
||||
piercing, and slashing damage from non-magical attacks
|
||||
|
||||
"""
|
||||
name = "Saint of Forge and Fire"
|
||||
source = "Cleric (Forge Domain)"
|
||||
|
||||
@@ -528,57 +528,60 @@ class SpeechOfTheWoods(Feature):
|
||||
|
||||
|
||||
class SpiritTotem(Feature):
|
||||
"""Starting at 2nd level, you can call forth nature spirits to influence the
|
||||
world around you. As a bonus action, you can magically summon an
|
||||
incorporeal spirit to a point you can see within 60 feet of you. The spirit
|
||||
creates an aura in a 30-foot radius around that point. It counts as neither
|
||||
a creature nor an object, though it has the spectral appearance of the
|
||||
creature it. represents.
|
||||
|
||||
As a bonus action, you can move the spirit up to 60 feet to a point you can
|
||||
see. The spirit persists for 1 minute or until you're incapacitated. Once
|
||||
you use this feature, you can't use it again until you finish a short or
|
||||
long rest. The effect of the spirit's aura depends on the type of spirit
|
||||
you summon from the options below.
|
||||
|
||||
**Bear Spirit**: The bear spirit grants you and your allies its might and
|
||||
endurance. Each creature ofyour choice in the aura when the spirit appears
|
||||
gains temporary hit points equal to 5 + your druid level. In addition, you
|
||||
and your allies gain advantage on Strength checks and Strength saving
|
||||
throws while in the aura.
|
||||
|
||||
**Hawk Spirit**: The hawk spirit is a consummate hunter, aiding you and
|
||||
your allies with its keen sight. When a creature makes an attack roll
|
||||
against a target in the spirit's aura, you can use your reaction to grant
|
||||
advantage to that attack roll. In addition, you and your allies have
|
||||
advantage on Wisdom (Perception) checks while in the aura
|
||||
|
||||
**Unicorn Spirit**: The unicorn spirit lends its protection to those
|
||||
nearby. You and your allies gain advantage on all ability checks made to
|
||||
detect creatures in the spirit's aura. In addition. if you cast a spell
|
||||
using a spell slot that restores hit points to any creature inside or
|
||||
outside the aura, each creature of your choice in the aura also regains hit
|
||||
points equal to your druid level.
|
||||
|
||||
"""Starting at 2nd level, you can call forth nature spirits to
|
||||
influence the world around you. As a bonus action, you can
|
||||
magically summon an incorporeal spirit to a point you can see
|
||||
within 60 feet of you. The spirit creates an aura in a 30-foot
|
||||
radius around that point. It counts as neither a creature nor an
|
||||
object, though it has the spectral appearance of the creature
|
||||
it. represents.
|
||||
|
||||
As a bonus action, you can move the spirit up to 60 feet to a
|
||||
point you can see. The spirit persists for 1 minute or until
|
||||
you're incapacitated. Once you use this feature, you can't use it
|
||||
again until you finish a short or long rest. The effect of the
|
||||
spirit's aura depends on the type of spirit you summon from the
|
||||
options below.
|
||||
|
||||
**Bear Spirit**: The bear spirit grants you and your allies its
|
||||
might and endurance. Each creature ofyour choice in the aura when
|
||||
the spirit appears gains temporary hit points equal to 5 + your
|
||||
druid level. In addition, you and your allies gain advantage on
|
||||
Strength checks and Strength saving throws while in the aura.
|
||||
|
||||
**Hawk Spirit**: The hawk spirit is a consummate hunter, aiding
|
||||
you and your allies with its keen sight. When a creature makes an
|
||||
attack roll against a target in the spirit's aura, you can use
|
||||
your reaction to grant advantage to that attack roll. In addition,
|
||||
you and your allies have advantage on Wisdom (Perception) checks
|
||||
while in the aura
|
||||
|
||||
**Unicorn Spirit**: The unicorn spirit lends its protection to
|
||||
those nearby. You and your allies gain advantage on all ability
|
||||
checks made to detect creatures in the spirit's aura. In
|
||||
addition. if you cast a spell using a spell slot that restores hit
|
||||
points to any creature inside or outside the aura, each creature
|
||||
of your choice in the aura also regains hit points equal to your
|
||||
druid level.
|
||||
|
||||
"""
|
||||
name = "Spirit Totem"
|
||||
source = "Druid (Circle of the Shepherd)"
|
||||
|
||||
|
||||
class MightySummoner(Feature):
|
||||
"""Starting at 6th level, beasts and fey that you conjure are more resilient
|
||||
than normal. Any beast or fey summoned or created by a spell that you cast
|
||||
gains the. following benefits:
|
||||
|
||||
- The creature appears with more hit points than normal: 2 extra hit
|
||||
|
||||
- The creature appears with more hit points than normal: 2 extra hit
|
||||
points per Hit Die it has.
|
||||
|
||||
- The damage from its natural weapons is considered magical for the
|
||||
purpose of overcoming immunity and resistance to nonmagical attacks and
|
||||
damage.
|
||||
|
||||
"""Starting at 6th level, beasts and fey that you conjure are more
|
||||
resilient than normal. Any beast or fey summoned or created by a
|
||||
spell that you cast gains the. following benefits:
|
||||
|
||||
- The creature appears with more hit points than normal: 2 extra
|
||||
hit
|
||||
- The creature appears with more hit points than normal: 2 extra
|
||||
hit points per Hit Die it has.
|
||||
- The damage from its natural weapons is considered magical for
|
||||
the purpose of overcoming immunity and resistance to nonmagical
|
||||
attacks and damage.
|
||||
|
||||
"""
|
||||
name = "Mighty Summoner"
|
||||
source = "Druid (Circle of the Shepherd)"
|
||||
@@ -590,7 +593,7 @@ class GuardianSpirit(Feature):
|
||||
that you summoned or created with a spell ends its turn in your
|
||||
Spirit Totem aura, that creature regains a number of hit points
|
||||
equal to half your druid level.
|
||||
|
||||
|
||||
"""
|
||||
name = "Guardian Spirit"
|
||||
source = "Druid (Circle of the Shepherd)"
|
||||
@@ -652,19 +655,19 @@ class SymbioticEntity(Feature):
|
||||
|
||||
class FungalInfestation(Feature):
|
||||
"""At 6th level, your spores gain the ability to infest a corpse and
|
||||
animate it. If a beast or a humanoid that ist Small or Medium dies within
|
||||
10 feet of you, you can use your reaction to animate it, causing it to
|
||||
stand up immediately with 1 hit point. The creature uses the zombie stat
|
||||
block in the _Monster Manual_. It remains animate for 1 hour, after which
|
||||
time it collapses and dies.
|
||||
|
||||
In combat, the zombie's turn comes immediately after yours. It obeys your
|
||||
mental commands, and the only action it can take is the Attack action,
|
||||
making one melee attack.
|
||||
|
||||
You can use this feature a number of times equal to your Wisdom modifier
|
||||
(minimum of once), and you regain all expended uses of it when you finish a
|
||||
long rest.
|
||||
animate it. If a beast or a humanoid that is Small or Medium dies
|
||||
within 10 feet of you, you can use your reaction to animate it,
|
||||
causing it to stand up immediately with 1 hit point. The creature
|
||||
uses the zombie stat block in the Monster Manual. It remains
|
||||
animated for 1 hour, after which time it collapses and dies.
|
||||
|
||||
In combat, the zombie's turn comes immediately after yours. It
|
||||
obeys your mental commands, and the only action it can take is the
|
||||
Attack action, making one melee attack.
|
||||
|
||||
You can use this feature a number of times equal to your Wisdom
|
||||
modifier (minimum of once), and you regain all expended uses of it
|
||||
when you finish a long rest.
|
||||
|
||||
"""
|
||||
name = "Fungal Infestation"
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
from dungeonsheets import weapons
|
||||
from dungeonsheets import weapons, features
|
||||
|
||||
|
||||
def all_features():
|
||||
"""Generate all the valid features classes so far defined."""
|
||||
for feature_name, feature in features.__dict__.items():
|
||||
# Check if it's (a) a class and (b) a subclass of ``Features``
|
||||
if isinstance(feature, type) and issubclass(feature, Feature):
|
||||
yield feature
|
||||
|
||||
|
||||
def create_feature(**params):
|
||||
|
||||
@@ -124,7 +124,7 @@ class FighterFightingStyle(FeatureSelector):
|
||||
- thrown weapon fighting
|
||||
- tunnel fighter
|
||||
- unarmed fighting
|
||||
|
||||
|
||||
"""
|
||||
options = {'archery': Archery,
|
||||
'defense': Defense,
|
||||
@@ -334,24 +334,20 @@ class StudentOfWar(Feature):
|
||||
|
||||
class KnowYourEnemy(Feature):
|
||||
"""Starting at 7th level, if you spend at least 1 minute observing or
|
||||
interacting with another creature outside combat, you can learn certain
|
||||
information about its capabilities compared to your own. The DM tells you
|
||||
if the creature is your equal, superior, or inferior in regard to two of
|
||||
the following characteristics of your choice:
|
||||
interacting with another creature outside combat, you can learn
|
||||
certain information about its capabilities compared to your
|
||||
own. The DM tells you if the creature is your equal, superior, or
|
||||
inferior in regard to two of the following characteristics of your
|
||||
choice:
|
||||
|
||||
- Strength score
|
||||
- Dexterity score
|
||||
- Constitution score
|
||||
- Armor Class
|
||||
- Current hit points
|
||||
- Total class levels (if any)
|
||||
- Fighter class levels (if any)
|
||||
|
||||
--Strength score
|
||||
|
||||
--Dexterity score
|
||||
|
||||
--Constitution score
|
||||
|
||||
--Armor Class
|
||||
|
||||
--Current hit points
|
||||
|
||||
--Total class levels (if any)
|
||||
|
||||
--Fighter class levels (if any)
|
||||
"""
|
||||
name = "Know Your Enemy"
|
||||
source = "Fighter (Battle Master)"
|
||||
|
||||
@@ -448,8 +448,9 @@ class DiscipleOfTheElements(Feature):
|
||||
|
||||
|
||||
class ElementalAttunement(Feature):
|
||||
"""You can use your action to briefly control elemental forces nearby, causing
|
||||
one of the following effects of your choice:
|
||||
"""You can use your action to briefly control elemental forces nearby,
|
||||
causing one of the following effects of your choice:
|
||||
|
||||
- Create a harmless, instantaneous sensory effect related to air,
|
||||
earth, fire, or water, such as a shower of sparks, a puff of
|
||||
wind, a spray o f light mist, or a gentle rumbling of stone.
|
||||
|
||||
@@ -189,29 +189,22 @@ class DraconicAncestry(Feature):
|
||||
"""You have draconic ancestry. Choose one type of dragon from the Draconic
|
||||
Ancestry table. Your breath weapon and damage resistance are determined by the
|
||||
dragon type.
|
||||
|
||||
Dragon • Damage Type • Breath Weapon
|
||||
|
||||
Black • Acid • 5 by 30 ft. line (DEX save)
|
||||
|
||||
Blue • Lightning • 5 by 30 ft. line (DEX save)
|
||||
|
||||
Brass • Fire • 5 by 30 ft. line (DEX save)
|
||||
|
||||
Bronze • Lightning • 5 by 30 ft. line (DEX save)
|
||||
|
||||
Copper • Acid • 5 by 30 ft. line (DEX save)
|
||||
|
||||
Gold • Fire • 15 ft. cone (DEX save)
|
||||
|
||||
Green • Poison • 15 ft. cone (CON save)
|
||||
|
||||
Red • Fire • 15 ft. cone (DEX save)
|
||||
|
||||
Silver • Cold • 15 ft. cone (CON save)
|
||||
|
||||
White • White • 15 ft. cone (CON save)
|
||||
|
||||
|
||||
====== =========== ===========================
|
||||
Dragon Damage Type Breath Weapon
|
||||
====== =========== ===========================
|
||||
Black Acid 5 by 30 ft. line (DEX save)
|
||||
Blue Lightning 5 by 30 ft. line (DEX save)
|
||||
Brass Fire 5 by 30 ft. line (DEX save)
|
||||
Bronze Lightning 5 by 30 ft. line (DEX save)
|
||||
Copper Acid 5 by 30 ft. line (DEX save)
|
||||
Gold Fire 15 ft. cone (DEX save)
|
||||
Green Poison 15 ft. cone (CON save)
|
||||
Red Fire 15 ft. cone (DEX save)
|
||||
Silver Cold 15 ft. cone (CON save)
|
||||
White White 15 ft. cone (CON save)
|
||||
====== =========== ===========================
|
||||
|
||||
"""
|
||||
name = "Draconic Ancestry"
|
||||
source = "Race (Dragonborn)"
|
||||
|
||||
@@ -644,33 +644,31 @@ class FavoredEnemyRevised(Feature):
|
||||
|
||||
|
||||
class NaturalExplorerRevised(Feature):
|
||||
"""You are a master of navigating the natural world, and you react with swift
|
||||
and decisive action when attacked. This grants you the following benefits:
|
||||
|
||||
--You ignore difficult terrain.
|
||||
|
||||
--You have advantage on initiative rolls.
|
||||
|
||||
--On your first turn during combat, you have advantage on attack rolls
|
||||
against creatures that have not yet acted.
|
||||
|
||||
In addition, you are skilled at navigating the wilderness. You gain the
|
||||
following benefits when traveling for an hour or more:
|
||||
|
||||
--Difficult terrain doesn't slow your group's travel.
|
||||
|
||||
--Your group can't become lost except by magical means.
|
||||
|
||||
--Even when you are engaged in another activity while traveling (such as
|
||||
foraging, navigating, or tracking), you remain alert to danger.
|
||||
|
||||
--If you are traveling alone, you can move stealthily at a normal pace.
|
||||
|
||||
--When you forage, you find twice as much food as you normally would.
|
||||
|
||||
--While tracking other creatures, you also learn their exact number, their
|
||||
sizes, and how long ago they passed through the area.
|
||||
|
||||
"""You are a master of navigating the natural world, and you react
|
||||
with swift and decisive action when attacked. This grants you the
|
||||
following benefits:
|
||||
|
||||
- You ignore difficult terrain.
|
||||
- You have advantage on initiative rolls.
|
||||
- On your first turn during combat, you have advantage on attack rolls
|
||||
against creatures that have not yet acted.
|
||||
|
||||
In addition, you are skilled at navigating the wilderness. You
|
||||
gain the following benefits when traveling for an hour or more:
|
||||
|
||||
- Difficult terrain doesn't slow your group's travel.
|
||||
- Your group can't become lost except by magical means.
|
||||
- Even when you are engaged in another activity while traveling
|
||||
(such as foraging, navigating, or tracking), you remain alert to
|
||||
danger.
|
||||
- If you are traveling alone, you can move stealthily at a normal
|
||||
pace.
|
||||
- When you forage, you find twice as much food as you normally
|
||||
would.
|
||||
- While tracking other creatures, you also learn their exact
|
||||
number, their sizes, and how long ago they passed through the
|
||||
area.
|
||||
|
||||
"""
|
||||
name = "Natural Explorer"
|
||||
source = "Revised Ranger"
|
||||
|
||||
@@ -236,22 +236,23 @@ class DeathStrike(Feature):
|
||||
|
||||
# Arcane Trickster
|
||||
class MageHandLegerdemain(Feature):
|
||||
"""Starting at 3rd level, when you cast mage hand, you can make the spectral
|
||||
hand invisible, and you can perform the following additional tasks with it:
|
||||
|
||||
• You can stow one object the hand is holding in a container worn or
|
||||
carried by another creature.
|
||||
|
||||
• You can retrieve an object in a container worn or carried by another
|
||||
creature.
|
||||
|
||||
--You can use thieves' tools to pick locks and disarm traps at range
|
||||
|
||||
You can perform one of these tasks without being noticed by a creature if
|
||||
you succeed on a Dexterity (Sleight of Hand) check contested by the
|
||||
creature's Wisdom (Perception) check. In addition, you can use the bonus
|
||||
action granted by your Cunning Action to control the hand.
|
||||
|
||||
"""Starting at 3rd level, when you cast mage hand, you can make the
|
||||
spectral hand invisible, and you can perform the following
|
||||
additional tasks with it:
|
||||
|
||||
- You can stow one object the hand is holding in a container worn
|
||||
or carried by another creature.
|
||||
- You can retrieve an object in a container worn or carried by
|
||||
another creature.
|
||||
- You can use thieves' tools to pick locks and disarm traps at
|
||||
range
|
||||
|
||||
You can perform one of these tasks without being noticed by a
|
||||
creature if you succeed on a Dexterity (Sleight of Hand) check
|
||||
contested by the creature's Wisdom (Perception) check. In
|
||||
addition, you can use the bonus action granted by your Cunning
|
||||
Action to control the hand.
|
||||
|
||||
"""
|
||||
name = "Mage Hand Legerdemain"
|
||||
source = "Rogue (Arcane Trickster)"
|
||||
|
||||
@@ -347,12 +347,12 @@ class UndyingNature(Feature):
|
||||
|
||||
|
||||
class IndestructibleLife(Feature):
|
||||
"""When you reach 14th level, you partake of some of the true secrets of the
|
||||
Undying. On your turn, you can use a bonus action to regain hit points
|
||||
equal to 1d8+your warlock level. Additionally, if you put a severed body
|
||||
part of yours back in place when you use this feature, the part
|
||||
reattaches. Once you use this feature, you can't use it again until you
|
||||
finish a short or long rest.
|
||||
"""When you reach 14th level, you partake of some of the true secrets
|
||||
of the Undying. On your turn, you can use a bonus action to regain
|
||||
hit points equal to 1d8 + your warlock level. Additionally, if you
|
||||
put a severed body part of yours back in place when you use this
|
||||
feature, the part reattaches. Once you use this feature, you can't
|
||||
use it again until you finish a short or long rest.
|
||||
|
||||
"""
|
||||
name = "Indestructible Life"
|
||||
|
||||
@@ -452,17 +452,17 @@ class GrimHarvest(Feature):
|
||||
|
||||
|
||||
class UndeadThralls(Feature):
|
||||
"""At 6th level, you add the animate dead spell to your spellbook if it is not
|
||||
there already. When you cast animate dead, you can target one additional
|
||||
corpse or pile of bones, creating another zombie or skeleton, as
|
||||
appropriate. Whenever you create an undead using a necromancy spell, it has
|
||||
additional benefits:
|
||||
|
||||
• The creature's hit point maximum is increased by an amount equal to your
|
||||
wizard level.
|
||||
|
||||
• The creature adds your proficiency bonus to its weapon damage rolls
|
||||
|
||||
"""At 6th level, you add the animate dead spell to your spellbook if
|
||||
it is not there already. When you cast animate dead, you can
|
||||
target one additional corpse or pile of bones, creating another
|
||||
zombie or skeleton, as appropriate. Whenever you create an undead
|
||||
using a necromancy spell, it has additional benefits:
|
||||
|
||||
- The creature's hit point maximum is increased by an amount equal
|
||||
to your wizard level.
|
||||
- The creature adds your proficiency bonus to its weapon damage
|
||||
rolls
|
||||
|
||||
"""
|
||||
name = "Undead Thralls"
|
||||
source = "Wizard (School of Necromancy)"
|
||||
@@ -595,29 +595,27 @@ class MasterTransmuter(Feature):
|
||||
|
||||
# Bladesinging
|
||||
class Bladesong(Feature):
|
||||
"""Starting at 2nd level, you can invoke a secret elven magic called the
|
||||
Bladesong, provided that you aren't wearing medium or heavy armor or using
|
||||
a shield. It graces you with supernatural speed, agility, and focus. You
|
||||
can use a bonus action to start the Bladesong, which lasts for 1 minute. It
|
||||
ends early if you are incapac- itated, if you don medium or heavy armor or
|
||||
a shield, or if you use two hands to make an attack with a weapon. You can
|
||||
also dismiss the Bladesong at any time you choose (no action required).
|
||||
|
||||
While your Bladesong is active, you gain the follow- ing benefits:
|
||||
|
||||
• You gain a bonus to your AC equal to your Intelligence modifier (minimum
|
||||
of +1).
|
||||
|
||||
• Your walking speed increases by 10 feet.
|
||||
|
||||
• You have advantage on Dexterity (Acrobatics) checks.
|
||||
|
||||
• You gain a bonus to any Constitution saving throw you make to maintain
|
||||
your concentration on a spell. The bonus equals your Intelligence modifier
|
||||
(minimum of +l).
|
||||
|
||||
You can use this feature twice. You regain all expended uses of it when
|
||||
you finish a short or long rest.
|
||||
"""Starting at 2nd level, you can invoke a secret Elven magic called
|
||||
the Bladesong, provided that you aren't wearing medium or heavy
|
||||
armor or using a shield. It graces you with supernatural speed,
|
||||
agility, and focus. You can use a bonus action to start the
|
||||
Bladesong, which lasts for 1 minute. It ends early if you are
|
||||
incapac- itated, if you don medium or heavy armor or a shield, or
|
||||
if you use two hands to make an attack with a weapon. You can also
|
||||
dismiss the Bladesong at any time you choose (no action required).
|
||||
|
||||
While your Bladesong is active, you gain the following benefits:
|
||||
|
||||
- You gain a bonus to your AC equal to your Intelligence modifier
|
||||
(minimum of +1).
|
||||
- Your walking speed increases by 10 feet.
|
||||
- You have advantage on Dexterity (Acrobatics) checks.
|
||||
- You gain a bonus to any Constitution saving throw you make to
|
||||
maintain your concentration on a spell. The bonus equals your
|
||||
Intelligence modifier (minimum of +l).
|
||||
|
||||
You can use this feature twice. You regain all expended uses of it
|
||||
when you finish a short or long rest.
|
||||
|
||||
"""
|
||||
name = "Bladesong (2x/SR)"
|
||||
|
||||
@@ -1,16 +1,5 @@
|
||||
\documentclass[twocolumn,lettersize]{article}
|
||||
|
||||
\newlength{\zerosep}
|
||||
[% if use_dnd_decorations %]
|
||||
\usepackage[layout=true]{dnd}
|
||||
\setlength{\zerosep}{0em}
|
||||
[% else %]
|
||||
\usepackage[margin=1.5cm]{geometry}
|
||||
\setlength{\zerosep}{-1em}
|
||||
\usepackage[dvipsnames]{color}
|
||||
[% endif %]
|
||||
\definecolor{mygrey}{gray}{0.7}
|
||||
|
||||
[% include 'preamble.tex' %]
|
||||
|
||||
\title{Wild Shapes}
|
||||
@@ -18,34 +7,8 @@
|
||||
|
||||
\author{[[ character.name ]]}
|
||||
|
||||
%%% Fallback definitions for Docutils-specific commands
|
||||
[% raw %]
|
||||
% admonition (specially marked topic)
|
||||
\providecommand{\DUadmonition}[2][class-arg]{%
|
||||
% try \DUadmonition#1{#2}:
|
||||
\ifcsname DUadmonition#1\endcsname%
|
||||
\csname DUadmonition#1\endcsname{#2}%
|
||||
\else
|
||||
\begin{center}
|
||||
\fbox{\parbox{0.9\linewidth}{#2}}
|
||||
\end{center}
|
||||
\fi
|
||||
}
|
||||
|
||||
% title for topics, admonitions, unsupported section levels, and sidebar
|
||||
\providecommand*{\DUtitle}[2][class-arg]{%
|
||||
% call \DUtitle#1{#2} if it exists:
|
||||
\ifcsname DUtitle#1\endcsname%
|
||||
\csname DUtitle#1\endcsname{#2}%
|
||||
\else
|
||||
\smallskip\noindent\textbf{#2}\smallskip%
|
||||
\fi
|
||||
}
|
||||
[% endraw %]
|
||||
|
||||
\begin{document}
|
||||
|
||||
|
||||
\twocolumn[
|
||||
\begin{@twocolumnfalse}
|
||||
\maketitle
|
||||
@@ -57,7 +20,6 @@
|
||||
\end{@twocolumnfalse}
|
||||
]
|
||||
|
||||
|
||||
[% for shape in character.all_wild_shapes|sort(attribute='challenge_rating') %]
|
||||
[% if not character.can_assume_shape(shape) %]
|
||||
{\color{mygrey}
|
||||
|
||||
@@ -1,50 +1,11 @@
|
||||
\documentclass[10pt,twocolumn,lettersize]{article}
|
||||
|
||||
\newlength{\zerosep}
|
||||
[% if use_dnd_decorations %]
|
||||
\usepackage[layout=true]{dnd}
|
||||
\setlength{\zerosep}{0em}
|
||||
[% else %]
|
||||
\usepackage[margin=1.5cm]{geometry}
|
||||
\usepackage[dvipsnames]{color}
|
||||
\definecolor{mygrey}{gray}{0.7}
|
||||
\setlength{\zerosep}{-1em}
|
||||
[% endif %]
|
||||
|
||||
[% include 'preamble.tex' %]
|
||||
|
||||
\title{Features and Magic Items}
|
||||
\author{[[ character.name ]]}
|
||||
\date{}
|
||||
|
||||
%%% Fallback definitions for Docutils-specific commands
|
||||
[% raw %]
|
||||
\usepackage{longtable,ltcaption,array}
|
||||
\setlength{\extrarowheight}{2pt}
|
||||
\newlength{\DUtablewidth} % internal use in tables
|
||||
% admonition (specially marked topic)
|
||||
\providecommand{\DUadmonition}[2][class-arg]{%
|
||||
% try \DUadmonition#1{#2}:
|
||||
\ifcsname DUadmonition#1\endcsname%
|
||||
\csname DUadmonition#1\endcsname{#2}%
|
||||
\else
|
||||
\begin{center}
|
||||
\fbox{\parbox{0.9\linewidth}{#2}}
|
||||
\end{center}
|
||||
\fi
|
||||
}
|
||||
|
||||
% title for topics, admonitions, unsupported section levels, and sidebar
|
||||
\providecommand*{\DUtitle}[2][class-arg]{%
|
||||
% call \DUtitle#1{#2} if it exists:
|
||||
\ifcsname DUtitle#1\endcsname%
|
||||
\csname DUtitle#1\endcsname{#2}%
|
||||
\else
|
||||
\smallskip\noindent\textbf{#2}\smallskip%
|
||||
\fi
|
||||
}
|
||||
[% endraw %]
|
||||
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
|
||||
@@ -1,45 +1,11 @@
|
||||
\documentclass[10pt,twocolumn,lettersize]{article}
|
||||
|
||||
\newlength{\zerosep}
|
||||
[% if use_dnd_decorations %]
|
||||
\usepackage[layout=true]{dnd}
|
||||
\setlength{\zerosep}{0em}
|
||||
[% else %]
|
||||
\usepackage[margin=1.5cm]{geometry}
|
||||
\setlength{\zerosep}{-1em}
|
||||
[% endif %]
|
||||
|
||||
[% include 'preamble.tex' %]
|
||||
|
||||
\title{Infusion Descriptions}
|
||||
\author{[[ character.name ]] (Artificer [[ character.Artificer.level ]] level)}
|
||||
\date{}
|
||||
|
||||
%%% Fallback definitions for Docutils-specific commands
|
||||
[% raw %]
|
||||
% admonition (specially marked topic)
|
||||
\providecommand{\DUadmonition}[2][class-arg]{%
|
||||
% try \DUadmonition#1{#2}:
|
||||
\ifcsname DUadmonition#1\endcsname%
|
||||
\csname DUadmonition#1\endcsname{#2}%
|
||||
\else
|
||||
\begin{center}
|
||||
\fbox{\parbox{0.9\linewidth}{#2}}
|
||||
\end{center}
|
||||
\fi
|
||||
}
|
||||
|
||||
% title for topics, admonitions, unsupported section levels, and sidebar
|
||||
\providecommand*{\DUtitle}[2][class-arg]{%
|
||||
% call \DUtitle#1{#2} if it exists:
|
||||
\ifcsname DUtitle#1\endcsname%
|
||||
\csname DUtitle#1\endcsname{#2}%
|
||||
\else
|
||||
\smallskip\noindent\textbf{#2}\smallskip%
|
||||
\fi
|
||||
}
|
||||
[% endraw %]
|
||||
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
|
||||
@@ -4,3 +4,46 @@
|
||||
\usepackage{alltt}
|
||||
|
||||
\usepackage{supertabular}
|
||||
|
||||
% Make lists more compact
|
||||
\usepackage{enumitem}
|
||||
\setlist{noitemsep}
|
||||
|
||||
\newlength{\zerosep}
|
||||
[% if use_dnd_decorations %]
|
||||
\usepackage[layout=true]{dnd}
|
||||
\setlength{\zerosep}{0em}
|
||||
[% else %]
|
||||
\usepackage[margin=1.5cm]{geometry}
|
||||
\usepackage[dvipsnames]{color}
|
||||
\setlength{\zerosep}{-1em}
|
||||
[% endif %]
|
||||
\definecolor{mygrey}{gray}{0.7}
|
||||
|
||||
%%% Fallback definitions for Docutils-specific commands
|
||||
[% raw %]
|
||||
\usepackage{longtable,ltcaption,array}
|
||||
\setlength{\extrarowheight}{2pt}
|
||||
\newlength{\DUtablewidth} % internal use in tables
|
||||
% admonition (specially marked topic)
|
||||
\providecommand{\DUadmonition}[2][class-arg]{%
|
||||
% try \DUadmonition#1{#2}:
|
||||
\ifcsname DUadmonition#1\endcsname%
|
||||
\csname DUadmonition#1\endcsname{#2}%
|
||||
\else
|
||||
\begin{center}
|
||||
\fbox{\parbox{0.9\linewidth}{#2}}
|
||||
\end{center}
|
||||
\fi
|
||||
}
|
||||
|
||||
% title for topics, admonitions, unsupported section levels, and sidebar
|
||||
\providecommand*{\DUtitle}[2][class-arg]{%
|
||||
% call \DUtitle#1{#2} if it exists:
|
||||
\ifcsname DUtitle#1\endcsname%
|
||||
\csname DUtitle#1\endcsname{#2}%
|
||||
\else
|
||||
\smallskip\noindent\textbf{#2}\smallskip%
|
||||
\fi
|
||||
}
|
||||
[% endraw %]
|
||||
|
||||
@@ -1,48 +1,11 @@
|
||||
\documentclass[10pt,twocolumn,lettersize]{article}
|
||||
|
||||
\newlength{\zerosep}
|
||||
[% if use_dnd_decorations %]
|
||||
\usepackage[layout=true]{dnd}
|
||||
\setlength{\zerosep}{0em}
|
||||
[% else %]
|
||||
\usepackage[margin=1.5cm]{geometry}
|
||||
\usepackage[dvipsnames]{color}
|
||||
\definecolor{mygrey}{gray}{0.7}
|
||||
\setlength{\zerosep}{-1em}
|
||||
[% endif %]
|
||||
|
||||
[% include 'preamble.tex' %]
|
||||
|
||||
\title{Spell Descriptions}
|
||||
\author{[[ character.name ]]}
|
||||
\date{}
|
||||
|
||||
%%% Fallback definitions for Docutils-specific commands
|
||||
[% raw %]
|
||||
% admonition (specially marked topic)
|
||||
\providecommand{\DUadmonition}[2][class-arg]{%
|
||||
% try \DUadmonition#1{#2}:
|
||||
\ifcsname DUadmonition#1\endcsname%
|
||||
\csname DUadmonition#1\endcsname{#2}%
|
||||
\else
|
||||
\begin{center}
|
||||
\fbox{\parbox{0.9\linewidth}{#2}}
|
||||
\end{center}
|
||||
\fi
|
||||
}
|
||||
|
||||
% title for topics, admonitions, unsupported section levels, and sidebar
|
||||
\providecommand*{\DUtitle}[2][class-arg]{%
|
||||
% call \DUtitle#1{#2} if it exists:
|
||||
\ifcsname DUtitle#1\endcsname%
|
||||
\csname DUtitle#1\endcsname{#2}%
|
||||
\else
|
||||
\smallskip\noindent\textbf{#2}\smallskip%
|
||||
\fi
|
||||
}
|
||||
[% endraw %]
|
||||
|
||||
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
@@ -73,7 +36,7 @@
|
||||
\item [Range:] [[ spl.casting_range ]] \\
|
||||
\item [Components:] [[ spl.component_string ]]
|
||||
\end{description}
|
||||
\vspace{\zerosep}
|
||||
% \vspace{\zerosep}
|
||||
|
||||
[[ spl.__doc__ | rst_to_latex(top_heading_level=1) ]]
|
||||
|
||||
|
||||
@@ -439,20 +439,24 @@ class InvestitureOfFlame(Spell):
|
||||
|
||||
|
||||
class InvestitureOfIce(Spell):
|
||||
"""Until the spell ends, ice rimes your body, and you gain the following benefits:
|
||||
|
||||
- You are immune to cold damage and have resistance to fire damage.
|
||||
- You can
|
||||
move across difficult terrain created by ice or snow without spending extra
|
||||
movement.
|
||||
- The ground in a 10-foot radius around you is icy and is difficult
|
||||
terrain for creatures other than you. The radius moves with you.
|
||||
- You can use
|
||||
your action to create a 15-foot cone of freezing wind extending from your
|
||||
outstretched hand in a direction you choose. Each creature in the cone must make
|
||||
a Constitution saving throw. A creature takes 4d6 cold damage on a failed save,
|
||||
or half as much damage on a successful one. A creature that fails its save
|
||||
against this effect has its speed halved until the start of your next turn.
|
||||
"""Until the spell ends, ice rimes your body, and you gain the
|
||||
following benefits:
|
||||
|
||||
- You are immune to cold damage and have resistance to fire
|
||||
damage.
|
||||
- You can move across difficult terrain created by ice or snow
|
||||
without spending extra movement.
|
||||
- The ground in a 10-foot radius around you is icy and is
|
||||
difficult terrain for creatures other than you. The radius moves
|
||||
with you.
|
||||
- You can use your action to create a 15-foot cone of freezing
|
||||
wind extending from your outstretched hand in a direction you
|
||||
choose. Each creature in the cone must make a Constitution
|
||||
saving throw. A creature takes 4d6 cold damage on a failed save,
|
||||
or half as much damage on a successful one. A creature that
|
||||
fails its save against this effect has its speed halved until
|
||||
the start of your next turn.
|
||||
|
||||
"""
|
||||
name = "Investiture Of Ice"
|
||||
level = 6
|
||||
@@ -469,17 +473,20 @@ class InvestitureOfIce(Spell):
|
||||
class InvestitureOfStone(Spell):
|
||||
"""Until the spell ends, bits of rock spread across your body, and you gain the
|
||||
following benefits:
|
||||
|
||||
- You have resistance to bludgeoning, piercing, and slashing
|
||||
damage from nonmagical weapons.
|
||||
- You can use your action to create a small
|
||||
earthquake on the ground in a 15-foot radius centered on you. Other creatures on
|
||||
that ground must succeed on a Dexterity saving throw or be knocked prone.
|
||||
- You
|
||||
can move across difficult terrain made of earth or stone without spending extra
|
||||
movement. You can move through solid earth or stone as if it was air and
|
||||
without destabilizing it, but you can't end your movement there. If you do so,
|
||||
you are ejected to the nearest unoccupied space, this spell ends, and you are
|
||||
stunned until the end of your next turn.
|
||||
damage from nonmagical weapons.
|
||||
- You can use your action to create a small earthquake on the
|
||||
ground in a 15-foot radius centered on you. Other creatures on
|
||||
that ground must succeed on a Dexterity saving throw or be
|
||||
knocked prone.
|
||||
- You can move across difficult terrain made of earth or stone
|
||||
without spending extra movement. You can move through solid
|
||||
earth or stone as if it was air and without destabilizing it,
|
||||
but you can't end your movement there. If you do so, you are
|
||||
ejected to the nearest unoccupied space, this spell ends, and
|
||||
you are stunned until the end of your next turn.
|
||||
|
||||
"""
|
||||
name = "Investiture Of Stone"
|
||||
level = 6
|
||||
|
||||
@@ -93,28 +93,29 @@ class MagicCircle(Spell):
|
||||
"""You create a 10-foot-radius, 20-foot-tall cylinder of magical energy centered on
|
||||
a point on the ground that you can see within range. Glowing runes appear
|
||||
wherever the cylinder intersects with the floor or other surface.
|
||||
|
||||
Choose one or
|
||||
more of the following types of creatures: celestials, elementals, fey, fiends,
|
||||
or undead. The circle affects a creature of the chosen type in the following
|
||||
ways:
|
||||
|
||||
* The creature can't willingly enter the cylinder by nonmagical means. If
|
||||
the creature tries to use teleportation or interplanar travel to do so, it must
|
||||
first succeed on a Charisma saving throw.
|
||||
* The creature has disadvantage on
|
||||
attack rolls against targets within the cylinder.
|
||||
* Targets within the cylinder
|
||||
can't be charmed, frightened, or possessed by the creature.
|
||||
|
||||
When you cast this
|
||||
spell, you can elect to cause its magic to operate in the reverse direction,
|
||||
preventing a creature of the specified type from leaving the cylinder and
|
||||
protecting targets outside it.
|
||||
|
||||
**At Higher Levels:** When you cast this spell using
|
||||
a spell slot of 4th level or higher, the duration increases by 1 hour for each
|
||||
|
||||
Choose one or more of the following types of creatures:
|
||||
celestials, elementals, fey, fiends, or undead. The circle affects
|
||||
a creature of the chosen type in the following ways:
|
||||
|
||||
- The creature can't willingly enter the cylinder by nonmagical
|
||||
means. If the creature tries to use teleportation or interplanar
|
||||
travel to do so, it must first succeed on a Charisma saving
|
||||
throw.
|
||||
- The creature has disadvantage on attack rolls against targets
|
||||
within the cylinder.
|
||||
- Targets within the cylinder can't be charmed, frightened, or
|
||||
possessed by the creature.
|
||||
|
||||
When you cast this spell, you can elect to cause its magic to
|
||||
operate in the reverse direction, preventing a creature of the
|
||||
specified type from leaving the cylinder and protecting targets
|
||||
outside it.
|
||||
|
||||
**At Higher Levels:** When you cast this spell using a spell slot
|
||||
of 4th level or higher, the duration increases by 1 hour for each
|
||||
slot level above 3rd.
|
||||
|
||||
"""
|
||||
name = "Magic Circle"
|
||||
level = 3
|
||||
@@ -1055,27 +1056,27 @@ class MoldEarth(Spell):
|
||||
|
||||
|
||||
class Moonbeam(Spell):
|
||||
"""A silvery beam of pale light shines down in a 5-footradius, 40-foot-high
|
||||
cylinder centered on a point within range. Until the spell ends, dim light fills
|
||||
the cylinder.
|
||||
|
||||
|
||||
"""A silvery beam of pale light shines down in a 5-footradius,
|
||||
40-foot-high cylinder centered on a point within range. Until the
|
||||
spell ends, dim light fills the cylinder.
|
||||
|
||||
When a creature enters the spell's area for the first time on a
|
||||
turn or starts its turn there, it is engulfed in ghostly flames that cause
|
||||
searing pain, and it must make a Constitution saving throw. It takes 2d10
|
||||
radiant damage on a failed save, or half as much damage on a successful one.
|
||||
turn or starts its turn there, it is engulfed in ghostly flames
|
||||
that cause searing pain, and it must make a Constitution saving
|
||||
throw. It takes 2d10 radiant damage on a failed save, or half as
|
||||
much damage on a successful one.
|
||||
|
||||
A shapechanger makes its saving throw with disadvantage. If it
|
||||
fails, it also instantly reverts to its original form and can't
|
||||
assume a different form until it leaves the spell's light.
|
||||
|
||||
On each of your turns after you cast this spell, you can use an
|
||||
action to move the beam 60 feet in any direction.
|
||||
|
||||
**At Higher Levels:** When you cast this spell using aspell slot
|
||||
of 3rd level or higher, the damage increases by 1d10 for each slot
|
||||
level above 2nd.
|
||||
|
||||
A
|
||||
shapechanger makes its saving throw with disadvantage. If it fails, it also
|
||||
instantly reverts to its original form and can't assume a different form until
|
||||
it leaves the spell's light.
|
||||
|
||||
On each of your turns after you cast this spell,
|
||||
you can use an action to move the beam 60 feet in any direction.
|
||||
|
||||
At Higher
|
||||
Levels: When you cast this spell using aspell slot of 3rd level or higher, the
|
||||
damage increases by 1d1O for each slot level above 2nd.
|
||||
"""
|
||||
name = "Moonbeam"
|
||||
level = 2
|
||||
|
||||
@@ -95,17 +95,18 @@ class PhantasmalForce(Spell):
|
||||
|
||||
|
||||
class PhantasmalKiller(Spell):
|
||||
"""You tap into the nightmares of a creature you can see within range and create an
|
||||
illusory manifestation of its deepest fears, visible only to that creature.
|
||||
The
|
||||
target must make a Wisdom saving throw. On a failed save, the target becomes
|
||||
frightened for the duration. At the end of each of the target's turns before the
|
||||
spell ends, the target must succeed on a Wisdom saving throw or take 4d10
|
||||
psychic damage. On a successful save, the spell ends.
|
||||
|
||||
**At Higher Levels:** When
|
||||
you cast this spell using a spell slot of 5th level or higher, the damage
|
||||
increases by 1d1O for each slot level above 4th.
|
||||
"""You tap into the nightmares of a creature you can see within range
|
||||
and create an illusory manifestation of its deepest fears, visible
|
||||
only to that creature. The target must make a Wisdom saving
|
||||
throw. On a failed save, the target becomes frightened for the
|
||||
duration. At the end of each of the target's turns before the
|
||||
spell ends, the target must succeed on a Wisdom saving throw or
|
||||
take 4d10 psychic damage. On a successful save, the spell ends.
|
||||
|
||||
**At Higher Levels:** When you cast this spell using a spell slot
|
||||
of 5th level or higher, the damage increases by 1d10 for each slot
|
||||
level above 4th.
|
||||
|
||||
"""
|
||||
name = "Phantasmal Killer"
|
||||
level = 4
|
||||
|
||||
@@ -93,17 +93,15 @@ class Scrying(Spell):
|
||||
and the sort of physical connection you have to it. If a target
|
||||
knows you're casting this spell, it can fail the saving throw
|
||||
voluntarily if it wants to be observed.
|
||||
|
||||
Knowledge - Save Modifier
|
||||
-------------------------
|
||||
|
||||
|
||||
**Knowledge - Save Modifier**
|
||||
|
||||
- Secondhand (you have heard of the target) - +5
|
||||
- Firsthand (you have met the target) - +0
|
||||
- Familiar (you know the target well) - -5
|
||||
|
||||
Connection - Save Modifier
|
||||
--------------------------
|
||||
|
||||
|
||||
**Connection - Save Modifier**
|
||||
|
||||
- Likeness or picture - -2
|
||||
- Possession or garment - -4
|
||||
- Body part, lock of hair, bit of nail, or the like - -10
|
||||
@@ -325,27 +323,25 @@ class ShadowOfMoil(Spell):
|
||||
|
||||
|
||||
class ShapeWater(Spell):
|
||||
"""You choose an area of water that you can see within range and that fits within a
|
||||
5-foot cube.
|
||||
You manipulate it in one of the following ways:
|
||||
|
||||
- You
|
||||
instantaneously move or otherwise change the flow of the water as you direct, up
|
||||
to 5 feet in any direction. This movement doesn't have enough force to cause
|
||||
damage.
|
||||
|
||||
- You cause the water to form into simple shapes and animate at your
|
||||
direction. This change lasts for 1 hour.
|
||||
|
||||
- You change the water's color or
|
||||
opacity. The water must be changed in the same way throughout. This change lasts
|
||||
for 1 hour.
|
||||
|
||||
"""You choose an area of water that you can see within range and that
|
||||
fits within a 5-foot cube. You manipulate it in one of the
|
||||
following ways:
|
||||
|
||||
- You instantaneously move or otherwise change the flow of the
|
||||
water as you direct, up to 5 feet in any direction. This
|
||||
movement doesn't have enough force to cause damage.
|
||||
- You cause the water to form into simple shapes and animate at
|
||||
your direction. This change lasts for 1 hour.
|
||||
- You change the water's color or opacity. The water must be
|
||||
changed in the same way throughout. This change lasts for 1
|
||||
hour.
|
||||
- You freeze the water, provided that there are no crea- tures in
|
||||
it. The water unfreezes in 1 hour.
|
||||
If you cast this spell multiple times, you
|
||||
can have no more than two of its non-instantaneous effects active at a time, and
|
||||
you can dismiss such an effect as an action.
|
||||
it. The water unfreezes in 1 hour.
|
||||
|
||||
If you cast this spell multiple times, you can have no more than
|
||||
two of its non-instantaneous effects active at a time, and you can
|
||||
dismiss such an effect as an action.
|
||||
|
||||
"""
|
||||
name = "Shape Water"
|
||||
level = 0
|
||||
|
||||
@@ -99,21 +99,22 @@ class Telepathy(Spell):
|
||||
|
||||
|
||||
class Teleport(Spell):
|
||||
"""This spell instantly transports you and up to eight willing creatures of your
|
||||
choice that you can see within range, or a single object that you can see within
|
||||
range, to a destination you select. If you target an object, it must be able to
|
||||
fit entirely inside a 10-foot cube, and it can't be held or carried by an
|
||||
"""This spell instantly transports you and up to eight willing
|
||||
creatures of your choice that you can see within range, or a
|
||||
single object that you can see within range, to a destination you
|
||||
select. If you target an object, it must be able to fit entirely
|
||||
inside a 10-foot cube, and it can't be held or carried by an
|
||||
unwilling creature.
|
||||
|
||||
The destination you choose must be known to you, and it
|
||||
must be on the same plane of existence as you. Your familiarity with the
|
||||
destination determines whether you arrive there successfully. The DM rolls d100
|
||||
and consults the table.
|
||||
|
||||
|
||||
The destination you choose must be known to you, and it must be on
|
||||
the same plane of existence as you. Your familiarity with the
|
||||
destination determines whether you arrive there successfully. The
|
||||
DM rolls d100 and consults the table.
|
||||
|
||||
================= ====== ============ ========== =========
|
||||
Familiarity Mishap Similar Area Off Target On Target
|
||||
================= ====== ============ ========== =========
|
||||
Permanent circle -- -- -- 01-100
|
||||
Permanent circle -- -- -- 01-100
|
||||
Associated object -- -- -- 01-100
|
||||
Very familiar 01–05 06–13 14–24 25–100
|
||||
Seen casually 01–33 34–43 44–53 54–100
|
||||
@@ -852,5 +853,3 @@ class Tsunami(Spell):
|
||||
ritual = False
|
||||
magic_school = "Conjuration"
|
||||
classes = ('Druid',)
|
||||
|
||||
|
||||
|
||||
@@ -311,17 +311,18 @@ class WardingWind(Spell):
|
||||
"""A strong wind (20 miles per hour) blows around you in a 10-foot
|
||||
radius and moves with you, remaining centered on you. The wind
|
||||
lasts for the spell's duration.
|
||||
|
||||
|
||||
The wind has the following effects:
|
||||
|
||||
- It deafens you and other creatures in its area.
|
||||
- It extinguishes unprotected flames in its area that are
|
||||
torch-sized or smaller.
|
||||
torch-sized or smaller.
|
||||
- The area is difficult terrain for creatures other than you.
|
||||
- The attack rolls of ranged weapon attacks have disadvantage if
|
||||
they pass in or out of the wind.
|
||||
they pass in or out of the wind.
|
||||
- It hedges out vapor, gas, and fog that can be dispersed by
|
||||
strong wind.
|
||||
|
||||
strong wind.
|
||||
|
||||
"""
|
||||
name = "Warding Wind"
|
||||
level = 2
|
||||
|
||||
+13
-1
@@ -2,11 +2,23 @@
|
||||
|
||||
from unittest import TestCase
|
||||
|
||||
from dungeonsheets.features import create_feature, Feature
|
||||
from dungeonsheets import features
|
||||
from dungeonsheets.features import create_feature, Feature, all_features
|
||||
|
||||
|
||||
class TestFeatures(TestCase):
|
||||
"""Tests for features and feature-related activities."""
|
||||
def test_all_features(self):
|
||||
# Make sure only features are returned
|
||||
for ThisFeature in all_features():
|
||||
self.assertTrue(isinstance(ThisFeature, type),
|
||||
f"``all_features`` returned {ThisFeature} (not a class)")
|
||||
self.assertTrue(issubclass(ThisFeature, Feature),
|
||||
f"``all_features`` returned {ThisFeature} (not a feature)")
|
||||
# Pick a couple of known features to spot-check for
|
||||
all_the_features = list(all_features())
|
||||
self.assertIn(features.FalseIdentity, all_the_features)
|
||||
self.assertIn(features.DivineSmite, all_the_features)
|
||||
|
||||
def test_create_feature(self):
|
||||
NewFeature = create_feature(name="Hello world")
|
||||
|
||||
@@ -3,7 +3,7 @@ import os
|
||||
from pathlib import Path
|
||||
import subprocess
|
||||
|
||||
from dungeonsheets import make_sheets, character, spells
|
||||
from dungeonsheets import make_sheets, character, spells, features
|
||||
|
||||
EG_DIR = os.path.abspath(os.path.join(os.path.split(__file__)[0], '../examples/'))
|
||||
CHARFILE = os.path.join(EG_DIR, 'rogue1.py')
|
||||
@@ -136,9 +136,16 @@ class MarkdownTestCase(unittest.TestCase):
|
||||
self.assertNotIn("endfoot", tex)
|
||||
self.assertNotIn("endhead", tex)
|
||||
self.assertNotIn("endfirsthead", tex)
|
||||
|
||||
|
||||
def test_rst_all_spells(self):
|
||||
for spell in spells.all_spells():
|
||||
tex = make_sheets.rst_to_latex(spell.__doc__)
|
||||
self.assertNotIn("DUadmonition", tex,
|
||||
f"spell {spell} is not valid reStructured text")
|
||||
|
||||
def test_rst_all_features(self):
|
||||
for feature in features.all_features():
|
||||
tex = make_sheets.rst_to_latex(feature.__doc__)
|
||||
self.assertNotIn("DUadmonition", tex,
|
||||
f"feature {feature} is not valid reStructured text")
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ class TestSpells(TestCase):
|
||||
self.assertEqual(NewSpell.name, 'Hello world')
|
||||
spell = NewSpell()
|
||||
print(spell, spell.__class__, type(spell))
|
||||
|
||||
|
||||
def test_spell_str(self):
|
||||
spell = Spell()
|
||||
spell.name = "My spell"
|
||||
|
||||
Reference in New Issue
Block a user