diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/SharedDefines.h | 5 | ||||
-rw-r--r-- | src/game/SpellAuras.cpp | 14 | ||||
-rw-r--r-- | src/game/SpellAuras.h | 1 | ||||
-rw-r--r-- | src/game/Unit.cpp | 9 |
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; } |