anchor.diff:          ..from = event.from
           ..to = event.to
           ..armies = event.armies);
  +    lastBattle = null;
   
       if (game.turnStep == TURN_STEP_FORTIFICATION) {
         nextPlayer();
  
positive.code:   }
  
    /// Checks the number of armies bounds
    checkArmiesNumber(int armies, {int min: 1, int max: null, String action:
        'attack'}) {
      if (min != null && armies < min) throw new EngineException(
          "Can't $action with less than $min armies");
      if (max != null && armies > max) throw new EngineException(
          "Can't $action with more than $max armies");
    }
  
    /// Checks if there is enough armies in country to attack or to move
    checkNeededArmiesFrom(String countryId, int armies) {
      checkCountryExists(countryId);
      if (game.countries[countryId].armies - armies < 1) throw
          new EngineException("There is not enough armies in country #${countryId}");
    }
  
    /// Checks if countries are the same as the last attack
  
negative.code:   void onMove(MoveArmy event) {
      // if another player tries to play
      checkActivePlayer(event.playerId);
      // Armies should be at least 1 and it must have enough armies in the from country
      checkArmiesNumber(event.armies, min: 1, countryId: event.from, action: 'move');
      // Check if from country is owned by the player
      checkCountryOwner(event.from, event.playerId);
      // Check if target country is owned by the player
      checkCountryOwner(event.to, event.playerId);
      // The attacked country must be in the neighbourhood
      checkCountryNeighbourhood(event.from, event.to);
      if (game.turnStep == TURN_STEP_ATTACK) {
        // Countries must be the same as last attack
        checkLastAttackCountries(event.from, event.to);
  