anchor.diff:          Cnt := 0;
       end;
   
  -  //SetKaMSeed(1);
  +  //SetKaMSeed(1); // REMOVE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   end;
   
   
   procedure TKMCityManagement.UpdateState(aTick: Cardinal);
   const
     WORKER_COEF = 5.0;
  +  LONG_UPDATE = MAX_HANDS * 10;
   var
     FreeWorkersCnt: Integer;
   begin
  -  gAIFields.Eye.OwnerUpdate(fOwner);
     // Priorities
     if (aTick = 10) then
     begin
  
positive.code:   fBuilder.UpdateState(aTick, FreeWorkersCnt);
    //if ((FreeWorkersCnt > 0) OR (gHands[fOwner].Stats.GetHouseQty(ht_Metallurgists) > 0)) AND (aTick mod 12 = fOwner) then
    //if (aTick mod 12 = fOwner) AND (FreeWorkersCnt > 0) then
    if (aTick mod 12 = fOwner) AND (FreeWorkersCnt > 0) then
    begin
      fPredictor.UpdateState(aTick);
      fBuilder.ChooseHousesToBuild(Max(1,Ceil(FreeWorkersCnt/WORKER_COEF)), fPredictor.RequiredHouses, fPredictor.WareBalance);
  
negative.code:   Classes, KromUtils, Math, SysUtils,
    KM_Defaults, KM_CommonClasses, KM_CommonUtils, KM_Points,
    KM_AISetup, KM_ResHouses, KM_ResWares, KM_ResUnits, KM_HandStats,
    KM_CityPredictor, KM_CityBuilder, KM_CityPlanner, KM_AIArmyEvaluation;
  
  type
    TWarfareArr = array[WARFARE_MIN..WARFARE_MAX] of record
  