Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
99 lines
2.6 KiB
Plaintext
99 lines
2.6 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Name Resonating Resistance
|
|
//:: FileName sp_res_resist.nss
|
|
//:://////////////////////////////////////////////
|
|
/**@file Resonating Resistance
|
|
Transmutation
|
|
Level: Clr 5, Mortal Hunter 4, Sor/Wiz 5
|
|
Components: V, Fiend
|
|
Casting Time: 1 action
|
|
Range: Personal
|
|
Target: Caster
|
|
Duration: 1 minute/level
|
|
|
|
The caster improves his spell resistance. Each time
|
|
a foe attempts to bypass the caster's spell
|
|
resistance, it must make a spell resistance check
|
|
twice. If either check fails, the foe fails to bypass
|
|
the spell resistance.
|
|
|
|
The caster must have spell resistance as an
|
|
extraordinary ability for resonating resistance to
|
|
function. Spell resistance granted by a magic item or
|
|
the spell resistance spell does not improve.
|
|
|
|
Author: Tenjac
|
|
Created: 7/5/06
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:://////////////////////////////////////////////
|
|
|
|
#include "prc_inc_spells"
|
|
|
|
void main()
|
|
{
|
|
if(!X2PreSpellCastCode()) return;
|
|
|
|
PRCSetSchool(SPELL_SCHOOL_TRANSMUTATION);
|
|
|
|
object oPC = OBJECT_SELF;
|
|
int nCasterLvl = PRCGetCasterLevel(oPC);
|
|
float fDur = (60.0f * nCasterLvl);
|
|
int nMetaMagic = PRCGetMetaMagicFeat();
|
|
effect eVis = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
|
|
|
if(nMetaMagic & METAMAGIC_EXTEND)
|
|
{
|
|
fDur += fDur;
|
|
}
|
|
|
|
//if is a fiend
|
|
if((GetAlignmentGoodEvil(oPC) == ALIGNMENT_EVIL) && (MyPRCGetRacialType(oPC) == RACIAL_TYPE_OUTSIDER))
|
|
{
|
|
//has spell SR on hide
|
|
object oSkin = GetPCSkin(oPC);
|
|
itemproperty iTest = GetFirstItemProperty(oSkin);
|
|
int bValid = FALSE;
|
|
|
|
while(GetIsItemPropertyValid(iTest))
|
|
{
|
|
if(GetItemPropertyType(iTest) == ITEM_PROPERTY_SPELL_RESISTANCE)
|
|
{
|
|
bValid = TRUE;
|
|
break;
|
|
}
|
|
iTest = GetNextItemProperty(oSkin);
|
|
}
|
|
|
|
//has SR feat
|
|
if(GetHasFeat(FEAT_SPELL27, oPC) ||
|
|
GetHasFeat(FEAT_SPELL25, oPC) ||
|
|
GetHasFeat(FEAT_SPELL23, oPC) ||
|
|
GetHasFeat(FEAT_SPELL22, oPC) ||
|
|
GetHasFeat(FEAT_SPELL21, oPC) ||
|
|
GetHasFeat(FEAT_SPELL20, oPC) ||
|
|
GetHasFeat(FEAT_SPELL19, oPC) ||
|
|
GetHasFeat(FEAT_SPELL18, oPC) ||
|
|
GetHasFeat(FEAT_SPELL17, oPC) ||
|
|
GetHasFeat(FEAT_SPELL16, oPC) ||
|
|
GetHasFeat(FEAT_SPELL15, oPC) ||
|
|
GetHasFeat(FEAT_SPELL14, oPC) ||
|
|
GetHasFeat(FEAT_SPELL13, oPC) ||
|
|
GetHasFeat(FEAT_SPELL11, oPC) ||
|
|
GetHasFeat(FEAT_SPELL10, oPC) ||
|
|
GetHasFeat(FEAT_SPELL8, oPC) ||
|
|
GetHasFeat(FEAT_SPELL5, oPC))
|
|
{
|
|
bValid = TRUE;
|
|
}
|
|
|
|
if(bValid == TRUE)
|
|
{
|
|
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oPC, fDur);
|
|
}
|
|
}
|
|
|
|
PRCSetSchool();
|
|
}
|
|
|