anchor.diff:    key.FromP := FromP;
     key.ToP := ToP;
     bid.Value := aValue;
  -  bid.Kind := aKind;
  +  bid.RouteStep := aKind;
     bid.CreatedAt := gGameParams.GameTick;
     inherited Add(key, bid);
   end;
  
positive.code:     function TryCalculateBid(iO, iD: Integer; var aBidValue: Single; aSerf: TKMUnitSerf = nil): Boolean;
      function TryCalculateBidBasic(iO, iD: Integer; var aBidBasicValue: Single; aSerf: TKMUnitSerf = nil;
                                    aAllowOffroad: Boolean = False): Boolean; overload;
      function TryCalculateBidBasic(aOfferUID: Integer; aOfferPos: TKMPoint; aOfferCnt: Cardinal; aOfferHouseType: TKMHouseType;
                                    aOwner: TKMHandID; iD: Integer; var aBidBasicValue: Single; aSerf: TKMUnitSerf = nil;
                                    aAllowOffroad: Boolean = False): Boolean; overload;
      function TryCalcSerfBidValue(aSerf: TKMUnitSerf; aOfferPos: TKMPoint; aToUID: Integer; var aSerfBidValue: Single): Boolean;
      function TryCalcRouteCost(aFromPos, aToPos: TKMPoint; aMainPass: TKMTerrainPassability; var aRoutCost: Single; aSecondPass: TKMTerrainPassability = tpUnused): Boolean;
  //    function GetUnitsCntOnPath(aNodeList: TKMPointList): Integer;
  
      {$IFDEF USE_HASH}
      procedure CleanCache;
      {$ENDIF}
    public
      constructor Create(aHandIndex: TKMHandID);
      destructor Destroy; override;
  
negative.code:     or ((aOfferHouseType = htStore)    // Prefer taking wares from House rather than Store...
      and (fDemand[iD].Ware <> wtWarfare)) then //...except weapons Store>Barracks, that is also prefered
      aBidBasicValue := aBidBasicValue + 1000;
  
    aBidBasicValue := aBidBasicValue + SerfBidValue;
  end;
  