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.
112 lines
4.0 KiB
Plaintext
112 lines
4.0 KiB
Plaintext
/*:://////////////////////////////////////////////
|
||
//:: Spell Name Hide from Undead
|
||
//:: Spell FileName PHS_S_HidefromUn
|
||
//:://////////////////////////////////////////////
|
||
//:: In Game Spell desctiption
|
||
//:://////////////////////////////////////////////
|
||
Abjuration
|
||
Level: Clr 1
|
||
Components: V, S, DF
|
||
Casting Time: 1 standard action
|
||
Range: Touch
|
||
Targets: One ally/level in a 3.33M-radius sphere
|
||
Duration: 10 min./level (D)
|
||
Saving Throw: Will negates (harmless); see text
|
||
Spell Resistance: Yes
|
||
|
||
Undead cannot see, hear, or smell the warded creatures. Even extraordinary
|
||
or supernatural sensory capabilities, such as blindsense, blindsight, scent,
|
||
and tremorsense, cannot detect or locate warded creatures. Nonintelligent
|
||
undead creatures are automatically affected and act as though the warded
|
||
creatures are not there. An intelligent undead creature gets a single Will
|
||
saving throw. If it fails, the subject can’t see any of the warded creatures.
|
||
However, if it has reason to believe unseen opponents are present, it can
|
||
attempt to find or strike them. If a warded creature attempts to turn or
|
||
command undead or attacks any creature (even with a spell), the spell ends
|
||
for that recipient.
|
||
//:://////////////////////////////////////////////
|
||
//:: Spell Effects Applied / Notes
|
||
//:://////////////////////////////////////////////
|
||
As Hide from Animals, apart from it uses Sanctuary which has a nice save
|
||
we can put in :-D
|
||
|
||
Verus racial type undead.
|
||
|
||
Might work, NEED TO TEST!
|
||
//:://////////////////////////////////////////////
|
||
//:: Created By: Jasperre
|
||
//::////////////////////////////////////////////*/
|
||
|
||
#include "PHS_INC_SPELLS"
|
||
|
||
void main()
|
||
{
|
||
// Spell hook check.
|
||
if(!PHS_SpellHookCheck(PHS_SPELL_HIDE_FROM_UNDEAD)) return;
|
||
|
||
// Declare Major Variables
|
||
object oCaster = OBJECT_SELF;
|
||
object oTarget;
|
||
int nCasterLevel = PHS_GetCasterLevel();
|
||
int nMetaMagic = PHS_GetMetaMagicFeat();
|
||
int nSpellSaveDC = PHS_GetSpellSaveDC();
|
||
// Extra creatures/allies to affect, 1 per caster level.
|
||
int nCreatureExtraLimit = PHS_LimitInteger(nCasterLevel);
|
||
int nAffected, nCnt;
|
||
|
||
// Determine duration in minutes (10/caster level)
|
||
float fDuration = PHS_GetDuration(PHS_MINUTES, nCasterLevel * 10, nMetaMagic);
|
||
|
||
// Declare effefcts and link
|
||
effect eEthereal = EffectSanctuary(nSpellSaveDC);
|
||
effect eCessate = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
|
||
|
||
// Link effects
|
||
effect eLink = EffectLinkEffects(eCessate, eEthereal);
|
||
|
||
// Make it versus undead only
|
||
eLink = VersusRacialTypeEffect(eLink, RACIAL_TYPE_UNDEAD);
|
||
|
||
// Apply it to us first
|
||
oTarget = oCaster;
|
||
|
||
// Make sure they are not immune to spells
|
||
if(!PHS_TotalSpellImmunity(oTarget))
|
||
{
|
||
// Remove pervious castings of it
|
||
PHS_RemoveSpellEffectsFromTarget(PHS_SPELL_HIDE_FROM_UNDEAD, oTarget);
|
||
|
||
//Fire cast spell at event for the specified target
|
||
PHS_SignalSpellCastAt(oTarget, PHS_SPELL_HIDE_FROM_UNDEAD, FALSE);
|
||
|
||
// Apply VNF and effect.
|
||
PHS_ApplyDuration(oTarget, eLink, fDuration);
|
||
}
|
||
|
||
// Loop allies near to the caster
|
||
nCnt = 1;
|
||
oTarget = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_FRIEND, oCaster, nCnt);
|
||
while(GetIsObjectValid(oTarget) && nAffected < nCreatureExtraLimit &&
|
||
GetDistanceToObject(oTarget) <= 3.33)
|
||
{
|
||
// Make sure they are not immune to spells
|
||
if(!PHS_TotalSpellImmunity(oTarget))
|
||
{
|
||
// Remove pervious castings of it
|
||
PHS_RemoveSpellEffectsFromTarget(PHS_SPELL_HIDE_FROM_UNDEAD, oTarget);
|
||
|
||
//Fire cast spell at event for the specified target
|
||
PHS_SignalSpellCastAt(oTarget, PHS_SPELL_HIDE_FROM_UNDEAD, FALSE);
|
||
|
||
// Apply VNF and effect.
|
||
PHS_ApplyDuration(oTarget, eLink, fDuration);
|
||
|
||
// Add one to total
|
||
nAffected++;
|
||
}
|
||
// Get next ally.
|
||
nCnt++;
|
||
oTarget = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_FRIEND, oCaster, nCnt);
|
||
}
|
||
}
|