aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.h1
-rw-r--r--src/server/game/Entities/Unit/StatSystem.cpp14
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));