TheGroxEmpire / TBC_DPS_Warrior_Sim

Fury warrior C++ based WoW Classic simulator ported into TBC Classic.
5 stars 12 forks source link

Arpen formula incorrect #91

Closed blooblahguy closed 2 years ago

blooblahguy commented 2 years ago

I've noticed through sim logs that the base arpen mitigation factor is: Target armor: 3690. Mitigation factor: 25.899%. This is 7700 armor - sunder - faerie fire - curse of reck Following the established formula of *_DR% = Armor / (Armor - 22167.5 + 467.5 MobLevel)_ we should see that the mitigation at 3690 armor isn't 25.89% but 23.57%**

When adding 700 arpen worth of items we get: Target armor: 2990. Mitigation factor: 22.070%. This should be 20.0% instead.

Looking at source code like the formula the sim is using is return 10557.5 / (10557.5 + target_armor) But it should be using return 1 - (target_armor/ (target_armor- 22167.5 + 467.5 * target_level))

My brain isn't big enough to say whether or not this is affecting the accelerating returns on arpen instead of diminishing, but even the baseline value being off means that arpen as a whole is being undervalued on the sim.

Speaker1264 commented 2 years ago

I think you're incorrect with this one. The sim is using the player's level to calculate the DR, but you are saying it should be using the mob's level instead. If what you are saying is true then a level 70 player would be doing more damage to a level 73 mob with 7700 armor than to a level 70 mob with 7700 armor, which doesn't make sense. In both cases you would be doing the same amount of damage to the target, regardless of their level. The only thing that matters is their armor value and your character level, which is expected to be 70. You could also look at it from a different perspective. If what you are saying is true you would deal less damage and receive more damage from the same mob every time you leveled up, which again, doesn't make sense.

blooblahguy commented 2 years ago

You're absolutely right. It's not target_level, its attacker_level (ie player level) for this formula. My bad! But the end result of changing that actually does resolve this issue. I'm not sure where the formula that the sim uses comes from, but its results matches up exactly with the formula listed above/online. I'll close this out.

Speaker1264 commented 2 years ago

You're absolutely right. It's not target_level, its attacker_level (ie player level) for this formula. My bad! But the end result of changing that actually does resolve this issue. I'm not sure where the formula that the sim uses comes from, but its results matches up exactly with the formula listed above/online. I'll close this out.

The formula you mentioned and the one used in the sim are the same, just with the level locked at 70. If you substitute 70 into the level part of your formula, distribute, and reduce, you should find that you end up with the same formula being used in the sim