From 173425cb8a23baf5f140d1a5ddabd0094d68eedc Mon Sep 17 00:00:00 2001 From: greymane Date: Fri, 22 Apr 2011 11:31:39 +0200 Subject: Scripts/ToCH: Spellscript for Eadric's Radiance Signed-off-by: Machiavelli --- .../TrialOfTheChampion/boss_argent_challenge.cpp | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'src') 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 +{ + 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& 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(); -- cgit v1.2.3