Issue Data
|
Issue #33685: I think the changes to Haggling and similar perks should be reverted
The Haggling perks make prices "X% better" (X = 10, 15, 20, 25, 30). There are two ways to interpret this for buying prices:
You can buy X% more items for your gold. Used for the vanilla values (0.91, 0.87, 0.83, 0.8, 0.77). A discount of X%. Used for USSEP's values (0.9, 0.85, 0.8, 0.75, 0.7). Plot illustrating the difference between the formulas: Spoiler:The difference is insignificant for small X, but gets more pronounced as X grows. There does not seem to be a linguistic consensus on which formula to use (for example, see this book, page 28). I propose that the vanilla formula is more suitable in this case. Argument 1: USSEP's formula is more impactful for buying than for selling. To illustrate this, imagine a hypothetical perk that makes prices "95% better". We must also assume that the trade price caps (max sell price = value * 1.00, min buy price = value * 1.05) don't exist, and that sold/bought items can't be bought/sold back. When selling, the perk would allow you to earn 95% more gold. However, it would also allow you to purchase items for just 5% of the original price, a dramatically more impactful effect. A perk that makes prices "X% better" should be equally impactful when buying and when selling. Argument 2: One argument for using the USSEP formula is that Fortify Barter potions and enchantments, as well as Blessing of Zenithar, use it. However, consider the selling and buying price bonuses from leveling the Speech skill. In order to say that these two bonuses are equally strong, we have to use the vanilla formula, as shown below. ("Proof" for formulas, and video verification.) Spoiler:base price factor = 3.3 - .013*min(skill,100) (1)Assuming no perks and effects, sell price modifier = 1 (2) buy price modifier = 1 (3) sell price = round(value of item * sell price modifier / base price factor) (4) buy price = round(value of item * buy price modifier * base price factor) (5)Inserting equations (1) and (2) into (4), inserting (1) and (3) into (5), and ignoring rounding and skill levels over 100, we get: sell price = value of item / (3.3 - .013*skill) (6) buy price = value of item * (3.3 - .013*skill) (7) selling price bonus = (sell price / original sell price) - 1 = /(6)/ = (value of item / (3.3 - .013*skill)) / (value of item / (3.3 - .013*0)) - 1 = (value of item / (3.3 - .013*skill)) * ((3.3 - .013*0) / value of item) - 1 = (3.3 - .013*0) / (3.3 - .013*skill) - 1 = 3.3 / (3.3 - .013*skill) - 1 (8)Using the vanilla formula: buying price factor = 1/(1+buying price bonus) <=> 1+buying price bonus = 1/buying price factor <=> buying price bonus = 1 / buying price factor - 1 = 1 / (buy price / original buy price) - 1 = /(7)/ = 1 / ((value of item * (3.3 - .013*skill)) / (value of item * (3.3 - .013*0))) - 1 = 1 / ((3.3 - .013*skill) / (3.3 - .013*0)) - 1 = 1 / ((3.3 - .013*skill) / 3.3) - 1 = 3.3 / (3.3 - .013*skill) - 1 (9)As equations (8) and (9) show, selling price bonus = buying price bonus, if using the vanilla formula. Example: When leveling Speech from 0 to 100, the final price factor goes from 0.303 to 0.5 — 65% better — when selling, and goes from 3.3 to 2 when buying. The buying price, too, can be said to become "65% better" when using the vanilla formula: 2/3.3 = 1/(1+0.65). If the USSEP formula is used, it can only be said to become around "39% better": 2/3.3 ≈ 1-0.39. Affected perks (possibly an incomplete list): 00058F75 Allure 000BE128 Haggling00 000C07CE Haggling20 000C07CF Haggling40 000C07D0 Haggling60 000C07D1 Haggling80 xx01E7F1 DLC2BlackBookHagglingPerk (xx = Dragonborn digits) xx03399F DLC2BlackBookSeekerPerks (xx = Dragonborn digits) PS: I regret and apologise for my posts in the mod's comment section. I did not consider that USSEP's bug tracker could be so extensive as to include bug reports for its own changes, but should have checked. |