Files
dungeon-sheets/dungeonsheets/classes/monk.py
T
2018-12-21 12:25:02 -05:00

133 lines
5.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
__all__ = ('Monk')
from .. import (features, weapons)
from .classes import CharClass, SubClass
from collections import defaultdict
# PHB
class OpenHandWay(SubClass):
"""Monks of the Way of the Open Hand are the ultimate masters of martial arts
combat, whether armed or unarmed. They learn techniques to push and trip
their opponents, manipulate ki to heal damage to their bodies, and practice
advanced meditation that can protect them from harm.
"""
name = "Way of the Open Hand"
features_by_level = defaultdict(list)
class ShadowWay(SubClass):
"""Monks of the Way of Shadow follow a tradition that values stealth and
subterfuge. These monks might be called ninjas or shadowdancers, and they
serve as spies and assassins. Sometimes the members of a ninja monastery
are family members, forming a clan sworn to secrecy about their arts and
missions. Other monasteries are more like thieves guilds, hiring out their
services to nobles, rich merchants, or anyone else who can pay their
fees. Regardless of their methods, the heads of these monasteries expect
the unquestioning obedience of their students
"""
name = "Way of Shadow"
features_by_level = defaultdict(list)
class FourElementsWay(SubClass):
"""You follow a monastic tradition that teaches you to harness the
elements. When you focus your ki, you can align yourself with the forces of
creation and bend the four elements to your will, using them as an
extension of your body. Some members of this tradition dedicate themselves
to a single element, but others weave the elements together.
Many monks of this tradition tattoo their bodies with representations of
their ki powers, commonly imagined as coiling dragons, but also as
phoenixes, fish, plants, mountains, and cresting waves.
"""
name = "Way of the Four Elements"
features_by_level = defaultdict(list)
# SCAG
class SunSoulWay(SubClass):
"""Monks of the Way of the Sun Soul learn to channel their own life energy
into searing bolts of light. They teach that meditation can unlock the
ability to unleash the indomitable light shed by the soul of every living
creature
"""
name = "Way of the Sun Soul"
features_by_level = defaultdict(list)
class LongDeathWay(SubClass):
"""Monks of the Way of the Long Death are obsessed with the meaning and
mechanics of dying. They capture creatures and prepare elaborate
experiments to capture, record, and understand the moments of their
demise. They then use this knowledge to guide their understanding of
martial arts, yielding a deadly fighting style.
"""
name = "Way of the Long Death"
features_by_level = defaultdict(list)
# XGTE
class DrunkenMasterWay(SubClass):
"""The Way of the Drunken Master teaches its students to move with the jerky,
unpredictable movements of a drunkard. A drunken master sways, tottering on
unsteady feet, to present what seems like an incompetent combatant who
proves frustrating to engage. The drunken masters erratic stumbles conceal
a carefully executed dance of blocks, parries, advances, attacks, and
retreats.
A drunken master often enjoys playing the fool to bring gladness to the
despondent or to demonstrate humility to the arrogant, but when battle is
joined, the drunken master can be a maddening, masterful foe
"""
name = "Way of the Drunken Master"
features_by_level = defaultdict(list)
class KenseiWay(SubClass):
"""Monks of the Way of the Kensei train relentlessly with their weapons, to
the point where the weapon becomes an extension of the body. Founded on a
mastery of sword fighting, the tradition has expanded to include many
different weapons.
A kensei sees a weapon in much the same way a calligrapher or painter
regards a pen or brush. Whatever the weapon, the kensei views it as a tool
used to express the beauty and precision of the martial arts. That such
mastery makes a kensei a peerless warrior is but a side effect of intense
devotion, practice, and study.
"""
name = "Way of the Kensei"
features_by_level = defaultdict(list)
class Monk(CharClass):
class_name = 'Monk'
hit_dice_faces = 8
saving_throw_proficiencies = ('strength', 'dexterity')
_proficiencies_text = (
'simple weapons', 'shortswords', 'unarmed',
"one type of artisan's tools or one musical instrument")
weapon_proficiencies = (weapons.Shortsword, weapons.Unarmed) + weapons.simple_weapons
class_skill_choices = ('Acrobatics', 'Athletics', 'History', 'Insight',
'Religion', 'Stealth')
subclasses_available = (OpenHandWay, ShadowWay,
FourElementsWay, SunSoulWay,
LongDeathWay, DrunkenMasterWay,
KenseiWay)
features_by_level = defaultdict(list)
features_by_level[1] = [features.UnarmoredDefense,
features.MartialArts]
def __init__(self, level, subclass=None, **params):
super().__init__(level, subclass=subclass, **params)
for f in self.features_by_level[1]:
if isinstance(f, features.MartialArts):
f.level = self.class_level