diff options
author | Shauren <shauren.trinity@gmail.com> | 2016-08-17 18:52:58 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2016-08-17 18:52:58 +0200 |
commit | d9aca10221d84d1440ef8cf9c0c8bfb1524de87d (patch) | |
tree | c7299a46e2c2e6dfbc0ceb3db4636e7a7473ccb6 /src | |
parent | 4a6cf1b61d6174fd2739e935b9a2f32db385859d (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.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 17 |
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 |