diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-05-22 13:29:52 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2024-05-22 13:29:52 +0200 |
commit | 95b83b54ee97be584ac3a7176a977b6b1785e95a (patch) | |
tree | 23fe61ba7deaefd632a87c0743ab4482a3f0322c /src | |
parent | dd40785b7f56f2c06861d709970f56f54d142002 (diff) |
Core/Players: Fixed integer underflow in Player::UpdateCombatSkills
Closes #29983
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 64f7e318884..c68f2edf32c 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -5773,18 +5773,18 @@ void Player::UpdateWeaponSkill(Unit* victim, WeaponAttackType attType) void Player::UpdateCombatSkills(Unit* victim, WeaponAttackType attType, bool defense) { - uint8 plevel = GetLevel(); // if defense than victim == attacker - uint8 greylevel = Trinity::XP::GetGrayLevel(plevel); - uint8 moblevel = victim->GetLevelForTarget(this); + int32 plevel = GetLevel(); // if defense than victim == attacker + int32 greylevel = Trinity::XP::GetGrayLevel(plevel); + int32 moblevel = victim->GetLevelForTarget(this); if (moblevel > plevel + 5) moblevel = plevel + 5; - uint8 lvldif = moblevel - greylevel; + int32 lvldif = moblevel - greylevel; if (lvldif < 3) lvldif = 3; - uint32 skilldif = 5 * plevel - (defense ? GetBaseDefenseSkillValue() : GetBaseWeaponSkillValue(attType)); + int32 skilldif = 5 * plevel - int32(defense ? GetBaseDefenseSkillValue() : GetBaseWeaponSkillValue(attType)); if (skilldif <= 0) return; @@ -5802,8 +5802,6 @@ void Player::UpdateCombatSkills(Unit* victim, WeaponAttackType attType, bool def else UpdateWeaponSkill(victim, attType); } - else - return; } void Player::ModifySkillBonus(uint32 skillid, int32 val, bool talent) |