diff options
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/StatSystem.cpp | 20 |
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); } |