Exemple #1
0
    def add_level_3_features(self, **kwargs):
        new_gaming_set = kwargs['gaming_set']
        new_proficiencies = {
            base.TOOL_PROFICIENCY:
            ['disguise_kit', 'forgery_kit', new_gaming_set],
        }

        new_languages = kwargs[base.LANGUAGES]
        new_features = {
            'master_of_intrigue':
            feature.Feature(
                name='Master of Intrigue',
                description=
                'You can unerringly mimic the speech patterns and accent of a creature \
                                                         that you hear speak for at least 1 minute.'
            ),
            'master_of_intrigue_languages':
            feature.LanguagesKnown(name='Master of Intrigue: Languages',
                                   languages=new_languages.languages),
            'master_of_tactics':
            feature.Feature(
                name='Master of Tactics',
                description=
                'Starting at 3rd level, you can use the Help action as a bonus action. \
                                                         Additionally, when you use the Help action to aid an ally in attacking a creature, \
                                                         the target of that attack can be within 30 feet of you, rather than 5 feet of you, \
                                                         if the target can see or hear you.'
            ),
        }
        new_stuff = {
            'features': new_features,
            'proficiencies': new_proficiencies,
        }
        return new_stuff
Exemple #2
0
 def add_level_3_features(self, **kwargs):
     new_features = {
         'fast_hands':
         feature.Feature(
             name='Fast Hands',
             description=
             'Starting at 3rd level, you can use the bonus action granted by your Cunning Action \
                                                    to make a Dexterity (Sleight of Hand) check, use your thieves tools \
                                                    to disarm a trap or open a lock, or take the Use an Object action.'
         ),
         'second_story_work':
         feature.Feature(name='Second-Story Work', description=''),
     }
     new_stuff = {'features': new_features}
     return new_stuff
Exemple #3
0
    def _add_level_3_features(self, **kwargs):
        self._append_feature(
            'primeval_awareness',
            feature=feature.Feature(
                name='Primeval Awareness',
                description=
                'Beginning at 3rd level, you can use your action and expend one Ranger spell slot \
                                                 to focus your awareness on the region around you..'
            ))
        self.specialization = RangerArchetype.get_ranger_archetype(
            kwargs['ranger_archetype'])
        self._add_specialization_features(self.level, **kwargs)

        # TODO make this a bit more elegant...
        list_spells = []
        simple_spell_list = [
            ('Hunters Mark', ddddd.entity.character.spells.SpellTypes.FIRST),
            ('Animal Friendship',
             ddddd.entity.character.spells.SpellTypes.FIRST),
            ('Longstrider', ddddd.entity.character.spells.SpellTypes.FIRST),
        ]
        for name, level in simple_spell_list:
            list_spells.append(spells.generate_simple_spell(name, level))
        self.spellcasting = RangerSpellcastingAbility(
            casting_spells=list_spells,
            spell_slots={SpellTypes.FIRST: 3},
            num_spells_known=3)
Exemple #4
0
 def add_level_15_features(self, **kwargs):
     new_features = {
         'stand_against_the_tide':
         feature.Feature(name='Stand Against the Tide', description=''),
     }
     new_stuff = {'features': new_features}
     return new_stuff
Exemple #5
0
 def add_level_11_features(self, **kwargs):
     new_features = {
         'whirlwind_attack':
         feature.Feature(name='Whirlwind Attack', description=''),
     }
     new_stuff = {'features': new_features}
     return new_stuff
Exemple #6
0
 def add_level_9_features(self, **kwargs):
     new_features = {
         'escape_the_horde':
         feature.Feature(name='Escape the Horde', description=''),
     }
     new_stuff = {'features': new_features}
     return new_stuff
Exemple #7
0
 def add_level_3_features(self, **kwargs):
     new_features = {
         'coloussus_slayer':
         feature.Feature(name='Colussus Slayer', description=''),
     }
     new_stuff = {'features': new_features}
     return new_stuff
Exemple #8
0
    def add_level_1_features(self, **kwargs):
        languages = kwargs['languages']
        skills = kwargs['skills']
        new_features = {
            'divine_domain': feature.Feature(name='Divine Domain',
                                             description='You have chosen to worship Ioun, goddess of knowledge. \
                                         Your divine domain is the Knowledge Domain.'),
            'blessings_of_knowledge': feature.Expertise(name='Blessings of Knowledge',
                                                        description='You become proficient in your choice of two of the following skills: \
                                                        Arcana, History, Nature, or Religion. Your proficiency bonus is doubled \
                                                        for any ability check you make that uses either of those skills.',
                                                        skills=skills,
                                                        proficiencies=None),
            'blessings_of_knowledge_languages': feature.LanguagesKnown(name='Blessings of Knowledge: Languages',
                                                                       description='At 1st level, you learn two languages of your choice.',
                                                                       languages=languages.languages),
        }

        simple_spell_list = [
            ('Command', ddddd.entity.character.spells.SpellTypes.FIRST),
            ('Identify', ddddd.entity.character.spells.SpellTypes.FIRST),
        ]
        casting_spells = spells.generate_simple_spell_list(simple_spell_list)

        new_stuff = {
            'features': new_features,
            'domain_spells': casting_spells,
        }

        return new_stuff
Exemple #9
0
    def _add_level_5_features(self, **kwargs):
        self._append_feature(
            'extra_attack',
            feature=feature.Feature(
                name='Extra Attack',
                description=
                'Beginning at 5th level, you can Attack twice, instead of once, \
                                                    whenever you take the Attack action on Your Turn.'
            ))

        # TODO make this a bit more elegant...
        list_spells = []
        simple_spell_list = [
            ('Hunters Mark', ddddd.entity.character.spells.SpellTypes.FIRST),
            ('Animal Friendship',
             ddddd.entity.character.spells.SpellTypes.FIRST),
            ('Longstrider', ddddd.entity.character.spells.SpellTypes.FIRST),
            ('Pass without Trace',
             ddddd.entity.character.spells.SpellTypes.SECOND),
        ]
        for name, level in simple_spell_list:
            list_spells.append(spells.generate_simple_spell(name, level))
        self.spellcasting = RangerSpellcastingAbility(
            casting_spells=list_spells,
            spell_slots={
                SpellTypes.FIRST: 4,
                SpellTypes.SECOND: 2
            },
            num_spells_known=4)
Exemple #10
0
 def add_level_9_features(self, **kwargs):
     new_features = {
         'supreme_sneak': feature.Feature(name='Supreme Sneak',
                                          description=''),
     }
     new_stuff = {'features': new_features}
     return new_stuff
Exemple #11
0
 def add_level_13_features(self, **kwargs):
     new_features = {
         'use_magic_device':
         feature.Feature(name='Use Magic Device', description=''),
     }
     new_stuff = {'features': new_features}
     return new_stuff
Exemple #12
0
 def add_level_17_features(self, **kwargs):
     new_features = {
         'thiefs_reflexes':
         feature.Feature(name='Thieves'
                         ' Reflexes', description=''),
     }
     new_stuff = {'features': new_features}
     return new_stuff
Exemple #13
0
 def add_level_6_features(self, **kwargs):
     new_features = {
         'channel_divinity_read_thoughts': feature.Feature(name='Channel Divinity: Read Thoughts',
                                                           description='At 6th level, you can use your \
                                                           Channel Divinity to read a creature''s thoguhts.')
     }
     new_stuff = {'features': new_features}
     return new_stuff
Exemple #14
0
    def _add_level_2_features(self, **kwargs):
        super(Cleric, self)._add_level_2_features(**kwargs)
        self._append_feature('channel_divinity',
                             feature=feature.Feature(name='Channel Divinity',
                                                     description='At 2nd level, you gain the ability to channel divine energy directly \
                                                     from your deity, using that energy to fuel magical effects. When you finish a short \
                                                     or long rest, you regain your expended uses.'))

        self._append_feature('channel_divinity_turn_undead',
                             feature=feature.Feature(name='Channel Divinity: Turn Undead',
                                                     description='As an action, you present your holy symbol \
                                                 and speak a prayer censuring the undead.'))

        spellcasting = ClericSpellcastingAbility(level=2,
                                                 cantrips=self.spellcasting.cantrips,
                                                 domain_spells=self.spellcasting.casting_spells)
        self.spellcasting = spellcasting
Exemple #15
0
 def add_level_17_features(self, **kwargs):
     new_features = {
         'visions_of_the_past': feature.Feature(name='Visions of the Past',
                                                description='Starting at 17th level, you can call up \
                                                visions of the past that relate to an object you hold or your immediate surroundings.')
     }
     new_stuff = {'features': new_features}
     return new_stuff
Exemple #16
0
 def _add_level_7_features(self, **kwargs):
     super(Rogue, self)._add_level_7_features(**kwargs)
     self._append_feature(
         'evasion',
         feature=feature.Feature(
             name='Evasion',
             description='Beginning at 7th level, you can nimbly dodge \
                                                  out of the way of certain area effects.'
         ))
Exemple #17
0
 def _add_level_11_features(self, **kwargs):
     super(Rogue, self)._add_level_11_features(**kwargs)
     self._append_feature(
         'reliable_talent',
         feature=feature.Feature(
             name='Reliable Talent',
             description='By 11th level, you have refined your chosen skills \
                                                  until they approach perfection.'
         ))
Exemple #18
0
 def _add_level_20_features(self, **kwargs):
     super(Rogue, self)._add_level_20_features(**kwargs)
     self._append_feature(
         'stroke_of_luck',
         feature=feature.Feature(
             name='Stroke of Luck',
             description='At 20th level, you have an uncanny knack \
                                                  for succeeding when you need to.'
         ))
Exemple #19
0
 def _add_level_18_features(self, **kwargs):
     super(Rogue, self)._add_level_18_features(**kwargs)
     self._append_feature(
         'elusive',
         feature=feature.Feature(
             name='Elusive',
             description='Beginning at 18th level, you are so evasive \
                                                  that attackers rarely gain the upper hand against you.'
         ))
Exemple #20
0
 def _add_level_15_features(self, **kwargs):
     super(Rogue, self)._add_level_15_features(**kwargs)
     self._append_feature(
         'slippery_mind',
         feature=feature.Feature(
             name='Slippery Mind',
             description='By 15th level, you have acquired greater \
                                                  mental strength. You gain proficiency in Wisdom saving throws.'
         ))
Exemple #21
0
 def _add_level_14_features(self, **kwargs):
     super(Rogue, self)._add_level_14_features(**kwargs)
     self._append_feature(
         'blindsense',
         feature=feature.Feature(
             name='Blindsense',
             description='Starting at 14th level, if you are able to hear, \
                                                  you are aware of the location of any hidden or invisible creature \
                                                  within 10 feet of you.'))
Exemple #22
0
 def _add_level_5_features(self, **kwargs):
     super(Rogue, self)._add_level_5_features(**kwargs)
     self._append_feature(
         'uncanny_dodge',
         feature=feature.Feature(
             name='Uncanny Dodge',
             description='Starting at 5th level, when an attacker that \
                                              you can see hits you with an Attack, you can use your Reaction \
                                              to halve the attack'
             's damage against you.'))
Exemple #23
0
 def _add_level_2_features(self, **kwargs):
     super(Rogue, self)._add_level_2_features(**kwargs)
     self._append_feature(
         'cunning_action',
         feature=feature.Feature(
             name='Cunning Action',
             description=
             'Starting at 2nd level, your quick thinking and agility \
                                              allow you to move and act quickly.'
         ))
Exemple #24
0
 def add_level_2_features(self, **kwargs):
     new_features = {
         'channel_divinity_knowledge_of_the_ages': feature.Feature(name='Channel Divinity: Knowledge of the Ages',
                                                                   description='Starting at 2nd level, you can use \
                                              your Channel Divinity to tap into a divine well of knowledge. \
                                              As an action, you choose one skill or tool. \
                                              For 10 minutes, you have proficiency with the chosen skill or tool.')
     }
     new_stuff = {'features': new_features}
     return new_stuff
Exemple #25
0
    def get_draconic_ancestry_traits(self, draconic_ancestry):
        if draconic_ancestry not in self._DRACONIC_ANCESTRY:
            raise ValueError('{} is not a valid draconic ancestry!')
        ancestry_details = self._DRACONIC_ANCESTRY[draconic_ancestry]

        traits = [
            feature.Feature(
                name='Draconic Ancestry',
                description='You have Draconic ancestry with a {} dragon.'.
                format(draconic_ancestry)),
            feature.DamageResistance(
                damage_type=ancestry_details['damage_type']),
            feature.Feature(
                name='Breath Weapon',
                description=
                'You can use your action to exhale destructive energy.')
        ]

        return traits
Exemple #26
0
    def _add_level_5_features(self, **kwargs):
        super(Cleric, self)._add_level_5_features(**kwargs)
        self._append_feature('channel_divinity_destroy_undead',
                             feature=feature.Feature(
                                 name='Channel Divinity: Destroy Undead (CR 1/2)',
                                 description='Starting at 5th level, when an undead fails its saving throw \
                                             against your Turn Undead feature, the creature is instantly destroyed \
                                             if its challenge rating is at or below CR 1/2.'))

        self._append_feature('channel_divinity',
                             feature=feature.Feature(name='Channel Divinity (2/rest)',
                                                     description='At 2nd level, you gain the ability to channel divine energy directly \
                                                 from your deity, using that energy to fuel magical effects. When you finish a short \
                                                 or long rest, you regain your expended uses.'))

        spellcasting = ClericSpellcastingAbility(level=5,
                                                 cantrips=self.spellcasting.cantrips,
                                                 domain_spells=self.spellcasting.casting_spells)
        self.spellcasting = spellcasting
Exemple #27
0
 def __init__(self, languages):
     f = feature.Feature(name='Researcher',
                         description='When you attempt to learn or recall a piece of lore, if you do not know \
                         that information, you often know where and from whom you can obtain it ...')
     proficiencies = {
         base.SKILLS: [Skills.ARCANA, Skills.HISTORY],
     }
     super(Sage, self).__init__(name='Sage',
                                feature=f,
                                proficiencies=proficiencies,
                                languages=languages)
Exemple #28
0
 def add_level_13_features(self, **kwargs):
     new_features = {
         'misdirection':
         feature.Feature(
             name='Misdirection',
             description='Beginning at 13th level, you can sometimes cause \
                                         another creature to suffer an attack meant for you.'
         )
     }
     new_stuff = {'features': new_features}
     return new_stuff
Exemple #29
0
 def add_level_9_features(self, **kwargs):
     new_features = {
         'insightful_manipulator':
         feature.Feature(
             name='Insightful Manipulator',
             description='You can learn certain information about \
                                                   its capabilities compared to your own'
         ),
     }
     new_stuff = {'features': new_features}
     return new_stuff
Exemple #30
0
    def _add_level_20_features(self, **kwargs):
        super(Cleric, self)._add_level_20_features(**kwargs)
        self._append_feature('divine_intervention',
                             feature=feature.Feature(name='Improved Divine Intervention',
                                                     description='At 20th level, your call for intervention succeeds automatically, \
                                                 no roll required.'))

        spellcasting = ClericSpellcastingAbility(level=20,
                                                 cantrips=self.spellcasting.cantrips,
                                                 domain_spells=self.spellcasting.casting_spells)
        self.spellcasting = spellcasting