     scale = (if front then 1.3 else 1/1.3)
     if moveName == 'Earthquake'
       $attacker.add($defender).each (index) ->
-        callback = (if index == 0 then done else undefined)
         $(this).transition(x: -75, 62.5, 'easeInOutCubic')
           .transition(x: 75, 125, 'easeInOutCubic')
           .transition(x: -30, 125, 'easeInOutCubic')
           .transition(x: 30, 125, 'easeInOutCubic')
-          .transition(x: 0, 62.5, 'easeInOutCubic', callback)
+          .transition(x: 0, 62.5, 'easeInOutCubic')
+      setTimeout(done, 500)
     else if 'contact' in moveData.flags
       # Simple attack animation
       # Tackling the opponent

          $substitute.remove()
          done()
        else
          $substitute.transition y: 300, opacity: 0, ->
            $substitute.remove()
            done()
      when 'ProtectAttachment', 'KingsShieldAttachment', 'SpikyShieldAttachment'
        @unattachScreen(player, slot, 'pink', done)
      when 'Air Balloon'

    $ability.width(1)
    $ability.appendTo(@$('.battle_pane'))
    $ability.transition opacity: 1, width: 150, 100, 'easeInQuad', ->
      $ability.delay(3000).transition opacity: 0, 300, 'easeInQuad', ->
        $ability.remove()
    setTimeout(done, 500)

  cancelSuccess: (done) =>
    @enableButtons()
