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.
		
			
				
	
	
		
			92 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| //::///////////////////////////////////////////////
 | |
| //:: Name      Voracious Dispelling
 | |
| //:: FileName  inv_dra_vordspl.nss
 | |
| //::///////////////////////////////////////////////
 | |
| /*
 | |
| 
 | |
| Lesser Invocation
 | |
| 4th Level Spell
 | |
| 
 | |
| You attempt to strip all magical effects from a
 | |
| single target. You can also target a group of
 | |
| creatures, attempting to remove the most powerful
 | |
| spell effect from each creature. To remove an
 | |
| effect, the caster makes a dispel check of 1d20 +1
 | |
| per caster level (to a maximum of +10) against a DC
 | |
| of 11 + the spell effect's caster level. Anyone who
 | |
| has an active spell effect dispelled in this way
 | |
| takes 1 point of damage per level of the spell
 | |
| effect.
 | |
| 
 | |
| */
 | |
| //::///////////////////////////////////////////////
 | |
| 
 | |
| #include "inc_dispel"
 | |
| #include "inv_inc_invfunc"
 | |
| #include "inv_invokehook"
 | |
| 
 | |
| void main()
 | |
| {
 | |
|     if(!PreInvocationCastCode()) return;
 | |
| 
 | |
|     object oCaster = OBJECT_SELF;
 | |
|     object oTarget = PRCGetSpellTargetObject();
 | |
|     location lLocal = PRCGetSpellTargetLocation();
 | |
|     int nCasterLevel = GetInvokerLevel(oCaster, GetInvokingClass());
 | |
|     int iTypeDispel = GetLocalInt(GetModule(),"BIODispel");
 | |
|     effect eVis = EffectVisualEffect(VFX_IMP_BREACH);
 | |
|     effect eImpact = EffectVisualEffect(VFX_FNF_DISPEL);
 | |
| 
 | |
|     //--------------------------------------------------------------------------
 | |
|     // Dispel Magic is capped at caster level 10
 | |
|     //--------------------------------------------------------------------------
 | |
|     if(nCasterLevel > 10)
 | |
|     {
 | |
|         nCasterLevel = 10;
 | |
|     }
 | |
| 
 | |
|     if (GetIsObjectValid(oTarget))
 | |
|     {
 | |
|         //----------------------------------------------------------------------
 | |
|         // Targeted Dispel - Dispel all
 | |
|         //----------------------------------------------------------------------
 | |
|           if (iTypeDispel)
 | |
|              spellsDispelMagic(oTarget, nCasterLevel, eVis, eImpact);
 | |
|            else
 | |
|              spellsDispelMagicMod(oTarget, nCasterLevel, eVis, eImpact);
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|         //----------------------------------------------------------------------
 | |
|         // Area of Effect - Only dispel best effect
 | |
|         //----------------------------------------------------------------------
 | |
| 
 | |
|         ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, lLocal);
 | |
|         oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, lLocal, FALSE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_AREA_OF_EFFECT | OBJECT_TYPE_PLACEABLE);
 | |
|         while (GetIsObjectValid(oTarget))
 | |
|         {
 | |
|             if(GetObjectType(oTarget) == OBJECT_TYPE_AREA_OF_EFFECT)
 | |
|             {
 | |
|                 //--------------------------------------------------------------
 | |
|                 // Handle Area of Effects
 | |
|                 //--------------------------------------------------------------
 | |
|                 if (iTypeDispel)
 | |
|                    spellsDispelAoE(oTarget, oCaster, nCasterLevel);
 | |
|                 else
 | |
|                    spellsDispelAoEMod(oTarget, oCaster, nCasterLevel);
 | |
|             }
 | |
|             else if (GetObjectType(oTarget) == OBJECT_TYPE_PLACEABLE)
 | |
|             {
 | |
|                 SignalEvent(oTarget, EventSpellCastAt(oCaster, INVOKE_VORACIOUS_DISPELLING));
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                   if (iTypeDispel)
 | |
|                      spellsDispelMagic(oTarget, nCasterLevel, eVis, eImpact, FALSE);
 | |
|                   else
 | |
|                      spellsDispelMagicMod(oTarget, nCasterLevel, eVis, eImpact, FALSE);
 | |
|             }
 | |
|            oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, lLocal, FALSE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_AREA_OF_EFFECT | OBJECT_TYPE_PLACEABLE);
 | |
|         }
 | |
|     }
 | |
| } |