diff options
| author | ariel- <ariel-@users.noreply.github.com> | 2018-02-11 22:22:04 -0300 |
|---|---|---|
| committer | ariel- <ariel-@users.noreply.github.com> | 2018-02-12 00:21:26 -0300 |
| commit | 52873a7072ceb1f88d9caeefdda6084e6bb1d4af (patch) | |
| tree | d5dbf1f3991c0e3294901d59240b1cb0e02ff6fc /src/server/game/Spells/SpellMgr.cpp | |
| parent | bf3973dc611935b13045c55e64f484352b6530bd (diff) | |
Core/Spells: calculate crit chance only for spells that do damage/healing
Refs #18813
Diffstat (limited to 'src/server/game/Spells/SpellMgr.cpp')
| -rw-r--r-- | src/server/game/Spells/SpellMgr.cpp | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index d42dfdd5b2a..a1e47697481 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -2648,6 +2648,22 @@ void SpellMgr::LoadSpellInfoCustomAttributes() switch (spellInfo->Effects[j].Effect) { case SPELL_EFFECT_SCHOOL_DAMAGE: + case SPELL_EFFECT_HEALTH_LEECH: + case SPELL_EFFECT_HEAL: + case SPELL_EFFECT_WEAPON_DAMAGE_NOSCHOOL: + case SPELL_EFFECT_WEAPON_PERCENT_DAMAGE: + case SPELL_EFFECT_WEAPON_DAMAGE: + case SPELL_EFFECT_POWER_BURN: + case SPELL_EFFECT_HEAL_MECHANICAL: + case SPELL_EFFECT_NORMALIZED_WEAPON_DMG: + case SPELL_EFFECT_HEAL_PCT: + spellInfo->AttributesCu |= SPELL_ATTR0_CU_CAN_CRIT; + break; + } + + switch (spellInfo->Effects[j].Effect) + { + case SPELL_EFFECT_SCHOOL_DAMAGE: case SPELL_EFFECT_WEAPON_DAMAGE: case SPELL_EFFECT_WEAPON_DAMAGE_NOSCHOOL: case SPELL_EFFECT_NORMALIZED_WEAPON_DMG: @@ -2862,6 +2878,20 @@ void SpellMgr::LoadSpellInfoCustomAttributes() spellInfo->AttributesCu &= ~SPELL_ATTR0_CU_BINARY_SPELL; } + // remove attribute from spells that can't crit + for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i) + { + spellInfo = mSpellInfoMap[i]; + if (!spellInfo) + continue; + + if (!spellInfo->HasAttribute(SPELL_ATTR0_CU_CAN_CRIT)) + continue; + + if (spellInfo->HasAttribute(SPELL_ATTR2_CANT_CRIT)) + spellInfo->AttributesCu &= ~SPELL_ATTR0_CU_CAN_CRIT; + } + TC_LOG_INFO("server.loading", ">> Loaded SpellInfo custom attributes in %u ms", GetMSTimeDiffToNow(oldMSTime)); } @@ -3186,14 +3216,6 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->Effects[EFFECT_0].RadiusEntry = sSpellRadiusStore.LookupEntry(EFFECT_RADIUS_20_YARDS); }); - // Arcane Potency - ApplySpellFix({ 57529, 57531 }, [](SpellInfo* spellInfo) - { - spellInfo->Effects[EFFECT_0].SpellClassMask = flag96(); - spellInfo->Effects[EFFECT_0].ApplyAuraName = SPELL_AURA_ADD_FLAT_MODIFIER; - spellInfo->Effects[EFFECT_0].MiscValue = SPELLMOD_CRITICAL_CHANCE; - }); - ApplySpellFix({ 44978, // Wild Magic 45001, // Wild Magic |
