diff options
author | Ovahlord <dreadkiller@gmx.de> | 2024-08-21 14:14:05 +0200 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2024-08-21 14:14:05 +0200 |
commit | 675eb1bab2b129455a724c891804310ffeff26bf (patch) | |
tree | 55ceec1819dcb7f0a3dd95774f6cf6e74483a42e /src | |
parent | 7ed0d6f2286adc6cdbcd9669dccd8d72fd6758ce (diff) |
Core/Player: restored mana bonus from intellect
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 1 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/StatSystem.cpp | 15 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index ea27d68ee9f..95c91c6a9cf 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2006,6 +2006,7 @@ class TC_GAME_API Player final : public Unit, public GridObject<Player> bool UpdateFishingSkill(int32 expansion); float GetHealthBonusFromStamina() const; + float GetManaBonusFromIntellect() const; Stats GetPrimaryStat() const; bool UpdateStats(Stats stat) override; diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp index 8226ac7c00d..4e1bb27398b 100644 --- a/src/server/game/Entities/Unit/StatSystem.cpp +++ b/src/server/game/Entities/Unit/StatSystem.cpp @@ -384,6 +384,17 @@ float Player::GetHealthBonusFromStamina() const return baseStam + moreStam * ratio; } +float Player::GetManaBonusFromIntellect() const +{ + // Taken from PaperDollFrame.lua - 4.3.4.15595 + float intellect = GetStat(STAT_INTELLECT); + + float baseInt = std::min(20.0f, intellect); + float moreInt = intellect - baseInt; + + return baseInt + (moreInt * 15.0f); +} + Stats Player::GetPrimaryStat() const { uint8 primaryStatPriority = [&]() -> uint8 @@ -428,9 +439,11 @@ void Player::UpdateMaxPower(Powers power) UnitMods unitMod = UnitMods(UNIT_MOD_POWER_START + AsUnderlyingType(power)); + float bonusPower = (power == POWER_MANA && GetCreatePowerValue(power) > 0) ? GetManaBonusFromIntellect() : 0.0f; + float value = GetFlatModifierValue(unitMod, BASE_VALUE) + GetCreatePowerValue(power); value *= GetPctModifierValue(unitMod, BASE_PCT); - value += GetFlatModifierValue(unitMod, TOTAL_VALUE); + value += GetFlatModifierValue(unitMod, TOTAL_VALUE) + bonusPower; value *= GetPctModifierValue(unitMod, TOTAL_PCT); SetMaxPower(power, (int32)std::lroundf(value)); |