Initial upload.
Adding base PRC 4.19a files to repository.
This commit is contained in:
79
trunk/epicspellscripts/ss_ep_achilles.nss
Normal file
79
trunk/epicspellscripts/ss_ep_achilles.nss
Normal file
@@ -0,0 +1,79 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: 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));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user