fix(scripts/Naxx): The art of Naxxramas (2/2) (#5057)

This commit is contained in:
Silker
2021-04-02 21:57:00 -06:00
committed by GitHub
parent 85d21335da
commit 6dc4ca8503
12 changed files with 543 additions and 153 deletions

View File

@@ -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)
{

View File

@@ -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)
{

View File

@@ -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

View File

@@ -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();
}
}

View File

@@ -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);

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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;
}

View File

@@ -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