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.
		
			
				
	
	
		
			118 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
//::///////////////////////////////////////////////
 | 
						|
//:: Name      Clutch of Orcus
 | 
						|
//:: FileName  sp_clutch_orcus.nss
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
/**@file Clutch of Orcus
 | 
						|
Necromancy [Evil]
 | 
						|
Level: Clr 3
 | 
						|
Components: V, S
 | 
						|
Casting Time: 1 action
 | 
						|
Range: Medium (100 ft. + 10 ft./level)
 | 
						|
Target: One humanoid
 | 
						|
Duration: Concentration (see text)
 | 
						|
Saving Throw: Fortitude  negates (see text)
 | 
						|
Spell Resistance: Yes
 | 
						|
 | 
						|
The caster creates a magical force that grips the
 | 
						|
subject's heart (or similar vital organ) and
 | 
						|
begins crushing it. The victim is paralyzed
 | 
						|
(as if having a heart attack) and takes 1d3 points
 | 
						|
of damage per round.
 | 
						|
 | 
						|
Each round, the caster must concentrate to
 | 
						|
maintain the spell. In addition, a conscious
 | 
						|
victim gains a new saving throw each round to stop
 | 
						|
the spell. If the victim dies as a result of this
 | 
						|
spell, his chest ruptures and bursts, and his
 | 
						|
smoking heart appears in the caster's hand.
 | 
						|
 | 
						|
Author:    Tenjac
 | 
						|
Created:   3/28/05
 | 
						|
*/
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
 | 
						|
#include "prc_inc_spells"
 | 
						|
#include "prc_add_spell_dc"
 | 
						|
 | 
						|
 | 
						|
void EFConcentrationHB(object oPC, object oTarget)
 | 
						|
{
 | 
						|
    if(GetBreakConcentrationCheck(oPC) > 0)
 | 
						|
    {
 | 
						|
        //FloatingTextStringOnCreature("Crafting: Concentration lost!", oPC);
 | 
						|
        //DeleteLocalInt(oPC, PRC_CRAFT_HB);
 | 
						|
        //return;
 | 
						|
        SetLocalInt(oPC, "EFConcBroken", 1);
 | 
						|
    }
 | 
						|
    else
 | 
						|
        DelayCommand(6.0f, EFConcentrationHB(oPC, oTarget));
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
void CrushLoop(object oTarget, object oPC, int bEndSpell, int nDC)
 | 
						|
{
 | 
						|
 | 
						|
    //Conc check
 | 
						|
    if(GetLocalInt(oPC, "EFConcBroken") == 1)
 | 
						|
    {
 | 
						|
        bEndSpell = TRUE;
 | 
						|
    }
 | 
						|
 | 
						|
    //if makes save, abort
 | 
						|
    if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_EVIL))
 | 
						|
    {
 | 
						|
        bEndSpell = TRUE;
 | 
						|
    }
 | 
						|
 | 
						|
    //if Conc and failed save...
 | 
						|
    if(bEndSpell = FALSE)
 | 
						|
    {
 | 
						|
        //Paral
 | 
						|
        effect ePar = EffectParalyze();
 | 
						|
        SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePar, oTarget, 6.0f);
 | 
						|
 | 
						|
        //damage
 | 
						|
        int nDam = d3(1) + SpellDamagePerDice(oPC, 1);
 | 
						|
        SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_MAGICAL), oTarget);
 | 
						|
 | 
						|
        //if dead, end effect
 | 
						|
        if(GetIsDead(oTarget))
 | 
						|
        {
 | 
						|
            effect eChunky = EffectVisualEffect(VFX_COM_CHUNK_RED_MEDIUM);
 | 
						|
            SPApplyEffectToObject(DURATION_TYPE_INSTANT, eChunky, oTarget);
 | 
						|
 | 
						|
            //End loop next time so it doesn't keep going forever
 | 
						|
            bEndSpell = TRUE;
 | 
						|
        }
 | 
						|
 | 
						|
        DelayCommand(6.0f, CrushLoop(oTarget, oPC, bEndSpell, nDC));
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
void main()
 | 
						|
{
 | 
						|
    // Run the spellhook.
 | 
						|
    if (!X2PreSpellCastCode()) return;
 | 
						|
 | 
						|
    PRCSetSchool(SPELL_SCHOOL_NECROMANCY);
 | 
						|
 | 
						|
    object oPC = OBJECT_SELF;
 | 
						|
    object oTarget= PRCGetSpellTargetObject();
 | 
						|
    int bEndSpell = FALSE;
 | 
						|
    int nDC = PRCGetSaveDC(oTarget, oPC);
 | 
						|
    int nCasterLvl = PRCGetCasterLevel(oPC);
 | 
						|
 | 
						|
    PRCSignalSpellEvent(oTarget, TRUE, SPELL_CLUTCH_OF_ORCUS, oPC);
 | 
						|
 | 
						|
    //Check spell resistance
 | 
						|
    if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr()))
 | 
						|
    {
 | 
						|
        //start loop
 | 
						|
        DelayCommand(6.0f, EFConcentrationHB(oPC, oTarget));
 | 
						|
        CrushLoop(oTarget, oPC, bEndSpell, nDC);
 | 
						|
    }
 | 
						|
 | 
						|
    //SPEvilShift(oPC);
 | 
						|
    PRCSetSchool();
 | 
						|
} |