       done()
       return
 
-    $sprite.fadeOut 200, =>
+    $sprite.fadeOut 200 * @speed, =>
       @renderPokemon $spriteContainer, ($image) ->
         $sprite.popover('destroy')
         $sprite.remove()
-        $image.hide().fadeIn(200)
+        $image.hide().fadeIn(200 * @speed)
 
     # Don't waste time changing the sprite if we can't see it.
     if @model.getPokemon(player, slot).isFainted()
       done()
     else
-      setTimeout(done, 400)
+      setTimeout(done, 400 * @speed)
 
   changeWeather: (newWeather, done) =>
     $overlays = @$('.battle_overlays')
-    $overlays.find('.weather').transition(opacity: 0, 500, -> $(this).remove())
+    $overlays.find('.weather').transition(opacity: 0, 500 * @speed, -> $(this).remove())
     [overlayWidth, overlayHeight] = [600, 300]
     $weather = switch newWeather
       when Weather.RAIN

    @chatView = null
    @lastMove = null
    @skip     = null
    @render()
    @listenTo(@model, 'change:teams[*].pokemon[*].status', @handleStatus)
    @listenTo(@model, 'change:teams[*].pokemon[*].percent', @handlePercent)


    width = $sprite.width()
    height = $sprite.height()
    $sprite.transition(scale: 0.1, x: width >> 1, y: height, 150 * @speed)
    $pokemon.transition opacity: 0, 250 * @speed, ->
      $pokemon.addClass('hidden').css(opacity: 1)
      $sprite.popover('destroy')
      $sprite.transition(scale: 1, x: 0, y: 0, 0)
    setTimeout(done, 250 * @speed)

  makePokeball: (x, y) =>
    $pokeball = $("""<div class="pokeball"/>""")
