aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-08-17 18:52:58 +0200
committerShauren <shauren.trinity@gmail.com>2016-08-17 18:52:58 +0200
commitd9aca10221d84d1440ef8cf9c0c8bfb1524de87d (patch)
treec7299a46e2c2e6dfbc0ceb3db4636e7a7473ccb6 /src
parent4a6cf1b61d6174fd2739e935b9a2f32db385859d (diff)
Core/Players: Fixed autoattack damage in shapeshift forms that don't have offhand attacks but can dual wield (ghost wolf and druids with feral/bear artifacts)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp2
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp17
2 files changed, 17 insertions, 2 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 90957563a6d..a66f5807057 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -1141,7 +1141,7 @@ void Player::Update(uint32 p_time)
}
}
- if (haveOffhandWeapon() && isAttackReady(OFF_ATTACK))
+ if (!IsInFeralForm() && haveOffhandWeapon() && isAttackReady(OFF_ATTACK))
{
if (!IsWithinMeleeRange(victim))
setAttackTimer(OFF_ATTACK, 100);
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index fcd7bed0e7f..ee8519c5dea 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -2058,7 +2058,17 @@ uint32 Unit::CalculateDamage(WeaponAttackType attType, bool normalized, bool add
float maxDamage = 0.0f;
if (normalized || !addTotalPct)
+ {
CalculateMinMaxDamage(attType, normalized, addTotalPct, minDamage, maxDamage);
+ if (IsInFeralForm() && attType == BASE_ATTACK)
+ {
+ float minOffhandDamage = 0.0f;
+ float maxOffhandDamage = 0.0f;
+ CalculateMinMaxDamage(OFF_ATTACK, normalized, addTotalPct, minOffhandDamage, maxOffhandDamage);
+ minDamage += minOffhandDamage;
+ maxDamage += maxOffhandDamage;
+ }
+ }
else
{
switch (attType)
@@ -2070,6 +2080,11 @@ uint32 Unit::CalculateDamage(WeaponAttackType attType, bool normalized, bool add
case BASE_ATTACK:
minDamage = GetFloatValue(UNIT_FIELD_MINDAMAGE);
maxDamage = GetFloatValue(UNIT_FIELD_MAXDAMAGE);
+ if (IsInFeralForm())
+ {
+ minDamage += GetFloatValue(UNIT_FIELD_MINOFFHANDDAMAGE);
+ maxDamage += GetFloatValue(UNIT_FIELD_MAXOFFHANDDAMAGE);
+ }
break;
case OFF_ATTACK:
minDamage = GetFloatValue(UNIT_FIELD_MINOFFHANDDAMAGE);
@@ -14067,7 +14082,7 @@ float Unit::MeleeSpellMissChance(const Unit* victim, WeaponAttackType attType, u
//calculate miss chance
float missChance = victim->GetUnitMissChance(attType);
- if (!spellId && haveOffhandWeapon())
+ if (!spellId && haveOffhandWeapon() && !IsInFeralForm())
missChance += 19;
// Calculate hit chance