// ai_guard
#include "antistuck_h"

void main()
{
   object oMe=OBJECT_SELF;
   object oDest=GetLocalObject(oMe,"oDestWP");
   float fDist=GetDistanceBetween(oMe,oDest);
   object oEnemy=GetNearestCreature(CREATURE_TYPE_IS_ALIVE,TRUE,oMe,1,CREATURE_TYPE_REPUTATION,REPUTATION_TYPE_ENEMY,CREATURE_TYPE_PERCEPTION,PERCEPTION_SEEN);
   if (GetIsInCombat(oMe)==FALSE&&oEnemy==OBJECT_INVALID)
   { // okay to guard
   if (GetArea(oMe)!=GetArea(oDest))
   {
     ClearAllActions(TRUE);
     ASActionMoveToObject(oDest,TRUE,1.0);
   }
   else if (fDist>12.0)
   { // go back
     ClearAllActions();
     ASActionMoveToObject(oDest,FALSE,2.5);
   } // go back
   else if (d4()==1)
   { // random walk
     oDest=GetNearestObject(OBJECT_TYPE_WAYPOINT,oMe,d10());
     ASActionMoveToObject(oDest,FALSE,2.5);
   } // random walk
   } // okay to guard
}