mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-16 02:20:27 +00:00
fix(scripts/Naxx): The art of Naxxramas (2/2) (#5057)
This commit is contained in:
@@ -8,16 +8,16 @@
|
||||
|
||||
enum Says
|
||||
{
|
||||
SAY_AGGRO = 0,
|
||||
SAY_GREET = 1,
|
||||
SAY_SLAY = 2,
|
||||
EMOTE_LOCUST = 3
|
||||
SAY_AGGRO = 0,
|
||||
SAY_GREET = 1,
|
||||
SAY_SLAY = 2,
|
||||
EMOTE_LOCUST = 3
|
||||
};
|
||||
|
||||
enum GuardSays
|
||||
{
|
||||
EMOTE_SPAWN = 1,
|
||||
EMOTE_SCARAB = 2
|
||||
EMOTE_SPAWN = 1,
|
||||
EMOTE_SCARAB = 2
|
||||
};
|
||||
|
||||
enum Spells
|
||||
@@ -183,7 +183,7 @@ public:
|
||||
{
|
||||
if (!me->IsInCombat() && sayGreet)
|
||||
{
|
||||
for( std::list<uint64>::iterator itr = summons.begin(); itr != summons.end(); ++itr )
|
||||
for (std::list<uint64>::iterator itr = summons.begin(); itr != summons.end(); ++itr)
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
|
||||
enum Yells
|
||||
{
|
||||
SAY_GREET = 0,
|
||||
SAY_AGGRO = 1,
|
||||
SAY_SLAY = 2,
|
||||
SAY_DEATH = 3,
|
||||
EMOTE_WIDOWS_EMBRACE = 4,
|
||||
EMOTE_FRENZY = 5,
|
||||
SAY_FRENZY = 6
|
||||
SAY_GREET = 0,
|
||||
SAY_AGGRO = 1,
|
||||
SAY_SLAY = 2,
|
||||
SAY_DEATH = 3,
|
||||
EMOTE_WIDOWS_EMBRACE = 4,
|
||||
EMOTE_FRENZY = 5,
|
||||
SAY_FRENZY = 6
|
||||
};
|
||||
|
||||
enum Spells
|
||||
@@ -40,9 +40,7 @@ enum Events
|
||||
enum Misc
|
||||
{
|
||||
NPC_NAXXRAMAS_WORSHIPPER = 16506,
|
||||
NPC_NAXXRAMAS_FOLLOWER = 16505,
|
||||
|
||||
SPIDER_WEB_ENTRANCE = 181235
|
||||
NPC_NAXXRAMAS_FOLLOWER = 16505
|
||||
};
|
||||
|
||||
class boss_faerlina : public CreatureScript
|
||||
@@ -92,9 +90,12 @@ public:
|
||||
events.Reset();
|
||||
summons.DespawnAll();
|
||||
SummonHelpers();
|
||||
if (GameObject* go = me->FindNearestGameObject(SPIDER_WEB_ENTRANCE, 100.0f))
|
||||
if (pInstance)
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_FAERLINA_WEB)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,9 +109,12 @@ public:
|
||||
events.ScheduleEvent(EVENT_RAIN_OF_FIRE, urand(8000, 18000));
|
||||
events.ScheduleEvent(EVENT_FRENZY, urand(60000, 80000), 1);
|
||||
events.SetPhase(1);
|
||||
if (GameObject* go = me->FindNearestGameObject(SPIDER_WEB_ENTRANCE, 100.0f))
|
||||
if (pInstance)
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_FAERLINA_WEB)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -143,9 +147,12 @@ public:
|
||||
{
|
||||
BossAI::JustDied(killer);
|
||||
Talk(SAY_DEATH);
|
||||
if (GameObject* go = me->FindNearestGameObject(SPIDER_WEB_ENTRANCE, 100.0f))
|
||||
if (pInstance)
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_FAERLINA_WEB)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -153,7 +160,7 @@ public:
|
||||
{
|
||||
if (!me->IsInCombat() && sayGreet)
|
||||
{
|
||||
for( std::list<uint64>::iterator itr = summons.begin(); itr != summons.end(); ++itr )
|
||||
for (std::list<uint64>::iterator itr = summons.begin(); itr != summons.end(); ++itr)
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
|
||||
@@ -191,6 +191,16 @@ public:
|
||||
events.RescheduleEvent(EVENT_PUNISH, 5000);
|
||||
events.RescheduleEvent(EVENT_SECONDARY_SPELL, 15000);
|
||||
}
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_HORSEMEN_GATE)))
|
||||
{
|
||||
if (pInstance->GetBossState(BOSS_GOTHIK) == DONE)
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MovementInform(uint32 type, uint32 id) override
|
||||
@@ -260,6 +270,10 @@ public:
|
||||
player->SummonGameObject(RAID_MODE(GO_HORSEMEN_CHEST_10, GO_HORSEMEN_CHEST_25), 2514.8f, -2944.9f, 245.55f, 5.51f, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_HORSEMEN_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
Talk(SAY_DEATH);
|
||||
@@ -276,6 +290,13 @@ public:
|
||||
me->SetSpeed(MOVE_RUN, me->GetSpeedRate(MOVE_RUN), true);
|
||||
MoveToCorner();
|
||||
}
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_HORSEMEN_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
|
||||
@@ -263,13 +263,10 @@ public:
|
||||
{
|
||||
summons.DoZoneInCombat();
|
||||
}
|
||||
else
|
||||
else if (Unit* target = me->SelectNearestTarget(50.0f))
|
||||
{
|
||||
if (Unit* target = me->SelectNearestTarget(50.0f))
|
||||
{
|
||||
AttackStart(target);
|
||||
DoZoneInCombat();
|
||||
}
|
||||
AttackStart(target);
|
||||
DoZoneInCombat();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -154,14 +154,7 @@ public:
|
||||
case EVENT_INEVITABLE_DOOM:
|
||||
me->CastSpell(me, RAID_MODE(SPELL_INEVITABLE_DOOM_10, SPELL_INEVITABLE_DOOM_25), false);
|
||||
doomCounter++;
|
||||
if (doomCounter < 6)
|
||||
{
|
||||
events.RepeatEvent(30000);
|
||||
}
|
||||
else
|
||||
{
|
||||
events.RepeatEvent(15000);
|
||||
}
|
||||
events.RepeatEvent(doomCounter < 6 ? 30000 : 15000);
|
||||
break;
|
||||
case EVENT_BERSERK:
|
||||
me->CastSpell(me, SPELL_BERSERK, true);
|
||||
|
||||
@@ -49,9 +49,7 @@ enum Misc
|
||||
{
|
||||
NPC_PLAGUED_WARRIOR = 16984,
|
||||
NPC_PLAGUED_CHAMPION = 16983,
|
||||
NPC_PLAGUED_GUARDIAN = 16981,
|
||||
|
||||
NOTH_ROOM_ENTRANCE = 181200
|
||||
NPC_PLAGUED_GUARDIAN = 16981
|
||||
};
|
||||
|
||||
const Position summoningPosition[5] =
|
||||
@@ -140,9 +138,12 @@ public:
|
||||
me->SetControlled(false, UNIT_STATE_ROOT);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
timesInBalcony = 0;
|
||||
if (GameObject* go = me->FindNearestGameObject(NOTH_ROOM_ENTRANCE, 100.0f))
|
||||
if (pInstance)
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_NOTH_ENTRY_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,9 +158,12 @@ public:
|
||||
BossAI::EnterCombat(who);
|
||||
Talk(SAY_AGGRO);
|
||||
StartGroundPhase();
|
||||
if (GameObject* go = me->FindNearestGameObject(NOTH_ROOM_ENTRANCE, 100.0f))
|
||||
if (pInstance)
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_NOTH_ENTRY_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -178,9 +182,12 @@ public:
|
||||
}
|
||||
BossAI::JustDied(killer);
|
||||
Talk(SAY_DEATH);
|
||||
if (GameObject* go = me->FindNearestGameObject(NOTH_ROOM_ENTRANCE, 100.0f))
|
||||
if (pInstance)
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_NOTH_ENTRY_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -89,12 +89,9 @@ public:
|
||||
{
|
||||
Talk(SAY_SLAY);
|
||||
}
|
||||
if (who->GetTypeId() == TYPEID_PLAYER)
|
||||
if (who->GetTypeId() == TYPEID_PLAYER && pInstance)
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
pInstance->SetData(DATA_IMMORTAL_FAIL, 0);
|
||||
}
|
||||
pInstance->SetData(DATA_IMMORTAL_FAIL, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -187,12 +184,9 @@ public:
|
||||
|
||||
void KilledUnit(Unit* who) override
|
||||
{
|
||||
if (who->GetTypeId() == TYPEID_PLAYER)
|
||||
if (who->GetTypeId() == TYPEID_PLAYER && me->GetInstanceScript())
|
||||
{
|
||||
if (me->GetInstanceScript())
|
||||
{
|
||||
me->GetInstanceScript()->SetData(DATA_IMMORTAL_FAIL, 0);
|
||||
}
|
||||
me->GetInstanceScript()->SetData(DATA_IMMORTAL_FAIL, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -92,8 +92,7 @@ enum Misc
|
||||
ACTION_RESTORE = 3,
|
||||
GO_TESLA_COIL_LEFT = 181478,
|
||||
GO_TESLA_COIL_RIGHT = 181477,
|
||||
NPC_TESLA_COIL = 16218,
|
||||
THADDIUS_ROOM_DOOR = 181121
|
||||
NPC_TESLA_COIL = 16218
|
||||
};
|
||||
|
||||
class boss_thaddius : public CreatureScript
|
||||
@@ -177,9 +176,15 @@ public:
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
if (GameObject* go = me->FindNearestGameObject(THADDIUS_ROOM_DOOR, 200.0f))
|
||||
if (pInstance)
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_THADDIUS_GATE)))
|
||||
{
|
||||
if (pInstance->GetBossState(BOSS_GLUTH) == DONE)
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -203,10 +208,10 @@ public:
|
||||
{
|
||||
pInstance->DoRemoveAurasDueToSpellOnPlayers(28059);
|
||||
pInstance->DoRemoveAurasDueToSpellOnPlayers(28084);
|
||||
}
|
||||
if (GameObject* go = me->FindNearestGameObject(THADDIUS_ROOM_DOOR, 200.0f))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_THADDIUS_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -394,10 +399,6 @@ public:
|
||||
void EnterCombat(Unit* pWho) override
|
||||
{
|
||||
me->SetInCombatWithZone();
|
||||
if (GameObject* go = me->FindNearestGameObject(THADDIUS_ROOM_DOOR, 200.0f))
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
if (Creature* cr = me->FindNearestCreature(NPC_TESLA_COIL, 150.f, true))
|
||||
{
|
||||
myCoil = cr->GetGUID();
|
||||
@@ -420,6 +421,10 @@ public:
|
||||
}
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_THADDIUS_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_THADDIUS_BOSS)))
|
||||
{
|
||||
cr->AI()->AttackStart(pWho);
|
||||
@@ -609,14 +614,7 @@ public:
|
||||
if (count)
|
||||
{
|
||||
uint32 spellId = 0;
|
||||
if (GetSpellInfo()->Id == SPELL_POSITIVE_CHARGE)
|
||||
{
|
||||
spellId = SPELL_POSITIVE_CHARGE_STACK;
|
||||
}
|
||||
else // if (GetSpellInfo()->Id == SPELL_NEGATIVE_CHARGE)
|
||||
{
|
||||
spellId = SPELL_NEGATIVE_CHARGE_STACK;
|
||||
}
|
||||
spellId = GetSpellInfo()->Id == SPELL_POSITIVE_CHARGE ? SPELL_NEGATIVE_CHARGE_STACK : SPELL_NEGATIVE_CHARGE_STACK;
|
||||
GetCaster()->SetAuraStack(spellId, GetCaster(), count);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,22 +58,24 @@ public:
|
||||
// GOs
|
||||
_patchwerkGateGUID = 0;
|
||||
_gluthGateGUID = 0;
|
||||
_nothGateGUID = 0;
|
||||
_nothEntryGateGUID = 0;
|
||||
_nothExitGateGUID = 0;
|
||||
_heiganGateGUID = 0;
|
||||
_heiganGateExitGUID = 0;
|
||||
_loathebGateGUID = 0;
|
||||
_anubGateGUID = 0;
|
||||
_anubNextGateGUID = 0;
|
||||
_faerlinaWebGUID = 0;
|
||||
_faerlinaGateGUID = 0;
|
||||
_maexxnaGateGUID = 0;
|
||||
_thaddiusGateGUID = 0;
|
||||
_horsemanGateGUID = 0;
|
||||
_kelthuzadfloorGUID = 0;
|
||||
_kelthuzadgateGUID = 0;
|
||||
_kelthuzadportal1GUID = 0;
|
||||
_kelthuzadportal2GUID = 0;
|
||||
_kelthuzadportal3GUID = 0;
|
||||
_kelthuzadportal4GUID = 0;
|
||||
_kelthuzadFloorGUID = 0;
|
||||
_kelthuzadGateGUID = 0;
|
||||
_kelthuzadPortal1GUID = 0;
|
||||
_kelthuzadPortal2GUID = 0;
|
||||
_kelthuzadPortal3GUID = 0;
|
||||
_kelthuzadPortal4GUID = 0;
|
||||
_sapphironGateGUID = 0;
|
||||
_horsemanPortalGUID = 0;
|
||||
_loathebPortalGUID = 0;
|
||||
@@ -83,6 +85,10 @@ public:
|
||||
_plagueEyePortalGUID = 0;
|
||||
_spiderEyePortalGUID = 0;
|
||||
_abomEyePortalGUID = 0;
|
||||
_deathknightGlowEyePortalGUID = 0;
|
||||
_plagueGlowEyePortalGUID = 0;
|
||||
_spiderGlowEyePortalGUID = 0;
|
||||
_abomGlowEyePortalGUID = 0;
|
||||
|
||||
// NPCs
|
||||
PatchwerkRoomTrash.clear();
|
||||
@@ -122,12 +128,14 @@ public:
|
||||
// GOs
|
||||
uint64 _patchwerkGateGUID;
|
||||
uint64 _gluthGateGUID;
|
||||
uint64 _nothGateGUID;
|
||||
uint64 _nothEntryGateGUID;
|
||||
uint64 _nothExitGateGUID;
|
||||
uint64 _heiganGateGUID;
|
||||
uint64 _heiganGateExitGUID;
|
||||
uint64 _loathebGateGUID;
|
||||
uint64 _anubGateGUID;
|
||||
uint64 _anubNextGateGUID;
|
||||
uint64 _faerlinaWebGUID;
|
||||
uint64 _faerlinaGateGUID;
|
||||
uint64 _maexxnaGateGUID;
|
||||
uint64 _thaddiusGateGUID;
|
||||
@@ -135,12 +143,12 @@ public:
|
||||
uint64 _gothikInnerGateGUID{};
|
||||
uint64 _gothikExitGateGUID{};
|
||||
uint64 _horsemanGateGUID;
|
||||
uint64 _kelthuzadfloorGUID;
|
||||
uint64 _kelthuzadgateGUID;
|
||||
uint64 _kelthuzadportal1GUID;
|
||||
uint64 _kelthuzadportal2GUID;
|
||||
uint64 _kelthuzadportal3GUID;
|
||||
uint64 _kelthuzadportal4GUID;
|
||||
uint64 _kelthuzadFloorGUID;
|
||||
uint64 _kelthuzadGateGUID;
|
||||
uint64 _kelthuzadPortal1GUID;
|
||||
uint64 _kelthuzadPortal2GUID;
|
||||
uint64 _kelthuzadPortal3GUID;
|
||||
uint64 _kelthuzadPortal4GUID;
|
||||
uint64 _sapphironGateGUID;
|
||||
uint64 _horsemanPortalGUID;
|
||||
uint64 _loathebPortalGUID;
|
||||
@@ -150,6 +158,10 @@ public:
|
||||
uint64 _plagueEyePortalGUID;
|
||||
uint64 _spiderEyePortalGUID;
|
||||
uint64 _abomEyePortalGUID;
|
||||
uint64 _deathknightGlowEyePortalGUID;
|
||||
uint64 _plagueGlowEyePortalGUID;
|
||||
uint64 _spiderGlowEyePortalGUID;
|
||||
uint64 _abomGlowEyePortalGUID;
|
||||
|
||||
// NPCs
|
||||
std::list<uint64> PatchwerkRoomTrash;
|
||||
@@ -293,14 +305,21 @@ public:
|
||||
pGo->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
break;
|
||||
case GO_NOTH_GATE:
|
||||
_nothGateGUID = pGo->GetGUID();
|
||||
case GO_NOTH_ENTRY_GATE:
|
||||
_nothEntryGateGUID = pGo->GetGUID();
|
||||
if (GetBossState(BOSS_NOTH) == DONE)
|
||||
{
|
||||
pGo->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
break;
|
||||
case GO_HEIGAN_ENTERANCE_GATE:
|
||||
case GO_NOTH_EXIT_GATE:
|
||||
_nothExitGateGUID = pGo->GetGUID();
|
||||
if (GetBossState(BOSS_NOTH) == DONE)
|
||||
{
|
||||
pGo->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
break;
|
||||
case GO_HEIGAN_ENTRY_GATE:
|
||||
_heiganGateGUID = pGo->GetGUID();
|
||||
if (GetBossState(BOSS_HEIGAN) == DONE || GetBossState(BOSS_NOTH) == DONE)
|
||||
{
|
||||
@@ -342,6 +361,13 @@ public:
|
||||
pGo->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
break;
|
||||
case GO_FAERLINA_WEB:
|
||||
_faerlinaWebGUID = pGo->GetGUID();
|
||||
if (GetBossState(BOSS_FAERLINA) == DONE)
|
||||
{
|
||||
pGo->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
break;
|
||||
case GO_MAEXXNA_GATE:
|
||||
_maexxnaGateGUID = pGo->GetGUID();
|
||||
if (GetBossState(BOSS_FAERLINA) == DONE)
|
||||
@@ -369,7 +395,7 @@ public:
|
||||
pGo->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
break;
|
||||
case GO_HORSEMAN_GATE:
|
||||
case GO_HORSEMEN_GATE:
|
||||
_horsemanGateGUID = pGo->GetGUID();
|
||||
if (GetBossState(BOSS_GOTHIK) == DONE)
|
||||
{
|
||||
@@ -377,26 +403,26 @@ public:
|
||||
}
|
||||
break;
|
||||
case GO_KELTHUZAD_FLOOR:
|
||||
_kelthuzadfloorGUID = pGo->GetGUID();
|
||||
_kelthuzadFloorGUID = pGo->GetGUID();
|
||||
break;
|
||||
case GO_KELTHUZAD_GATE:
|
||||
_kelthuzadgateGUID = pGo->GetGUID();
|
||||
_kelthuzadGateGUID = pGo->GetGUID();
|
||||
if (GetBossState(BOSS_SAPPHIRON) == DONE && _speakTimer == 0)
|
||||
{
|
||||
pGo->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
break;
|
||||
case GO_KELTHUZAD_PORTAL_1:
|
||||
_kelthuzadportal1GUID = pGo->GetGUID();
|
||||
_kelthuzadPortal1GUID = pGo->GetGUID();
|
||||
break;
|
||||
case GO_KELTHUZAD_PORTAL_2:
|
||||
_kelthuzadportal2GUID = pGo->GetGUID();
|
||||
_kelthuzadPortal2GUID = pGo->GetGUID();
|
||||
break;
|
||||
case GO_KELTHUZAD_PORTAL_3:
|
||||
_kelthuzadportal3GUID = pGo->GetGUID();
|
||||
_kelthuzadPortal3GUID = pGo->GetGUID();
|
||||
break;
|
||||
case GO_KELTHUZAD_PORTAL_4:
|
||||
_kelthuzadportal4GUID = pGo->GetGUID();
|
||||
_kelthuzadPortal4GUID = pGo->GetGUID();
|
||||
break;
|
||||
case GO_SAPPHIRON_GATE:
|
||||
_sapphironGateGUID = pGo->GetGUID();
|
||||
@@ -405,34 +431,40 @@ public:
|
||||
pGo->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
break;
|
||||
case GO_DEATHKNIGHT_WING:
|
||||
case GO_LOATHEB_PORTAL:
|
||||
_loathebPortalGUID = pGo->GetGUID();
|
||||
if (GetBossState(BOSS_LOATHEB) == DONE)
|
||||
{
|
||||
pGo->SetPhaseMask(1, true);
|
||||
pGo->SetGoState(GO_STATE_ACTIVE);
|
||||
pGo->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
break;
|
||||
case GO_THADDIUS_PORTAL:
|
||||
_thaddiusPortalGUID = pGo->GetGUID();
|
||||
if (GetBossState(BOSS_THADDIUS) == DONE)
|
||||
{
|
||||
pGo->SetPhaseMask(1, true);
|
||||
pGo->SetGoState(GO_STATE_ACTIVE);
|
||||
pGo->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
break;
|
||||
case GO_MAEXXNA_PORTAL:
|
||||
_maexxnaPortalGUID = pGo->GetGUID();
|
||||
if (GetBossState(BOSS_MAEXXNA) == DONE)
|
||||
{
|
||||
pGo->SetPhaseMask(1, true);
|
||||
pGo->SetGoState(GO_STATE_ACTIVE);
|
||||
pGo->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
break;
|
||||
case GO_HORSEMAN_PORTAL:
|
||||
_horsemanPortalGUID = pGo->GetGUID();
|
||||
if (GetBossState(BOSS_HORSEMAN) == DONE)
|
||||
{
|
||||
pGo->SetPhaseMask(1, true);
|
||||
pGo->SetGoState(GO_STATE_ACTIVE);
|
||||
pGo->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
break;
|
||||
|
||||
// Glow portals at center-side
|
||||
case GO_DEATHKNIGHT_EYE_PORTAL:
|
||||
_deathknightEyePortalGUID = pGo->GetGUID();
|
||||
if (GetBossState(BOSS_HORSEMAN) == DONE)
|
||||
@@ -461,6 +493,36 @@ public:
|
||||
pGo->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
break;
|
||||
|
||||
// Glow portals at boss-side
|
||||
case GO_MILI_EYE_RAMP_BOSS:
|
||||
_deathknightGlowEyePortalGUID = pGo->GetGUID();
|
||||
if (GetBossState(BOSS_HORSEMAN) == DONE)
|
||||
{
|
||||
pGo->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
break;
|
||||
case GO_PLAG_EYE_RAMP_BOSS:
|
||||
_plagueGlowEyePortalGUID = pGo->GetGUID();
|
||||
if (GetBossState(BOSS_LOATHEB) == DONE)
|
||||
{
|
||||
pGo->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
break;
|
||||
case GO_ARAC_EYE_RAMP_BOSS:
|
||||
_spiderGlowEyePortalGUID = pGo->GetGUID();
|
||||
if (GetBossState(BOSS_MAEXXNA) == DONE)
|
||||
{
|
||||
pGo->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
break;
|
||||
case GO_CONS_EYE_RAMP_BOSS:
|
||||
_abomGlowEyePortalGUID = pGo->GetGUID();
|
||||
if (GetBossState(BOSS_THADDIUS) == DONE)
|
||||
{
|
||||
pGo->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -788,7 +850,7 @@ public:
|
||||
}
|
||||
break;
|
||||
case BOSS_NOTH:
|
||||
if (GameObject* go = instance->GetGameObject(_nothGateGUID))
|
||||
if (GameObject* go = instance->GetGameObject(_nothExitGateGUID))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
@@ -814,12 +876,17 @@ public:
|
||||
}
|
||||
if (GameObject* go = instance->GetGameObject(_loathebPortalGUID))
|
||||
{
|
||||
go->SetPhaseMask(1, true);
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
if (GameObject* go = instance->GetGameObject(_plagueEyePortalGUID))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
if (GameObject* go = instance->GetGameObject(_plagueGlowEyePortalGUID))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_KELTHUZAD_WING_TAUNT, 6000);
|
||||
break;
|
||||
case BOSS_ANUB:
|
||||
@@ -849,12 +916,17 @@ public:
|
||||
}
|
||||
if (GameObject* go = instance->GetGameObject(_maexxnaPortalGUID))
|
||||
{
|
||||
go->SetPhaseMask(1, true);
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
if (GameObject* go = instance->GetGameObject(_spiderEyePortalGUID))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
if (GameObject* go = instance->GetGameObject(_spiderGlowEyePortalGUID))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_KELTHUZAD_WING_TAUNT, 6000);
|
||||
break;
|
||||
case BOSS_GOTHIK:
|
||||
@@ -877,23 +949,33 @@ public:
|
||||
case BOSS_THADDIUS:
|
||||
if (GameObject* go = instance->GetGameObject(_thaddiusPortalGUID))
|
||||
{
|
||||
go->SetPhaseMask(1, true);
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
if (GameObject* go = instance->GetGameObject(_abomEyePortalGUID))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
if (GameObject* go = instance->GetGameObject(_abomGlowEyePortalGUID))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_KELTHUZAD_WING_TAUNT, 6000);
|
||||
break;
|
||||
case BOSS_HORSEMAN:
|
||||
if (GameObject* go = instance->GetGameObject(_horsemanPortalGUID))
|
||||
{
|
||||
go->SetPhaseMask(1, true);
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
if (GameObject* go = instance->GetGameObject(_deathknightEyePortalGUID))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
if (GameObject* go = instance->GetGameObject(_deathknightGlowEyePortalGUID))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_KELTHUZAD_WING_TAUNT, 6000);
|
||||
break;
|
||||
default:
|
||||
@@ -946,7 +1028,7 @@ public:
|
||||
{
|
||||
kel->AI()->Talk(SAY_SAPP_DIALOG6);
|
||||
_speakTimer = 0;
|
||||
if (GameObject* go = instance->GetGameObject(_kelthuzadgateGUID))
|
||||
if (GameObject* go = instance->GetGameObject(_kelthuzadGateGUID))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
@@ -1004,6 +1086,8 @@ public:
|
||||
return _loathebGateGUID;
|
||||
case DATA_ANUB_GATE:
|
||||
return _anubGateGUID;
|
||||
case DATA_FAERLINA_WEB:
|
||||
return _faerlinaWebGUID;
|
||||
case DATA_MAEXXNA_GATE:
|
||||
return _maexxnaGateGUID;
|
||||
case DATA_GOTHIK_ENTER_GATE:
|
||||
@@ -1012,18 +1096,24 @@ public:
|
||||
return _gothikInnerGateGUID;
|
||||
case DATA_GOTHIK_EXIT_GATE:
|
||||
return _gothikExitGateGUID;
|
||||
case DATA_HORSEMEN_GATE:
|
||||
return _horsemanGateGUID;
|
||||
case DATA_THADDIUS_GATE:
|
||||
return _thaddiusGateGUID;
|
||||
case DATA_NOTH_ENTRY_GATE:
|
||||
return _nothEntryGateGUID;
|
||||
case DATA_KELTHUZAD_FLOOR:
|
||||
return _kelthuzadfloorGUID;
|
||||
return _kelthuzadFloorGUID;
|
||||
case DATA_KELTHUZAD_GATE:
|
||||
return _kelthuzadgateGUID;
|
||||
return _kelthuzadGateGUID;
|
||||
case DATA_KELTHUZAD_PORTAL_1:
|
||||
return _kelthuzadportal1GUID;
|
||||
return _kelthuzadPortal1GUID;
|
||||
case DATA_KELTHUZAD_PORTAL_2:
|
||||
return _kelthuzadportal2GUID;
|
||||
return _kelthuzadPortal2GUID;
|
||||
case DATA_KELTHUZAD_PORTAL_3:
|
||||
return _kelthuzadportal3GUID;
|
||||
return _kelthuzadPortal3GUID;
|
||||
case DATA_KELTHUZAD_PORTAL_4:
|
||||
return _kelthuzadportal4GUID;
|
||||
return _kelthuzadPortal4GUID;
|
||||
|
||||
// NPCs
|
||||
case DATA_THADDIUS_BOSS:
|
||||
@@ -1130,10 +1220,20 @@ public:
|
||||
timer += diff;
|
||||
if (timer >= 5000)
|
||||
{
|
||||
if (Creature* cr = me->SummonCreature(NPC_LIVING_POISON, *me, TEMPSUMMON_TIMED_DESPAWN, 9000))
|
||||
if (Creature* cr = me->SummonCreature(NPC_LIVING_POISON, 3128.59, -3118.81, 293.346, 4.76754, TEMPSUMMON_TIMED_DESPAWN, 15200))
|
||||
{
|
||||
cr->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
cr->GetMotionMaster()->MovePoint(0, me->GetPositionX() + 50 * cos(me->GetOrientation()), me->GetPositionY() + 50 * sin(me->GetOrientation()), me->GetPositionZ(), false);
|
||||
cr->GetMotionMaster()->MovePoint(0, 3130.322, -3156.51, 293.324, false);
|
||||
}
|
||||
if (Creature* cr = me->SummonCreature(NPC_LIVING_POISON, *me, TEMPSUMMON_TIMED_DESPAWN, 14800))
|
||||
{
|
||||
cr->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
cr->GetMotionMaster()->MovePoint(0, 3144.779, -3158.416, 293.324, false);
|
||||
}
|
||||
if (Creature* cr = me->SummonCreature(NPC_LIVING_POISON, 3175.42, -3134.86, 293.34, 4.284, TEMPSUMMON_TIMED_DESPAWN, 14800))
|
||||
{
|
||||
cr->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
cr->GetMotionMaster()->MovePoint(0, 3158.778, -3164.201, 293.312, false);
|
||||
}
|
||||
timer = 0;
|
||||
}
|
||||
|
||||
@@ -29,51 +29,57 @@ enum Encouters
|
||||
|
||||
enum NXData
|
||||
{
|
||||
DATA_HEIGAN_ERUPTION = 100,
|
||||
DATA_HEIGAN_ENTER_GATE = 101,
|
||||
DATA_LOATHEB_GATE = 102,
|
||||
DATA_ANUB_GATE = 103,
|
||||
DATA_MAEXXNA_GATE = 104,
|
||||
DATA_THADDIUS_BOSS = 105,
|
||||
DATA_STALAGG_BOSS = 106,
|
||||
DATA_FEUGEN_BOSS = 107,
|
||||
DATA_GOTHIK_ENTER_GATE = 108,
|
||||
DATA_GOTHIK_INNER_GATE = 109,
|
||||
DATA_GOTHIK_EXIT_GATE = 110,
|
||||
DATA_LICH_KING_BOSS = 111,
|
||||
DATA_KELTHUZAD_FLOOR = 112,
|
||||
DATA_ABOMINATION_KILLED = 113,
|
||||
DATA_FRENZY_REMOVED = 114,
|
||||
DATA_CHARGES_CROSSED = 115,
|
||||
DATA_SPORE_KILLED = 116,
|
||||
DATA_HUNDRED_CLUB = 117,
|
||||
DATA_DANCE_FAIL = 118,
|
||||
DATA_IMMORTAL_FAIL = 119,
|
||||
DATA_KELTHUZAD_GATE = 120,
|
||||
DATA_HAD_THADDIUS_GREET = 121,
|
||||
DATA_KELTHUZAD_PORTAL_1 = 122,
|
||||
DATA_KELTHUZAD_PORTAL_2 = 123,
|
||||
DATA_KELTHUZAD_PORTAL_3 = 124,
|
||||
DATA_KELTHUZAD_PORTAL_4 = 125
|
||||
DATA_NOTH_ENTRY_GATE = 100,
|
||||
DATA_HEIGAN_ERUPTION = 101,
|
||||
DATA_HEIGAN_ENTER_GATE = 102,
|
||||
DATA_LOATHEB_GATE = 103,
|
||||
DATA_ANUB_GATE = 104,
|
||||
DATA_FAERLINA_WEB = 105,
|
||||
DATA_MAEXXNA_GATE = 106,
|
||||
DATA_THADDIUS_BOSS = 107,
|
||||
DATA_STALAGG_BOSS = 108,
|
||||
DATA_FEUGEN_BOSS = 109,
|
||||
DATA_THADDIUS_GATE = 110,
|
||||
DATA_GOTHIK_ENTER_GATE = 111,
|
||||
DATA_GOTHIK_INNER_GATE = 112,
|
||||
DATA_GOTHIK_EXIT_GATE = 113,
|
||||
DATA_HORSEMEN_GATE = 114,
|
||||
DATA_LICH_KING_BOSS = 115,
|
||||
DATA_KELTHUZAD_FLOOR = 116,
|
||||
DATA_ABOMINATION_KILLED = 117,
|
||||
DATA_FRENZY_REMOVED = 118,
|
||||
DATA_CHARGES_CROSSED = 119,
|
||||
DATA_SPORE_KILLED = 120,
|
||||
DATA_HUNDRED_CLUB = 121,
|
||||
DATA_DANCE_FAIL = 122,
|
||||
DATA_IMMORTAL_FAIL = 123,
|
||||
DATA_KELTHUZAD_GATE = 124,
|
||||
DATA_HAD_THADDIUS_GREET = 125,
|
||||
DATA_KELTHUZAD_PORTAL_1 = 126,
|
||||
DATA_KELTHUZAD_PORTAL_2 = 127,
|
||||
DATA_KELTHUZAD_PORTAL_3 = 128,
|
||||
DATA_KELTHUZAD_PORTAL_4 = 129
|
||||
};
|
||||
|
||||
enum NXGOs
|
||||
{
|
||||
GO_PATCHWERK_GATE = 181123,
|
||||
GO_GLUTH_GATE = 181120,
|
||||
GO_NOTH_GATE = 181201,
|
||||
GO_HEIGAN_ENTERANCE_GATE = 181202,
|
||||
GO_NOTH_ENTRY_GATE = 181200,
|
||||
GO_NOTH_EXIT_GATE = 181201,
|
||||
GO_HEIGAN_ENTRY_GATE = 181202,
|
||||
GO_HEIGAN_EXIT_GATE = 181203,
|
||||
GO_LOATHEB_GATE = 181241,
|
||||
GO_ANUB_GATE = 181126,
|
||||
GO_ANUB_NEXT_GATE = 181195,
|
||||
GO_FAERLINA_WEB = 181235,
|
||||
GO_FAERLINA_GATE = 194022,
|
||||
GO_MAEXXNA_GATE = 181209,
|
||||
GO_THADDIUS_GATE = 181121,
|
||||
GO_GOTHIK_ENTER_GATE = 181124,
|
||||
GO_GOTHIK_INNER_GATE = 181170,
|
||||
GO_GOTHIK_EXIT_GATE = 181125,
|
||||
GO_HORSEMAN_GATE = 181119,
|
||||
GO_HORSEMEN_GATE = 181119,
|
||||
GO_SAPPHIRON_GATE = 181225,
|
||||
|
||||
GO_HORSEMEN_CHEST_10 = 181366,
|
||||
@@ -87,15 +93,22 @@ enum NXGOs
|
||||
GO_KELTHUZAD_PORTAL_3 = 181404,
|
||||
GO_KELTHUZAD_PORTAL_4 = 181405,
|
||||
|
||||
GO_DEATHKNIGHT_WING = 181577,
|
||||
GO_LOATHEB_PORTAL = 181577,
|
||||
GO_THADDIUS_PORTAL = 181576,
|
||||
GO_MAEXXNA_PORTAL = 181575,
|
||||
GO_HORSEMAN_PORTAL = 181578,
|
||||
|
||||
// "Glow" effect on center-side portal
|
||||
GO_DEATHKNIGHT_EYE_PORTAL = 181210,
|
||||
GO_PLAGUE_EYE_PORTAL = 181211,
|
||||
GO_SPIDER_EYE_PORTAL = 181212,
|
||||
GO_ABOM_EYE_PORTAL = 181213
|
||||
GO_ABOM_EYE_PORTAL = 181213,
|
||||
|
||||
// "Glow" effect on boss-side portal
|
||||
GO_ARAC_EYE_RAMP_BOSS = 181233,
|
||||
GO_PLAG_EYE_RAMP_BOSS = 181231,
|
||||
GO_MILI_EYE_RAMP_BOSS = 181230,
|
||||
GO_CONS_EYE_RAMP_BOSS = 181232
|
||||
};
|
||||
|
||||
enum NXNPCs
|
||||
|
||||
Reference in New Issue
Block a user