diff options
author | Shauren <shauren.trinity@gmail.com> | 2018-07-21 23:21:06 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-10-15 00:16:43 +0200 |
commit | 990e4d86576751c517549eecc0747b2a8b65129a (patch) | |
tree | 63c44a200ca7c6b5f973782cd8e2878005f2d0cf /src | |
parent | ca37b98fb80f3b431b6e95e88e16f579b429ac1b (diff) |
Core/Spells: Fixed Righteous Defense crash caused by modifying target list inside effect handler
* Already handled in a script
Closes #22158
(cherry picked from commit 2351d0293085873bde656bf93d717a793a0dcd69)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 40 |
1 files changed, 0 insertions, 40 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index e22089ccd3f..92c1bb4a249 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -545,46 +545,6 @@ void Spell::EffectDummy() if (!unitTarget && !gameObjTarget && !itemTarget) return; - // selection by spell family - switch (m_spellInfo->SpellFamilyName) - { - case SPELLFAMILY_PALADIN: - switch (m_spellInfo->Id) - { - case 31789: // Righteous Defense (step 1) - { - // Clear targets for eff 1 - for (auto ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit) - ihit->EffectMask &= ~(1 << 1); - - // not empty (checked), copy - Unit::AttackerSet attackers = unitTarget->getAttackers(); - - // remove invalid attackers - for (Unit::AttackerSet::iterator aItr = attackers.begin(); aItr != attackers.end();) - if (!(*aItr)->IsValidAttackTarget(m_caster)) - attackers.erase(aItr++); - else - ++aItr; - - // selected from list 3 - uint32 maxTargets = std::min<uint32>(3, attackers.size()); - for (uint32 i = 0; i < maxTargets; ++i) - { - Unit* attacker = Trinity::Containers::SelectRandomContainerElement(attackers); - AddUnitTarget(attacker, 1 << 1); - attackers.erase(attacker); - } - - // now let next effect cast spell at each target. - return; - } - } - break; - default: - break; - } - // pet auras if (m_caster->GetTypeId() == TYPEID_PLAYER) { |