diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index c79fd6f1f..4d9e9655a 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -5233,9 +5233,9 @@ float Player::GetExpertiseDodgeOrParryReduction(WeaponAttackType attType) const switch (attType) { case BASE_ATTACK: - return GetUInt32Value(PLAYER_EXPERTISE) / 4.0f; + return m_Expertise / 4.0f; case OFF_ATTACK: - return GetUInt32Value(PLAYER_OFFHAND_EXPERTISE) / 4.0f; + return m_OffhandExpertise / 4.0f; default: break; } diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 2545c89e4..844d5f9db 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2884,6 +2884,9 @@ protected: uint8 m_swingErrorMsg; float m_ammoDPS; + float m_Expertise; + float m_OffhandExpertise; + ////////////////////Rest System///////////////////// time_t _restTime; uint32 _innTriggerId; diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp index 49a00a5ae..3e702f846 100644 --- a/src/server/game/Entities/Unit/StatSystem.cpp +++ b/src/server/game/Entities/Unit/StatSystem.cpp @@ -879,7 +879,7 @@ void Player::UpdateExpertise(WeaponAttackType attack) if (attack == RANGED_ATTACK) return; - int32 expertise = int32(GetRatingBonusValue(CR_EXPERTISE)); + float expertise = GetRatingBonusValue(CR_EXPERTISE); Item* weapon = GetWeaponForAttack(attack, true); @@ -900,10 +900,12 @@ void Player::UpdateExpertise(WeaponAttackType attack) switch (attack) { case BASE_ATTACK: - SetUInt32Value(PLAYER_EXPERTISE, expertise); + m_Expertise = expertise; + SetUInt32Value(PLAYER_EXPERTISE, int32(expertise)); break; case OFF_ATTACK: - SetUInt32Value(PLAYER_OFFHAND_EXPERTISE, expertise); + m_OffhandExpertise = expertise; + SetUInt32Value(PLAYER_OFFHAND_EXPERTISE, int32(expertise)); break; default: break;