// 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 }