PRC8/nwn/nwnprc/trunk/spells/sp_rotcurse_urf.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

94 lines
2.9 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Name: Rotting Curse of Urfestra
//:: Filename: sp_rotcurse_urf.nss
//::///////////////////////////////////////////////
/**@file Rotting Curse of Urfestra
Transmutation [Evil]
Level: Corrupt 3
Components: V, S, Corrupt
Casting Time: 1 action
Range: Touch
Target: Living creature touched
Duration: Instantaneous
Saving Throw: Fortitude negates
Spell Resistance: Yes
The subject's flesh and bones begin to rot. The subject
takes 1d6 points of Constitution damage immediately,
and a further 1d6 points of Constitution damage
every hour until the subject dies or the curse is
removed with a wish, miracle, or remove curse spell.
Corruption Cost: 1d6 points of Strength damage.
@author Written By: Tenjac
*/
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
#include "prc_inc_spells"
#include "inc_abil_damage"
#include "prc_add_spell_dc"
//Pseudo-heartbeat function for abil damage
void DoCurseDam (object oTarget, object oPC, int nMetaMagic)
{
int nDam = d6(1);
//Check if spell was Maximized
if(nMetaMagic & METAMAGIC_MAXIMIZE)
{
nDam = 6;
}
//Check if spell was Empowered
if (nMetaMagic & METAMAGIC_EMPOWER)
{
nDam += (nDam / 2);
}
//Ability damage
ApplyAbilityDamage(oTarget, ABILITY_CONSTITUTION, nDam, DURATION_TYPE_PERMANENT, FALSE, 0.0f, FALSE, oPC);
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DISEASE_S), oTarget);
//Delay 1 hour, then hit the poor bastard again.
DelayCommand(3600.0f, DoCurseDam(oTarget, oPC, nMetaMagic));
}
void main()
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
if (!X2PreSpellCastCode()) return;
PRCSetSchool(SPELL_SCHOOL_NECROMANCY);
//define vars
object oPC = OBJECT_SELF;
object oTarget = PRCGetSpellTargetObject();
int nCasterLvl = PRCGetCasterLevel();
int nMetaMagic = PRCGetMetaMagicFeat();
int nPenetr = nCasterLvl + SPGetPenetr();
PRCSignalSpellEvent(oTarget, TRUE, SPELL_ROTTING_CURSE_OF_URFESTRA, oPC);
//Spell Resistance
if (!PRCDoResistSpell(OBJECT_SELF, oTarget,nPenetr) && PRCGetIsAliveCreature(oTarget))
{
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, PRCGetSaveDC(oTarget,oPC)))
{
DoCurseDam(oTarget, oPC, nMetaMagic);
}
}
//Corrupt spell cost
int nCorrupt = d6(1);
DoCorruptionCost(oPC, ABILITY_STRENGTH, nCorrupt, 0);
//Corrupt spells get mandatory 10 pt evil adjustment, regardless of switch
AdjustAlignment(oPC, ALIGNMENT_EVIL, 10, FALSE);
//Alignment shift if switch set
//SPEvilShift(oPC);
PRCSetSchool();
}