Let cloak of shadows immunes to flare.

path: src/game/SpellAuras.cpp

@@ -239,7 +239,7 @@
     &Aura::HandleNULL,                                      //183 SPELL_AURA_MOD_CRITICAL_THREAT
     &Aura::HandleNoImmediateEffect,                         //184 SPELL_AURA_MOD_ATTACKER_MELEE_HIT_CHANCE  implemented in Unit::RollMeleeOutcomeAgainst
     &Aura::HandleNoImmediateEffect,                         //185 SPELL_AURA_MOD_ATTACKER_RANGED_HIT_CHANCE implemented in Unit::RollMeleeOutcomeAgainst
-    &Aura::HandleNoImmediateEffect,                         //186 SPELL_AURA_MOD_ATTACKER_SPELL_HIT_CHANCE  implemented in Unit::MagicSpellHitResult
+    &Aura::HandleModAttackerSpellHitChance,                 //186 SPELL_AURA_MOD_ATTACKER_SPELL_HIT_CHANCE  implemented in Unit::MagicSpellHitResult
     &Aura::HandleNoImmediateEffect,                         //187 SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_CHANCE  implemented in Unit::GetUnitCriticalChance
     &Aura::HandleNoImmediateEffect,                         //188 SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_CHANCE implemented in Unit::GetUnitCriticalChance
     &Aura::HandleModRating,                                 //189 SPELL_AURA_MOD_RATING
@@ -1801,38 +1801,38 @@
                     // Cat Form
                     // trigger_spell_id not set and unknown effect triggered in this case, ignoring for while
                     case 768:
-                        {
-                        if (m_target->GetTypeId() == TYPEID_PLAYER)
-                        {
-                            bool outdoor = m_target->GetMap()->IsOutdoors(m_target->GetPositionX(), m_target->GetPositionY(), m_target->GetPositionZ());
-                            const PlayerSpellMap& sp_list = ((Player *)m_target)->GetSpellMap();
-                            for (PlayerSpellMap::const_iterator itr = sp_list.begin(); itr != sp_list.end(); ++itr)
-                            {
-                              
-
-                                SpellEntry const *spellInfo = sSpellStore.LookupEntry(itr->first);
-                                if (!spellInfo || !(spellInfo->Attributes & ((1<<6) | (1<<7))))
-                                    continue;
-
-                                if (!spellInfo->Stances & (1<<((Player *)m_target)->m_form))
-                                    continue;
-
-                                if (outdoor && spellInfo->Attributes & SPELL_ATTR_OUTDOORS_ONLY)
-                                {
-                                    if (m_target->HasAura(spellInfo->Id, 0))
-                                        continue;
-                                    else
-                                        m_target->CastSpell(m_target, spellInfo->Id, true, NULL, this);
-                                }
-                                else if (!outdoor && spellInfo->Attributes & SPELL_ATTR_INDOORS_ONLY)
-                                {
-                                    if (m_target->HasAura(spellInfo->Id, 0))
-                                        continue;
-                                    else
-                                        m_target->CastSpell(m_target, spellInfo->Id, true, NULL, this);
-                                }
-                            }
-                       }
+                        {
+                        if (m_target->GetTypeId() == TYPEID_PLAYER)
+                        {
+                            bool outdoor = m_target->GetMap()->IsOutdoors(m_target->GetPositionX(), m_target->GetPositionY(), m_target->GetPositionZ());
+                            const PlayerSpellMap& sp_list = ((Player *)m_target)->GetSpellMap();
+                            for (PlayerSpellMap::const_iterator itr = sp_list.begin(); itr != sp_list.end(); ++itr)
+                            {
+                              
+
+                                SpellEntry const *spellInfo = sSpellStore.LookupEntry(itr->first);
+                                if (!spellInfo || !(spellInfo->Attributes & ((1<<6) | (1<<7))))
+                                    continue;
+
+                                if (!spellInfo->Stances & (1<<((Player *)m_target)->m_form))
+                                    continue;
+
+                                if (outdoor && spellInfo->Attributes & SPELL_ATTR_OUTDOORS_ONLY)
+                                {
+                                    if (m_target->HasAura(spellInfo->Id, 0))
+                                        continue;
+                                    else
+                                        m_target->CastSpell(m_target, spellInfo->Id, true, NULL, this);
+                                }
+                                else if (!outdoor && spellInfo->Attributes & SPELL_ATTR_INDOORS_ONLY)
+                                {
+                                    if (m_target->HasAura(spellInfo->Id, 0))
+                                        continue;
+                                    else
+                                        m_target->CastSpell(m_target, spellInfo->Id, true, NULL, this);
+                                }
+                            }
+                       }
 
                         return;
                         }
@@ -5332,13 +5332,13 @@
                 SpellEntry const *spellInfo = sSpellStore.LookupEntry(itr->first);
                 if (!spellInfo || !(spellInfo->Attributes & ((1<<6) | (1<<7))))
                     continue;
-                bool outdoor = m_target->GetMap()->IsOutdoors(m_target->GetPositionX(), m_target->GetPositionY(), m_target->GetPositionZ());
-                if (outdoor && spellInfo->Attributes & SPELL_ATTR_INDOORS_ONLY)
-                    continue;
-
-                if (!outdoor && spellInfo->Attributes & SPELL_ATTR_OUTDOORS_ONLY)
-                    continue;
-
+                bool outdoor = m_target->GetMap()->IsOutdoors(m_target->GetPositionX(), m_target->GetPositionY(), m_target->GetPositionZ());
+                if (outdoor && spellInfo->Attributes & SPELL_ATTR_INDOORS_ONLY)
+                    continue;
+
+                if (!outdoor && spellInfo->Attributes & SPELL_ATTR_OUTDOORS_ONLY)
+                    continue;
+
 
                 if (spellInfo->Stances & (1<<form))
                     m_target->CastSpell(m_target, itr->first, true, NULL, this);

path: src/game/SpellAuras.h

@@ -210,6 +210,7 @@
         void HandlePreventFleeing(bool apply, bool Real);
         void HandleManaShield(bool apply, bool Real);
         void HandleArenaPreparation(bool apply, bool Real);
+     void HandleModAttackerSpellHitChance(bool apply, bool Real);
         void HandleAuraReflectSpellSchool(bool apply, bool Real);
 
         virtual ~Aura();