void main()
{

object oPC;

object oTarget;
oPC = GetItemActivator();

int nInt;
nInt = GetObjectType(oPC);

effect eEffect;
eEffect = EffectVisualEffect(VFX_FNF_SUMMON_CELESTIAL);

if (nInt != OBJECT_TYPE_WAYPOINT)
   DelayCommand(4.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC));
else
   DelayCommand(4.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect, GetLocation(oPC)));


nInt = GetObjectType(oPC);

eEffect = EffectVisualEffect(VFX_IMP_TORNADO);

if (nInt != OBJECT_TYPE_WAYPOINT)
   DelayCommand(8.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC));
else
   DelayCommand(9.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eEffect, GetLocation(oPC)));


location lTarget;
oTarget = GetWaypointByTag("startpoint");

lTarget = GetLocation(oTarget);

if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;

SetLocalLocation(oPC, "ls_stored_loc", GetLocation(oPC));

DelayCommand(10.0, AssignCommand(oPC, ClearAllActions()));

DelayCommand(13.0, AssignCommand(oPC, ActionJumpToLocation(lTarget)));

eEffect = EffectVisualEffect(VFX_IMP_UNSUMMON);

DelayCommand(10.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC));

}