aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellEffects.cpp
diff options
context:
space:
mode:
authorjoschiwald <joschiwald.trinity@gmail.com>2017-01-01 03:05:33 +0100
committerjoschiwald <joschiwald.trinity@gmail.com>2017-01-01 03:05:33 +0100
commitab06ae799ebefd53a9420aa3642c7354f84e4696 (patch)
tree30ec1aa932c9bbb742b421fa0196c72c8169bd2b /src/server/game/Spells/SpellEffects.cpp
parentdeb5ca843e3d74d6902eebf481a7ea7cb590552d (diff)
Core/Spells: SPELL_ATTR0_CU_SHARE_DAMAGE no longer depend on SpellFamily
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rw-r--r--src/server/game/Spells/SpellEffects.cpp25
1 files changed, 14 insertions, 11 deletions
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<TargetInfo>::iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
- if (ihit->effectMask & (1<<effIndex))
- ++count;
+ return targetInfo.effectMask & (1 << effIndex);
+ });
- damage /= count; // divide to all targets
- }
+ // divide to all targets
+ if (count)
+ damage /= count;
+ }
+ switch (m_spellInfo->SpellFamilyName)
+ {
+ case SPELLFAMILY_GENERIC:
+ {
switch (m_spellInfo->Id) // better way to check unknown
{
// Consumption