From ab06ae799ebefd53a9420aa3642c7354f84e4696 Mon Sep 17 00:00:00 2001 From: joschiwald Date: Sun, 1 Jan 2017 03:05:33 +0100 Subject: Core/Spells: SPELL_ATTR0_CU_SHARE_DAMAGE no longer depend on SpellFamily --- src/server/game/Spells/SpellEffects.cpp | 25 ++++++++++++++----------- src/server/game/Spells/SpellMgr.cpp | 8 ++++++++ 2 files changed, 22 insertions(+), 11 deletions(-) (limited to 'src/server') diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 5728b0993f5..c4535f3edff 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -414,21 +414,24 @@ void Spell::EffectSchoolDMG(SpellEffIndex effIndex) if (unitTarget && unitTarget->IsAlive()) { bool apply_direct_bonus = true; - switch (m_spellInfo->SpellFamilyName) + + // Meteor like spells (divided damage to targets) + if (m_spellInfo->HasAttribute(SPELL_ATTR0_CU_SHARE_DAMAGE)) { - case SPELLFAMILY_GENERIC: + uint32 count = std::count_if(m_UniqueTargetInfo.begin(), m_UniqueTargetInfo.end(), [effIndex](TargetInfo const& targetInfo) { - // Meteor like spells (divided damage to targets) - if (m_spellInfo->HasAttribute(SPELL_ATTR0_CU_SHARE_DAMAGE)) - { - uint32 count = 0; - for (std::vector::iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit) - if (ihit->effectMask & (1<SpellFamilyName) + { + case SPELLFAMILY_GENERIC: + { switch (m_spellInfo->Id) // better way to check unknown { // Consumption diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 40dcbd90c10..f8e2974ed2f 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -2779,6 +2779,14 @@ void SpellMgr::LoadSpellInfoCustomAttributes() } // TODO: validate attributes + if (attributes & SPELL_ATTR0_CU_SHARE_DAMAGE) + { + if (!spellInfo->HasEffect(SPELL_EFFECT_SCHOOL_DAMAGE)) + { + TC_LOG_ERROR("sql.sql", "Spell %u listed in table `spell_custom_attr` with SPELL_ATTR0_CU_SHARE_DAMAGE has no SPELL_EFFECT_SCHOOL_DAMAGE, ignored.", spellId); + continue; + } + } spellInfo->AttributesCu |= attributes; ++count; -- cgit v1.2.3