mirror of
https://github.com/Threnklyn/dungeon-sheets.git
synced 2026-05-18 12:13:27 +02:00
219 lines
7.3 KiB
Python
219 lines
7.3 KiB
Python
"""This file defines some homebrew mechanics that can be imported into
|
|
character sheets using ``dungeonsheets.import_homebrew``. See
|
|
``homebrew.py`` for an example of how these homebrew mechanics can be
|
|
used.
|
|
|
|
"""
|
|
|
|
from dungeonsheets import race
|
|
from dungeonsheets import features as feats
|
|
# from dungeonsheets import mecanics
|
|
|
|
class WildCompanion(feats.Feature):
|
|
"""You gain the ability to summon a spirit that assumes an animal form:
|
|
as an action, you can expend a use of your Wild Shape feature
|
|
to cast the *find familiar* spell, without material components.
|
|
|
|
When you cast the spell in this way, the familiar
|
|
is a fey instead of a beast, and the familiar disapears after
|
|
a number of hours equal to half your druid level.
|
|
"""
|
|
|
|
name = "Wild Companion"
|
|
source = "Class (Druid)"
|
|
|
|
# shifters
|
|
class Shifting(feats.Feature):
|
|
"""As a bonus action, you can assume a more bestial appearence.
|
|
This transformation lasts for 1 minute, until you die, or until
|
|
you revert to your normal appearence as a bonus action. When you shift,
|
|
you gain temporary hit points equal to your level + your Constitution
|
|
modifier (minimum of 1 temporary hit point). You also gain additional
|
|
benefits that depend on your shifter subrace. Once you shift,
|
|
you can't to so again until you finish a short or long rest.
|
|
"""
|
|
|
|
name = "Beasthide Shifting"
|
|
source = "Race (Beasthide Shifter)"
|
|
|
|
class BeasthideShifting(feats.Feature):
|
|
"""Whenever you shift, you gain 1d6 additional temporary hit points.
|
|
While shifted, you have a +1 bonus to your Armor Class.
|
|
|
|
"""
|
|
|
|
name = "Beasthide Shifting (1x/SR)"
|
|
source = "Race (Beasthide Shifter)"
|
|
|
|
class LongtoothShifting(feats.Feature):
|
|
"""While shifted, you can use your elongated fangs to make an unarmed
|
|
strike as a bonus action. If you hit with your fangs, you can deal
|
|
piercing damage equal to 1d6 + your Strength modifier, instead
|
|
of the bludgeoning damage normal for an unarmed attack.
|
|
|
|
"""
|
|
|
|
name = "Longtooth Shifting (1x/SR)"
|
|
source = "Race (Longtooth Shifter)"
|
|
|
|
class SwiftstrideShifting(feats.Feature):
|
|
"""While shifted, your walking speed increases by 10 feet. Additionally,
|
|
you can move up to 10 feet as a reaction when a creature ends its turn
|
|
within 5 feet of you. This reactive movement doesn't provoke
|
|
opportunity attacks.
|
|
|
|
"""
|
|
|
|
name = "Swiftstride Shifting (1x/SR)"
|
|
source = "Race (Swiftstride Shifter)"
|
|
|
|
class WildhuntShifting(feats.Feature):
|
|
"""While shifted, you have advantage on Wisdom checks, and no creature
|
|
within 30 feet of you can make an attack roll with advantage against you,
|
|
unless you are incapacitated.
|
|
|
|
"""
|
|
|
|
name = "Wildhunt Shifting (1x/SR)"
|
|
source = "Race (Beasthide Shifter)"
|
|
|
|
class NaturalAthlete(feats.Feature):
|
|
"""You have proficiency in the Athletics skill.
|
|
"""
|
|
|
|
name = "Natural Athlete"
|
|
source = "Race (Beasthide Shifter)"
|
|
|
|
class Fierce(feats.Feature):
|
|
"""You have proficiency in the Intimidation skill.
|
|
"""
|
|
|
|
name = "Fierce"
|
|
source = "Race (Longtooth Shifter)"
|
|
|
|
class Graceful(feats.Feature):
|
|
"""You have proficiency in the Acrobatics skill.
|
|
"""
|
|
|
|
name = "Graceful"
|
|
source = "Race (Swiftstride Shifter)"
|
|
|
|
class NaturalTracker(feats.Feature):
|
|
"""You have proficiency in the Survival skill.
|
|
"""
|
|
|
|
name = "Natural Tracker"
|
|
source = "Race (Wildhunt Shifter)"
|
|
|
|
|
|
class _Shifter(race.Race):
|
|
name = "Shifter"
|
|
size = "medium"
|
|
speed = 30
|
|
languages = ("Common", )
|
|
features = (feats.Darkvision, Shifting)
|
|
|
|
|
|
class BeasthideShifter(_Shifter):
|
|
name = "Beasthide Shifter"
|
|
constitution_bonus = 2
|
|
strength_bonus = 1
|
|
features = _Shifter.features + (BeasthideShifting, NaturalAthlete)
|
|
|
|
class LongtoothShifter(_Shifter):
|
|
name = "Longtooth Shifter"
|
|
constitution_bonus = 2
|
|
strength_bonus = 1
|
|
features = _Shifter.features + (LongtoothShifting, Fierce)
|
|
|
|
class SwiftstrideShifter(_Shifter):
|
|
name = "Swiftstride Shifter"
|
|
dexterity_bonus = 2
|
|
charisma_bonus = 1
|
|
features = _Shifter.features + (SwiftstrideShifting, Graceful)
|
|
|
|
class WildhuntShifter(_Shifter):
|
|
name = "Wildhunt Shifter"
|
|
constitution_bonus = 2
|
|
strength_bonus = 1
|
|
features = _Shifter.features + (WildhuntShifting, NaturalTracker)
|
|
|
|
class DualMind(feats.Feature):
|
|
"""You have advantage on all Wisdom saving throws.
|
|
"""
|
|
name = "Dual Mind"
|
|
source = "Race (Kalashtar)"
|
|
|
|
class MentalDiscipline(feats.Feature):
|
|
"""You have resistance to psychic damage.
|
|
"""
|
|
name = "Mental Discipline"
|
|
source = "Race (Kalashtar)"
|
|
|
|
class MindLink(feats.Feature):
|
|
"""You can speak telepathically to any creature you can see, provided
|
|
the crature is within a number of feet of you equal to 10 times your level.
|
|
You don't need to share a language with the creature for it to understand
|
|
your telepathic utterances, but the creature must be able to
|
|
understand at least one language.
|
|
|
|
When you are using this trait to speak telepathically to a creature,
|
|
you can use your action to give that crature the ability to speak
|
|
telepatically with you for 1 hour or until you end this effect as an
|
|
action. To use this ability, the creature must be able to see you and must
|
|
be within this trait's range. You can give this ability to only
|
|
one creature at a time; giving it to another creature takes it away from
|
|
another creature who has it."""
|
|
name = "Mind Link"
|
|
source = "Race (Kalashtar)"
|
|
|
|
class SeveredFromDreams(feats.Feature):
|
|
"""Kalashtar sleep, but they don't connect to the plane of dreams
|
|
as other creatures do. Instead, their minds draw from the memoires
|
|
of their otherworldly spirit while they sleep. As such,
|
|
you are immune to spells that require you to dream, like *dream*,
|
|
but not to spells and other magical effects that put you to sleep.
|
|
"""
|
|
name = "Severed from Dreams"
|
|
source = "Race (Kalashtar)"
|
|
|
|
class Kalashtar(race.Race):
|
|
name = "Kalashtar"
|
|
size = "medium"
|
|
speed = 30
|
|
charisma_bonus = 1
|
|
wisdom_bonus = 2
|
|
languages = ("Common", "Quori", )
|
|
features = (DualMind, MentalDiscipline, MindLink, SeveredFromDreams)
|
|
|
|
class PoisonResiliense(feats.Feature):
|
|
"""You have advantage on saving throws you make to avoid or end the
|
|
poisoned condition on yourself. You also have resistance to poison damage.
|
|
"""
|
|
name = "Poison Resilience"
|
|
source = "Race (Yuan-Ti)"
|
|
|
|
class SerpentineSpellcasting(feats.Feature):
|
|
"""You know the poison spray cantrip. You can cast animal friendship an
|
|
unlimited number of times with this trait, but you can target only
|
|
snakes with it. Starting at 3rd level, you can also cast suggestion
|
|
with this trait. Once you cast it, you can't do so again until you
|
|
finish a long rest. You can also cast it using any spell slots you
|
|
have of 2nd level or higher.
|
|
|
|
Intelligence, Wisdom, or Charisma is your spellcasting ability
|
|
for these spells when you cast them with this trait
|
|
(choose when you select this race).
|
|
"""
|
|
|
|
class Yuan_Ti(race.Race):
|
|
name = "Yuan-Ti"
|
|
size = "medium"
|
|
speed = 30
|
|
languages = ("Common", )
|
|
features = (feats.Darkvision, feats.MagicResistance, PoisonResiliense,
|
|
SerpentineSpellcasting)
|
|
|
|
|
|
|