anchor.diff:  
   function TKMInfluences.CanPlaceHouseByInfluence(const aPL: TKMHandID; const aIdx: Word; const aIgnoreAllies: Boolean = False): Boolean;
   var
  -  BestOwner: TKMHandID;
  -begin
  -  BestOwner := GetBestOwner(aIdx);
  -  Result := (BestOwner >= 0) AND (OwnPoly[aPL, aIdx] > 0) AND ((BestOwner = aPL) OR (not aIgnoreAllies AND (gHands[aPL].Alliances[BestOwner] = atAlly)));
  +  bestOwner: TKMHandID;
  +begin
  +  bestOwner := GetBestOwner(aIdx);
  +  Result := (bestOwner >= 0) AND (OwnPoly[aPL, aIdx] > 0) AND ((bestOwner = aPL) OR (not aIgnoreAllies AND (gHands[aPL].Alliances[bestOwner] = atAlly)));
   end;
   
   
  
positive.code:   INIT_HOUSE_INFLUENCE = 255;
    MAX_INFLUENCE_DISTANCE = 150;
  var
    AI: Boolean;
    I, Cnt: Integer;
    H: TKMHouse;
    IdxArray: TKMWordArray;
  begin
    //Clear array (is better to clear ~3000 polygons instead of 255*255 tiles)
    FillChar(fOwnership[aPL*fPolyCnt], SizeOf(fOwnership[0]) * fPolyCnt, #0);
  
    // Create array of polygon indexes
    SetLength(IdxArray, gHands[aPL].Houses.Count);
    Cnt := 0;
    AI := gHands[aPL].IsComputer;
    for I := 0 to gHands[aPL].Houses.Count - 1 do
    begin
      H := gHands[aPL].Houses[I];
      if not H.IsDestroyed
        AND not (H.HouseType in [htWatchTower, htWoodcutters])
        AND (AI OR H.IsComplete) then // Player must finish the house to update influence so he cannot troll the AI
      begin
          IdxArray[Cnt] := fNavMesh.KMPoint2Polygon[ H.PointBelowEntrance ]; // Use point below entrance to match NavMeshDefence algorithm and city center detection in Eye
          Cnt := Cnt + 1;
      end;
    end;
  
    if (Cnt > 0) then
      fInfluenceFloodFill.HouseInfluence(aPL, INIT_HOUSE_INFLUENCE, MAX_INFLUENCE_DISTANCE, Cnt - 1, IdxArray);
  end;
  
  
  
negative.code: 
  
  type
    // Collection of influence maps
    TKMInfluences = class
    private
      fMapX, fMapY, fPolyCnt: Word; // Limits of arrays
  