anchor.diff:      Exit;
   
     RequiedCnt := 0;
  -  SetLength(RequiredWares,3);
  +  SetLength(RequiredWares,4);
     with gHands[fOwner].Stats do
     begin
  -  // Gold
  +    // Gold
       if (GetHouseQty(ht_Metallurgists) = 0)
          AND (GetWareBalance(wt_Gold) <= LACK_OF_GOLD) then
          AddWare(wt_Gold);
  
positive.code:          AND (P.Units[I].UnitTask = nil) then
             Exit;
      // Increase count of serfs carefully
      Result := Max( + 1
                     + Byte(gHands[fOwner].Stats.GetUnitQty(ut_Serf) < 80)*2, Result);
    end;
  
  const
  
negative.code: 
  //Check if specific woodcutters are in Fell only mode
  procedure TKMCityManagement.CheckMarketplaces();
  var
    RequiedCnt, AvaiableCnt: Word;
    RequiredWares, AvaiableWares: array of TWareType;
    procedure AddWare(aWare: TWareType; IsRequired: Boolean = True);
    begin
      if IsRequired then
      begin
        RequiredWares[RequiedCnt] := aWare;
        RequiedCnt := RequiedCnt + 1;
      end
      else
      begin
        AvaiableWares[AvaiableCnt] := aWare;
        AvaiableCnt := AvaiableCnt + 1;
      end;
    end;
  
    procedure TryBuyItem(aResFrom, aResTo: TWareType);
    const
      TRADE_QUANTITY = 20;
    var
      I: Integer;
      Houses: TKMHousesCollection;
      HM, IdleHM: TKMHouseMarket;
    begin
      Houses := gHands[fOwner].Houses;
      IdleHM := nil;
      for I := 0 to Houses.Count - 1 do
        if (Houses[I].HouseType = ht_Marketplace)
          AND Houses[I].IsComplete
          AND not Houses[I].IsDestroyed then
        begin
          HM := TKMHouseMarket(Houses[I]);
          if (TKMHouseMarket(HM).ResOrder[0] <> 0)
            AND (HM.ResTo = aResTo) then
            Exit
          else if HM.AllowedToTrade(aResFrom)
            AND HM.AllowedToTrade(aResTo)
            AND (TKMHouseMarket(HM).ResOrder[0] = 0) then
            IdleHM := HM;
        end;
      if (IdleHM <> nil) then  // AND (IdleHM.ResFrom <> aResFrom) or (IdleHM.ResTo <> aResTo) then
      begin
        //IdleHM.ResOrder[0] := 0; //First we must cancel the current trade
        IdleHM.ResFrom := aResFrom;
        IdleHM.ResTo := aResTo;
        IdleHM.ResOrder[0] := TRADE_QUANTITY; //Set the new trade
      end;
    end;
  const
    SOLD_ORDER: array[0..27] of TWareType = (
      wt_Sausages,     wt_Wine,     wt_Fish,       wt_Bread,
  