// ZZ> This function makes the character wanders around its enemy
IfCleanedUp				// Respawn
  RespawnCharacter			  // 
IfKilled				// This reduces the height of the char
  tmpargument = 0			    //
  SendMessageNear			    //
  tmpargument = 40			  //
  SetBumpSize				  //
  tmpargument = 45			  //
  SetBumpHeight				  //
  tmpargument = 65535			  // Drop money
  DropMoney				  //
  tmpargument = 2			  //
  tmpdistance = rand & 4095 + 8000	  //
  PlaySound				  //
IfAttacked				// Counter attack
  SetTargetToWhoeverAttacked		  //
    IfTargetIsOnHatedTeam		    //
      BecomeLeader			      //
      tmpargument = 1			      // Enter combat mode
      SetState				      //
    Else				    //
      SetTargetToOldTarget		      //
  tmpargument = rand & 1		  //
  tmpdistance = rand & 4095 + 8000	  //
  PlaySound				  //
IfTargetKilled				// Return to follow mode
  tmpargument = 0			  //
  SetState				  //
IfBumped				// Attack whoever it bumped
  SetTargetToWhoeverBumped		  //
  IfTargetIsOnHatedTeam			  // Make sure it's an enemy
    IfHoldingMeleeWeapon                    // Got Weapon?
      PressLatchButton			      //
  Else					  // Scooch around friendly
    tmpx = rand & 255 + targetx - 128	    //
    tmpy = rand & 255 + targety - 128	    //
    ClearWaypoints			    //
    AddWaypoint				    //
    SetTargetToOldTarget		    //
IfTimeOut				// This is done every so often
  SetTargetToNearbyEnemy		  // Look for enemies
    tmpargument = 1			    // Enter combat mode
    SetState				    //
    BecomeLeader			    //
  tmpx = rand & 255			  //
  tmpy = 25				  //
  IfXIsLessThanY			  // Play a random grunt?
    tmpargument = 3			    //
    tmpdistance = rand & 4095 + 9000	    //
    PlaySound				    //
  IfStateIs0				  // State 0 ( Follow )
    tmpx = rand & 1023 - 512 + leaderx	    //
    tmpy = rand & 1023 - 512 + leadery	    //
  Else					  // State 1 ( Combat )
    tmpx = targetdistance		    // Too far?
    tmpy = 2000				    //
    IfXIsMoreThanY			    //
      tmpargument = 0
      SetState				      // Revert to follow mode
      tmpx = selfx
      tmpy = selfy
    Else
      tmpy = 150
      IfXIsLessThanY
        // Run away
        tmpx = targetx
        tmpy = targety
        tmpturn = targetturnto + 32768
        tmpdistance = 800
        Compass         
      Else
        tmpy = 0  // Unarmed...
        IfHoldingMeleeWeapon		      // Got Weapon?
          tmpy = 350
        Else
          IfHoldingRangedWeapon
            tmpy = 800
        IfXIsLessThanY
          tmpx = 800
          IfXIsEqualToY
            // Ranged weapon, so lead the target
            tmpx = targetspeedx * tmpx > 4 + targetx
            tmpy = targetspeedy * tmpx > 4 + targety
            IfFacingTarget
              PressLatchButton
          Else
            // Melee weapon, so run around the target...
            tmpx = rand & 511 - 256 + targetx
            tmpy = rand & 511 - 256 + targety
            IfFacingTarget
              PressLatchButton
              tmpx = targetx
              tmpy = targety
        Else
          // Not close enough, so run at the target
          tmpx = targetx
          tmpy = targety
          tmpturn = targetturnto
          tmpdistance = 400
          Compass
  ClearWaypoints			  //
  AddWaypoint				  //
  tmpargument = rand & 15 + 10		  // Wait a while and try again
  SetTime				  //
End					// Finished with this character
