From 52873a7072ceb1f88d9caeefdda6084e6bb1d4af Mon Sep 17 00:00:00 2001 From: ariel- Date: Sun, 11 Feb 2018 22:22:04 -0300 Subject: Core/Spells: calculate crit chance only for spells that do damage/healing Refs #18813 --- src/server/game/Spells/SpellMgr.cpp | 38 +++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) (limited to 'src/server/game/Spells/SpellMgr.cpp') 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 @@ -2645,6 +2645,22 @@ void SpellMgr::LoadSpellInfoCustomAttributes() break; } + 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: @@ -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 -- cgit v1.2.3