ok, i think I've got it:
To make a monomaniacal Umber Hulk walkwaypoints, and never miss a wp. The only thing that trips him up is that he occasionally does an AoO on my PC. Then trudges off again ...
--- Heartbeat ---
#include "x0_i0_walkway"
void main()
{
// object oDebug = GetFirstPC(FALSE);
// SendMessageToPC(oDebug, ". HeartBeat");
if (GetIsObjectValid(GetAttemptedAttackTarget()))
{
// SendMessageToPC(oDebug, ". Combat");
ClearAllActions(TRUE);
int nNextWayLast = GetLocalInt(OBJECT_SELF, "nNextWayLast");
if (!GetLocalInt(OBJECT_SELF, "bWpDone"))
{
SetLocalInt(OBJECT_SELF, "bWpDone", TRUE);
if (GetWalkCondition(NW_WALK_FLAG_BACKWARDS))
{
nNextWayLast ++;
}
else
{
nNextWayLast --;
}
SetLocalInt(OBJECT_SELF, VAR_WP_NEXT, nNextWayLast);
}
}
else
{
// SendMessageToPC(oDebug, ". NOT Combat");
DeleteLocalInt(OBJECT_SELF, "bWpDone");
int nNextWay = GetLocalInt(OBJECT_SELF, VAR_WP_NEXT);
SetLocalInt(OBJECT_SELF, "nNextWayLast", nNextWay);
}
// this also initializes the WWPController ...
MoveToNextWaypoint();
// int iNext = GetNextWaypoint();
// int iCurrent = GetCurrentWaypoint();
// int iPrevious = GetPreviousWaypoint();
// SendMessageToPC(oDebug, ". Next wp : " + IntToString(iNext));
// SendMessageToPC(oDebug, ". Current wp : " + IntToString(iCurrent));
// SendMessageToPC(oDebug, ". Previous wp : " + IntToString(iPrevious));
// SendMessageToPC(oDebug, ". ___ .");
}--- Spawn ---
void main()
{
// etc. here //
// bSuppressMakeAOO does not work on nonPlot creatures; if it did this would be *much* simpler.
SetCombatOverrides(OBJECT_SELF, OBJECT_INVALID, 1, 1, OVERRIDE_ATTACK_RESULT_MISS, 0, 0, TRUE, FALSE, FALSE, FALSE);
}__
All other event slots blank -- faction, Hostile