Difference between revisions of "Barter Overview"
imported>Halo112358 m (Barter moved to Barter Overview) |
m (more grammar) |
||
(5 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
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 | 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 [[:Category:Dialogue|dialogue]] presented during barter is set on the [[Service Tab|service tab]] of a quest. Below are the game settings that control the formulas for bartering prices. | The [[:Category:Dialogue|dialogue]] presented during barter is set on the [[Service Tab|service tab]] of a quest. Below are the game settings that control the formulas for bartering prices. | ||
*[[fBarterBuyBase]] | *[[fBarterBuyBase]] | ||
Line 15: | Line 14: | ||
*[[fBarterSellMult]] | *[[fBarterSellMult]] | ||
< | |||
<big>Barter Formulas.</big> | |||
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 |
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.
- fBarterBuyBase
- fBarterBuyMult
- fBarterDispBase
- fBarterDispositionMod
- fBarterHaggleBase
- fBarterHaggleCurve
- fBarterHaggleDispMult
- fBarterHaggleMax
- fBarterSellBase
- fBarterSellMult
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