aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/SharedDefines.h5
-rw-r--r--src/game/SpellAuras.cpp14
-rw-r--r--src/game/SpellAuras.h1
-rw-r--r--src/game/Unit.cpp9
4 files changed, 26 insertions, 3 deletions
diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h
index e57c4caf1d0..e625a9e48db 100644
--- a/src/game/SharedDefines.h
+++ b/src/game/SharedDefines.h
@@ -778,10 +778,11 @@ enum SpellImmunity
IMMUNITY_SCHOOL = 2, // enum SpellSchoolMask
IMMUNITY_DAMAGE = 3, // enum SpellSchoolMask
IMMUNITY_DISPEL = 4, // enum DispelType
- IMMUNITY_MECHANIC = 5 // enum Mechanics
+ IMMUNITY_MECHANIC = 5, // enum Mechanics
+ IMMUNITY_ID = 6
};
-#define MAX_SPELL_IMMUNITY 6
+#define MAX_SPELL_IMMUNITY 7
enum Targets
{
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index afdbda37627..c4487880c88 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -240,7 +240,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]=
&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
@@ -6284,3 +6284,15 @@ void Aura::HandleArenaPreparation(bool apply, bool Real)
else
m_target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PREPARATION);
}
+
+void Aura::HandleModAttackerSpellHitChance(bool apply, bool Real)
+{
+ if(!Real)
+ return;
+
+ if(GetId() != 31224)
+ return;
+
+ //cloak of shadows : flare
+ m_target->ApplySpellImmune(31224, IMMUNITY_ID, 1543, apply);
+} \ No newline at end of file
diff --git a/src/game/SpellAuras.h b/src/game/SpellAuras.h
index 4762755bc40..dd74142a511 100644
--- a/src/game/SpellAuras.h
+++ b/src/game/SpellAuras.h
@@ -209,6 +209,7 @@ class TRINITY_DLL_SPEC Aura
void HandlePreventFleeing(bool apply, bool Real);
void HandleManaShield(bool apply, bool Real);
void HandleArenaPreparation(bool apply, bool Real);
+ void HandleModAttackerSpellHitChance(bool apply, bool Real);
virtual ~Aura();
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 771d6b30ae3..d43527d0f0b 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -9407,6 +9407,15 @@ bool Unit::IsImmunedToSpell(SpellEntry const* spellInfo, bool useCharges)
}
}
+ SpellImmuneList const& idList = m_spellImmune[IMMUNITY_ID];
+ for(SpellImmuneList::const_iterator itr = idList.begin(); itr != idList.end(); ++itr)
+ {
+ if(itr->type == spellInfo->Id)
+ {
+ return true;
+ }
+ }
+
return false;
}