aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrobinsch <robinsch@users.noreply.github.com>2023-03-11 14:07:03 +0100
committerGitHub <noreply@github.com>2023-03-11 14:07:03 +0100
commit13fa60ab86c6338f034823fbd49a90baedd3ab58 (patch)
tree8574f29f3a6247e8e795a41275f6a86ba4453980
parent9658d15b0c4189962e7600c34b70f9ceed2b3abe (diff)
Core/Item: Fixed incorrect damage mod for Heirloom 2H weapons (#28836)
-rw-r--r--src/server/game/Entities/Player/Player.cpp6
-rw-r--r--src/server/shared/DataStores/DBCStructure.h10
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;