diff options
| author | robinsch <robinsch@users.noreply.github.com> | 2023-03-11 14:07:03 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-11 14:07:03 +0100 |
| commit | 13fa60ab86c6338f034823fbd49a90baedd3ab58 (patch) | |
| tree | 8574f29f3a6247e8e795a41275f6a86ba4453980 /src | |
| parent | 9658d15b0c4189962e7600c34b70f9ceed2b3abe (diff) | |
Core/Item: Fixed incorrect damage mod for Heirloom 2H weapons (#28836)
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 6 | ||||
| -rw-r--r-- | src/server/shared/DataStores/DBCStructure.h | 10 |
2 files changed, 14 insertions, 2 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index a6d7c7334c4..9f11d2e92ab 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -7624,8 +7624,10 @@ void Player::_ApplyWeaponDamage(uint8 slot, ItemTemplate const* proto, bool appl if (extraDPS) { float average = extraDPS * proto->Delay / 1000.0f; - minDamage = 0.7f * average; - maxDamage = 1.3f * average; + float mod = ssv->isTwoHand(proto->ScalingStatValue) ? 0.2f : 0.3f; + + minDamage = (1.0f - mod) * average; + maxDamage = (1.0f + mod) * average; } } diff --git a/src/server/shared/DataStores/DBCStructure.h b/src/server/shared/DataStores/DBCStructure.h index 56ea11415fb..e2c12efee36 100644 --- a/src/server/shared/DataStores/DBCStructure.h +++ b/src/server/shared/DataStores/DBCStructure.h @@ -1292,6 +1292,16 @@ struct ScalingStatValuesEntry return 0; } + bool isTwoHand(uint32 mask) const + { + if (mask & 0x7E00) + { + if (mask & 0x00000400) return true; + if (mask & 0x00001000) return true; + } + return false; + } + uint32 getSpellBonus(uint32 mask) const { if (mask & 0x00008000) return SpellPower; |
