diff options
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; } |