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.
77 lines
2.3 KiB
Plaintext
77 lines
2.3 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Name Angry Ache
|
|
//:: FileName sp_angry_ache.nss
|
|
//:://////////////////////////////////////////////
|
|
/**@file Angry Ache
|
|
Necromancy
|
|
Level: Asn 1, Clr 1, Pain 1
|
|
Components: V, S
|
|
Casting Time: 1 action
|
|
Range: Close (25 ft. + 5 ft./2 levels)
|
|
Target: One living creature
|
|
Duration: 1 minute/level
|
|
Saving Throw: Fortitude negates
|
|
Spell Resistance: Yes
|
|
|
|
The caster temporarily strains the subject's muscles
|
|
in a very specific way. The subject feels a sharp
|
|
pain whenever she makes an attack. All her attack
|
|
rolls have a -2 circumstance penalty for every four
|
|
caster levels (maximum penalty -10).
|
|
|
|
Author: Tenjac
|
|
Created: 02/05/06
|
|
Modified: X
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:://////////////////////////////////////////////
|
|
|
|
#include "prc_alterations"
|
|
#include "prc_inc_spells"
|
|
#include "prc_add_spell_dc"
|
|
|
|
void main()
|
|
{
|
|
if (!X2PreSpellCastCode()) return;
|
|
|
|
PRCSetSchool(SPELL_SCHOOL_NECROMANCY);
|
|
|
|
//define vars
|
|
object oPC = OBJECT_SELF;
|
|
object oTarget = PRCGetSpellTargetObject();
|
|
int nCasterLvl = PRCGetCasterLevel(oPC);
|
|
int nPenetr = nCasterLvl + SPGetPenetr();
|
|
|
|
PRCSignalSpellEvent(oTarget, TRUE, SPELL_ANGRY_ACHE, oPC);
|
|
|
|
//Check Spell Resistance
|
|
if(!PRCDoResistSpell(oPC, oTarget, nPenetr) && PRCGetIsAliveCreature(oTarget))
|
|
{
|
|
//Calculate DC
|
|
int nDC = PRCGetSaveDC(oTarget, oPC);
|
|
|
|
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_SPELL))
|
|
{
|
|
int nMetaMagic = PRCGetMetaMagicFeat();
|
|
float fDuration = TurnsToSeconds(nCasterLvl);
|
|
if(nMetaMagic & METAMAGIC_EXTEND)
|
|
fDuration *= 2;
|
|
|
|
int nPenalty = nCasterLvl / 2;
|
|
nPenalty = nPenalty > 10 ? 10 : nPenalty;
|
|
|
|
//Construct effect
|
|
effect ePenalty = EffectAttackDecrease(nPenalty, ATTACK_BONUS_MISC);
|
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
|
effect eLink = EffectLinkEffects(ePenalty, eDur);
|
|
|
|
effect eVis = EffectVisualEffect(VFX_IMP_HEAD_EVIL);
|
|
|
|
//Apply Effect
|
|
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDuration, TRUE, SPELL_ANGRY_ACHE, nCasterLvl);
|
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
|
}
|
|
}
|
|
|
|
PRCSetSchool();
|
|
} |