IfSpawned
  tmpargument = 1
  IfArmorIs
    // Sleeping
    tmpargument = 3
    SetState
    tmpargument = rand & 63 + 32
    SetTime
    tmpargument = ACTIONMK
    DoActionOverride
    KeepAction
  Else
    tmpargument = 100
    SetTime

//------------------------------------------------------------------------------
IfBumped
  SetTargetToWhoeverBumped
  tmpargument = 1
  IfContentIs
    IfTargetIsOnHatedTeam
      tmpargument = 0
      SetContent            //no more hiding
      tmpargument = 8
      PlaySound
      tmpargument = 1
      SetState
      tmpargument = 2
      SendMessageNear
  IfStateIs3
    IfTargetIsOnHatedTeam
      // Bumping a sleeping Cobol...  How rude!
      tmpargument = 8
      PlaySound

      tmpargument = 4
      SendMessageNear
      tmpargument = ACTIONMJ
      DoActionOverride
      UnkeepAction
      // Start combat
      tmpargument = 1
      SetState
      tmpargument = 0
      ChangeArmor
      tmpargument = 15
      SetTime
  Else
    // Jump over barriers, onto mounts
    IfTargetIsAlive
      IfTargetIsAPlatform
        // Jump over some stuff
        tmpargument = LATCHJUMP
        PressLatchButton
      IfTargetIsAMount
        // Jump onto mounts
        tmpx = targetx
        tmpy = targety
        ClearWaypoints
        AddWaypoint

        tmpargument = 30
        SetTime
    Else
      // Jump over corpses
      tmpargument = LATCHJUMP
      PressLatchButton
    SetTargetToOldTarget

//------------------------------------------------------------------------------
IfKilled
  
  //Death skin
  tmpargument = rand & 1
  ChangeArmor
  
  // Tell the players
  tmpargument = 0
  IfTargetIsOnSameTeam
    tmpargument = 1
  SendMessageNear

  // Just to be sure
  tmpargument = ACTIONKA
  DoActionOverride
  KeepAction

  //Death cry
  tmpargument = 1
  PlaySound

  // Drop goodies
  tmpargument = selfmoney
  DropMoney
  DropKeys

  // Make the character body
  tmpargument = 40
  SetBumpHeight

  // Make the next part not happen...
  tmpargument = 50
  SetTime

  //Make em crushable
  MakeCrushValid
  
  //Remove invicibillity
  tmpargument = 255
  SetLight
  
//Mooshed in a passage
IfCrushed
  tmpargument = 1
  tmpx = 0
  tmpy = 0
  tmpdistance = SPAWNORIGIN
  SpawnParticle
  SpawnParticle
  SpawnParticle
  SpawnParticle
  SpawnParticle
  GoPoof

//------------------------------------------------------------------------------
IfAttacked
  SetTargetToWhoeverAttacked
  IfStateIs3
    // A sleeping Cobol
    tmpargument = [STAB]
    IfTargetHasSkillID
      // This is what Rogues do best...
      tmpargument = 5
    Else
      // Just a normal player
      tmpargument = 6
    SendMessageNear

    // Give experience
    tmpargument = 30
    tmpdistance = EXPMURDER
    GiveExperienceToTarget

    // Do it
    SetTargetToSelf
    KillTarget
  Else
    IfTargetIsOnHatedTeam
      // Counter attack
      tmpargument = 1
      IfContentIs
        tmpargument = 0
        SetContent            //no more hiding
        tmpargument = 8
        PlaySound
        tmpargument = 3
        SendMessageNear
      tmpargument = 1
      SetState

      // Check for instant death
      IfBackstabbed
        // Allow Rogues to backstab 
        tmpargument = 8
        SendMessageNear

        tmpargument = 30
        tmpdistance = EXPMURDER
        GiveExperienceToTarget

        // Do it
        tmpargument = 2
        ChangeArmor
        SetTargetToSelf
        KillTarget
    Else
      // Friendly fire, get out of the way
      tmpx = rand & 511 - 256 + selfx
      tmpy = rand & 511 - 256 + selfy
      ClearWaypoints
      AddWaypoint
      SetTargetToOldTarget

    tmpargument = rand & 1 + 2
    PlaySound

//------------------------------------------------------------------------------
IfTimeOut
  tmpargument = 15
  SetTime

  IfSitting
    // Riding some type of animal...
    // Acquire a target
    SetTurnModeToVelocity
    SetTargetToWideEnemy
      // Charge towards enemy
      tmpx = targetx
      tmpy = targety
      tmpturn = targetturnto
      tmpdistance = 300
      Compass
      ClearWaypoints
      AddWaypoint

      // Check for special mount attacks
      tmpx = targetdistance
      tmpy = 200
      IfXIsLessThanY
        tmpargument = [XFUN]
        SetOldTarget
        SetTargetToWhoeverIsHolding
        IfTargetHasAnyID
          tmpargument = LATCHRIGHT
          PressLatchButton
          SetTargetToOldTarget
        Else
          // Don't let the enemy jump over
          SetTargetToOldTarget
          tmpx = selfz
          tmpy = targetz - 40
          IfXIsLessThanY
            IfHoldingMeleeWeapon
              PressLatchButton

      tmpargument = rand & 15 + 15 // TIme
    Else
      // Guard the start position
      tmpx = rand & 511 - 256 + selfspawnx
      tmpy = rand & 511 - 256 + selfspawny
      ClearWaypoints
      AddWaypoint
      tmpargument = rand & 31 + 30 // TIme
  Else
    
    //Sneaky mode
    IfStateIs0
      Sneak
      tmpx = selfspawnx
      tmpy = selfspawny
      SetTargetToWideEnemy
        SetTurnModeToWatchTarget
        
        //Sneak from behind
        tmpturn = targetturnto
        tmpdistance = 400
        
        //If target facing self and closing in, move around instead
        tmpx = targetdistance
        tmpy = 350
        IfXIsLessThanY
          tmpx = selfturn - targetturn
          tmpy = 10768
          IfXIsMoreThanY
            tmpy = 55768
            IfXIsLessThanY
              tmpargument = 5
              SetTime
              Run
              tmpturn = targetturnto + 16000
              tmpdistance = 0 - 350
              
        tmpx = targetx
        tmpy = targety
        Compass
      Else
        SetTurnModeToVelocity
      ClearWaypoints
      AddWaypoint
        
    //Combat mode
    IfStateIs1
      Run
      tmpargument = 0
      SetContent
      tmpdistance = 128*8        //Up to 8 tiles
      SetTargetToDistantEnemy
        SetTurnModeToWatchTarget
        tmpx = rand & 511 + targetx - 256
        tmpy = rand & 511 + targety - 256
        IfHoldingRangedWeapon
          tmpdistance = 0 - 500
          tmpturn = rand % 32000 + targetturnto - 16000
        Else
          tmpdistance = 0-40
          tmpturn = targetturn
        Compass
        ClearWaypoints
        AddWaypoint
      Else
        SetTurnModeToVelocity
        tmpargument = 0
        SetState
        
    //Attack
    IfTargetIsOnHatedTeam
      IfTargetIsAlive
        IfFacingTarget
          IfHoldingMeleeWeapon
            tmpx = targetdistance
            tmpy = 100
            IfXIsLessThanY
              PressLatchButton    
          IfHoldingRangedWeapon
            SetOldTarget
            tmpx = targetdistance
            tmpy = 550
            IfXIsLessThanY
              SetTargetToNearestFriend
              IfFacingTarget
                tmpx = targetx                 //Avoid shooting friends
                tmpy = targety
                tmpdistance = 100
                tmpturn = targetturn + 49152
                Compass
                ClearWaypoints
                AddWaypoint
              Else
                PressLatchButton
            SetTargetToOldTarget
              
    //Hide and unhide
    tmpargument = 0
    IfContentIs
      tmpargument = 255
      SetLight

      IfStateIs0
        SetOldTarget
        tmpargument = 1
        SetContent
        SetTargetToNearestEnemy
          
          //Cant hide in plain sight
          IfTargetIsAlive
            tmpx = targetdistance
            tmpy = 128*4           
            IfXIsLessThanY
              tmpargument = 0         //They are too close
              SetContent
            tmpy = 128*10
            IfXIsLessThanY
              tmpx = selfturn - targetturn
              tmpy = 10768
              IfXIsMoreThanY
                tmpy = 55768
                IfXIsLessThanY
                  tmpargument = 0     //They are looking at us
                  SetContent
              
        //Do it!
        tmpargument = 1
        IfContentIs
          tmpargument = 0
          SetLight
          tmpargument = 9
          SendMessageNear
          tmpargument = 11
          PlaySound
        SetTargetToOldTarget

    //Check for detection
    tmpargument = 1
    IfContentIs
      IfTargetIsOnHatedTeam
        IfTargetIsAlive
          tmpdistance = targetdistance * 2
          tmpx = targetwis - tmpdistance        //-3 wisdom for every tile the target is away
          tmpy = selfdex
          IfXIsMoreThanY
            tmpargument = 0
            SetContent
            tmpargument = 3
            SendMessageNear
            tmpargument = 12
            PlaySound
            
//------------------------------------------------------------------------------
//Backstab!
IfScoredAHit
  SetTargetToWhoeverWasHit
  IfTargetIsOnHatedTeam
    tmpargument = 1
    IfContentIs
      tmpargument = 12
      PlaySound
      
      //Backstab bonus
      tmpx = selfturn - targetturn
      tmpy = 10768
      IfXIsMoreThanY
        tmpy = 55768
        IfXIsLessThanY
          tmpargument = 0
          SetContent
           
      //Proceed if content is still 1
      tmpargument = 1
      IfContentIs
        tmpargument = 10
        SendMessageNear
        tmpargument = 0
        SetContent
        tmpargument = 13
        PlaySound
        
        //4 bonus damage
        tmpargument = 1024
        DamageTarget
  Else
    SetTargetToOldTarget

//------------------------------------------------------------------------------
IfOrdered
  // Someone said to wake up
  IfStateIs3
    tmpx = selforder
    tmpy = [WAKE]
    IfXIsEqualToY
      // Always awaken
      tmpx = 0
    Else
      // Check distance to enemy
      tmpx = 9999
      tmpdistance = 800
      SetTargetToDistantEnemy
        tmpx = targetdistance
    tmpy = 800
    IfXIsLessThanY
      // Wake up
      tmpargument = 8
      PlaySound

      tmpargument = 4
      SendMessageNear
      tmpargument = ACTIONMJ
      DoActionOverride
      UnkeepAction
      
      // Start combat
      tmpargument = 1
      SetState
      tmpargument = 0
      ChangeArmor
      tmpargument = 15
      SetTime

//------------------------------------------------------------------------------
IfHealed
  tmpargument = 7
  SendMessageNear

//------------------------------------------------------------------------------
End
//------------------------------------------------------------------------------
