diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp index 768544e768e..aa06cd4e2a8 100644 --- a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp @@ -56,6 +56,11 @@ enum AzureSaboteurSpells SABOTEUR_SHIELD_EFFECT = 45775 }; +enum CrystalSpells +{ + SPELL_ARCANE_LIGHTNING = 57912 +}; + const Position PortalLocation[] = { {1877.51, 850.104, 44.6599, 4.7822 }, // WP 1 @@ -367,15 +372,8 @@ struct instance_violet_hold : public ScriptedInstance } break; case DATA_ACTIVATE_CRYSTAL: - // Kill all mobs registered with SetData64(ADD_TRASH_MOB) - // TODO: All visual, spells etc - bCrystalActivated = true; - for (std::set<uint64>::const_iterator itr = trashMobs.begin(); itr != trashMobs.end(); ++itr) - { - Creature* pCreature = instance->GetCreature(*itr); - if (pCreature && pCreature->isAlive()) - pCreature->Kill(pCreature); - } + ActivateCrystal(); + break; } } @@ -754,6 +752,19 @@ struct instance_violet_hold : public ScriptedInstance SetData(DATA_MAIN_DOOR,GO_STATE_ACTIVE); } } + + void ActivateCrystal() + { + // Kill all mobs registered with SetData64(ADD_TRASH_MOB) + // TODO: All visual, spells etc + bCrystalActivated = true; + for (std::set<uint64>::const_iterator itr = trashMobs.begin(); itr != trashMobs.end(); ++itr) + { + Creature* pCreature = instance->GetCreature(*itr); + if (pCreature && pCreature->isAlive()) + pCreature->CastSpell(pCreature,SPELL_ARCANE_LIGHTNING,true); // Who should cast the spell? + } + } }; InstanceData* GetInstanceData_instance_violet_hold(Map* pMap) |