forked from Jaysyn/PRC8
120 lines
3.4 KiB
Plaintext
120 lines
3.4 KiB
Plaintext
|
//::///////////////////////////////////////////////
|
||
|
//:: Name Last Judgment
|
||
|
//:: FileName sp_lst_jdgmnt.nss
|
||
|
//:://////////////////////////////////////////////
|
||
|
/**@file Last Judgment
|
||
|
Necromancy [Death, Good]
|
||
|
Level: Clr 8, Sor/Wiz 8, Wrath 8
|
||
|
Components: V, Celestial
|
||
|
Casting Time: 1 round
|
||
|
Range: Close (25 ft. + 5 ft./2 levels)
|
||
|
Target: One evil humanoid, monstrous humanoid, or
|
||
|
giant/2 levels
|
||
|
Duration: Instantaneous
|
||
|
Saving Throw: Will partial
|
||
|
Spell Resistance: Yes
|
||
|
|
||
|
Reciting a list of the targets' evil deeds, you call
|
||
|
down the judgment of the heavens upon their heads.
|
||
|
Creatures that fail their saving throw are struck
|
||
|
dead and bodily transported to the appropriate Lower
|
||
|
Planes to suffer their eternal punishment. Creatures
|
||
|
that succeed nevertheless take 3d6 points of
|
||
|
temporary Wisdom damage as guilt for their misdeeds
|
||
|
overwhelms their minds.
|
||
|
|
||
|
This spell affects only humanoids, monstrous
|
||
|
humanoids, and giants of evil alignment.
|
||
|
|
||
|
A true resurrection or miracle spell can restore life
|
||
|
to a creature slain by this spell normally. A
|
||
|
resurrection spell works only if the creature's body
|
||
|
can be recovered from the Lower Planes before the
|
||
|
resurrection is cast.
|
||
|
|
||
|
Author: Tenjac
|
||
|
Created: 7/6/06
|
||
|
*/
|
||
|
//:://////////////////////////////////////////////
|
||
|
//:://////////////////////////////////////////////
|
||
|
|
||
|
#include "prc_inc_spells"
|
||
|
#include "prc_inc_template"
|
||
|
#include "prc_add_spell_dc"
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
if(!X2PreSpellCastCode()) return;
|
||
|
|
||
|
PRCSetSchool(SPELL_SCHOOL_NECROMANCY);
|
||
|
|
||
|
object oPC = OBJECT_SELF;
|
||
|
int nCasterLvl = PRCGetCasterLevel(oPC);
|
||
|
int nToBeAffected = nCasterLvl / 2;
|
||
|
int nDC;
|
||
|
location lLoc = PRCGetSpellTargetLocation();
|
||
|
|
||
|
//Must be Celestial
|
||
|
if(GetAlignmentGoodEvil(oPC) == ALIGNMENT_GOOD)
|
||
|
{
|
||
|
if((MyPRCGetRacialType(oPC) == RACIAL_TYPE_OUTSIDER) || (GetHasTemplate(TEMPLATE_CELESTIAL)) || (GetHasTemplate(TEMPLATE_HALF_CELESTIAL)))
|
||
|
{
|
||
|
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, 7.62, lLoc, FALSE, OBJECT_TYPE_CREATURE);
|
||
|
|
||
|
while(GetIsObjectValid(oTarget))
|
||
|
{
|
||
|
if(nToBeAffected > 0)
|
||
|
{
|
||
|
int nType = MyPRCGetRacialType(oTarget);
|
||
|
|
||
|
if(nType != RACIAL_TYPE_UNDEAD &&
|
||
|
nType != RACIAL_TYPE_CONSTRUCT &&
|
||
|
nType != RACIAL_TYPE_ELEMENTAL &&
|
||
|
nType != RACIAL_TYPE_VERMIN &&
|
||
|
nType != RACIAL_TYPE_OOZE &&
|
||
|
nType != RACIAL_TYPE_ANIMAL &&
|
||
|
nType != RACIAL_TYPE_ABERRATION &&
|
||
|
nType != RACIAL_TYPE_BEAST)
|
||
|
{
|
||
|
if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_EVIL)
|
||
|
{
|
||
|
//decrement the counter
|
||
|
nToBeAffected--;
|
||
|
|
||
|
if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr()))
|
||
|
{
|
||
|
nDC = PRCGetSaveDC(oTarget, oPC);
|
||
|
|
||
|
if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_DEATH))
|
||
|
{
|
||
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), oTarget);
|
||
|
|
||
|
|
||
|
//Any module specific code for moving the body to another plane would go here
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if(!GetHasMettle(oTarget, SAVING_THROW_WILL))
|
||
|
{
|
||
|
//made save, apply ability damage
|
||
|
ApplyAbilityDamage(oTarget, ABILITY_WISDOM, d6(3), DURATION_TYPE_TEMPORARY, TRUE, -1.0f);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
oTarget = MyNextObjectInShape(SHAPE_SPHERE, 7.62, lLoc, FALSE, OBJECT_TYPE_CREATURE);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else SendMessageToPC(oPC, "You do not meet the casting requirements for this spell.");
|
||
|
}
|
||
|
//SPGoodShift(oPC);
|
||
|
PRCSetSchool();
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|