//:://///////////////////////////////////////////// //:: Lesser Dispel //:: NW_S0_LsDispel.nss //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: Jan 7, 2002 //:: Updated On: Oct 20, 2003, Georg Zoeller //::////////////////////////////////////////////// //:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff #include "inc_dispel" void main() { DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_ABJURATION); //-------------------------------------------------------------------------- /* Spellcast Hook Code Added 2003-06-20 by Georg If you want to make changes to all spells, check x2_inc_spellhook.nss to find out more */ //-------------------------------------------------------------------------- if (!X2PreSpellCastCode()) { return; } // End of Spell Cast Hook //Declare major variables effect eVis = EffectVisualEffect(VFX_IMP_HEAD_SONIC); effect eImpact = EffectVisualEffect(VFX_FNF_LOS_NORMAL_20); object oTarget = PRCGetSpellTargetObject(); location lLocal = PRCGetSpellTargetLocation(); int nCasterLevel = PRCGetCasterLevel(OBJECT_SELF); int iTypeDispel = GetLocalInt(GetModule(),"BIODispel"); //-------------------------------------------------------------------------- // Lesser Magic is capped at caster level 5 //-------------------------------------------------------------------------- if(nCasterLevel > 5) { nCasterLevel = 5; } 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, PRCGetSpellTargetLocation()); 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, OBJECT_SELF,nCasterLevel); else spellsDispelAoEMod(oTarget, OBJECT_SELF,nCasterLevel); } else if (GetObjectType(oTarget) == OBJECT_TYPE_PLACEABLE) { SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId())); } 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); } } DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); // Getting rid of the local integer storing the spellschool name }