// wazoo_s0_shadoww - Shadow Walk Spell #include "x2_inc_spellhook" void main() { object oCaster=GetPCSpeaker(); int nParm=GetLocalInt(oCaster,"nParm"); object oWP; effect eVFX; object oNearby; if (!X2PreSpellCastCode()) { // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell return; } oWP=GetWaypointByTag("PLANESHIFT_SHADOW"); if (nParm>0) oWP=GetWaypointByTag("SHADOWWALK_"+IntToString(nParm)); if (oWP!=OBJECT_INVALID) { // destination not invalid eVFX=EffectVisualEffect(VFX_DUR_PROT_SHADOW_ARMOR); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVFX,oCaster,20.0); oNearby=GetAssociate(ASSOCIATE_TYPE_FAMILIAR,oCaster); if (oNearby!=OBJECT_INVALID) ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVFX,oNearby,20.0); oNearby=GetAssociate(ASSOCIATE_TYPE_SUMMONED,oCaster); if (oNearby!=OBJECT_INVALID) ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVFX,oNearby,20.0); oNearby=GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION,oCaster); if (oNearby!=OBJECT_INVALID) ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVFX,oNearby,20.0); oNearby=GetAssociate(ASSOCIATE_TYPE_DOMINATED,oCaster); if (oNearby!=OBJECT_INVALID) ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVFX,oNearby,20.0); oNearby=GetAssociate(ASSOCIATE_TYPE_HENCHMAN,oCaster); if (oNearby!=OBJECT_INVALID) ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVFX,oNearby,20.0); oNearby=GetAssociate(ASSOCIATE_TYPE_HENCHMAN,oCaster,2); if (oNearby!=OBJECT_INVALID) ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVFX,oNearby,20.0); oNearby=GetAssociate(ASSOCIATE_TYPE_HENCHMAN,oCaster,3); if (oNearby!=OBJECT_INVALID) ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVFX,oNearby,20.0); oNearby=GetAssociate(ASSOCIATE_TYPE_HENCHMAN,oCaster,4); if (oNearby!=OBJECT_INVALID) ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVFX,oNearby,20.0); oNearby=GetAssociate(ASSOCIATE_TYPE_HENCHMAN,oCaster,5); if (oNearby!=OBJECT_INVALID) ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVFX,oNearby,20.0); eVFX=EffectVisualEffect(VFX_DUR_DARKNESS); DelayCommand(4.0,ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVFX,oCaster,10.0)); DelayCommand(7.0,AssignCommand(oCaster,JumpToObject(oWP))); } // destination not invalid }