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.
111 lines
3.2 KiB
Plaintext
111 lines
3.2 KiB
Plaintext
/*:://////////////////////////////////////////////
|
|
//:: Spell Name Invisibility Purge
|
|
//:: Spell FileName PHS_S_InvisPurg
|
|
//:://////////////////////////////////////////////
|
|
//:: In Game Spell desctiption
|
|
//:://////////////////////////////////////////////
|
|
Evocation
|
|
Level: Clr 3
|
|
Components: V, S
|
|
Casting Time: 1 standard action
|
|
Range: Personal
|
|
Target: You
|
|
Duration: 1 min./level (D)
|
|
|
|
You surround yourself with a sphere of power with a radius of 1.67M per
|
|
2 caster levels (Maximum 16.67M at level 20) that negates all forms of
|
|
invisibility. Anything invisible has thier invisibility removed while in
|
|
the area. Natural hiding is not affected.
|
|
//:://////////////////////////////////////////////
|
|
//:: Spell Effects Applied / Notes
|
|
//:://////////////////////////////////////////////
|
|
I altered it so people wouldn't be put under a false impression.
|
|
|
|
Anyones invsibility is removed!
|
|
|
|
The AOE changes per 2 caster levels - not per 1, this makes it more
|
|
manageable for NwN, and is still a huge radius as the spell progresses
|
|
in levels!
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Jasperre
|
|
//::////////////////////////////////////////////*/
|
|
|
|
#include "PHS_INC_SPELLS"
|
|
|
|
void main()
|
|
{
|
|
// Spell hook check.
|
|
if(!PHS_SpellHookCheck(PHS_SPELL_INVISIBILITY_PURGE)) return;
|
|
|
|
// Declare Major Variables
|
|
object oCaster = OBJECT_SELF;
|
|
object oTarget = GetSpellTargetObject(); // Should be OBJECT_SELF
|
|
int nCasterLevel = PHS_GetCasterLevel();
|
|
int nMetaMagic = PHS_GetMetaMagicFeat();
|
|
int nAOE;
|
|
|
|
// Make sure they are not immune to spells
|
|
if(PHS_TotalSpellImmunity(oTarget)) return;
|
|
|
|
// Determine duration in minutes
|
|
float fDuration = PHS_GetDuration(PHS_MINUTES, nCasterLevel, nMetaMagic);
|
|
|
|
// Get AOE
|
|
if(nCasterLevel <= 2)
|
|
{
|
|
nAOE = PHS_AOE_MOB_INVISIBILITY_PURGE_05;
|
|
}
|
|
else if(nCasterLevel <= 4)
|
|
{
|
|
nAOE = PHS_AOE_MOB_INVISIBILITY_PURGE_10;
|
|
}
|
|
else if(nCasterLevel <= 6)
|
|
{
|
|
nAOE = PHS_AOE_MOB_INVISIBILITY_PURGE_15;
|
|
}
|
|
else if(nCasterLevel <= 8)
|
|
{
|
|
nAOE = PHS_AOE_MOB_INVISIBILITY_PURGE_20;
|
|
}
|
|
else if(nCasterLevel <= 10)
|
|
{
|
|
nAOE = PHS_AOE_MOB_INVISIBILITY_PURGE_25;
|
|
}
|
|
else if(nCasterLevel <= 12)
|
|
{
|
|
nAOE = PHS_AOE_MOB_INVISIBILITY_PURGE_30;
|
|
}
|
|
else if(nCasterLevel <= 14)
|
|
{
|
|
nAOE = PHS_AOE_MOB_INVISIBILITY_PURGE_35;
|
|
}
|
|
else if(nCasterLevel <= 16)
|
|
{
|
|
nAOE = PHS_AOE_MOB_INVISIBILITY_PURGE_40;
|
|
}
|
|
else if(nCasterLevel <= 18)
|
|
{
|
|
nAOE = PHS_AOE_MOB_INVISIBILITY_PURGE_45;
|
|
}
|
|
else //if(nCasterLevel <= 20)
|
|
{
|
|
nAOE = PHS_AOE_MOB_INVISIBILITY_PURGE_50;
|
|
}
|
|
|
|
// Declare effects
|
|
effect eAOE = EffectAreaOfEffect(nAOE);
|
|
effect eCessate = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
|
|
|
|
// Link effects
|
|
effect eLink = EffectLinkEffects(eAOE, eCessate);
|
|
|
|
// Remove pervious castings of it
|
|
PHS_RemoveSpellEffectsFromTarget(PHS_SPELL_INVISIBILITY_PURGE, oTarget);
|
|
|
|
// Fire cast spell at event for the specified target
|
|
PHS_SignalSpellCastAt(oTarget, PHS_SPELL_INVISIBILITY_PURGE, FALSE);
|
|
|
|
// Apply VFX and effect.
|
|
PHS_ApplyDuration(oTarget, eLink, fDuration);
|
|
}
|