aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-05-22 13:29:52 +0200
committerShauren <shauren.trinity@gmail.com>2024-05-22 13:29:52 +0200
commit95b83b54ee97be584ac3a7176a977b6b1785e95a (patch)
tree23fe61ba7deaefd632a87c0743ab4482a3f0322c /src
parentdd40785b7f56f2c06861d709970f56f54d142002 (diff)
Core/Players: Fixed integer underflow in Player::UpdateCombatSkills
Closes #29983
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp12
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)