91 lines
2.4 KiB
Plaintext
91 lines
2.4 KiB
Plaintext
|
//::///////////////////////////////////////////////
|
|||
|
//:: Name Reality Blind
|
|||
|
//:: FileName sp_real_blind.nss
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
/**@file Reality Blind
|
|||
|
Illusion (Phantasm) [Evil, Mind<6E>Affecting]
|
|||
|
Level: Sor/Wiz 3
|
|||
|
Components: V, S, M
|
|||
|
Casting Time: 1 action
|
|||
|
Range: Close (25 ft. + 5 ft./2 levels)
|
|||
|
Target: One creature
|
|||
|
Duration: Concentration (see below)
|
|||
|
Saving Throw: Will negates
|
|||
|
Spell Resistance: Yes
|
|||
|
|
|||
|
This spell overwhelms the target with hallucinations,
|
|||
|
causing him to be blinded and stunned if he fails
|
|||
|
the save. The subject can attempt a new saving throw
|
|||
|
each round to end the spell.
|
|||
|
|
|||
|
Even after the subject succeeds at the save or the
|
|||
|
caster stops concentrating, the subject is plagued
|
|||
|
with nightmares every night. The nightmares prevent
|
|||
|
the subject from benefiting from natural healing.
|
|||
|
These nightmares continue until the caster dies or
|
|||
|
the subject succeeds at a Will saving throw, attempted
|
|||
|
once per night. This nightmare effect is treated as a
|
|||
|
curse and thus cannot be dispelled. It is subject to
|
|||
|
remove curse, however.
|
|||
|
|
|||
|
Material Component: A 2-inch diameter multicolored
|
|||
|
disk of paper or ribbon.
|
|||
|
|
|||
|
Author: Tenjac
|
|||
|
Created: 6/6/06
|
|||
|
*/
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
void BlindLoop(object oTarget, object oPC);
|
|||
|
|
|||
|
#include "prc_inc_spells"
|
|||
|
#include "prc_add_spell_dc"
|
|||
|
void main()
|
|||
|
|
|||
|
{
|
|||
|
if(!X2PreSpellCastCode()) return;
|
|||
|
|
|||
|
PRCSetSchool(SPELL_SCHOOL_ILLUSION);
|
|||
|
|
|||
|
object oPC = OBJECT_SELF;
|
|||
|
object oTarget = PRCGetSpellTargetObject();
|
|||
|
int nCasterLvl = PRCGetCasterLevel(oPC);
|
|||
|
|
|||
|
PRCSignalSpellEvent(oTarget,TRUE, SPELL_REALITY_BLIND, oPC);
|
|||
|
|
|||
|
if(!PRCDoResistSpell(OBJECT_SELF, oTarget, nCasterLvl + SPGetPenetr()))
|
|||
|
{
|
|||
|
//Loop
|
|||
|
BlindLoop(oTarget, oPC);
|
|||
|
}
|
|||
|
PRCSetSchool();
|
|||
|
//SPEvilShift(oPC);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
void BlindLoop(object oTarget, object oPC)
|
|||
|
{
|
|||
|
int nDC = PRCGetSaveDC(oTarget, oPC);
|
|||
|
|
|||
|
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_EVIL)) //&& Conc check successful
|
|||
|
{
|
|||
|
effect eBlind = EffectLinkEffects(EffectBlindness(), EffectStunned());
|
|||
|
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBlind, oTarget, 6.0f);
|
|||
|
|
|||
|
//Schedule next round
|
|||
|
DelayCommand(6.0f, BlindLoop(oTarget, oPC));
|
|||
|
}
|
|||
|
|
|||
|
else
|
|||
|
{
|
|||
|
//Non healing code
|
|||
|
SetLocalInt(oPC, "PRC_NoNaturalHeal", 1);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|