29 lines
842 B
Plaintext
29 lines
842 B
Plaintext
// 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
|
|
}
|