PRC8/nwn/nwnprc/trunk/epicspellscripts/ss_ep_champvalor.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

56 lines
2.2 KiB
Plaintext

//:://////////////////////////////////////////////
//:: FileName: "ss_ep_champvalor"
/* Purpose: Champion's Valor - grants the target immunity to mind-affecting
spells, knockdown, sneak attacks, and critical hits for 20 hours.
*/
//:://////////////////////////////////////////////
//:: Created By: Boneshank
//:: Last Updated On: March 11, 2004
//:://////////////////////////////////////////////
#include "prc_alterations"
#include "inc_epicspells"
void main()
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_TRANSMUTATION);
if (!X2PreSpellCastCode())
{
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
return;
}
if (GetCanCastSpell(OBJECT_SELF, SPELL_EPIC_CHAMP_V))
{
object oTarget = PRCGetSpellTargetObject();
int nCasterLvl = GetTotalCastingLevel(OBJECT_SELF);
int nDuration = nCasterLvl / 4;
if (nDuration < 5)
nDuration = 5;
float fDuration = TurnsToSeconds(nDuration);
if(GetPRCSwitch(PRC_PNP_CHAMPIONS_VALOR))
{
fDuration = HoursToSeconds(20);
}
effect eImm1 = EffectImmunity(IMMUNITY_TYPE_KNOCKDOWN);
effect eImm2 = EffectImmunity(IMMUNITY_TYPE_SNEAK_ATTACK);
effect eImm3 = EffectImmunity(IMMUNITY_TYPE_CRITICAL_HIT);
effect eImm4 = EffectImmunity(IMMUNITY_TYPE_MIND_SPELLS);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_WHITE);
effect eVis2 = EffectVisualEffect(VFX_DUR_PROTECTION_GOOD_MINOR );
effect eLink = EffectLinkEffects(eImm1, eImm2);
eLink = EffectLinkEffects(eLink, eImm3);
eLink = EffectLinkEffects(eLink, eImm4);
eLink = EffectLinkEffects(eLink, eDur);
eLink = EffectLinkEffects(eLink, eVis);
eLink = EffectLinkEffects(eLink, eVis2);
eLink = ExtraordinaryEffect(eLink); // No dispelling it.
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget,
fDuration, TRUE, -1, GetTotalCastingLevel(OBJECT_SELF));
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
}