diff options
author | Shauren <shauren.trinity@gmail.com> | 2021-03-21 20:00:22 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-03-21 20:00:22 +0100 |
commit | d889b4b0e8fc082505f6bf70a551ad4b38f3f34c (patch) | |
tree | 88d340c51e1dba05630412164d4db90a418d64be /src | |
parent | ff203b3be239e25c5416bc740fd30e41b9041194 (diff) |
Core/Players: Added Player::GetPrimaryStat retrieving intended primary stat for current specialization
Diffstat (limited to 'src')
-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; |