fix(Core/Player) internally handle expertise as float (#21967)

The core will no longer truncated the expertise (from float to int) value on the server side.
This commit is contained in:
Tereneckla
2025-04-26 18:37:05 +00:00
committed by GitHub
parent c1d42d2c36
commit 7503a24266
3 changed files with 10 additions and 5 deletions

View File

@@ -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;
}

View File

@@ -2884,6 +2884,9 @@ protected:
uint8 m_swingErrorMsg;
float m_ammoDPS;
float m_Expertise;
float m_OffhandExpertise;
////////////////////Rest System/////////////////////
time_t _restTime;
uint32 _innTriggerId;

View File

@@ -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;