diff options
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 3 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/StatSystem.cpp | 21 |
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; |