anchor.diff:    AddWare(wt_MetalArmor, 'Iron Armors');
     AddWare(wt_Sword, 'Iron Weapons');
     //}
  -  aBalanceText := aBalanceText + '|Required houses: |';
  -  I := 0;
  -  for HT := Low(RequiredHouses) to High(RequiredHouses) do
  -    if (RequiredHouses[HT] > 0) then
  -    begin
  -      I := I + 1;
  -      if (I = 5) then
  -      begin
  -        I := 0;
  -        aBalanceText := aBalanceText + '|';
  -      end;
  -      aBalanceText := aBalanceText + Format('%Dx ', [ RequiredHouses[HT] ]) + HOUSE_TO_STRING[HT] + ';';
  -    end;
  +  //aBalanceText := aBalanceText + '|Required houses: |';
  +  //I := 0;
  +  //for HT := Low(RequiredHouses) to High(RequiredHouses) do
  +  //  if (RequiredHouses[HT] > 0) then
  +  //  begin
  +  //    I := I + 1;
  +  //    if (I = 5) then
  +  //    begin
  +  //      I := 0;
  +  //      aBalanceText := aBalanceText + '|';
  +  //    end;
  +  //    aBalanceText := aBalanceText + Format('%Dx ', [ RequiredHouses[HT] ]) + HOUSE_TO_STRING[HT] + ';';
  +  //  end;
   end;
   
   
   
   
   end.
  -
  
positive.code:     'Axe',     'Sword',   'Pike',        'Hallebard', 'Bow',
      'Arbalet', 'Horse',   'Fish'
    );
    HOUSE_TO_STRING: array[HOUSE_MIN..HOUSE_MAX] of UnicodeString = (
      'ArmorSmithy',     'ArmorWorkshop',   'Bakery',        'Barracks',      'Butchers',
      'CoalMine',        'Farm',            'FisherHut',     'GoldMine',      'Inn',
      'IronMine',        'IronSmithy',      'Marketplace',   'Metallurgists', 'Mill',
      'Quary',           'Sawmill',         'School',        'SiegeWorkshop', 'Stables',
      'Store',           'Swine',           'Tannery',       'TownHall',      'WatchTower',
      'WeaponSmithy',    'WeaponWorkshop',  'Wineyard',      'Woodcutters'
    );
  
    procedure AddWare(aWT: TWareType; aSpecificText: UnicodeString);
    var
      ProductionColor, ActualConsumptionColor, FinalConsumptionColor, FractionColor, ExhaustionColor: UnicodeString;
    begin
      with fWareBalance[aWT] do
      begin
        ProductionColor := COLOR_YELLOW;
  
negative.code:     fCityStats.Houses[aHT] := fCityStats.Houses[aHT] * Byte(not aOverride) + aCnt;
    end;
  
  const
    IRON_WARFARE: set of TWareType = [wt_MetalShield, wt_MetalArmor, wt_Sword, wt_Hallebard, wt_Arbalet];
    STANDARD_WARFARE: array[0..3] of TWareType = (wt_Axe, wt_Pike, wt_Bow, wt_Shield);
  var
    I: Integer;
    MaxIronWeapProd, MaxWoodWeapProd: Single;
    WT: TWareType;
  begin
    //fMaxSoldiersInMin := 0;
  
    // Estimation of final weapons production (productions are independence - in builder will be higher priority given to iron weapons)
    // Iron weapons
    MaxIronWeapProd := aIronMineCnt * ProductionRate[wt_IronOre] / 2.0; // / 2.0 for iron weapon and armor
    for WT in IRON_WARFARE do
      fWareBalance[WT].FinalConsumption := MaxIronWeapProd;
    // Wood weapons (depends on avaiable space)
    MaxWoodWeapProd := Round((aBuildCnt + 1500) / 1500) * ProductionRate[wt_Axe];
    for I := Low(STANDARD_WARFARE) to High(STANDARD_WARFARE) do
      fWareBalance[ STANDARD_WARFARE[I] ].FinalConsumption := MaxWoodWeapProd;
    fWareBalance[wt_Armor].FinalConsumption := MaxWoodWeapProd;
  