diff options
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 | 14 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index ce98587a4c7..e7139610517 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2010,6 +2010,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> bool UpdateFishingSkill(int32 expansion); float GetHealthBonusFromStamina() const; + float GetManaBonusFromIntellect() const; bool UpdateStats(Stats stat) override; bool UpdateAllStats() override; diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp index 7a48044da5a..48a81505c26 100644 --- a/src/server/game/Entities/Unit/StatSystem.cpp +++ b/src/server/game/Entities/Unit/StatSystem.cpp @@ -290,6 +290,16 @@ float Player::GetHealthBonusFromStamina() const return moreStam * ratio; } +float Player::GetManaBonusFromIntellect() const +{ + float intellect = GetStat(STAT_INTELLECT); + + float baseInt = std::min(20.0f, intellect); + float moreInt = intellect - baseInt; + + return baseInt + (moreInt * 15.0f); +} + void Player::UpdateMaxHealth() { UnitMods unitMod = UNIT_MOD_HEALTH; @@ -315,9 +325,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.f; + 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)); |