diff options
author | greymane <greymane@trinitycore.org> | 2011-04-22 11:31:39 +0200 |
---|---|---|
committer | Machiavelli <machiavelli.trinity@gmail.com> | 2011-04-22 11:32:57 +0200 |
commit | 173425cb8a23baf5f140d1a5ddabd0094d68eedc (patch) | |
tree | cbf81f937b9e72a56742c7a4135ff42d857e3d09 /src | |
parent | d42ab6c8bdfd7abe635a1ddd590797b10ab9baeb (diff) |
Scripts/ToCH: Spellscript for Eadric's Radiance
Signed-off-by: Machiavelli <machiavelli.trinity@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp index cc3562d463a..72fe60846b8 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp @@ -56,6 +56,44 @@ enum eSpells SPELL_WAKING_NIGHTMARE_H = 67677 }; +class OrientationCheck : public std::unary_function<Unit*, bool> +{ + public: + explicit OrientationCheck(Unit* _caster) : caster(_caster) { } + bool operator() (Unit* unit) + { + return !unit->isInFront(caster, 40.0f, 2.5f); + } + + private: + Unit* caster; +}; + +class spell_eadric_radiance : public SpellScriptLoader +{ + public: + spell_eadric_radiance() : SpellScriptLoader("spell_eadric_radiance") { } + class spell_eadric_radiance_SpellScript : public SpellScript + { + PrepareSpellScript(spell_eadric_radiance_SpellScript); + void FilterTargets(std::list<Unit*>& unitList) + { + unitList.remove_if(OrientationCheck(GetCaster())); + } + + void Register() + { + OnUnitTargetSelect += SpellUnitTargetFn(spell_eadric_radiance_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_AREA_ENEMY_SRC); + OnUnitTargetSelect += SpellUnitTargetFn(spell_eadric_radiance_SpellScript::FilterTargets, EFFECT_1, TARGET_UNIT_AREA_ENEMY_SRC); + } + }; + + SpellScript *GetSpellScript() const + { + return new spell_eadric_radiance_SpellScript(); + } +}; + class boss_eadric : public CreatureScript { public: @@ -512,6 +550,7 @@ public: void AddSC_boss_argent_challenge() { new boss_eadric(); + new spell_eadric_radiance(); new boss_paletress(); new npc_memory(); new npc_argent_soldier(); |