Skip to content

Commit 95b83b5

Browse files
committed
Core/Players: Fixed integer underflow in Player::UpdateCombatSkills
Closes TrinityCore#29983
1 parent dd40785 commit 95b83b5

File tree

1 file changed

+5
-7
lines changed

1 file changed

+5
-7
lines changed

src/server/game/Entities/Player/Player.cpp

+5-7
Original file line numberDiff line numberDiff line change
@@ -5773,18 +5773,18 @@ void Player::UpdateWeaponSkill(Unit* victim, WeaponAttackType attType)
57735773

57745774
void Player::UpdateCombatSkills(Unit* victim, WeaponAttackType attType, bool defense)
57755775
{
5776-
uint8 plevel = GetLevel(); // if defense than victim == attacker
5777-
uint8 greylevel = Trinity::XP::GetGrayLevel(plevel);
5778-
uint8 moblevel = victim->GetLevelForTarget(this);
5776+
int32 plevel = GetLevel(); // if defense than victim == attacker
5777+
int32 greylevel = Trinity::XP::GetGrayLevel(plevel);
5778+
int32 moblevel = victim->GetLevelForTarget(this);
57795779

57805780
if (moblevel > plevel + 5)
57815781
moblevel = plevel + 5;
57825782

5783-
uint8 lvldif = moblevel - greylevel;
5783+
int32 lvldif = moblevel - greylevel;
57845784
if (lvldif < 3)
57855785
lvldif = 3;
57865786

5787-
uint32 skilldif = 5 * plevel - (defense ? GetBaseDefenseSkillValue() : GetBaseWeaponSkillValue(attType));
5787+
int32 skilldif = 5 * plevel - int32(defense ? GetBaseDefenseSkillValue() : GetBaseWeaponSkillValue(attType));
57885788
if (skilldif <= 0)
57895789
return;
57905790

@@ -5802,8 +5802,6 @@ void Player::UpdateCombatSkills(Unit* victim, WeaponAttackType attType, bool def
58025802
else
58035803
UpdateWeaponSkill(victim, attType);
58045804
}
5805-
else
5806-
return;
58075805
}
58085806

58095807
void Player::ModifySkillBonus(uint32 skillid, int32 val, bool talent)

0 commit comments

Comments
 (0)