anchor.diff:  
   procedure TKMMapEditor.Update;
   begin
  -  fDeposits.UpdateAreas([rdStone, rdCoal, rdIron, rdGold]);
  +  fDeposits.UpdateAreas([rdStone, rdCoal, rdIron, rdGold, rdFish]);
     fAIFields.AfterMissionInit;
     fAIFields.UpdateState(0);
   end;
  
positive.code: {$I KaM_Remake.inc}
  interface
  uses Classes, SysUtils,
    KM_Defaults, KM_Points, KM_Terrain;
  
  
  type
    TRawDeposit = (rdStone, rdCoal, rdIron, rdGold);
  
    //Scans the map and reports raw resources deposits info
    TKMDeposits = class
  
negative.code: 
  //Get tile resource deposit
  function TKMDeposits.TileDeposit(aMat: TRawDeposit; X,Y: Word): Byte;
  var
  curUnit : TKMUnit;
  begin
    case aMat of
      rdStone: Result := 3*fTerrain.TileIsStone(X+1, Y+1); //3 stone produced by each time
      rdCoal:  Result := fTerrain.TileIsCoal(X+1, Y+1);
      rdIron:  Result := fTerrain.TileIsIron(X+1, Y+1);
      rdGold:  Result := fTerrain.TileIsGold(X+1, Y+1);
      rdFish:  begin
                    curUnit := fTerrain.Land[Y + 1, X + 1].IsUnit;
                   if (curUnit <> nil) and (curUnit is TKMUnitAnimal) then
                       Result := TKMUnitAnimal(curUnit).FishCount
                   else
                       Result := 0;
               end
      else     Result := 0;
    end;
  end;
  
  procedure TKMDeposits.FloodFill(const aMat: array of TRawDeposit);
  var
    R: TRawDeposit;
    AreaID: Word;
    Count: Integer;
    //Procedure uses recurence to check test area then it creates one deposit
    //Deposit is created when tiles are connected - but not diagonally
    procedure FillArea(X,Y: Word);
    begin
      //Untested area that matches passability
  