     @available_mappings = level.available_mappings
 
   requestBotMove: (dir) ->
-    @bot.x += dir.dx
-    @bot.y += dir.dy
-
-    return true
+    dest = {x: @bot.x + dir.dx, y: @bot.y + dir.dy}
+    if @level[dest.x][dest.y].type != 'obstacle'
+      @bot.x = dest.x
+      @bot.y = dest.y
+      return true
+    else
+      return false
 
 ################
 

        do_next = true
        @bot_sprite.x = anim.x1
        @bot_sprite.y = anim.y1
        @bot_sprite.t = 0
      else
        @bot_sprite.x = (anim.x1 - anim.x0) * t + anim.x0
        @bot_sprite.y = (anim.y1 - anim.y0) * t + anim.y0
        @bot_sprite.t = t

    @bot_sprite.leftover_t = 0
    @gfx.render()

      @bot_sprite.dir = anim.dir
      if not anim.start_t?
        anim.start_t = absolute_t
        anim.start_t -= @bot_sprite.leftover_t
        @bot_sprite.leftover_t = 0
      t = (absolute_t - anim.start_t) / anim.duration

