anchor.diff:  begin
     LoadStream.ReadAssert('CityPlanner');
     LoadStream.Read(fOwner);
  +  LoadStream.Read(fConstructedHouses);
     LoadStream.Read(fDefenceTowersPlanned);
     fForestsNearby.LoadFromStream(LoadStream);
   
  
positive.code:   TKMCityPlanner = class
    private
      fOwner: TKMHandIndex;
      fDefenceTowersPlanned: Boolean;
      fPlannedHouses: TPlannedHousesArray;
      fForestsNearby: TKMPointTagList;
  
negative.code:     for I := Low(HMA[aHT].Surroundings[Dist,Dir]) to High(HMA[aHT].Surroundings[Dist,Dir]) do
      begin
        Point := KMPointAdd(aLoc, HMA[aHT].Surroundings[Dist,Dir,I]);
        AvoidBuilding := gAIFields.Influences.AvoidBuilding[Point.Y, Point.X];
        Output := Output
                  + Byte(IsNearHouse(AvoidBuilding,Point)) * GA_PLANNER_SnapCrit_SnapToHouse
                  + Byte(IsSomeReservedField(AvoidBuilding)) * GA_PLANNER_SnapCrit_SnapToFields // OR IsCornField(Point) OR IsWineField(Point)
                  + Byte(IsRoad(AvoidBuilding,Point)) * GA_PLANNER_SnapCrit_SnapToRoads
                  - Byte((Dir = dirS) AND IsSomeReservedField(AvoidBuilding)) * GA_PLANNER_SnapCrit_ClearEntrance;
      end;
    Result := Output;
  end;
  