anchor.diff:  
   
   procedure TKMCityManagement.AfterMissionInit();
  -  procedure SetWareDistribution();
  -  begin
  -    // Top priority for gold mines
  -    gHands[fOwner].Stats.WareDistribution[wt_Coal, htMetallurgists] := 5;
  -    gHands[fOwner].Stats.WareDistribution[wt_Coal, htWeaponSmithy] := 3;
  -    gHands[fOwner].Stats.WareDistribution[wt_Coal, htIronSmithy] := 3;
  -    gHands[fOwner].Stats.WareDistribution[wt_Coal, htArmorSmithy] := 3;
  -    gHands[fOwner].Stats.WareDistribution[wt_Wood, htArmorWorkshop] := 2;
  -    gHands[fOwner].Stats.WareDistribution[wt_Wood, htWeaponWorkshop] := 5;
  -    gHands[fOwner].Stats.WareDistribution[wt_Steel, htWeaponSmithy] := 5;
  -    gHands[fOwner].Stats.WareDistribution[wt_Steel, htArmorSmithy] := 5;
  -
  -    gHands[fOwner].Houses.UpdateResRequest;
  -  end;
   var
     GoldCnt, IronCnt, FieldCnt, BuildCnt: Integer;
   begin
  
positive.code: end;
  
  
  // Calculate weapons demand from combat AI requirements
  procedure TKMCityManagement.WeaponsBalance();
  var
  
negative.code:       WoodReq := Round((DEFAULT_COEFICIENT - WoodReq) / 5.0); // 5 is equal to sum of all requirements in leather category
        for UT in WOOD_ARMY do
          if not gHands[fOwner].Locks.GetUnitBlocked(UT) then
            for I := Low(TroopCost[UT]) to High(TroopCost[UT]) do
              if (TroopCost[UT,I] <> wt_None) then
                with fRequiredWeapons[ TroopCost[UT,I] ] do
                  Required := Required + Round(DEFAULT_ARMY_REQUIREMENTS[UT] * WoodReq);
      end;
  
  