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 # PHB class GreatWeaponFighting(Feature): """When you roll a 1 or 2 on a damage die for an attack you make with a melee weapon that you are wielding with two hands, you can reroll the die and must use the new roll, even if the new roll is a 1 or a 2. The weapon must have the two-handed or versatile property for you to gain this benefit. """ name = "Fighting Style (Great Weapon Fighting)" source = "Fighter" class Protection(Feature): """When a creature you can see attacks a target other than you that is within 5 feet of you, you can use your reaction to impose disadvantage on the attack roll. You must be wielding a shield. """ name = "Fighting Style (Protection)" source = "Fighter" class FighterFightingStyle(FeatureSelector): """ Select a Fighting Style by choosing in feature_choices: archery defense dueling great-weapon fighting protection two-weapon fighting """ options = {'archery': Archery, 'defense': Defense, 'dueling': Dueling, 'great': GreatWeaponFighting, 'great-weapon fighting': GreatWeaponFighting, 'projection': Protection, 'two-weapon fighting': TwoWeaponFighting, 'two-weapon': TwoWeaponFighting, 'dual wield': TwoWeaponFighting} name = "Fighting Style (Select One)" source = "Fighter" class SecondWind(Feature): """You have a limited well of stamina that you can draw on to protect yourself from harm. On your turn, you can use a bonus action to regain hit points equal to 1d10 + your fighter level. Once you use this feature, you must finish a short or long rest before you can use it again """ name = "Second Wind" source = "Fighter" class ActionSurge(Feature): """Starting at 2nd level, you can push yourself beyond your normal limits for a moment. On your turn, you can take one additional action on top of your regular action and a possible bonus action. Once you use this feature, you must finish a short or long rest before you can use it again. Starting at 17th level, you can use it twice before a rest, but only once on the same turn. """ name = "Action Surge" source = "Fighter" class ExtraAttackFighter(Feature): """Beginning at 5th level, you can attack twice, instead of once, whenever you take the Attack action on your turn. The number of attacks increases to three when you reach 11th level in this class and to four when you reach 20th level in this class. """ _name = "Extra Attack" source = "Fighter" @property def name(self): level = self.owner.Fighter.level if level < 11: return self._name + ' (2x)' elif level < 20: return self._name + ' (3x)' else: return self._name + ' (4x)' class Indomitable(Feature): """Beginning at 9th level, you can reroll a saving throw that you fail. If you do so, you must use the new roll, and you can't use this feature again until you finish a long rest. You can use this feature twice between long rests starting at 13th level and three times between long rests starting at 17th level. """ _name = "Indomitable" source = "Fighter" @property def name(self): level = self.owner.Fighter.level if level < 13: return self._name + ' (1x/LR)' elif level < 17: return self._name + ' (2x/LR)' else: return self._name + ' (3x/LR)' # Champion class ImprovedCritical(Feature): """Beginning when you choose this archetype at 3rd level, your weapon attacks score a critical hit on a roll of 19 or 20. """ name = "Improved Critical" source = "Fighter (Champion)" class RemarkableAthelete(Feature): """Starting at 7th level, you can add half your proficiency bonus (round up) to any Strength, Dexterity, or Constitution check you make that doesn't already use your proficiency bonus. In addition, when you make a running long jump, the distance you can cover increases by a number of feet equal to your Strength modifier. """ name = "Remarkable Athelete" source = "Fighter (Champion)" class AdditionalFightingStyle(FeatureSelector): """ Select a Fighting Style by choosing in feature_choices: archery 2 defense 2 dueling 2 great-weapon fighting 2 protection 2 two-weapon fighting 2 """ options = {'archery 2': Archery, 'defense 2': Defense, 'dueling 2': Dueling, 'great 2': GreatWeaponFighting, 'great-weapon fighting 2': GreatWeaponFighting, 'projection 2': Protection, 'two-weapon fighting 2': TwoWeaponFighting, 'two-weapon 2': TwoWeaponFighting, 'dual wield 2': TwoWeaponFighting} name = "Fighting Style (Select One)" source = "Fighter (Champion)" class SuperiorCritical(Feature): """Starting at 15th level, your weapon attacks score a critical hit on a roll of 18-20 . """ name = "Superior Critical" source = "Fighter (Champion)" class Survivor(Feature): """At 18th level, you attain the pinnacle of resilience in battle. At the start of each of your turns, you regain hit points equal to 5 + your Constitution modifier if you have no more than half of your hit points left. You don't gain this benefit if you have 0 hit points. """ name = "Survivor" source = "Fighter (Champion)" # Battle Master class CombatSuperiority(Feature): """When you choose this archetype at 3rd level, you learn maneuvers that are fueled by special dice called superiority dice. **Maneuvers**: You learn three maneuvers of your choice, which are detailed under "Maneuvers" below. Many maneuvers enhance an attack in some way. You can use only one maneuver per attack. You learn two additional maneuvers of your choice at 7th, 10th, and 15th level. Each time you learn new maneuvers, you can also replace one maneuver you know with a different one. **Superiority Dice**: You have four superiority dice, which are d8s. A superiority die is expended when you use it. You regain all of your expended superiority dice when you finish a short or long rest. You gain another superiority die at 7th level and one more at 15th level. **Saving Throws**: Some of your maneuvers require your target to make a saving throw to resist the maneuver's effects. The saving throw DC is calculated as follows: Maneuver save DC = 8 + your proficiency bonus + your Strength or Dexterity modifier (your choice) """ _name = "Combat Superiority" @property def name(self): level = self.owner.Fighter.level if level < 10: return self._name + ' (d8)' elif level < 18: return self._name + ' (d10)' else: return self._name + ' (d12)' class StudentOfWar(Feature): """At 3rd level, you gain proficiency with one type of artisan's tools of your choice. """ name = "Student of War" source = "Fighter (Battle Master)" 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: --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)" class Relentless(Feature): """Starting at 15th level, when you roll initiative and have no superiority dice remaining, you regain 1 superiority die. """ name = "Relentless" source = "Fighter (Battle Master)" # Maneuvers class Maneuver(Feature): """ A generic Maneuver """ name = "Maneuver" source = "Fighter Maneuver (Battle Master)" class CommandersStrike(Maneuver): """When you take the Attack action on your turn, you can forgo one of your attacks and use a bonus action to direct one of your companions to strike. When you do so, choose a friendly creature who can see or hear you and expend one superiority die. That creature can immediately use its reaction to make one weapon attack, adding the superiority die to the attack's damage roll. """ name = "Commander's Strike" class DisarmingAttack(Maneuver): """When you hit a creature with a weapon attack, you can expend one superiority die to attempt to disarm the target, forcing it to drop one item o f your choice that it's holding. You add the superiority die to the attack's damage roll, and the target must make a Strength saving throw. On a failed save, it drops the object you choose. The object lands at its feet. """ name = "Disarming Attack" class DistractingStrike(Maneuver): """When you hit a creature with a weapon attack, you can expend one superiority die to distract the creature, giving your allies an opening. You add the superiority die to the attack's damage roll. The next attack roll against the target by an attacker other than you has advantage if the attack is made before the start of your next turn. """ name = "Distracting Strike" class EvasiveFootwork(Maneuver): """When you move, you can expend one superiority die, rolling the die and adding the number rolled to your AC until you stop moving. """ name = "Evasive Footwork" class FeintingAttack(Maneuver): """You can expend one superiority die and use a bonus action on your turn to feint, choosing one creature within 5 feet of you as your target. You have advantage on your next attack roll against that creature. If that attack hits, add the superiority die to the attack's damage roll. """ name = "Feinting Attack" class GoadingAttack(Maneuver): """When you hit a creature with a weapon attack, you can expend one superiority die to attempt to goad the target into attacking you. You add the superiority die to the attack's damage roll, and the target must make a W isdom saving throw. On a failed save, the target has disadvantage on all attack rolls against targets other than you until the end of your next turn. """ name = "Goading Attack" class LungingAttack(Maneuver): """When you make a melee weapon attack on your turn, you can expend one superiority die to increase your reach for that attack by 5 feet. If you hit, you add the superiority die to the attack's damage roll. """ name = "Lunging Attack" class ManeuveringAttack(Maneuver): """When you hit a creature with a weapon attack, you can expend one superiority die to maneuver one o f your comrades into a more advantageous position. You add the superiority die to the attack's damage roll, and you choose a friendly creature who can see or hear you. That creature can use its reaction to move up to half its speed without provoking opportunity attacks from the target of your attack. """ name = "Maneuvering Attack" class MenacingAttack(Maneuver): """When you hit a creature with a weapon attack, you can expend one superiority die to attempt to frighten the target. You add the superiority die to the attack's damage roll, and the target must make a Wisdom saving throw. On a failed save, it is frightened of you until the end o f your next turn. """ name = "Menacing Attack" class Parry(Maneuver): """When another creature damages you with a melee attack, you can use your reaction and expend one superiority die to reduce the damage by the number you roll on your superiority die + your Dexterity modifier. """ name = "Parry" class PrecisionAttack(Maneuver): """When you make a weapon attack roll against a creature, you can expend one superiority die to add it to the roll. You can use this maneuver before or after making the attack roll, but before any effects of the attack are applied """ name = "Precision Attack" class PushingAttack(Maneuver): """When you hit a creature with a weapon attack, you can expend one superiority die to attempt to drive the target back. You add the superiority die to the attack's damage roll, and if the target is Large or smaller, it must make a Strength saving throw. On a failed save, you push the target up to 15 feet away from you. """ name = "Pushing Attack" class Rally(Maneuver): """On your turn, you can use a bonus action and expend one superiority die to bolster the resolve of one of your companions. When you do so, choose a friendly creature who can see or hear you. That creature gains temporary hit points equal to the superiority die roll + your Charisma modifier. """ name = "Rally" class Riposte(Maneuver): """When a creature misses you with a melee attack, you can use your reaction and expend one superiority die to make a melee weapon attack against the creature. If you hit, you add the superiority die to the attack's damage roll """ name = "Riposte" class SweepingAttack(Maneuver): """When you hit a creature with a melee weapon attack, you can expend one superiority die to attempt to damage another creature with the same attack. Choose another creature within 5 feet of the original target and within your reach. If the original attack roll would hit the second creature, it takes damage equal to the number you roll on your superiority die. The damage is of the same type dealt by the original attack. Trip """ name = "Sweeping Attack" class TripingAttack(Maneuver): """When you hit a creature with a weapon attack, you can expend one superiority die to attempt to knock the target down. You add the superiority die to the attack's damage roll, and if the target is Large or smaller, it must make a Strength saving throw. On a failed save, you knock the target prone """ name = "Triping Attack" # Eldritch Knight class EldritchKnightSpellcasting(Feature): """You know three 1st-level wizard spells of your choice, two of which you must choose from the abjuration and evocation spells on the wizard spell list. The Spells Known column of the Eldritch Knight Spellcasting table shows when you learn more wizard spells of 1st level or higher. Each of these spells must be an abjuration or evocation spell of your choice, and must be of a level for which you have spell slots. For instance, when you reach 7th level in this class, you can learn one new spell of 1st or 2nd level. The spells you learn at 8th, 14th, and 20th level can come from any school of magic. Whenever you gain a level in this class, you can replace one of the wizard spells you know with another spell o f your choice from the wizard spell list. The new spell must be of a level for which you have spell slots, and it must be an abjuration or evocation spell, unless you're replacing the spell you gained at 8th, 14th, or 20th level. """ name = "Spellcasting" source = "Fighter (Eldritch Knight)" class WeaponBond(Feature): """At 3rd level, you learn a ritual that creates a magical bond between yourself and one weapon. You perform the ritual over the course of 1 hour, which can be done during a short rest. The weapon must be within your reach throughout the ritual, at the conclusion of which you touch the weapon and forge the bond. Once you have bonded a weapon to yourself, you can't be disarmed of that weapon unless you are incapacitated. If it is on the same plane of existence, you can summon that weapon as a bonus action on your turn, causing it to teleport instantly to your hand. You can have up to two bonded weapons, but can summon only one at a time with your bonus action. If you attempt to bond with a third weapon, you must break the bond with one of the other two. """ name = "Weapon Bond" source = "Fighter (Eldritch Knight)" class WarMagic(Feature): """Beginning at 7th level, when you use your action to cast a cantrip, you can make one weapon attack as a bonus action. """ name = "War Magic" source = "Fighter (Eldritch Knight)" class EldritchStrike(Feature): """At 10th level, you learn how to make your weapon strikes undercut a creature's resistance to your spells. When you hit a creature with a weapon attack, that creature has disadvantage on the next saving throw it makes against a spell you cast before the end of your next turn. """ name = "Eldritch Strike" source = "Fighter (Eldritch Knight)" class ArcaneCharge(Feature): """At 15th level, you gain the ability to teleport up to 30 feet to an unoccupied space you can see when you use your Action Surge. You can teleport before or after the additional action. """ name = "Arcane Charge" source = "Fighter (Eldritch Knight)" class ImprovedWarMagic(Feature): """Starting at 18th level, when you use your action to cast a spell, you can make one weapon attack as a bonus action. """ name = "Improved War Magic" source = "Fighter (Eldritch Knight)" # Purple Dragon Knight class RallyingCry(Feature): """When you choose this archetype at 3rd level, you learn how to inspire your allies to fight on past their injuries. When you use your Second Wind feature, you can choose up to three creatures within 60 feet of you that are allied with you. Each one regains hit points equal to your fighter level, provided that the creature can see or hear you """ name = "Rallying Cry" source = "Fighter (Purple Dragon Knight)" class RoyalEnvoy(Feature): """A Purple Dragon knight serves as an envoy of the Cormyrean crown. Knights of high standing are expected to conduct themselves with grace. At 7th level, you gain proficiency in the Persuasion skill. If you are already proficient in it, you gain proficiency in one of the following skills of your choice: Animal Handling, Insight, Intimidation, or Performance. Your proficiency bonus is doubled for any ability check you make that uses Persuasion. You receive this benefit regardless of the skill proficiency you gain from this feature """ name = "Royal Envoy" source = "Fighter (Purple Dragon Knight)" def __init__(self, owner=None): super().__init__(owner=owner) if 'persuasion' not in self.owner.skill_proficiencies: self.owner.skill_proficiencies.append('persuasion') if 'persuasion' not in self.owner.skill_expertise: self.owner.skill_expertise.append('persuasion') class InspiringSurge(Feature): """Starting at 10th level, when you use your Action Surge feature , you can choose one creature within 60 feet of you that is allied with you. That creature can make one melee or ranged weapon attack with its reaction, provided that it can see or hear you. Starting at 18th level, you can choose two allies within 60 feet of you, rather than one. """ name = "Inspiring Surge" source = "Fighter (Purple Dragon Knight)" class Bulwark(Feature): """Beginning at 15th level, you can extend the benefit of your Indomitable feature to an ally. When you decide to use Indomitable to reroll an Intelligence, a Wisdom, or a Charisma saving throw and you aren't incapacitated, you can choose one ally within 60 feet of you that also failed its saving throw against the same effect. If that creature can see or hear you, it can reroll its saving throw and must use the new roll """ name = "Bulwark" source = "Fighter (Purple Dragon Knight)" # Arcane Archer class ArcaneArcherLore(Feature): """At 3rd level, you learn magical theory or some of the secrets of nature-typical for practitioners of this elven martial tradition. You choose to gain proficiency in ei- ther the Arcana or the Nature skill, and you choose to learn either the prestidigr'tation or the drufdcraft cantrip """ name = "Arcane Archer Lore" source = "Fighter (Arcane Archer)" class ArcaneShot(Feature): """At 3rd level, you learn to unleash special magical effects with some of your shots. When you gain this feature, you learn two Arcane Shot options of your choice (see "Arcane Shot Options" below). Add all Arcane Shot options under "features" in your .py file Once per turn when you fire a magic arrow from a shortbow or longbow as part of the Attack action, you can apply one of your Arcane Shot options to that arrow. You decide to use the option when the arrow hits a creature, unless the option doesn't involve an attack roll. You have two uses of this ability, and you regain all expended uses of it when you finish a short or long rest. You gain an additional Arcane Shot option of your choice when you reach certain levels in this class: 7th, 10th, 15th, and 18th level. Each option also improves when you become an 18th-level fighter If an option requires a saving throw, your Arcane Shot save DC equals 8 + your proficiency bonus + your Intelligence modifier """ name = "Arcane Shot (2x/SR)" source = "Fighter (Arcane Archer)" class MagicArrow(Feature): """At 7th level, you gain the ability to infuse arrows with magic. Whenever you fire a nonmagical arrow from a shortbow or longbow, you can make it magical for the purpose of overcoming resistance and immunity to non- magical attacks and damage. The magic fades from the arrow immediately after it hits or misses its target. """ name = "Magic Arrow" source = "Fighter (Arcane Archer)" class CurvingShot(Feature): """At 7th level, you learn how to direct an errant arrow toward a new target. When you make an attack roll with a magic arrow and miss, you can use a bonus action to reroll the attack roll against a different target within 60 feet of the original target """ name = "Curving Shot" source = "Fighter (Arcane Archer)" class EverReadyShot(Feature): """Starting at 15th level, your magical archery is available whenever battle starts. If you roll initiative and have no uses of Arcane Shot remaining, you regain one use of it. """ name = "Ever-Ready Shot" source = "Fighter (Arcane Archer)" class BanishingArrow(Feature): """You use abjuration magic to try to temporarily banish your target to a harmless location in the Feywild. The creature hit by the arrow must also succeed on a Charisma saving throw or be banished. While banished in this way, the target's speed is 0, and it is incapacitated. At the end of its next turn, the target reappears in the Space it vacated or in the nearest unoccupied space if that space is occupied. After you reach 18th level in this class, a target also takes 2d6 force damage when the arrow hits it. """ name = "Arcane Shot: Banishing Arrow" source = "Fighter (Arcane Archer)" class BeguilingArrow(Feature): """Your enchantment magic causes this arrow to temporarily beguile its target. The creature hit by the arrow takes an extra 2d6 psychic damage, and choose one ofyour allies within 30 feet of the target. The target must succeed on a Wisdom saving throw, or it is charmed by the chosen ally until the start ofyour next turn. This effect ends early if the chosen ally attacks the charmed target, deals damage to it, or forces it to make a saving throw. The psychic damage increases to 4d6 when you reach 18th level in this class. """ name = "Arcane Shot: Beguiling Arrow" source = "Fighter (Arcane Archer)" class BurstingArrow(Feature): """You imbue your arrow with force energy drawn from the school of evocation. The energy detonates after your attack. Immediately after the ar- row hits the creature, the target and all other creatures within 10 feet of it take 2d6 force damage each. The force damage increases to 4d6 when you reach 18th level in this class """ name = "Arcane Shot: Bursting Arrow" source = "Fighter (Arcane Archer)" class EnfeeblingArrow(Feature): """You weave necromantic magic into your arrow. The creature hit by the arrow takes an extra 2d6 necrotic damage. The target must also succeed on a Constitution saving throw, or the damage dealt by its weapon attacks is halved until the start of your next turn. The necrotic damage increases to 4d6 when you reach 18th level in this class. """ name = "Arcane Shot: Enfeebling Arrow" source = "Fighter (Arcane Archer)" class GraspingArrow(Feature): """When this arrow strikes its target, conjuration magic creates grasping, poisonous brams bles, which wrap around the target. The creature hit by the arrow takes an extra 2(16 poison damage, its speed is reduced by 10 feet, and it takes 2d6 slashing dam- age the first time on each turn it moves 1 foot or more without teleporting. The target or any creature that can reach it can use its action to remove the brambles with a successful Strength (Athletics) check against your Arcane Shot save DC. Otherwise, the brambles last for 1 minute or until you use this option again. The poison damage and slashing damage both increase to 4d6 when you reach 18th level in this class """ name = "Arcane Shot: Grasping Arrow" source = "Fighter (Arcane Archer)" class PiercingArrow(Feature): """You use transmutation magic to give your arrow an ethereal quality. When you use this option, you don't make an attack roll for the attack. Instead, the arrow shoots forward in a line, which is 1 foot wide and 30 feet long, before disappearing. The arrow passes harmlessly through objects, ignoring cover. Each creature in that line must make a Dexterity saving throw. On a failed save, a creature takes damage as if it were hit by the arrow, plus an extra 1d6 piercing damage. On a successful save, a target takes half as much damage. The piercing damage increases to 2d6 when you reach 18th level in this class. """ name = "Arcane Shot: Piercing Arrow" source = "Fighter (Arcane Archer)" class SeekingArrow(Feature): """Using divination magic, you grant your arrow the ability to seek out a target. When you use this option, you don't make an attack roll for the attack. Instead, choose one creature you have seen in the past minute. The arrow flies toward that creature, moving around corners if necessary and ignoring three-quarters cover and half cover. If the target is within the weapon's range and there is a path large enough for the arrow to travel to the target, the target must make a Dexterity saving throw. Otherwise, the arrow disappears after traveling as far as it can. On a failed save, the target takes damage as if it were hit by the arrow, plus an extra 1d6 force damage, and you learn the target's current location. On a successful save, the target takes half as much damage, and you don't learn its location. The force damage increases to 2d6 when you reach 18th level in this class. """ name = "Arcane Shot: Seeking Arrow" source = "Fighter (Arcane Archer)" class ShadowArrow(Feature): """You weave illusion magic into your arrow, causing it to occlude your fees vision with shadows. The creature hit by the arrow takes an extra 2d6 psychic damage, and it must succeed on a Wisdom saving throw or be unable to see anything farther than 5 feet away until the start ofyour next turn. The psychic damage increases to 4d6 when you reach 18th level in this class """ name = "Shadow Arrow" source = "Fighter (Arcane Archer)" # Cavalier class BonusProficiencyCavalier(Feature): """When you choose this archetype at 3rd level, you gain proficiency in one of the following skills of your choice: Animal Handling, History, Insight, Performance, or Persuasion. Alternatively, you learn one language of your choice. """ name = "Bonus Proficiency" source = "Fighter (Cavalier)" class BornToTheSaddle(Feature): """Starting at 3rd level, your mastery as a rider becomes apparent. You have advantage on saving throws made to avoid falling off your mount. Ifyou fall off your mount and descend no more than 10 feet, you can land on your feet if you're not incapacitated. Finally, mounting or dismounting a creature costs you only 5 feet of movement, rather than half your speed. """ name = "Born to the Saddle" source = "Fighter (Cavalier)" class UnwaveringMark(Feature): """Starting at 3rd level, you can menace your foe-s, foiling their attacks and punishing them for harming others. When you hit a creature with a melee weapon attack, you can mark the creature until the end of your next turn. This effect ends early ifyou are incapacitated or you die, or if someone else marks the creature. While it is within 5 feet of you, a creature marked by you has disadvantage on any attack roll that doesn't target you. In addition, if a creature marked by you deals damage to anyone other than you, you can make a special melee weapon attack against the marked creature as a bonus action on your next turn. You have advantage on the attack roll, and if it hits, the attacks weapon deals extra damage to the target equal to half your fighter level. Regardless of the number of creatures you mark, you can make this special attack a number of times equal to your Strength modifier (minimum of once), and you regain all expended uses of it when you finish a long rest """ _name = "Unwavering Mark" source = "Fighter (Cavalier)" @property def name(self): num = max(1, self.owner.strength.modifier) return self._name + ' ({:d}x/LR)'.format(num) class WardingManeuver(Feature): """At 7th level, you learn to fend off strikes directed at you, your mount, or other creatures nearby. If you or a creature you can see within 5 feet of you is hit by an attack, you can roll ld8 as a reaction if you're wielding a melee weapon or a shield. Roll the die, and add the number rolled to the target's AC against that attack. If the attack still hits, the target has resistance against the attack's damage. You can use this feature a number of times equal to your Constitution modifier (minimum of once), and you regain all expended uses of it when you finish a long rest """ _name = "Warding Maneuver" source = "Fighter (Cavalier)" @property def name(self): num = max(1, self.owner.constitution.modifier) return self._name + ' ({:d}x/LR)'.format(num) class HoldTheLine(Feature): """At 10th level, you become a master of locking down your enemies. Creatures provoke an opportunity attack from you when they move 5 feet or more while within your reach, and if you hit a creature with an opportunity attack, the target's speed is reduced to 0 until the end of the current turn. """ name = "Hold the Line" source = "Fighter (Cavalier)" class FerociousCharger(Feature): """Starting at 15th level, you can run down your foes, whether you're mounted or not. If you move at least 10 feet in a straight line right before attacking a creature and you hit it with the attack, that target must succeed on a Strength saving throw (DC 8 + your proficiency bonus + your Strength modifier) or be knocked prone. You can use this feature only once on each of your turns """ name = "Ferocious Charger" source = "Fighter (Cavalier)" class VigilantDefender(Feature): """Starting at 18th level, you respond to danger with extraordinary vigilance. In combat, you get a special reaction that you can take once on every creature's turn, except your turn. You can use this special reaction only to make an opportunity attack, and you can't use it on the same turn that you take your normal reaction """ name = "Vigiland Defender" source = "Fighter (Cavalier)" # Samurai class BonusProficiencySamurai(Feature): """When you choose this archetype at 3rd level, you gain proficiency in one of the following skills ofyour choice: History, Insight, Performance, or Persuasion. Alterna- tively, you learn one language of your choice. """ name = "Bonus Proficiency" source = "Fighter (Samurai)" class FightingSpirit(Feature): """Starting at 3rd level, your intensity in battle can shield you and help you strike true. As a bonus action on your turn, you can give yourself advantage on weapon attack rolls until the end of the current turn. When you do so, you also gain 5 temporary hit points. The number of temporary hit points increases when you reach certain levels in this class, increasing to 10 at 10th level and 15 at 15th level. You can use this feature three times, and you regain all expended uses of it when you finish a long rest. """ name = "Fighting Spirit (3x/LR)" source = "Fighter (Samurai)" class ElegantCourtier(Feature): """Starting at 7th level, your discipline and attention to de- tail allow you to excel in social situations. Whenever you make a Charisma (Persuasion) check, you gain a bonus to the check equal to your Wisdom modifier. Your self-control also causes you to gain proficiency in Wisdom saving throws. If you already have this proficiency, you instead gain proficiency in Intelligence or Charisma saving throws (your choice). """ name = "Elegant Courtier" source = "Fighter (Samurai)" needs_implementation = True class TirelessSpirit(Feature): """Starting at 10th level, when you roll initiative and have no uses of Fighting Spirit remaining, you regain one use. """ name = "Tireless Spirit" source = "Fighter (Samurai)" class RapidStrike(Feature): """Starting at 15th level, you learn to trade accuracy for swift strikes. If you take the Attack action on your turn and have advantage on an attack roll against one of the targets, you can forgo the advantage for that roll to make an additional weapon attack against that target, as part of the same action. You can do so no more than once per turn """ name = "Rapid Strike" source = "Fighter (Samurai)" class StrengthBeforeDeath(Feature): """Starting at 18th level, your fighting spirit can delay the grasp of death. If you take damage that reduces you to 0 hit points and doesn't kill you outright, you can use your reaction to delay falling unconscious, and you can immediately take an extra turn, interrupting the current turn. While you have 0 hit points during that extra turn, taking damage causes death saving throw failures as normal, and three death saving throw failures can still kill you. When the extra turn ends, you fall unconscious ifyou still have 0 hit points. Once you use this feature, you can't use it again until you finish a long rest. """ name = "Strength Before Death" source = "Fighter (Samurai)" # Gunslinger class Gunsmith(Feature): """Upon choosing this archetype at 3rd level, you gain proficiency with Tinker's Tools. You may use them to craft ammunition at half the cost, repair damaged firearms, or even draft and create new ones (DM's discretion). Some extremely experimental and intricate firearms are only available through crafting. """ name = "Gunsmith" source = "Fighter (Gunslinger)" class AdeptMarksman(Feature): """When you choose this archetype at 3rd level, you learn to perform powerful trick shots to disable or damage your opponents using your firearms. **Trick Shots**: You learn two trick shots of your choice, which are detailed under "Trick Shots" below. If you have not already, add them by name to "features" in your character's .py file. Many maneuvers enhance an attack in some way. Each use of a trick shot must be declared before the attack roll is made. You can use only one trick shot per attack. You learn an additional trick shot of your choice at 7th, 10th, 15th, and 18th level. Each time you learn a new trick shot, you can also replace one trick shot you know with a different one. Grit. You gain a number of grit points equal to your Wisdom modifier (minimum of 1). You regain 1 expended grit point each time you roll a 20 on the d20 roll for an attack with a firearm, or deal a killing blow with a firearm to a creature of significant threat (DM's discretion). You regain all expended grit points after a short or long rest. Saving Throws. Some of your trick shots require your targets to make a saving throw to resist the trick shot's effects. The saving throw DC is calculated as follows: Trick Shot save DC = 8 + your proficiency bonus + your Dexterity modifier Firearm Properties Firearms are a new and volatile technology, and as such bring their own unique set of weapon properties. Some properties are followed by a number, and this number signifies an element of that property (outlined below). These properties replace the optional ones presented in the Dungeon Master's Guide. Firearms are ranged weapons. Reload. The weapon can be fired a number of times equal to its Reload score before you must spend 1 attack or 1 action to reload. You must have one free hand to reload a firearm. Misfire. Whenever you make an attack roll with a firearm, and the dice roll is equal to or lower than the weapon's Misfire score, the weapon misfires. The attack misses, and the weapon cannot be used again until you spend an action to try and repair it. To repair your firearm, you must make a successful Tinker's Tools check (DC equal to 8 + misfire score). If your check fails, the weapon is broken and must be mended out of combat at a quarter of the cost of the firearm. Creatures who use a firearm without being proficient increase the weapon's misfire score by 1. Explosive. Upon a hit, everything within 5 ft of the target must make a Dexterity saving throw (DC equal to 8 + your proficiency bonus + your Dexterity modifier) or suffer 1d8 fire damage. If the weapon misses, the ammunition fails to detonate, or bounces away harmlessly before doing so. Ammunition All firearms require ammunition to make an attack, and due to their rare nature, ammunition may be near impossible to find or purchase. However, if materials are gathered, you can craft ammunition yourself using your Tinker's Tools at half the cost. Each firearm uses its own unique ammunition and is generally sold or crafted in batches listed below next to the price. """ name = "Adept Marksman" source = "Fighter (Gunslinger" class QuickDraw(Feature): """When you reach 7th level, you add your proficiency bonus to your initiative. You can also stow a firearm, then draw another firearm as a single object interaction on your turn. """ name = "Quick Draw" source = "Fighter (Gunslinger)" class RapidRepair(Feature): """Upon reaching 10th level, you learn how to quickly attempt to fix a jammed gun. You can spend a grit point to attempt to repair a misfired (but not broken) firearm as a bonus action. """ name = "Rapid Repair" source = "Fighter (Gunslinger)" class LightningReload(Feature): """Starting at 15th level, you can reload any firearm as a bonus action. """ name = "Lightning Repaid" source = "Fighter (Gunslinger)" class ViciousIntent(Feature): """At 18th level, your firearm attacks score a critical hit on a roll of 19-20, and you regain a grit point on a roll of 19 or 20 on a d20 attack roll. """ name = "Vicious Intent" source = "Fighter (Gunslinger)" class HemorrhagingCritical(Feature): """Upon reaching 18th level, whenever you score a critical hit on an attack with a firearm, the target additionally suffers half of the damage from the attack at the end of its next turn. """ name = "Hemorrhaging Critical" source = "Fighter (Gunslinger)" class BullyingShot(Feature): """You can use the powerful blast and thundering sound of your firearm to shake the resolve of a creature. You can expend one grit point while making a Charisma (Intimidation) check to gain advantage on the roll. """ name = "Bullying Shot" source = "Gunslinger (Trick Shot)" class DazingShot(Feature): """When you make a firearm attack against a creature, you can expend one grit point to attempt to dizzy your opponent. On a hit, the creature suffers normal damage and must make a Constitution saving throw or suffer disadvantage on attacks until the end of their next turn. """ name = "Dazing Shot" source = "Gunslinger (Trick Shot)" class DeadeyeShot(Feature): """When you make a firearm attack against a creature, you can expend one grit point to gain advantage on the attack roll. """ name = "Deadeye Shot" source = "Gunslinger (Trick Shot)" class DisarmingShot(Feature): """When you make a firearm attack against a creature, you can expend one grit point to attempt to shoot an object from their hands. On a hit, the creature suffers normal damage and must succeed on a Strength saving throw or drop 1 held object of your choice and have that object be pushed 10 feet away from you. """ name = "Disarming Shot" source = "Gunslinger (Trick Shot)" class ForcefulShot(Feature): """When you make a firearm attack against a creature, you can expend one grit point to attempt to trip them up and force them back. On a hit, the creature suffers normal damage and must succeed on a Strength saving throw or be pushed 15 feet away from you. """ name = "Forceful Shot" source = "Gunslinger (Trick Shot)" class PiercingShot(Feature): """When you make a firearm attack against a creature, you can expend one grit point to attempt to fire through multiple opponents. The initial attack gains a +1 to the firearm's misfire score. On a hit, the creature suffers normal damage and you make an attack roll with disadvantage against every creature in a line directly behind the target within your first range increment. Only the initial attack can misfire. """ name = "Piercing Shot" source = "Gunslinger (Trick Shot)" class WingingShot(Feature): """When you make a firearm attack against a creature, you can expend one grit point to attempt to topple a moving target. On a hit, the creature suffers normal damage and must make a Strength saving throw or be knocked prone. """ name = "Winging Shot" source = "Gunslinger (Trick Shot)" class ViolentShot(Feature): """When you make a firearm attack against a creature, you can expend one or more grit points to enhance the volatility of the attack. For each grit point expended, the attack gains a +2 to the firearm's misfire score. If the attack hits, you can roll one additional weapon damage die per grit point spent when determining the damage. """ name = "Violent Shot" source = "Gunslinger (Trick Shot)"