Further file organization
Further file organization
This commit is contained in:
64
nwn/nwnprc/trunk/epicspellscripts/ss_ep_impenetrab.nss
Normal file
64
nwn/nwnprc/trunk/epicspellscripts/ss_ep_impenetrab.nss
Normal file
@@ -0,0 +1,64 @@
|
||||
//:://////////////////////////////////////////////
|
||||
//:: FileName: "ss_ep_impenetrab"
|
||||
/* Purpose: Impenetrability - grants 100% protection against piercing
|
||||
damage for 24 hours.
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Boneshank
|
||||
//:: Last Updated On: March 12, 2004
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
#include "prc_alterations"
|
||||
//#include "x2_inc_spellhook"
|
||||
#include "inc_epicspells"
|
||||
|
||||
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_IMPENET))
|
||||
{
|
||||
object oTarget = PRCGetSpellTargetObject();
|
||||
int nCasterLvl = GetTotalCastingLevel(OBJECT_SELF);
|
||||
int nDuration = nCasterLvl + 10;
|
||||
float fDuration = RoundsToSeconds(nDuration);
|
||||
effect eVis = EffectVisualEffect(VFX_IMP_AC_BONUS);
|
||||
effect eDur = EffectVisualEffect(VFX_DUR_GLOW_PURPLE);
|
||||
effect eProt = EffectDamageImmunityIncrease(DAMAGE_TYPE_PIERCING, 50);
|
||||
if(GetPRCSwitch(PRC_PNP_IMPENETRABILITY))
|
||||
{
|
||||
eProt = EffectDamageImmunityIncrease
|
||||
(DAMAGE_TYPE_PIERCING, 100);
|
||||
fDuration = HoursToSeconds(20);
|
||||
}
|
||||
effect eLink = EffectLinkEffects(eProt, eDur);
|
||||
// if this option has been enabled, the caster will take backlash damage
|
||||
if (GetPRCSwitch(PRC_EPIC_BACKLASH_DAMAGE) == TRUE)
|
||||
{
|
||||
int nDamage = d6(10);
|
||||
effect eDamVis = EffectVisualEffect(VFX_IMP_SONIC);
|
||||
effect eDam = EffectDamage(nDamage, DAMAGE_TYPE_MAGICAL);
|
||||
DelayCommand(2.0, SPApplyEffectToObject(DURATION_TYPE_INSTANT,
|
||||
eDamVis, OBJECT_SELF));
|
||||
DelayCommand(2.0, SPApplyEffectToObject(DURATION_TYPE_INSTANT,
|
||||
eDam, OBJECT_SELF));
|
||||
}
|
||||
if(GetIsReactionTypeFriendly(oTarget) || GetFactionEqual(oTarget))
|
||||
{
|
||||
//Fire spell cast at event for target
|
||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId(),
|
||||
FALSE));
|
||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT,
|
||||
eVis, oTarget);
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY,
|
||||
eLink, oTarget, fDuration, TRUE, -1, GetTotalCastingLevel(OBJECT_SELF));
|
||||
}
|
||||
}
|
||||
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
||||
}
|
Reference in New Issue
Block a user