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.
		
			
				
	
	
		
			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();
 | 
						|
} |