// MEL_HB - Mana Elemental Heartbeat #include "antistuck_h" void main() { // purpose handle the mana elemental object oMe=OBJECT_SELF; object oHome=GetLocalObject(oMe,"oManaPool"); object oEnemy=GetNearestCreature(CREATURE_TYPE_IS_ALIVE,TRUE,oMe,1,CREATURE_TYPE_PERCEPTION,PERCEPTION_SEEN,CREATURE_TYPE_REPUTATION,REPUTATION_TYPE_ENEMY); if (oEnemy==OBJECT_INVALID&&GetIsInCombat(oMe)==FALSE) { // okay to move if (oHome!=OBJECT_INVALID) { // pool exists if (GetArea(oMe)!=GetArea(oHome)) { // teleport AssignCommand(oMe,ClearAllActions()); AssignCommand(oMe,JumpToObject(oHome)); } // teleport else if (GetDistanceBetween(oMe,oHome)>8.0) { // move back to mana pool AssignCommand(oMe,ASActionMoveToObject(oHome,TRUE,3.0)); } // move back to mana pool else { // wander oHome=GetNearestObject(OBJECT_TYPE_WAYPOINT,oMe,d10()); if (oHome==OBJECT_INVALID) oHome=GetNearestObject(OBJECT_TYPE_WAYPOINT,oMe,d10()); if (oHome!=OBJECT_INVALID) { // move AssignCommand(oMe,ASActionMoveToObject(oHome,FALSE,1.0)); } // move } // wander } // pool exists else { // pool does not exist oHome=GetNearestObject(OBJECT_TYPE_WAYPOINT,oMe,d10()); if (oHome==OBJECT_INVALID) oHome=GetNearestObject(OBJECT_TYPE_WAYPOINT,oMe,d10()); if (oHome!=OBJECT_INVALID&&GetCurrentAction(oMe)!=ACTION_MOVETOPOINT) { // move AssignCommand(oMe,ASActionMoveToObject(oHome,FALSE,1.0)); } // move } // pool does not exist } // okay to move else { // combat ExecuteScript("nw_c2_default1",oMe); } // combat } // purpose handle the mana elemental