Scipts/HallsOfReflection: Fix reset during mob waves.

closes #10995
This commit is contained in:
w1sht0l1v3
2013-12-02 20:56:22 +02:00
parent 2a9bf961fa
commit 8920994045
@@ -1121,6 +1121,7 @@ enum TrashSpells
SPELL_FROSTBOLT = 72166,
SPELL_CHAINS_OF_ICE = 72121,
SPELL_HALLUCINATION = 72342,
AURA_HALLUCINATION = 72343,
// Phantom Hallucination (same as phantom mage + HALLUCINATION_2 when dies)
SPELL_HALLUCINATION_2 = 72344,
@@ -1180,10 +1181,7 @@ enum TrashEvents
struct npc_gauntlet_trash : public ScriptedAI
{
npc_gauntlet_trash(Creature* creature) : ScriptedAI(creature),
_instance(creature->GetInstanceScript())
{
}
npc_gauntlet_trash(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { }
void Reset() OVERRIDE
{
@@ -1226,9 +1224,7 @@ public:
struct npc_ghostly_priestAI : public npc_gauntlet_trash
{
npc_ghostly_priestAI(Creature* creature) : npc_gauntlet_trash(creature)
{
}
npc_ghostly_priestAI(Creature* creature) : npc_gauntlet_trash(creature) { }
void EnterCombat(Unit* /*who*/) OVERRIDE
{
@@ -1297,8 +1293,12 @@ public:
struct npc_phantom_mageAI : public npc_gauntlet_trash
{
npc_phantom_mageAI(Creature* creature) : npc_gauntlet_trash(creature)
npc_phantom_mageAI(Creature* creature) : npc_gauntlet_trash(creature) { }
void EnterEvadeMode() OVERRIDE
{
if (!me->HasAura(AURA_HALLUCINATION))
npc_gauntlet_trash::EnterEvadeMode();
}
void EnterCombat(Unit* /*who*/) OVERRIDE
@@ -1342,6 +1342,8 @@ public:
_events.ScheduleEvent(EVENT_CHAINS_OF_ICE, 15000);
break;
case EVENT_HALLUCINATION:
// removing any dots on mage or else the invisibility spell will break duration
me->RemoveAllAuras();
DoCast(SPELL_HALLUCINATION);
break;
}
@@ -1365,6 +1367,19 @@ public:
{
npc_phantom_hallucinationAI(Creature* creature) : npc_phantom_mage::npc_phantom_mageAI(creature) { }
void Reset() OVERRIDE
{
if (Unit* unit = me->SelectNearestTarget())
AttackStart(unit);
DoZoneInCombat();
}
void EnterEvadeMode() OVERRIDE
{
if (!me->GetOwner()->HasAura(AURA_HALLUCINATION))
npc_phantom_mage::npc_phantom_mageAI::EnterEvadeMode();
}
void JustDied(Unit* /*killer*/) OVERRIDE
{
DoCast(SPELL_HALLUCINATION_2);
@@ -1384,9 +1399,7 @@ public:
struct npc_shadowy_mercenaryAI : public npc_gauntlet_trash
{
npc_shadowy_mercenaryAI(Creature* creature) : npc_gauntlet_trash(creature)
{
}
npc_shadowy_mercenaryAI(Creature* creature) : npc_gauntlet_trash(creature) { }
void EnterCombat(Unit* /*who*/) OVERRIDE
{
@@ -1444,9 +1457,7 @@ public:
struct npc_spectral_footmanAI : public npc_gauntlet_trash
{
npc_spectral_footmanAI(Creature* creature) : npc_gauntlet_trash(creature)
{
}
npc_spectral_footmanAI(Creature* creature) : npc_gauntlet_trash(creature) { }
void EnterCombat(Unit* /*who*/) OVERRIDE
{
@@ -1498,9 +1509,7 @@ public:
struct npc_tortured_riflemanAI : public npc_gauntlet_trash
{
npc_tortured_riflemanAI(Creature* creature) : npc_gauntlet_trash(creature)
{
}
npc_tortured_riflemanAI(Creature* creature) : npc_gauntlet_trash(creature) { }
void EnterCombat(Unit* /*who*/) OVERRIDE
{