aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMislav Blažević <krofnica996@gmail.com>2012-12-21 18:24:21 +0100
committerMislav Blažević <krofnica996@gmail.com>2012-12-21 18:24:21 +0100
commit36ba35285bb103ed164d567dc003227f1cac07ad (patch)
tree47c73f5864a8ff9b8d2ccefda031e93e92f69813 /src
parent8b347928870e80aa098edf2f8c64fe863fb5a056 (diff)
Fix
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp41
1 files changed, 40 insertions, 1 deletions
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp
index b6ae1ed8591..17d72cea718 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp
@@ -145,7 +145,6 @@ class boss_skeram : public CreatureScript
switch (eventId)
{
case EVENT_ARCANE_EXPLOSION:
- // TODO: For some weird reason boss does not cast this
DoCastAOE(SPELL_ARCANE_EXPLOSION, true);
events.ScheduleEvent(EVENT_ARCANE_EXPLOSION, urand(8000, 18000));
break;
@@ -195,7 +194,47 @@ class boss_skeram : public CreatureScript
}
};
+class PlayerOrPetCheck
+{
+ public:
+ bool operator()(WorldObject* object) const
+ {
+ if (object->GetTypeId() != TYPEID_PLAYER)
+ if (!object->ToCreature()->isPet())
+ return true;
+
+ return false;
+ }
+};
+
+class spell_skeram_arcane_explosion : public SpellScriptLoader
+{
+ public:
+ spell_skeram_arcane_explosion() : SpellScriptLoader("spell_skeram_arcane_explosion") { }
+
+ class spell_skeram_arcane_explosion_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_skeram_arcane_explosion_SpellScript);
+
+ void FilterTargets(std::list<WorldObject*>& targets)
+ {
+ targets.remove_if(PlayerOrPetCheck());
+ }
+
+ void Register()
+ {
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_skeram_arcane_explosion_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
+ }
+ };
+
+ SpellScript* GetSpellScript() const
+ {
+ return new spell_skeram_arcane_explosion_SpellScript();
+ }
+};
+
void AddSC_boss_skeram()
{
new boss_skeram();
+ new spell_skeram_arcane_explosion();
}