Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rage generation formula from taking damage is incorrect #1285

Open
Ovahlord opened this issue Jan 3, 2025 · 3 comments
Open

Rage generation formula from taking damage is incorrect #1285

Ovahlord opened this issue Jan 3, 2025 · 3 comments
Assignees

Comments

@Ovahlord
Copy link

Ovahlord commented Jan 3, 2025

Describe the bug
A friend of mine did dive into researching the rage generation formula when taking damage, as it has been changed with Cataclysm. However, the formula that you came up with is not correct.

We went ahead and did test damage scenarios at multiple level ranges and did extended tests with duels to get enough data to figure out the actual formula. As we know, rage is being generated by multiplying an unknown constant against damage and max health.
The formula that you have defined in https://github.com/wowsims/cata/blob/master/sim/core/rage.go#L112 reads as following:

(rawDamage / resistanceMultiplier) * 18.92 / victimMaxHealth

However, we tested this formula on several level ranges and came to the conclusion that it's completely wrong and is not even near the actual values that we got. So we crunched the numbers and figure out a formula that has matched pretty much exactly into the numbers that we observed on live servers (mind you, we did use sniffers and reverse engineering to obtain the exact numbers since rage has a hidden internal multiplier of 10)

The resulting formula is as following:

max(10, ceil(((rawDamage / resistanceMultitplier) / victimMaxHealth) * 400))

The first thing that you will notice is that numbers are being rounded up. Meaning that any instance of taking damage will grant you at least one rage point. The max ensures that a damaging hit is always at least awarding 1 rage point

And the resulting value will be something like 20, 31 etc because as mentioned above, internally the rage system works with a multiplier of 10 so 45 would be 4.5 rage (which is perfectly valid as sometimes you get more rage when hit with an attack for a 2nd time because this trailing .5 accumulated)

Here is a small sheet that documented how we calculated the numbers and how we came to the conclusion. These are damage numbers directly taken from combat log data (again with reverse engineering because clients don't have access to OriginalDamage of the combat log data)
grafik

Another thing that we figured out is that Spells and DoTs generate the same amount of rage. Spells behave the same as physical damage so rawSpellDamage / resistancemultiplier applies here as well.

@NerdEgghead
Copy link
Contributor

What was the target level for these tests? A maximum HP of only 14k is extremely low for Cata. If the Rage conversion formula is level-dependent and you were testing on a low level target, that could explain the discrepancy relative to our earlier tests during Beta.

@NerdEgghead
Copy link
Contributor

image
This is test data from mobs in Blackrock Caverns on a level 81 target during the Cataclysm Classic Beta, showing a Rage conversion that is consistent with the simc formula for incoming melee attacks but inconsistent for spells.

@NerdEgghead NerdEgghead self-assigned this Jan 7, 2025
@Ovahlord
Copy link
Author

Ovahlord commented Jan 11, 2025

We have tested this case on the level ranges between level 1 and 76. Our formula matched with what we had figured out all across that range.

The reason why your sheet is off for spell damage is because there is a hidden internal combat log field called 'OriginalDamage' that is not exposed to the client's API (only obtainable through packet sniffing and reverse engineering). The OriginalDamage field contains the raw damage / resistanceMultiplier original value and is the reference point Blizzard uses to calculate the rage gains.

The damage values you get in the client's combat log are also modified by other factors like % damage reduction auras (like the stance effects) so in order to retrieve reliable factors, you have to capture all auras that do reduce damage taken and re-apply that reduced damage to the damage value.

So the OriginalDamage that we have listed in our spreadsheet above is not some custom calculation, it's straight from packets. We will perform another round of tests once my friend (whos leveling the warrior) is within Cataclysm level range so we will give you more numbers to work with to proof our formula.

--
However, also nice to know: for generating rage with melee attacks, there is indeed a level based factor. Between level 1 and 10 a warrior generates up to 50% fewer rage per swing which slowly diminishes per level gained up until level 10 where you will get the full amount of rage. (This applies only for attacks done by the warrior, not for damage taken)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants