PRC8_fork/nwn/nwnprc/trunk/smp/phs_s_hidefromun.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

112 lines
4.0 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*:://////////////////////////////////////////////
//:: 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 cant 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);
}
}