aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Entities/Player/Player.h3
-rw-r--r--src/server/game/Entities/Unit/StatSystem.cpp21
2 files changed, 22 insertions, 2 deletions
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 2db8594e0d2..6653bb857c6 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -1796,7 +1796,8 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
bool UpdateGatherSkill(uint32 SkillId, uint32 SkillValue, uint32 RedLevel, uint32 Multiplicator = 1);
bool UpdateFishingSkill();
- float GetHealthBonusFromStamina();
+ float GetHealthBonusFromStamina() const;
+ Stats GetPrimaryStat() 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 2305bfffcec..1b63e24353d 100644
--- a/src/server/game/Entities/Unit/StatSystem.cpp
+++ b/src/server/game/Entities/Unit/StatSystem.cpp
@@ -255,7 +255,7 @@ void Player::UpdateArmor()
UpdateAttackPowerAndDamage(); // armor dependent auras update for SPELL_AURA_MOD_ATTACK_POWER_OF_ARMOR
}
-float Player::GetHealthBonusFromStamina()
+float Player::GetHealthBonusFromStamina() const
{
// Taken from PaperDollFrame.lua - 6.0.3.19085
float ratio = 10.0f;
@@ -267,6 +267,25 @@ float Player::GetHealthBonusFromStamina()
return stamina * ratio;
}
+Stats Player::GetPrimaryStat() const
+{
+ uint8 primaryStatPriority = [&]() -> uint8
+ {
+ if (ChrSpecializationEntry const* specialization = sChrSpecializationStore.LookupEntry(GetPrimarySpecialization()))
+ return specialization->PrimaryStatPriority;
+
+ return sChrClassesStore.AssertEntry(getClass())->PrimaryStatPriority;
+ }();
+
+ if (primaryStatPriority >= 4)
+ return STAT_STRENGTH;
+
+ if (primaryStatPriority >= 2)
+ return STAT_AGILITY;
+
+ return STAT_INTELLECT;
+}
+
void Player::UpdateMaxHealth()
{
UnitMods unitMod = UNIT_MOD_HEALTH;