mirror of
https://github.com/Threnklyn/dungeon-sheets.git
synced 2026-06-07 13:15:53 +02:00
Merge pull request #64 from geckon/50
Fix imports, make make_sheets.py runnable directly
This commit is contained in:
@@ -3,3 +3,7 @@ install:
|
||||
@echo "\n\n================="
|
||||
@echo "For optimal performance we highly recommend installing PDFTK: https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/"
|
||||
@echo "If installing on OSX >= 10.11, see here: https://stackoverflow.com/questions/32505951/pdftk-server-on-os-x-10-11/33248310#33248310"
|
||||
|
||||
test:
|
||||
python -m unittest discover tests/
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
__all__ = ('__version__', 'Character', 'weapons', 'features',
|
||||
'character', 'race', 'background', 'spells')
|
||||
|
||||
from . import weapons, features, race, background, spells
|
||||
from .character import Character
|
||||
from dungeonsheets import background, features, race, spells, weapons
|
||||
from dungeonsheets.character import Character
|
||||
|
||||
import os
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from . import features as feats
|
||||
from dungeonsheets import features as feats
|
||||
|
||||
|
||||
class Background():
|
||||
|
||||
+13
-13
@@ -1,20 +1,21 @@
|
||||
"""Tools for describing a player character."""
|
||||
__all__ = ('Character',)
|
||||
|
||||
import re
|
||||
import os
|
||||
import warnings
|
||||
from . import exceptions
|
||||
import importlib.util
|
||||
import jinja2
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
import warnings
|
||||
|
||||
from .stats import Ability, Skill, findattr, ArmorClass, Speed, Initiative
|
||||
from .dice import read_dice_str
|
||||
from . import (weapons, race, background, spells, armor, monsters,
|
||||
exceptions, classes, features, magic_items)
|
||||
from .weapons import Weapon
|
||||
from .armor import Armor, NoArmor, Shield, NoShield
|
||||
import jinja2
|
||||
|
||||
from dungeonsheets import (armor, background, classes, exceptions, features,
|
||||
magic_items, monsters, race, spells, weapons)
|
||||
from dungeonsheets.armor import Armor, NoArmor, NoShield, Shield
|
||||
from dungeonsheets.dice import read_dice_str
|
||||
from dungeonsheets.stats import (Ability, ArmorClass, Initiative, Skill, Speed,
|
||||
findattr)
|
||||
from dungeonsheets.weapons import Weapon
|
||||
|
||||
|
||||
def read(fname):
|
||||
@@ -737,7 +738,7 @@ class Character():
|
||||
f.write(text)
|
||||
|
||||
def to_pdf(self, filename, **kwargs):
|
||||
from .make_sheets import make_sheet
|
||||
from dungeonsheets.make_sheets import make_sheet
|
||||
if filename.endswith('.pdf'):
|
||||
filename = filename.replace('pdf', 'py')
|
||||
make_sheet(filename, character=self,
|
||||
@@ -869,4 +870,3 @@ class Wizard(Character):
|
||||
attrs['classes'] = ['Wizard']
|
||||
attrs['levels'] = [level]
|
||||
super().__init__(**attrs)
|
||||
|
||||
|
||||
@@ -2,19 +2,19 @@ __all__ = ('CharClass', 'Barbarian', 'Bard', 'Cleric', 'Druid', 'Fighter',
|
||||
'Monk', 'Paladin', 'Ranger', 'Rogue', 'Sorceror', 'Warlock',
|
||||
'Wizard', 'RevisedRanger', 'available_classes')
|
||||
|
||||
from .classes import CharClass
|
||||
from .barbarian import Barbarian
|
||||
from .bard import Bard
|
||||
from .cleric import Cleric
|
||||
from .druid import Druid
|
||||
from .fighter import Fighter
|
||||
from .monk import Monk
|
||||
from .paladin import Paladin
|
||||
from .ranger import (Ranger, RevisedRanger)
|
||||
from .rogue import Rogue
|
||||
from .sorceror import Sorceror
|
||||
from .warlock import Warlock
|
||||
from .wizard import Wizard
|
||||
from dungeonsheets.classes.barbarian import Barbarian
|
||||
from dungeonsheets.classes.bard import Bard
|
||||
from dungeonsheets.classes.classes import CharClass
|
||||
from dungeonsheets.classes.cleric import Cleric
|
||||
from dungeonsheets.classes.druid import Druid
|
||||
from dungeonsheets.classes.fighter import Fighter
|
||||
from dungeonsheets.classes.monk import Monk
|
||||
from dungeonsheets.classes.paladin import Paladin
|
||||
from dungeonsheets.classes.ranger import Ranger, RevisedRanger
|
||||
from dungeonsheets.classes.rogue import Rogue
|
||||
from dungeonsheets.classes.sorceror import Sorceror
|
||||
from dungeonsheets.classes.warlock import Warlock
|
||||
from dungeonsheets.classes.wizard import Wizard
|
||||
|
||||
available_classes = [Barbarian, Bard, Cleric, Druid, Fighter, Monk, Paladin,
|
||||
Ranger, Rogue, Sorceror, Warlock, Wizard, RevisedRanger]
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
from .. import (features, weapons)
|
||||
from .classes import (CharClass, SubClass)
|
||||
from collections import defaultdict
|
||||
|
||||
from dungeonsheets import features, weapons
|
||||
from dungeonsheets.classes.classes import CharClass, SubClass
|
||||
|
||||
|
||||
# PHB
|
||||
class BerserkerPath(SubClass):
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
from .. import (weapons, features)
|
||||
from .classes import CharClass, SubClass
|
||||
from collections import defaultdict
|
||||
|
||||
from dungeonsheets import features, weapons
|
||||
from dungeonsheets.classes.classes import CharClass, SubClass
|
||||
|
||||
|
||||
# PHB
|
||||
class CollegeOfLore(SubClass):
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
from collections import defaultdict
|
||||
from ..features import Feature, FeatureSelector
|
||||
|
||||
from dungeonsheets.features import Feature, FeatureSelector
|
||||
|
||||
|
||||
class CharClass():
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
from .. import (weapons, features, spells)
|
||||
from .classes import CharClass, SubClass
|
||||
from collections import defaultdict
|
||||
|
||||
from dungeonsheets import features, spells, weapons
|
||||
from dungeonsheets.classes.classes import CharClass, SubClass
|
||||
|
||||
|
||||
class ClericDomain(SubClass):
|
||||
name = "Generic Cleric Domain"
|
||||
@@ -382,4 +383,3 @@ class Cleric(CharClass):
|
||||
19: (5, 4, 3, 3, 3, 3, 2, 1, 1, 1),
|
||||
20: (5, 4, 3, 3, 3, 3, 2, 2, 1, 1),
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from .. import (weapons, features, spells)
|
||||
from collections import defaultdict
|
||||
|
||||
from dungeonsheets import features, spells, weapons
|
||||
|
||||
# Custom Classes
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
from ..stats import findattr
|
||||
from .. import (weapons, monsters, exceptions, features)
|
||||
from .classes import CharClass, SubClass
|
||||
from collections import defaultdict
|
||||
import warnings
|
||||
import math
|
||||
import warnings
|
||||
from collections import defaultdict
|
||||
|
||||
from dungeonsheets import exceptions, features, monsters, weapons
|
||||
from dungeonsheets.classes.classes import CharClass, SubClass
|
||||
from dungeonsheets.stats import findattr
|
||||
|
||||
|
||||
# PHB
|
||||
@@ -296,4 +297,3 @@ class Druid(CharClass):
|
||||
warnings.warn("Druids cannot learn spells, "
|
||||
"use ``spells_prepared`` instead.",
|
||||
RuntimeWarning)
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
from .. import (weapons, features)
|
||||
from .classes import CharClass, SubClass
|
||||
from collections import defaultdict
|
||||
|
||||
from dungeonsheets import features, weapons
|
||||
from dungeonsheets.classes.classes import CharClass, SubClass
|
||||
|
||||
|
||||
# PHB
|
||||
class Champion(SubClass):
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
__all__ = ('Monk')
|
||||
|
||||
from .. import (features, weapons)
|
||||
from .classes import CharClass, SubClass
|
||||
from collections import defaultdict
|
||||
|
||||
from dungeonsheets import features, weapons
|
||||
from dungeonsheets.classes.classes import CharClass, SubClass
|
||||
|
||||
|
||||
# PHB
|
||||
class OpenHandWay(SubClass):
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
from .. import (weapons, features, spells)
|
||||
from .classes import CharClass, SubClass
|
||||
from collections import defaultdict
|
||||
|
||||
from dungeonsheets import features, spells, weapons
|
||||
from dungeonsheets.classes.classes import CharClass, SubClass
|
||||
|
||||
|
||||
class PaladinOath(SubClass):
|
||||
name = "Generic Paladin Oath"
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
__all__ = ('Ranger', 'RevisedRanger')
|
||||
|
||||
from .. import (weapons, features, spells)
|
||||
from .classes import CharClass, SubClass
|
||||
from collections import defaultdict
|
||||
|
||||
from dungeonsheets import features, spells, weapons
|
||||
from dungeonsheets.classes.classes import CharClass, SubClass
|
||||
|
||||
|
||||
# PHB
|
||||
class Hunter(SubClass):
|
||||
@@ -292,4 +293,3 @@ class RevisedRanger(Ranger):
|
||||
features_by_level[18] = [features.FeralSenses]
|
||||
features_by_level[20] = [features.FoeSlayer]
|
||||
subclasses_available = (BeastConclave, HunterConclave, DeepStalkerConclave)
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
from .. import (weapons, features)
|
||||
from .classes import CharClass, SubClass
|
||||
from collections import defaultdict
|
||||
|
||||
from dungeonsheets import features, weapons
|
||||
from dungeonsheets.classes.classes import CharClass, SubClass
|
||||
|
||||
|
||||
# PHB
|
||||
class Thief(SubClass):
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
from .. import (weapons, features)
|
||||
from .classes import CharClass, SubClass
|
||||
from collections import defaultdict
|
||||
|
||||
from dungeonsheets import features, weapons
|
||||
from dungeonsheets.classes.classes import CharClass, SubClass
|
||||
|
||||
|
||||
# PHB
|
||||
class DraconicBloodline(SubClass):
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
from .. import (weapons, features, spells)
|
||||
from .classes import CharClass, SubClass
|
||||
from collections import defaultdict
|
||||
|
||||
from dungeonsheets import features, spells, weapons
|
||||
from dungeonsheets.classes.classes import CharClass, SubClass
|
||||
|
||||
|
||||
# PHB
|
||||
class Archfey(SubClass):
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
from .. import (weapons, features)
|
||||
from .classes import CharClass, SubClass
|
||||
from collections import defaultdict
|
||||
|
||||
from dungeonsheets import features, weapons
|
||||
from dungeonsheets.classes.classes import CharClass, SubClass
|
||||
|
||||
|
||||
# PHB
|
||||
class Abjuration(SubClass):
|
||||
@@ -247,4 +248,3 @@ class Wizard(CharClass):
|
||||
20: (5, 4, 3, 3, 3, 3, 2, 2, 1, 1),
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import re
|
||||
from collections import namedtuple
|
||||
|
||||
from .exceptions import DiceError
|
||||
from dungeonsheets.exceptions import DiceError
|
||||
|
||||
dice_re = re.compile('(\d+)d(\d+)', flags=re.I)
|
||||
Dice = namedtuple('Dice', ('num', 'faces'))
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
from .features import Feature, create_feature
|
||||
|
||||
from .barbarian import *
|
||||
from .bard import *
|
||||
from .cleric import *
|
||||
from .druid import *
|
||||
from .fighter import *
|
||||
from .monk import *
|
||||
from .paladin import *
|
||||
from .ranger import *
|
||||
from .rogue import *
|
||||
from .sorceror import *
|
||||
from .warlock import *
|
||||
from .wizard import *
|
||||
from .races import *
|
||||
from .backgrounds import *
|
||||
from .feats import *
|
||||
from dungeonsheets.features.backgrounds import *
|
||||
from dungeonsheets.features.barbarian import *
|
||||
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 *
|
||||
from dungeonsheets.features.races import *
|
||||
from dungeonsheets.features.ranger import *
|
||||
from dungeonsheets.features.rogue import *
|
||||
from dungeonsheets.features.sorceror import *
|
||||
from dungeonsheets.features.warlock import *
|
||||
from dungeonsheets.features.wizard import *
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .features import Feature
|
||||
from dungeonsheets.features.features import Feature
|
||||
|
||||
|
||||
class ShelterOfTheFaithful(Feature):
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from .features import Feature, FeatureSelector
|
||||
from .. import (weapons, armor)
|
||||
from dungeonsheets import armor, weapons
|
||||
from dungeonsheets.features.features import Feature, FeatureSelector
|
||||
|
||||
|
||||
# PHB
|
||||
@@ -864,4 +864,3 @@ class RageBeyondDeath(Feature):
|
||||
"""
|
||||
name = "Rage Beyond Death"
|
||||
source = "Barbarian (Zealot)"
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
from .features import Feature, FeatureSelector
|
||||
from .ranger import Dueling, TwoWeaponFighting
|
||||
from dungeonsheets.features.features import Feature, FeatureSelector
|
||||
from dungeonsheets.features.ranger import Dueling, TwoWeaponFighting
|
||||
|
||||
|
||||
# PHB
|
||||
class BardicInspiration(Feature):
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from .features import Feature
|
||||
from .. import spells
|
||||
from dungeonsheets import spells
|
||||
from dungeonsheets.features.features import Feature
|
||||
|
||||
|
||||
# Cleric Features
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from .features import Feature, FeatureSelector
|
||||
from .. import spells
|
||||
from dungeonsheets import spells
|
||||
from dungeonsheets.features.features import Feature, FeatureSelector
|
||||
|
||||
|
||||
# PHB
|
||||
@@ -695,4 +695,3 @@ class FungalBody(Feature):
|
||||
name = "Fungal Body"
|
||||
source = "Druid (Circle of Spores)"
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .features import Feature
|
||||
from dungeonsheets.features.features import Feature
|
||||
|
||||
|
||||
# PHB
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .. import weapons
|
||||
from dungeonsheets import weapons
|
||||
|
||||
|
||||
def create_feature(**params):
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
from .ranger import Archery, Defense, Dueling, TwoWeaponFighting
|
||||
from .features import Feature, FeatureSelector
|
||||
from .. import (weapons, armor)
|
||||
from dungeonsheets import armor, weapons
|
||||
from dungeonsheets.features.features import Feature, FeatureSelector
|
||||
from dungeonsheets.features.ranger import (Archery, Defense, Dueling,
|
||||
TwoWeaponFighting)
|
||||
|
||||
# Features added for all PHB classes
|
||||
# SCAG and XGTE needed
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from .features import Feature
|
||||
from .. import (weapons, armor, spells)
|
||||
from dungeonsheets import armor, spells, weapons
|
||||
from dungeonsheets.features.features import Feature
|
||||
|
||||
|
||||
class UnarmoredDefenseMonk(Feature):
|
||||
@@ -883,4 +883,3 @@ class UnerringAccuracy(Feature):
|
||||
"""
|
||||
name = "Unerring Accuracy"
|
||||
source = "Monk (Way of the Kensei)"
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
from .features import Feature, FeatureSelector
|
||||
from .ranger import Defense, Dueling
|
||||
from .fighter import GreatWeaponFighting, Protection
|
||||
from .. import (weapons, armor)
|
||||
from dungeonsheets import armor, weapons
|
||||
from dungeonsheets.features.features import Feature, FeatureSelector
|
||||
from dungeonsheets.features.fighter import GreatWeaponFighting, Protection
|
||||
from dungeonsheets.features.ranger import Defense, Dueling
|
||||
|
||||
|
||||
# PHB
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from .features import Feature
|
||||
from .. import armor, spells
|
||||
from dungeonsheets import armor, spells
|
||||
from dungeonsheets.features.features import Feature
|
||||
|
||||
|
||||
# Many Classes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from .features import Feature, FeatureSelector
|
||||
from .. import (weapons, armor)
|
||||
from .rogue import UncannyDodge, Evasion
|
||||
from dungeonsheets import armor, weapons
|
||||
from dungeonsheets.features.features import Feature, FeatureSelector
|
||||
from dungeonsheets.features.rogue import Evasion, UncannyDodge
|
||||
|
||||
|
||||
# PHB
|
||||
@@ -880,4 +880,3 @@ class StalkersDodge(Feature):
|
||||
"""
|
||||
name = "Stalker's Dodge"
|
||||
source = "Revised Ranger (Deep Stalker Conclave)"
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
from .features import Feature
|
||||
from math import ceil
|
||||
|
||||
from dungeonsheets.features.features import Feature
|
||||
|
||||
|
||||
# PHB
|
||||
class RogueExpertise(Feature):
|
||||
@@ -567,4 +568,3 @@ class MasterDuelist(Feature):
|
||||
name = "Master Duelist"
|
||||
source = "Rogue (Swashbuckler)"
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from .features import Feature
|
||||
from .. import spells
|
||||
from dungeonsheets import spells
|
||||
from dungeonsheets.features.features import Feature
|
||||
|
||||
|
||||
# PHB
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from .features import (Feature, FeatureSelector)
|
||||
from .. import spells, weapons
|
||||
from dungeonsheets import spells, weapons
|
||||
from dungeonsheets.features.features import Feature, FeatureSelector
|
||||
|
||||
|
||||
# Features
|
||||
@@ -1029,4 +1029,3 @@ class TrickstersEscape(Invocation):
|
||||
|
||||
"""
|
||||
name = "Tricksters Escape"
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from .features import (Feature, FeatureSelector)
|
||||
from .. import spells, weapons
|
||||
from dungeonsheets import spells, weapons
|
||||
from dungeonsheets.features.features import Feature, FeatureSelector
|
||||
|
||||
|
||||
# PHB
|
||||
|
||||
Regular → Executable
+3
-3
@@ -14,9 +14,9 @@ from fdfgen import forge_fdf
|
||||
import pdfrw
|
||||
from jinja2 import Environment, PackageLoader
|
||||
|
||||
from . import character as _char
|
||||
from . import exceptions, classes
|
||||
from .stats import mod_str
|
||||
from dungeonsheets import character as _char
|
||||
from dungeonsheets import exceptions, classes
|
||||
from dungeonsheets.stats import mod_str
|
||||
|
||||
|
||||
"""Program to take character definitions and build a PDF of the
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
shape forms."""
|
||||
|
||||
|
||||
from .stats import Ability
|
||||
from dungeonsheets.stats import Ability
|
||||
|
||||
|
||||
class Monster():
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
from . import (weapons, spells)
|
||||
from . import features as feats
|
||||
from collections import defaultdict
|
||||
|
||||
from dungeonsheets import features as feats
|
||||
from dungeonsheets import spells, weapons
|
||||
|
||||
|
||||
class Race():
|
||||
name = "Unknown"
|
||||
|
||||
@@ -1,27 +1,27 @@
|
||||
from .spells import Spell, create_spell
|
||||
from .spells_a import *
|
||||
from .spells_b import *
|
||||
from .spells_c import *
|
||||
from .spells_d import *
|
||||
from .spells_e import *
|
||||
from .spells_f import *
|
||||
from .spells_g import *
|
||||
from .spells_h import *
|
||||
from .spells_i import *
|
||||
from .spells_j import *
|
||||
from .spells_k import *
|
||||
from .spells_l import *
|
||||
from .spells_m import *
|
||||
from .spells_n import *
|
||||
from .spells_o import *
|
||||
from .spells_p import *
|
||||
from .spells_q import *
|
||||
from .spells_r import *
|
||||
from .spells_s import *
|
||||
from .spells_t import *
|
||||
from .spells_u import *
|
||||
from .spells_v import *
|
||||
from .spells_w import *
|
||||
from .spells_x import *
|
||||
from .spells_y import *
|
||||
from .spells_z import *
|
||||
from dungeonsheets.spells.spells import Spell, create_spell
|
||||
from dungeonsheets.spells.spells_a import *
|
||||
from dungeonsheets.spells.spells_b import *
|
||||
from dungeonsheets.spells.spells_c import *
|
||||
from dungeonsheets.spells.spells_d import *
|
||||
from dungeonsheets.spells.spells_e import *
|
||||
from dungeonsheets.spells.spells_f import *
|
||||
from dungeonsheets.spells.spells_g import *
|
||||
from dungeonsheets.spells.spells_h import *
|
||||
from dungeonsheets.spells.spells_i import *
|
||||
from dungeonsheets.spells.spells_j import *
|
||||
from dungeonsheets.spells.spells_k import *
|
||||
from dungeonsheets.spells.spells_l import *
|
||||
from dungeonsheets.spells.spells_m import *
|
||||
from dungeonsheets.spells.spells_n import *
|
||||
from dungeonsheets.spells.spells_o import *
|
||||
from dungeonsheets.spells.spells_p import *
|
||||
from dungeonsheets.spells.spells_q import *
|
||||
from dungeonsheets.spells.spells_r import *
|
||||
from dungeonsheets.spells.spells_s import *
|
||||
from dungeonsheets.spells.spells_t import *
|
||||
from dungeonsheets.spells.spells_u import *
|
||||
from dungeonsheets.spells.spells_v import *
|
||||
from dungeonsheets.spells.spells_w import *
|
||||
from dungeonsheets.spells.spells_x import *
|
||||
from dungeonsheets.spells.spells_y import *
|
||||
from dungeonsheets.spells.spells_z import *
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class AbiDalzimsHorridWilting(Spell):
|
||||
@@ -846,4 +846,3 @@ class Awaken(Spell):
|
||||
magic_school = "Transmutation"
|
||||
classes = ('Bard', 'Druid')
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class Bane(Spell):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class CallLightning(Spell):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class DancingLights(Spell):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class EarthTremor(Spell):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class Fabricate(Spell):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class GaseousForm(Spell):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class HailOfThorns(Spell):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class IceKnife(Spell):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class Jump(Spell):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class Knock(Spell):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class LegendLore(Spell):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class MaddeningDarkness(Spell):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class NegativeEnergyFlood(Spell):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class OtilukesFreezingSphere(Spell):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class PassWithoutTrace(Spell):
|
||||
|
||||
@@ -1 +1 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class RaiseDead(Spell):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class SacredFlame(Spell):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class TashasHideousLaughter(Spell):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class UnseenServant(Spell):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class VampiricTouch(Spell):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class WallOfFire(Spell):
|
||||
|
||||
@@ -1 +1 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
@@ -1 +1 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from .spells import Spell
|
||||
from dungeonsheets.spells.spells import Spell
|
||||
|
||||
|
||||
class ZephyrStrike(Spell):
|
||||
|
||||
+12
-10
@@ -1,16 +1,19 @@
|
||||
import math
|
||||
from collections import namedtuple
|
||||
from .armor import NoArmor, NoShield, HeavyArmor, Shield, Armor
|
||||
from .weapons import Weapon
|
||||
from .features import (UnarmoredDefenseMonk, UnarmoredDefenseBarbarian,
|
||||
DraconicResilience, Defense, FastMovement,
|
||||
UnarmoredMovement, GiftOfTheDepths, RemarkableAthelete,
|
||||
SeaSoul, JackOfAllTrades, SoulOfTheForge, QuickDraw,
|
||||
NaturalExplorerRevised, FeralInstinct, DreadAmbusher,
|
||||
SuperiorMobility, AmbushMaster, RakishAudacity,
|
||||
NaturalArmor)
|
||||
from math import ceil
|
||||
|
||||
from dungeonsheets.armor import Armor, HeavyArmor, NoArmor, NoShield, Shield
|
||||
from dungeonsheets.features import (AmbushMaster, Defense, DraconicResilience,
|
||||
DreadAmbusher, FastMovement, FeralInstinct,
|
||||
GiftOfTheDepths, JackOfAllTrades,
|
||||
NaturalArmor, NaturalExplorerRevised,
|
||||
QuickDraw, RakishAudacity,
|
||||
RemarkableAthelete, SeaSoul,
|
||||
SoulOfTheForge, SuperiorMobility,
|
||||
UnarmoredDefenseBarbarian,
|
||||
UnarmoredDefenseMonk, UnarmoredMovement)
|
||||
from dungeonsheets.weapons import Weapon
|
||||
|
||||
|
||||
def findattr(obj, name):
|
||||
"""Similar to builtin getattr(obj, name) but more forgiving to
|
||||
@@ -211,4 +214,3 @@ class Initiative():
|
||||
if has_advantage:
|
||||
ini += '(A)'
|
||||
return ini
|
||||
|
||||
|
||||
Reference in New Issue
Block a user