Elemental Touched
You've been exposed to the primordial magic of the Elemental Planes, granting you a measure of control over the natural world around you.
name = 'Elemental Touched'
description = "***Feat: Elemental Touched.*** You've been exposed to the primordial magic of the Elemental Planes, granting you a measure of control over the natural world around you."
def prereq(npc): return True
You learn the either the druidcraft or thaumaturgy cantrip, using Intelligence, Wisdom, or Charisma as the spellcasting ability (choose when you gain this feat).
Whenever you finish a long rest, you can choose which element you are attuned to: Air, Earth, Fire, or Water. Depending on your choice, you can use a bonus action to cause one of the following effects:
- Air. You gain a fly speed equal to your walking speed until the end of your turn. If you are airborne at the end of your turn after using this movement and aren't held aloft by other means, you fall.
- Earth. You cause the ground within 30 feet of you to become difficult terrain for 1 minute or until you create this effect again. During that time, you can move across ground that is difficult terrain without spending extra movement.
- Fire. You surround yourself in a cloud of ash and smoke. Until the end of your turn, your movement doesn't provoke opportunity attacks.
- Water. You can create a forceful surge of water directed at a creature within 15 feet of you that you can see. The creature must succeed on a Strength saving throw (which it can choose to fail) against a DC equal to 8 + your spellcasting ability modifier + your proficiency bonus or be pushed up to 10 feet away from you. The water vanishes immediately after the creature succeeds or fails.
You can create this effect a number of times equal to your proficiency bonus, and you regain all expended uses when you finish a long rest.
def apply(npc):
ability = choose("Choose an ability: ", ['INT','WIS','CHA'])
spellcasting = innatecaster(npc, ability, name)
cantrip = choose("Choose a cantrip: ", ['druidcraft','thaumaturgy'])
spellcasting.cantripsknown.append(cantrip)
npc.traits.append("***Elemental Touched.*** When you finish a long rest, you can choose which element you are attuned to: Air, Earth, Fire, or Water. Depending on your choice, you can use the appropriate bonus action listed.")
npc.defer(lambda npc: npc.bonusactions.append(f"***Air-Touched ({npc.proficiencybonus()}/Recharges on long rest).*** You gain a fly speed equal to your walking speed until the end of your turn. If you are airborne at the end of your turn after using this movement and aren't held aloft by other means, you fall.") )
npc.defer(lambda npc: npc.bonusactions.append(f"***Earth-Touched ({npc.proficiencybonus()}/Recharges on long rest).*** You cause the ground within 30 feet of you to become difficult terrain for 1 minute or until you create this effect again. During that time, you can move across ground that is difficult terrain without spending extra movement.") )
npc.defer(lambda npc: npc.bonusactions.append(f"***Fire-Touched ({npc.proficiencybonus()}/Recharges on long rest).*** You surround yourself in a cloud of ash and smoke. Until the end of your turn, your movement doesn't provoke opportunity attacks.") )
npc.defer(lambda npc: npc.bonusactions.append(f"***Water-Touched ({npc.proficiencybonus()}/Recharges on long rest).*** You can create a forceful surge of water directed at a creature within 15 feet of you that you can see. The creature must succeed on a Strength saving throw (DC {8 + npc.proficiencybonus() + npc.abilitybonus(ability)}) (which it can choose to fail) or be pushed up to 10 feet away from you. The water vanishes immediately after the creature succeeds or fails.") )