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

115 lines
4.0 KiB
Plaintext

/*
sp_nec_cyst
Necrotic Cyst
Necromancy [Evil]
Level: Clr 2, sor/wiz 2
Components: V, S, F
Casting Time: 1 standard action
Range: Touch
Target: Living creature touched
Duration: Instantaneous
Saving Throw: Fortitude negates
Spell Resistance: Yes
The subject develops an internal spherical sac that
contains fluid or semisolid necrotic flesh. The
internal cyst is noticeable as a slight bulge on the
subject's arm, abdomen, face (wherever you chose to
touch the target) or it is buried deeply enough in
the flesh of your target that it is not immediately
obvious-the subject may not realize what was implanted
within her.
From now on, undead foes and necromantic magic are
particularly debilitating to the subject-the cyst
enables a sympathetic response between free-roaming
external undead and itself. Whenever the victim is
subject to a spell or effect from the school of
necromancy, she makes saving throws to resist at a -2
penalty. Whenever the subject is dealt damage by the
natural weapon of an undead (claw, bite, or other
attack form), she takes an additional 1d6 points of
damage.
Victims who possess necrotic cysts may elect to have
some well-meaning chirurgeon remove them surgically.
The procedure is a bloody, painful process that
incapacitates the subject for 1 hour on a successful
DC 20 Heal check, and kills the subject with an
unsuccessful Heal check. The procedure takes 1 hour,
and the chirurgeon can't take 20 on the check.
Protection from evil or a similar spell prevents the
necrotic cyst from forming. Once a necrotic cyst is
implanted, spells that manipulate the cyst and its
bearer are no longer thwarted by protection from evil.
By: Tenjac
Created: Oct 30, 2005
Modified: Jul 2, 2006
*/
#include "prc_sp_func"
#include "prc_inc_sp_tch"
#include "prc_add_spell_dc"
//Implements the spell impact, put code here
// if called in many places, return TRUE if
// stored charges should be decreased
// eg. touch attack hits
//
// Variables passed may be changed if necessary
int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent)
{
PRCSignalSpellEvent(oTarget, TRUE, SPELL_NECROTIC_CYST, oCaster);
int iAttackRoll = PRCDoMeleeTouchAttack(oTarget);
if (iAttackRoll > 0)
{
if(GetCanCastNecroticSpells(oCaster) && PRCGetIsAliveCreature(oTarget))
{
if(!(GetHasSpellEffect(SPELL_PROTECTION_FROM_EVIL, oTarget) || GetHasSpellEffect(SPELL_MAGIC_CIRCLE_AGAINST_EVIL)))
{
if(!PRCDoResistSpell(oCaster, oTarget, nCasterLevel + SPGetPenetr()))
{
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, PRCGetSaveDC(oTarget, oCaster), SAVING_THROW_TYPE_EVIL))
{
ApplyTouchAttackDamage(oCaster, oTarget, iAttackRoll, 0, DAMAGE_TYPE_POSITIVE, DAMAGE_TYPE_MAGICAL);
GiveNecroticCyst(oTarget);
}
}
}
}
}
return iAttackRoll; //return TRUE if spell charges should be decremented
}
void main()
{
object oCaster = OBJECT_SELF;
int nCasterLevel = PRCGetCasterLevel(oCaster);
PRCSetSchool(GetSpellSchool(PRCGetSpellId()));
if (!X2PreSpellCastCode()) return;
object oTarget = PRCGetSpellTargetObject();
int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags
if(!nEvent) //normal cast
{
//SPEvilShift(oCaster);
if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget)
{ //holding the charge, casting spell on self
SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges
return;
}
DoSpell(oCaster, oTarget, nCasterLevel, nEvent);
}
else
{
if(nEvent & PRC_SPELL_EVENT_ATTACK)
{
if(DoSpell(oCaster, oTarget, nCasterLevel, nEvent))
DecrementSpellCharges(oCaster);
}
}
PRCSetSchool();
}