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.
89 lines
3.7 KiB
Plaintext
89 lines
3.7 KiB
Plaintext
/*
|
||
Tenebrous Apostate - Destroy/Empower Undead
|
||
|
||
At 3rd level, you gain additional power over mindless undead. You can use two turn or rebuke attempts as a
|
||
single standard action, each dealing (or healing) damage as per the Tenebrous’s rebuke ability, except that
|
||
the damage applies only to mindless undead. Neutral characters use the turn effect, evil characters the rebuke.
|
||
|
||
Strat 05/03/21
|
||
*/
|
||
|
||
#include "bnd_inc_bndfunc"
|
||
#include "prc_inc_turning"
|
||
|
||
void DestroyEmpower(object oBinder)
|
||
{
|
||
int nTurnLevel = GetTurningClassLevel(oBinder, SPELL_TURN_UNDEAD);
|
||
location lTarget = GetLocation(oBinder);
|
||
float fRange = FeetToMeters(30.0);
|
||
int nDC = 10 + nTurnLevel + GetAbilityModifier(ABILITY_CHARISMA, oBinder);
|
||
if (GetAlignmentGoodEvil(oBinder) == ALIGNMENT_EVIL)
|
||
{
|
||
//ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_HORRID_WILTING), lTarget);
|
||
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_VAMPIRIC_DRAIN_PRC), lTarget);
|
||
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, fRange, lTarget, FALSE, OBJECT_TYPE_CREATURE);
|
||
while(GetIsObjectValid(oTarget))
|
||
{
|
||
if(oTarget != oBinder && MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD && 10 >= GetAbilityScore(oTarget, ABILITY_INTELLIGENCE, TRUE) && !GetIsPC(oTarget))
|
||
{
|
||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_NEGBLAST_ENERGY), oTarget);
|
||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(d6(nTurnLevel*2)), oTarget);
|
||
}
|
||
oTarget = MyNextObjectInShape(SHAPE_SPHERE, fRange, lTarget, FALSE, OBJECT_TYPE_CREATURE);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_VAMPIRIC_DRAIN_PRC), lTarget);
|
||
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, fRange, lTarget, FALSE, OBJECT_TYPE_CREATURE);
|
||
while(GetIsObjectValid(oTarget))
|
||
{
|
||
if(oTarget != oBinder && MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD && 10 >= GetAbilityScore(oTarget, ABILITY_INTELLIGENCE, TRUE) && !GetIsPC(oTarget))
|
||
{
|
||
int nDamage = d6(nTurnLevel*2);
|
||
if(PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_NONE))
|
||
{
|
||
nDamage /= 2;
|
||
if (GetHasMettle(oTarget, SAVING_THROW_WILL)) // Ignores partial effects
|
||
{
|
||
nDamage = 0;
|
||
}
|
||
}
|
||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_REGENERATE_IMPACT), oTarget);
|
||
if (nDamage) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(nDamage, DAMAGE_TYPE_DIVINE), oTarget);
|
||
}
|
||
oTarget = MyNextObjectInShape(SHAPE_SPHERE, fRange, lTarget, FALSE, OBJECT_TYPE_CREATURE);
|
||
}
|
||
}
|
||
}
|
||
|
||
void main()
|
||
{
|
||
object oBinder = OBJECT_SELF;
|
||
object oTarget = PRCGetSpellTargetObject();
|
||
|
||
//make sure there's TU uses left
|
||
if (!GetHasFeat(FEAT_TURN_UNDEAD, oBinder))
|
||
{
|
||
FloatingTextStringOnCreature("You are out of Turn Undead uses for the day.", oBinder, FALSE);
|
||
return;
|
||
}
|
||
DecrementRemainingFeatUses(oBinder, FEAT_TURN_UNDEAD); // Burn one
|
||
|
||
// Burn the tenebrous turn undead
|
||
if (BindAbilCooldown(oBinder, VESTIGE_TENEBROUS_TURN, VESTIGE_TENEBROUS))
|
||
DestroyEmpower(oBinder);
|
||
else if (GetHasFeat(FEAT_TURN_UNDEAD, oBinder))
|
||
{
|
||
DestroyEmpower(oBinder);
|
||
DecrementRemainingFeatUses(oBinder, FEAT_TURN_UNDEAD); // Burn two
|
||
}
|
||
else
|
||
{
|
||
FloatingTextStringOnCreature("You do not have enough Turn Undead uses.", oBinder, FALSE);
|
||
IncrementRemainingFeatUses(oBinder, FEAT_TURN_UNDEAD);
|
||
return;
|
||
}
|
||
}
|
||
|