PRC8/nwn/nwnprc/trunk/newspellbook/moi_wchb_flay.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
Updated AMS marker feats.  Removed arcane & divine marker feats.  Updated Dread Necromancer for epic progression. Updated weapon baseitem models.  Updated new weapons for crafting & npc equip.
 Updated prefix.  Updated release archive.
2024-02-11 14:01:05 -05:00

49 lines
1.9 KiB
Plaintext
Raw Permalink 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.

/*
26/1/21 by Stratovarius
Spiritflay (Su): Beginning at 8th level, you can catch a tiny
bit of an arcane spellcasters soulstuff between your hands and
mangle it. You can use this attack against any arcane spellcaster
or creature with spell-like abilities that is within 60 feet of
you. The target creature must make a successful Fortitude save
(DC 10 + your witchborn binder level + your Con modifier)
or take 1d8 points of damage per point of essentia you invest
in the ability, and also be nauseated for 1 round. A successful
Fortitude save halves the damage and negates the nausea. A
creature that has no arcane spells prepared or no arcane spell
slots unused is immune to this ability
*/
#include "moi_inc_moifunc"
#include "prc_inc_sp_tch"
void main()
{
object oMeldshaper = OBJECT_SELF;
object oTarget = PRCGetSpellTargetObject();
int nEssentia = GetEssentiaInvested(oMeldshaper, MELD_WITCH_SPIRITFLAY);
int nAttack = PRCDoRangedTouchAttack(oTarget);
int nMeldshaperLvl = GetMeldshaperLevel(oMeldshaper, GetPrimaryIncarnumClass(oMeldshaper), MELD_WITCH_SPIRITFLAY);
effect eVis = EffectVisualEffect(VFX_IMP_BREACH);
effect eImpact = EffectVisualEffect(VFX_FNF_DISPEL);
if (nAttack > 0)
{
if (GetPrimaryArcaneClass(oTarget) != CLASS_TYPE_INVALID)
{
int nDC = 10 + GetLevelByClass(CLASS_TYPE_WITCHBORN_BINDER, oMeldshaper) + GetAbilityModifier(ABILITY_CONSTITUTION, oMeldshaper);
int nDam = d8(nEssentia);
if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NONE))
{
if (GetHasMettle(oTarget, SAVING_THROW_FORT))
nDam = 0;
nDam /= 2;
}
else
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectNausea(oTarget, 6.0), oTarget, RoundsToSeconds(1));
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(nDam, DAMAGE_TYPE_POSITIVE), oTarget);
}
}
}