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