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.
80 lines
2.7 KiB
Plaintext
80 lines
2.7 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Achille's Heel
|
|
//:: tm_s0_epachilles.nss
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
Grants the caster immunity to all spells level 9 and lower
|
|
at the price of CON: dropping to 3.
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Nron Ksr
|
|
//:: Created On: March 9, 2004
|
|
//:://////////////////////////////////////////////
|
|
|
|
/*
|
|
March 17, 2004- Boneshank - added RunHeel() func to keep CON penalty
|
|
*/
|
|
#include "prc_alterations"
|
|
#include "inc_epicspells"
|
|
#include "inc_dispel"
|
|
//#include "x2_inc_spellhook"
|
|
|
|
void RunHeel(object oTarget, int nDuration);
|
|
|
|
void main()
|
|
{
|
|
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
|
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_ABJURATION);
|
|
|
|
if (!X2PreSpellCastCode())
|
|
{
|
|
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
|
return;
|
|
}
|
|
if (GetCanCastSpell(OBJECT_SELF, SPELL_EPIC_ACHHEEL))
|
|
{
|
|
//Declare major variables
|
|
object oPC = OBJECT_SELF;
|
|
effect eVis = EffectVisualEffect( VFX_DUR_SPELLTURNING );
|
|
effect eVis2 = EffectVisualEffect( VFX_DUR_GLOBE_INVULNERABILITY );
|
|
effect eDur = EffectVisualEffect( VFX_DUR_CESSATE_NEGATIVE );
|
|
int nDuration = 20;
|
|
|
|
//Link Effects
|
|
// effect eAbsorb = EffectSpellLevelAbsortption( 9, 0, SPELL_SCHOOL_GENERAL );
|
|
effect eAbsorb = EffectSpellImmunity( SPELL_ALL_SPELLS );
|
|
effect eLink = EffectLinkEffects( eVis, eAbsorb );
|
|
eLink = EffectLinkEffects( eLink, eVis2 );
|
|
eLink = EffectLinkEffects( eLink, eDur );
|
|
|
|
//Fire cast spell at event for the specified target
|
|
// SignalEvent( oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellID(), FALSE) );
|
|
SignalEvent(oPC,
|
|
EventSpellCastAt(OBJECT_SELF, SPELL_GREATER_SPELL_MANTLE, FALSE));
|
|
//Apply the VFX impact and effects
|
|
|
|
// * Can not be dispelled
|
|
eLink = ExtraordinaryEffect(eLink);
|
|
|
|
SPApplyEffectToObject( DURATION_TYPE_TEMPORARY, eLink,
|
|
oPC, RoundsToSeconds(nDuration), TRUE, -1, GetTotalCastingLevel(OBJECT_SELF) );
|
|
RunHeel(oPC, nDuration);
|
|
}
|
|
|
|
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
|
}
|
|
|
|
void RunHeel(object oTarget, int nDuration)
|
|
{
|
|
int nPen = GetAbilityScore(oTarget, ABILITY_CONSTITUTION) - 3;
|
|
effect eCon = EffectAbilityDecrease(ABILITY_CONSTITUTION, nPen);
|
|
if (nDuration > 0)
|
|
{
|
|
UnequipAnyImmunityItems(oTarget, IP_CONST_IMMUNITYMISC_LEVEL_ABIL_DRAIN);
|
|
DelayCommand(1.0, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY,
|
|
eCon, oTarget, 6.0, TRUE, -1, GetTotalCastingLevel(OBJECT_SELF)));
|
|
nDuration -= 1;
|
|
DelayCommand(6.0, RunHeel(oTarget, nDuration));
|
|
}
|
|
}
|