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.
90 lines
3.1 KiB
Plaintext
90 lines
3.1 KiB
Plaintext
//::///////////////////////////////////////////////
|
||
//:: Name Heart Ripper
|
||
//:: FileName sp_heart_ripr
|
||
//:://////////////////////////////////////////////
|
||
/**@file Heart Ripper
|
||
Necromancy [Death]
|
||
Level: Assassin 4
|
||
Components: V, S
|
||
Casting Time: 1 standard action
|
||
Range: Close (25 ft. + 5 ft./2 levels)
|
||
Target: One living creature
|
||
Duration: Instantaneous
|
||
Saving Throw: Fortitude negates
|
||
Spell Resistance: Yes
|
||
|
||
Invisible bolts of force instantly slay
|
||
the target you designate by driving its
|
||
heart from its body unless it succeeds
|
||
on a Fortitude save. If the target has
|
||
HD higher than your caster level, it
|
||
does not die on a failed saving throw,
|
||
but instead is stunned for 1d4 rounds.
|
||
Creatures that don’t depend on their
|
||
hearts for survival, creatures with no
|
||
anatomy, and creatures immune to
|
||
extra damage from critical hits are
|
||
unaffected by the spell.
|
||
|
||
Author: Tenjac
|
||
Created: 6/28/07
|
||
*/
|
||
//:://////////////////////////////////////////////
|
||
//:://////////////////////////////////////////////
|
||
|
||
#include "prc_inc_spells"
|
||
#include "prc_add_spell_dc"
|
||
|
||
void main()
|
||
{
|
||
if(!X2PreSpellCastCode()) return;
|
||
|
||
PRCSetSchool(SPELL_SCHOOL_NECROMANCY);
|
||
|
||
object oPC = OBJECT_SELF;
|
||
object oTarget = PRCGetSpellTargetObject();
|
||
int nCasterLvl = PRCGetCasterLevel(oPC);
|
||
|
||
int nType = MyPRCGetRacialType(oTarget);
|
||
|
||
if(nType == RACIAL_TYPE_UNDEAD ||
|
||
nType == RACIAL_TYPE_ELEMENTAL ||
|
||
nType == RACIAL_TYPE_CONSTRUCT ||
|
||
GetIsImmune(oTarget, IMMUNITY_TYPE_CRITICAL_HIT))
|
||
|
||
{
|
||
SendMessageToPC(oPC, "Target creature is immune to the effects of this spell.");
|
||
PRCSetSchool();
|
||
return;
|
||
}
|
||
|
||
//SR check
|
||
if(!PRCDoResistSpell(oPC, oTarget, (nCasterLvl + SPGetPenetr())))
|
||
{
|
||
//Save
|
||
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, PRCGetSaveDC(oTarget, oPC), SAVING_THROW_TYPE_DEATH))
|
||
{
|
||
//Check HD
|
||
int nHD = GetHitDice(oTarget);
|
||
|
||
if(nHD > nCasterLvl)
|
||
{
|
||
int nStun = d4(1);
|
||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectStunned(), oTarget, RoundsToSeconds(nStun), TRUE, SPELL_HEART_RIPPER, nCasterLvl);
|
||
}
|
||
|
||
else
|
||
{
|
||
//Kill it. Chunkaliciously.
|
||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_RED_MEDIUM), oTarget);
|
||
|
||
effect eDeath = EffectDeath();
|
||
SupernaturalEffect(eDeath);
|
||
|
||
DeathlessFrenzyCheck(oTarget);
|
||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget);
|
||
}
|
||
}
|
||
}
|
||
PRCSetSchool();
|
||
} |