             @visual.pushCharacter @gameManager.config.visual, char.visual
         return
 
-    checkEvents: (protagonistDoneMoving) ->
+    checkEvents: ->
         # Just doing player collisions at the moment.
+        if @protagonist.x < 0 or @protagonist.x >= @gameManager.config.visual.grid.gridX\
+          or @protagonist.y < 0 or @protagonist.y >= @gameManager.config.visual.grid.gridY
+            @gameLost()
+
         triggers = {"victory": @gameWon, "loss": @gameLost, "fall": @protagonistFalls}
         for name, character of @gameConfig.characters
             if character == @protagonist

        return moved

    checkCanMove: (newX, newY, character) ->
        if newX < 0 or newX >= @gameManager.config.visual.grid.gridX\
          or newY < 0 or newY >= @gameManager.config.visual.grid.gridY
            # Player is out of bounds of grid.
            if character == @protagonist
                if newX < -1 or newX >= @gameManager.config.visual.grid.gridX + 1\
                  or newY < -1 or newY >= @gameManager.config.visual.grid.gridY + 1
                    @gameLost()
                else
                    return false
            return true

        if character.group?

                    if character.AI.failed[command.key]?
                        for aiCommand in character.AI.failed[command.key]
                            @executeAICommand character, aiCommand
        if character == @protagonist and character.moves.length == 0
            @protagonistDoneMoving = true
        if character.AI? and character.moves.length == 0
            for aiCommand in character.AI.normal
                @executeAICommand character, aiCommand
