diff options
author | Shauren <shauren.trinity@gmail.com> | 2019-06-03 20:40:34 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2019-06-08 17:06:57 +0200 |
commit | 455959c6064af6f7863a6b4b57cb0ef1646bd8ef (patch) | |
tree | 7d7a7cdd3a44643ee5fc7d19521ced1c8b815c66 /src/server/game/Spells/SpellInfo.cpp | |
parent | 31fda79556e55375962a3c9e46f6dbdbf6e90d18 (diff) |
Core/PacketIO: Rewrite updatefield handling
Diffstat (limited to 'src/server/game/Spells/SpellInfo.cpp')
-rw-r--r-- | src/server/game/Spells/SpellInfo.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 8cab2192fff..369fc1731df 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -3892,10 +3892,10 @@ std::vector<SpellPowerCost> SpellInfo::CalcPowerCost(Unit const* caster, SpellSc inline float CalcPPMHasteMod(SpellProcsPerMinuteModEntry const* mod, Unit* caster) { - float haste = caster->GetFloatValue(UNIT_FIELD_MOD_HASTE); - float rangedHaste = caster->GetFloatValue(UNIT_FIELD_MOD_RANGED_HASTE); - float spellHaste = caster->GetFloatValue(UNIT_MOD_CAST_HASTE); - float regenHaste = caster->GetFloatValue(UNIT_FIELD_MOD_HASTE_REGEN); + float haste = caster->m_unitData->ModHaste; + float rangedHaste = caster->m_unitData->ModRangedHaste; + float spellHaste = caster->m_unitData->ModSpellHaste; + float regenHaste = caster->m_unitData->ModHasteRegen; switch (mod->Param) { @@ -3918,12 +3918,13 @@ inline float CalcPPMHasteMod(SpellProcsPerMinuteModEntry const* mod, Unit* caste inline float CalcPPMCritMod(SpellProcsPerMinuteModEntry const* mod, Unit* caster) { - if (caster->GetTypeId() != TYPEID_PLAYER) + Player const* player = caster->ToPlayer(); + if (!player) return 0.0f; - float crit = caster->GetFloatValue(ACTIVE_PLAYER_FIELD_CRIT_PERCENTAGE); - float rangedCrit = caster->GetFloatValue(ACTIVE_PLAYER_FIELD_RANGED_CRIT_PERCENTAGE); - float spellCrit = caster->GetFloatValue(ACTIVE_PLAYER_FIELD_SPELL_CRIT_PERCENTAGE1); + float crit = player->m_activePlayerData->CritPercentage; + float rangedCrit = player->m_activePlayerData->RangedCritPercentage; + float spellCrit = player->m_activePlayerData->SpellCritPercentage; switch (mod->Param) { @@ -3984,7 +3985,7 @@ float SpellInfo::CalcProcPPM(Unit* caster, int32 itemLevel) const case SPELL_PPM_MOD_SPEC: { if (Player* plrCaster = caster->ToPlayer()) - if (plrCaster->GetInt32Value(PLAYER_FIELD_CURRENT_SPEC_ID) == mod->Param) + if (plrCaster->GetPrimarySpecialization() == uint32(mod->Param)) ppm *= 1.0f + mod->Coeff; break; } |