anchor.diff:  end;
   
   
  -//MapEd procedure to remove any unit below
  +//MapEd procedure to remove any unit under cursor
   procedure TKMPlayersCollection.RemAnyUnit(Position: TKMPoint);
   var I: Integer;
   begin
  
positive.code: end;
  
  
  //MapEd procedure to remove any house below
  procedure TKMPlayersCollection.RemAnyHouse(Position: TKMPoint);
  var I: Integer;
  begin
  
negative.code: end;
  
  
  //Reveal portion of terrain for said player and his allies (if they share vision)
  //In singleplayer KaM sometimes you should not see your allies till some time
  //todo: Add ShareVision: array [0.. MAX_PLAYERS-1] of Boolean alongside Alliances array
  procedure TKMPlayersCollection.RevealForTeam(aPlayer: TPlayerIndex; Pos: TKMPoint; Radius, Amount: Word);
  var I: Integer;
  begin
    fPlayerList[aPlayer].FogOfWar.RevealCircle(Pos,Radius,Amount);
  
    for I := 0 to fCount - 1 do
    if (I <> aPlayer) and (fPlayerList[aPlayer].Alliances[I] = at_Ally) then
      fPlayerList[I].FogOfWar.RevealCircle(Pos, Radius, Amount);
  end;
  
  
  //Synchronize FOW between players (e.g. when alliances change)
  procedure TKMPlayersCollection.SyncFogOfWar;
  var I,K: Integer;
  begin
    for I := 0 to fCount - 1 do
    for K := 0 to fCount - 1 do
    if (I <> K) and (fPlayerList[I].Alliances[K] = at_Ally) then
      fPlayerList[K].FogOfWar.SyncFOW(fPlayerList[I].FogOfWar);
  end;
  
  
  procedure TKMPlayersCollection.AddDefaultMPGoals(aMissionMode: TKMissionMode);
  var
    I,K: Integer;
    Enemies: array of array of TPlayerIndex;
  begin
    SetLength(Enemies, fCount);
  
    for I := 0 to fCount - 1 do
    begin
      SetLength(Enemies[I], 0);
      for K := 0 to fCount - 1 do
      if (I <> K) and (fPlayerList[I].Alliances[K] = at_Enemy) then
      begin
        SetLength(Enemies[I], Length(Enemies[I])+1);
        Enemies[I, Length(Enemies[I])-1] := K;
      end;
      fPlayerList[I].Goals.AddDefaultMPGoals(aMissionMode <> mm_Tactic, I, Enemies[I]);
    end;
  end;
  
  