diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index e8496a1df..00a6be2ea 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -5304,8 +5304,18 @@ void Spell::EffectDispelMechanic(SpellEffIndex effIndex) if (!aura->GetApplicationOfTarget(unitTarget->GetGUID())) continue; if (roll_chance_i(aura->CalcDispelChance(unitTarget, !unitTarget->IsFriendlyTo(m_caster)))) + { if ((aura->GetSpellInfo()->GetAllEffectsMechanicMask() & (1 << mechanic))) + { dispel_list.push(std::make_pair(aura->GetId(), aura->GetCasterGUID())); + + // spell only removes 1 bleed effect do not continue + if (m_spellInfo->Effects[effIndex].BasePoints == 1) + { + break; + } + } + } } for (; dispel_list.size(); dispel_list.pop()) diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index c47b7729f..1c19e704f 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -7336,6 +7336,12 @@ void SpellMgr::LoadDbcDataCorrections() spellInfo->EffectImplicitTargetB[EFFECT_0] = 0; }); + // Item: Luffa removes only 1 bleed effect + ApplySpellFix({ 23595 }, [](SpellEntry* spellInfo) + { + spellInfo->EffectBasePoints[EFFECT_0] = 1; + }); + for (uint32 i = 0; i < sSpellStore.GetNumRows(); ++i) { SpellEntry* spellInfo = (SpellEntry*)sSpellStore.LookupEntry(i);