aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;