 
     if 'contact' in moveData.flags
       # Simple attack animation
+      # Tackling the opponent
       [targetPlayer, targetSlot] = targetSlots[0]
       $attacker = @$sprite(player, slot)
       $defender = @$sprite(targetPlayer, targetSlot)

      scale = (if a.top < d.top then 1.3 else 1/1.3)
      $attacker
        .transition(x: d.left - a.left, y: d.top - a.top, scale: scale, 250, 'in')
        .transition(x: 0, y: 0, scale: 1, 250, 'out', done)
    else if moveData['power'] > 0
      # Non-contact attacking move
      [targetPlayer, targetSlot] = targetSlots[0]
      $attacker = @$sprite(player, slot)
      $defender = @$sprite(targetPlayer, targetSlot)

      )
      [transX, transY] = [(d.left - a.left), (d.top - a.top)]
      $projectile
        .transition(x: transX / 2, y: transY / 2, scale: (scale + 1) / 2, 200, 'easeOutCubic')
        .transition(x: transX, y: transY, scale: scale, 200, 'easeOutCubic')
        .transition(opacity: 0, 100, -> $projectile.remove())
      $defender.delay(400)
        .transition(x: -4, 0, 'linear').delay(50)
        .transition(x: 4, 0, 'linear').delay(50)
        .transition(x: 0, 0, 'linear', done)
    else
      # Side-to-side movement
      $attacker = @$sprite(player, slot)
      $attacker
        .transition(x: -16, 125, 'easeInOutSine')
        .transition(x: 16, 250, 'easeInOutSine')
        .transition(x: 0, 125, 'easeInOutSine', done)

  cancelSuccess: (done) =>
    @enableButtons()
