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.
		
			
				
	
	
		
			89 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/*:://////////////////////////////////////////////
 | 
						|
//:: Spell Name Disrupting Weapon: On Hit
 | 
						|
//:: Spell FileName PHS_S_DisruptWpA
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
//:: In Game Spell desctiption
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
    Transmutation
 | 
						|
    Level: Clr 5
 | 
						|
    Components: V, S
 | 
						|
    Casting Time: 1 standard action
 | 
						|
    Range: Touch
 | 
						|
    Targets: One melee weapon
 | 
						|
    Duration: 1 round/level
 | 
						|
    Saving Throw: Will negates (harmless, object); see text
 | 
						|
    Spell Resistance: Yes (harmless, object)
 | 
						|
 | 
						|
    This spell makes a melee weapon deadly to undead. Any undead creature with
 | 
						|
    HD equal to or less than your caster level must succeed on a Will save or be
 | 
						|
    destroyed utterly if struck in combat with this weapon. Spell resistance
 | 
						|
    does not apply against the destruction effect.
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
//:: Spell Effects Applied / Notes
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
    Special On hit effect that kills undead.
 | 
						|
 | 
						|
    Sets a local on the weapon for the caster level, as well.
 | 
						|
 | 
						|
    Quote: x2_s3_darkfire
 | 
						|
 | 
						|
    We need to use this property because we can not
 | 
						|
    add random elemental damage to a weapon in any
 | 
						|
    other way and implementation should be as close
 | 
						|
    as possible to the book.
 | 
						|
 | 
						|
    Behavior:
 | 
						|
    The casterlevel is set as a variable on the
 | 
						|
    weapon, so if players leave and rejoin, it
 | 
						|
    is lost (and the script will just assume a
 | 
						|
    minimal caster level).
 | 
						|
 | 
						|
    We set the DC onto the weapon as a local int. PHS_S_DisruptWpA has the
 | 
						|
    actual "On hit" stuff.
 | 
						|
 | 
						|
    This will:
 | 
						|
    - Check caster item (jsut in case)
 | 
						|
    - declare only what is needed when, to save some CPU time.
 | 
						|
    - Get the caster level of the item being cast, the DC is set on the weapon itself
 | 
						|
    - Make sure they are Undead, not immune to spells and under our HD.
 | 
						|
    - Get spell save DC
 | 
						|
    - Do the will save
 | 
						|
    - Kill it (CurrentHP + 10 damage, divine) (um, only if they fail the save!).
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
//:: Created By: Jasperre
 | 
						|
//::////////////////////////////////////////////*/
 | 
						|
 | 
						|
#include "PHS_INC_SPELLS"
 | 
						|
 | 
						|
void main()
 | 
						|
{
 | 
						|
    // On hit part of the spell.
 | 
						|
    // This needs to make sure it was an item that calls it.
 | 
						|
    object oItem = GetSpellCastItem();
 | 
						|
    if(!GetIsObjectValid(oItem)) return;
 | 
						|
 | 
						|
    // Declare major variables
 | 
						|
    object oTarget = GetSpellTargetObject(); // Should be object self.
 | 
						|
    // We use the base GetCasterLevel(OBJECT_SELF) to get the item's caster stuff.
 | 
						|
    int nCasterLevel = GetCasterLevel(OBJECT_SELF);
 | 
						|
 | 
						|
    // Check HD, Racial type and Immunity to spells
 | 
						|
    if(GetHitDice(oTarget) <= nCasterLevel &&
 | 
						|
       GetRacialType(oTarget) == RACIAL_TYPE_UNDEAD &&
 | 
						|
    // Make sure they are not immune to spells
 | 
						|
       !PHS_TotalSpellImmunity(oTarget))
 | 
						|
    {
 | 
						|
        // We get the spell save DC off the item being used to attack!
 | 
						|
        int nSpellSaveDC = GetLocalInt(oItem, "PHS_DISRUPTING_WEAPON_DC");
 | 
						|
 | 
						|
        // If they fail a will save...
 | 
						|
        if(!WillSave(oTarget, nSpellSaveDC))
 | 
						|
        {
 | 
						|
            // Declare effects
 | 
						|
            effect eVis = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_HOLY);
 | 
						|
            // Apply death effect.
 | 
						|
            PHS_ApplyDeathByDamageAndVFX(oTarget, eVis, DAMAGE_TYPE_POSITIVE);
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |