diff options
| -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; |
