Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
94 lines
2.9 KiB
Plaintext
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();
|
|
} |