chronosacaria / MCDungeonsArmors

Bringing the armours of Minecraft Dungeons to Minecraft
Other
22 stars 9 forks source link

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

Open fzzyhmstrs opened 1 year ago

fzzyhmstrs commented 1 year ago

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).

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:

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

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:

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

fzzyhmstrs commented 1 year ago

The above not even taking into account XP Orbs that have "clumped". According to my Excel, An orb with a starting value of 20 XP, will yield almost 1600 XP at BoS 11 (not 12). That's an 80x Multiplier. That is more than the total amount of XP to get from level 0 to level 30 in one shot.

As far as I know, the Ender Dragon can drop orbs with stored XP of 307, 617, or 1237. The 1237 orb yields over 5.6 million XP in one shot in my Excel. (XP level 0 -> level 1133)

Now that I'm noticing this, I think this is how Gamer was seeing players hit tens of thousands of XP levels (absorbing orbs that have clumped to very high amounts combined with Soul Devourer etc. adding to the frenzy).

chronosacaria commented 1 year ago

Along with this same proposal: An idea suggested by Zerix#7704: Maybe if you have Bag of Souls, since you get the extra XP with it, maybe there is the possibility of loosing XP when you're hit, akin to Sonic the Hedgehog loosing rings when hit

fzzyhmstrs commented 1 year ago

My additional idea to that addition, that I just came up with: Actually have the experience lost yeet out of the player.

Maybe a custom XP orb entity so when picked up there is no re-multiplication applied. Provides a fun little mini-game in PVP, and a way for the player to recoup if they put the effort in.

Maybe have the amount yote be only a fraction of what is lost (like when the player dies) so they can't fully recoup