45 lines
2.3 KiB
Plaintext
45 lines
2.3 KiB
Plaintext
// 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
|
|
}
|