-
Notifications
You must be signed in to change notification settings - Fork 46
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
Comments
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. |
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. -- |
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)
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.
The text was updated successfully, but these errors were encountered: