Barter Overview
Barter is not generally accessible to the construction set. There is precious little that can be done to affect it because the functionality is in the game code. Barter is a function of the relative mercantile skills, the merchant's current disposition, and the haggle percentage.
The dialogue presented during barter is set on the service tab of a quest. Below are the game settings that control the formulas for bartering prices.
- fBarterBuyBase
- fBarterBuyMult
- fBarterDispBase
- fBarterDispositionMod
- fBarterHaggleBase
- fBarterHaggleCurve
- fBarterHaggleDispMult
- fBarterHaggleMax
- fBarterSellBase
- fBarterSellMult
The formula used to check if a trade will be accepted by the merchant depending on the position of the slider is:
Value = fBarterHaggleDispMult * floor(fActorLuckSkillMult * (Disposition - 10) / 4) + (100 + min(PlayerSkill + fActorLuckSkillMult * (PlayerLuck - 50), 100) - min(MerchantSkill + fActorLuckSkillMult * (MerchantLuck - 50), 100)) / (10 - (SliderPosition * fBarterHaggleBase))
- SliderPosition is a value between 0 and 40 (fBarterHaggleMax) and represents the position in which the slider is located
- If the value returned by the formula is greater or equal than 0 the trade will be accepted by the merchant
- Note that sometimes the result of the formula may give 0 (arithmetically) and therefore the trade should be accepted but it is not. This is because of floating-point errors. The handling of these errors can be done but that would over complicate the representation of the formula on this page.
- Editor note: it has yet to be found if and where fBarterHaggleCurve fits into the above formula.
Alternatively if you wish to know the best slider position you can use:
BestSliderPosition = floor(((fBarterHaggleDispMult * floor(fActorLuckSkillMult * (Disposition - 10) / 4) + (100 + min(PlayerSkill + fActorLuckSkillMult * (PlayerLuck - 50),100) - min(MerchantSkill + fActorLuckSkillMult * (MerchantLuck - 50),100)) /10) ^fBarterHaggleCurve) / fBarterHaggleBase)