aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrobinsch <robinsch@users.noreply.github.com>2023-05-28 17:12:34 +0200
committerGitHub <noreply@github.com>2023-05-28 17:12:34 +0200
commitd5ef68bc9b4523c0543206b16050644fbc1f5731 (patch)
treea0e777b9b30adb11ed67813fa4b2a1f1f0670514
parentfb388298a0bf76402a6f1de35bdfcb33223d51bb (diff)
Core/StatSystem: Fixed missing calls to set negative attack power mods (#28883)
* Core/StatSystem: Fixed missing calls to set negative attack power mods (cherry picked from commit 5ab14c14e70e516278b94a9e61e8475ffec86774) * Added missing calls in Player::InitStatsForLevel * Fixed typo * Fixed typo * Fixed typo
-rw-r--r--src/server/game/Entities/Player/Player.cpp2
-rw-r--r--src/server/game/Entities/Unit/StatSystem.cpp20
2 files changed, 18 insertions, 4 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index c3d840dd633..c08aeb7ba7f 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -2783,9 +2783,11 @@ void Player::InitStatsForLevel(bool reapplyMods)
SetAttackPower(0);
SetAttackPowerModPos(0);
+ SetAttackPowerModNeg(0);
SetAttackPowerMultiplier(0.0f);
SetRangedAttackPower(0);
SetRangedAttackPowerModPos(0);
+ SetRangedAttackPowerModNeg(0);
SetRangedAttackPowerMultiplier(0.0f);
// Base crit values (will be recalculated in UpdateAllStats() at loading and in _ApplyAllStatBonuses() at reset
diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp
index 142affc27cf..5dccf992645 100644
--- a/src/server/game/Entities/Unit/StatSystem.cpp
+++ b/src/server/game/Entities/Unit/StatSystem.cpp
@@ -475,13 +475,19 @@ void Player::UpdateAttackPowerAndDamage(bool ranged)
if (ranged)
{
SetRangedAttackPower(int32(base_attPower));
- SetRangedAttackPowerModPos(int32(attPowerMod));
+ if (attPowerMod >= 0)
+ SetRangedAttackPowerModPos(int32(attPowerMod));
+ if (attPowerMod <= 0)
+ SetRangedAttackPowerModNeg(int32(attPowerMod));
SetRangedAttackPowerMultiplier(attPowerMultiplier);
}
else
{
SetAttackPower(int32(base_attPower));
- SetAttackPowerModPos(int32(attPowerMod));
+ if (attPowerMod >= 0)
+ SetAttackPowerModPos(int32(attPowerMod));
+ if (attPowerMod <= 0)
+ SetAttackPowerModNeg(int32(attPowerMod));
SetAttackPowerMultiplier(attPowerMultiplier);
}
@@ -1051,13 +1057,19 @@ void Creature::UpdateAttackPowerAndDamage(bool ranged)
if (ranged)
{
SetRangedAttackPower(int32(baseAttackPower));
- SetRangedAttackPowerModPos(int32(attackPowerMod));
+ if (attackPowerMod >= 0)
+ SetRangedAttackPowerModPos(int32(attackPowerMod));
+ if (attackPowerMod <= 0)
+ SetRangedAttackPowerModNeg(int32(attackPowerMod));
SetRangedAttackPowerMultiplier(attackPowerMultiplier);
}
else
{
SetAttackPower(int32(baseAttackPower));
- SetAttackPowerModPos(int32(attackPowerMod));
+ if (attackPowerMod >= 0)
+ SetAttackPowerModPos(int32(attackPowerMod));
+ if (attackPowerMod <= 0)
+ SetAttackPowerModNeg(int32(attackPowerMod));
SetAttackPowerMultiplier(attackPowerMultiplier);
}