aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2015-06-30 11:44:11 +0200
committerShauren <shauren.trinity@gmail.com>2015-06-30 11:44:11 +0200
commitefad3a3123aee9347f2aaa3034550cd0b0543e60 (patch)
tree433f6b2445262c6c541dcdc177d70ad80a58e72a /src/server/game/Spells
parent879af88d2180ca0655fda87072308f6eb76e70ca (diff)
Core/Spells: Implemented CAST_FLAG_IMMUNITY
Diffstat (limited to 'src/server/game/Spells')
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp4
-rw-r--r--src/server/game/Spells/Spell.cpp10
2 files changed, 11 insertions, 3 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 918b000a557..286cdf51bf1 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -3020,6 +3020,10 @@ void AuraEffect::HandleModStateImmunityMask(AuraApplication const* aurApp, uint8
switch (miscVal)
{
+ case 27:
+ target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_SILENCE, apply);
+ aura_immunity_list.push_back(SPELL_AURA_MOD_SILENCE);
+ break;
case 96:
case 1615:
{
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index ff7c6a86ae8..11bf2163aaa 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -3754,6 +3754,10 @@ void Spell::SendSpellStart()
//TC_LOG_DEBUG("spells", "Sending SMSG_SPELL_START id=%u", m_spellInfo->Id);
uint32 castFlags = CAST_FLAG_UNKNOWN_2;
+ uint32 schoolImmunityMask = m_caster->GetSchoolImmunityMask();
+ uint32 mechanicImmunityMask = m_caster->GetMechanicImmunityMask();
+ if (schoolImmunityMask || mechanicImmunityMask)
+ castFlags |= CAST_FLAG_IMMUNITY;
if ((IsTriggered() && !m_spellInfo->IsAutoRepeatRangedSpell()) || m_triggeredByAuraSpell)
castFlags |= CAST_FLAG_PENDING;
@@ -3788,10 +3792,10 @@ void Spell::SendSpellStart()
if (castFlags & CAST_FLAG_AMMO)
WriteAmmoToPacket(&data);
- if (castFlags & CAST_FLAG_UNKNOWN_23)
+ if (castFlags & CAST_FLAG_IMMUNITY)
{
- data << uint32(0);
- data << uint32(0);
+ data << uint32(schoolImmunityMask);
+ data << uint32(mechanicImmunityMask);
}
m_caster->SendMessageToSet(&data, true);