Skip to content

[Suggestion]: Update to how the Bag of Souls calculation works #78

@fzzyhmstrs

Description

@fzzyhmstrs

Is your feature request related to a problem? Please describe.

Inspired by the message in the MCDX General channel of the discord, and my own lurking frustration with how powerful Bag of Souls is (especially combined with an enchantment like Insight that adds additional XP orbs which are then multiplied).

  • I believe the current math system is a tad un-intuitive in-game with what combination and total level of BoS is best
  • I believe the maximum multipliers are too high. High level BoS combined with other XP enchants trivializes the XP costs associated with AI, for example. That is my personal opinion, so I believe a config option would be a good solution.

The current formula for Bag of Souls, per the 1.19 branch of the source, is:

amount = (amount * (1 + (bagOfSoulsLevel / 12)) + Math.round(((bagOfSoulsLevel % 12) / 12.0f) * amount)) * bagOfSoulsCount;

My excel rebuild of this formula. where A1 is the cell with the BoS level and C1 is the cell with the BoS count, and amount assumed to be 1:
=((1*(1+A1/12)+ROUND((MOD(A1,12)/12),0)*1)*C1)

Describe the solution you'd like

My proposal is:

amount = amount * (Math.pow(bagOfSoulsLevel, 0.62) + 0.0833333 * bagOfSoulsCount * bagOfSoulsCount)

My excel of that, where L1 is the BoS level, $K$1 is the exponent (0.62 for example), and N1 is the BoS count.
=1*(L1^$K$1 + 0.0833333*N1*N1)

Things I've noticed with the current Bag of Souls formula that I believe are noteworthy for a rework:

  • The maximum multiplier, per my excel rebuild, is about 12x (with XP orb amount of 1)
  • This multiplier is not at Bag of Souls 12; unless I have a mistake in my math, it's at BoS 11.
  • Current formula heavily incentivizes splitting BoS onto every armor piece, and therefor punishes stacking high level BoS onto one piece. In fact, properly optimizing your BoS on 4 pieces will give you a higher multiplier than BoS 12 with only BoS 6
  • because of the Math.round, low value XP orbs are truncated weirdly with BoS less than 6

Explanation of my Proposal

Formula is based on an exponential of the BoS level + a multiplier based on the square of BoS count. This provides

  • A smooth transition of multiplier from level to level
  • Slightly diminishing returns on level. More bang for the buck at lower levels
  • Still incentivizes spreading out BoS, but to a less extreme degree
  • Caps the maximum multiplier to 6
  • Allows for better modded support of BoS levels (higher max level). Current impl wraps a higher max level back around with modulus.

Describe alternatives you've considered

My proposal targets 6x maximum multiplier with an exponent of 0.62. If that's not a desirable multiplier target, here are some exponent values:

  • 4x: 0.395
  • 6x: 0.62
  • 8x: 0.763

This exponent could make a good Config Option, allowing the user to set a value between 0 and 0.999999...

Additional context

Graph of Current Impl

All data graphed with an XP orb value of 1 (so showing off the "multiplier"). Note the spike in multiplier at ~BoS 6, and note the dip at BoS 12 caused by 12 % 12 equaling 0. "1 piece sequential" is considering a player that stacks BoS 3 onto one piece at time. "Optimal route" considers a player optimally spreading BoS out on their armor.
image

Graph of Fzzy Proposal

All data graphed with an XP orb value of 1 (so showing off the "multiplier"). Spreading out BoS is still incentivized, but not to a massive degree, and total cap is 6X at BoS 12. "1 piece sequential" is considering a player that stacks BoS 3 onto one piece at time. "Optimal route" considers a player optimally spreading BoS out on their armor.
image

Metadata

Metadata

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions