Difference between revisions of "Barter Overview"

From the Oblivion ConstructionSet Wiki
Jump to navigation Jump to search
m (Formatting and added example info at end.)
m (more grammar)
 
(One intermediate revision by the same user not shown)
Line 22: Line 22:


* SliderPosition is a value between 0 and 40 (fBarterHaggleMax) and represents the position in which the slider is located.
* 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.
* If the value returned by the formula is greater than or equal to 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.
* 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's note: it has yet to be found if and where fBarterHaggleCurve fits into the above formula.
* Editor's note: it has yet to be found if and where fBarterHaggleCurve fits into the above formula.



Latest revision as of 11:40, 3 February 2023

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.


Barter Formulas.

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 than or equal to 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's 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)

To change the slider position through script, use SetMenuFloatValue with the default path for the slider value being; "Negotiate_Background\Negotiate_Scroll\Horizontal_Scroll_Marker\_Value_Scrolled_To".

Example: SetMenuFloatValue "Negotiate_Background\Negotiate_Scroll\Horizontal_Scroll_Marker\_Value_Scrolled_To" 1025 SliderPositionVar