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: 
  procedure TKMCityManagement.Load(LoadStream: TKMemoryStream);
  begin
    LoadStream.Read(fOwner);
    // fSetup IS NOT SAVED!!!!
    fBuilder.Load(LoadStream);
    fPredictor.Load(LoadStream);
  end;
  
negative.code:         Result := fSetup.RecruitCount * P.Stats.GetHouseQty(ht_Barracks);
    end;
  
    function RequiredServCount: Byte;
    var
      I: Integer;
    begin
      Result := Max(0, gHands[fOwner].Stats.GetUnitQty(ut_Worker) + Round(gHands[fOwner].Stats.GetHouseTotal(ht_Any) * 0.5) - gHands[fOwner].Stats.GetUnitQty(ut_Serf));
      //Result := Max(0, gHands[fOwner].Stats.GetUnitQty(ut_Worker) - gHands[fOwner].Stats.GetUnitQty(ut_Serf));
      for I := 0 to P.Units.Count - 1 do
        if not P.Units[I].IsDeadOrDying
           AND (P.Units[I] is TKMUnitSerf)
  