aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Spell.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
-rw-r--r--src/server/game/Spells/Spell.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 5dd7a7cb2fe..8bca6ab88d5 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -4240,6 +4240,7 @@ void Spell::SendInterrupted(uint8 result)
failurePacket.CasterUnit = m_caster->GetGUID();
failurePacket.CastID = m_cast_count;
failurePacket.SpellID = m_spellInfo->Id;
+ failurePacket.SpelXSpellVisualID = m_SpellVisual;
failurePacket.Reason = result;
m_caster->SendMessageToSet(failurePacket.Write(), true);
@@ -4278,6 +4279,16 @@ void Spell::SendChannelStart(uint32 duration)
spellChannelStart.ChannelDuration = duration;
m_caster->SendMessageToSet(spellChannelStart.Write(), true);
+ uint32 schoolImmunityMask = m_caster->GetSchoolImmunityMask();
+ uint32 mechanicImmunityMask = m_caster->GetMechanicImmunityMask();
+
+ if (schoolImmunityMask || mechanicImmunityMask)
+ {
+ spellChannelStart.InterruptImmunities = boost::in_place();
+ spellChannelStart.InterruptImmunities->SchoolImmunities = schoolImmunityMask;
+ spellChannelStart.InterruptImmunities->Immunities = mechanicImmunityMask;
+ }
+
m_timer = duration;
if (!channelTarget.IsEmpty())
m_caster->SetChannelObjectGuid(channelTarget);