//:://///////////////////////////////////////////// //:: Storm Mantle //:: tm_s0_epstrmmant.nss //::////////////////////////////////////////////// /* Grants all within the casters party within a radius of 10 to receive a Greater Spell Mantle. */ //::////////////////////////////////////////////// //:: Created By: Nron Ksr //:: Created On: March 9, 2004 //::////////////////////////////////////////////// #include "prc_alterations" #include "inc_epicspells" void main() { DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_ABJURATION); if( !X2PreSpellCastCode() ) { DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); return; } // End of Spell Cast Hook if (GetCanCastSpell(OBJECT_SELF, SPELL_EPIC_STORM_M)) { //Declare major variables object oTarget = GetFirstObjectInShape( SHAPE_SPHERE, RADIUS_SIZE_HUGE, PRCGetSpellTargetLocation() ); effect eVis = EffectVisualEffect( VFX_DUR_SPELLTURNING ); effect eDur = EffectVisualEffect( VFX_DUR_CESSATE_POSITIVE ); int nDuration = GetTotalCastingLevel( OBJECT_SELF ); // Bone - changed effect eImpact = EffectVisualEffect( VFX_FNF_LOS_NORMAL_20 ); ApplyEffectAtLocation( DURATION_TYPE_INSTANT, eImpact, PRCGetSpellTargetLocation() ); while( GetIsObjectValid(oTarget) ) { if( spellsIsTarget(oTarget, SPELL_TARGET_ALLALLIES, OBJECT_SELF) ) { //Link Effects are inside the IF to cause a d12 roll on each mantle int nAbsorb = d12() + 10; effect eAbsob = EffectSpellLevelAbsorption( 9, nAbsorb ); effect eLink = EffectLinkEffects( eVis, eAbsob ); eLink = EffectLinkEffects( eLink, eDur ); //Fire cast spell at event for the specified target SignalEvent( oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_GREATER_SPELL_MANTLE, FALSE) ); PRCRemoveEffectsFromSpell( oTarget, GetSpellId() ); //Apply the VFX impact and effects SPApplyEffectToObject( DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration), TRUE, -1, GetTotalCastingLevel(OBJECT_SELF) ); } oTarget = GetNextObjectInShape( SHAPE_SPHERE, RADIUS_SIZE_HUGE, PRCGetSpellTargetLocation() ); } } DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); }