mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-23 18:36:31 +01:00
Scripts/Deadmines: more work on Vanessa VanCleef's nightmare phases.
*finished Glubtok and Helix nightmares
This commit is contained in:
@@ -901,7 +901,7 @@ class spell_helix_ride_face_timer_aura: public SpellScriptLoader
|
||||
if (Unit* vehicle = owner->GetVehicleBase())
|
||||
{
|
||||
if (owner->GetMap() && owner->GetMap()->IsHeroic())
|
||||
if (vehicle->GetTypeId() == TYPEID_PLAYER)
|
||||
if (vehicle->GetTypeId() == TYPEID_PLAYER && owner->GetEntry() == BOSS_HELIX_GEARBREAKER)
|
||||
{
|
||||
owner->CastSpell(vehicle, SPELL_CHEST_BOMB, true);
|
||||
owner->CastSpell(vehicle, SPELL_HELIX_CHEST_BOMB_EMOTE, true);
|
||||
@@ -909,7 +909,7 @@ class spell_helix_ride_face_timer_aura: public SpellScriptLoader
|
||||
|
||||
if (Creature* oaf = instance->GetCreature(DATA_LUMBERING_OAF))
|
||||
{
|
||||
if (oaf->IsAlive())
|
||||
if (oaf->IsAlive() && owner->GetEntry() == BOSS_HELIX_GEARBREAKER)
|
||||
{
|
||||
owner->CastSpell(oaf, SPELL_RIDE_VEHICLE_OAF);
|
||||
if (Creature* creature = owner->ToCreature())
|
||||
|
||||
@@ -130,6 +130,8 @@ class boss_vanessa_van_cleef : public CreatureScript
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -231,7 +233,7 @@ class npc_vanessa_vanessa_van_cleef : public CreatureScript
|
||||
_events.ScheduleEvent(EVENT_MAGMA_TRAP, Milliseconds(800));
|
||||
break;
|
||||
case EVENT_MAGMA_TRAP:
|
||||
_instance->SetData(DATA_VANESSA_VAN_CLEEF_ENCOUNTER, NIGHTMARE_STAGE_GLUBTOK);
|
||||
_instance->SetData(DATA_VANESSA_VAN_CLEEF_ENCOUNTER, NIGHTMARE_STAGE_MAGMA_TRAP);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -272,6 +272,293 @@ class npc_deadmines_steam_valve : public CreatureScript
|
||||
}
|
||||
};
|
||||
|
||||
enum VanessaVanCleef
|
||||
{
|
||||
SAY_GLUBTOK_INTRO_1 = 0,
|
||||
SAY_GLUBTOK_INTRO_2 = 1,
|
||||
SAY_ANNOUNCE_GLUBTOKS_NIGHTMARE = 2,
|
||||
SAY_ANNOUNCE_GET_BACK_TO_THE_SHIP = 3,
|
||||
SAY_HELIX_INTRO_1 = 4,
|
||||
SAY_HELIX_INTRO_2 = 5,
|
||||
SAY_MECHANICAL_INTRO_1 = 6,
|
||||
SAY_MECHANICAL_INTRO_2 = 7,
|
||||
SAY_ANNOUNCE_MECHANICAL_NIGHTMARE = 8,
|
||||
|
||||
EVENT_TALK_GLUBTOKS_NIGHTMARE_1 = 1,
|
||||
EVENT_TALK_GLUBTOKS_NIGHTMARE_2,
|
||||
EVENT_CANCEL_NIGHTMARE_AURA_TRAP,
|
||||
EVENT_ANNOUNCE_ENTERED_GLUBTOKS_NIGHTMARE,
|
||||
EVENT_ANNOUNCE_GET_BACK_TO_THE_SHIP,
|
||||
EVENT_TALK_HELIX_NIGHTMARE_1,
|
||||
EVENT_TALK_HELIX_NIGHTMARE_2,
|
||||
EVENT_CANCEL_NIGHTMARE_AURA_GLUBTOK,
|
||||
EVENT_TALK_MECHANICAL_NIGHTMARE_1,
|
||||
EVENT_TALK_MECHANICAL_NIGHTMARE_2,
|
||||
EVENT_CANCEL_NIGHTMARE_AURA_HELIX,
|
||||
EVENT_ANNOUNCE_ENTERED_MECHANICAL_NIGHTMARE,
|
||||
|
||||
SPELL_CANCEL_NIGHTMARE_AURA = 92583,
|
||||
SPELL_NIGHTMARE_AURA_GLUBTOK = 92565,
|
||||
SPELL_NIGHTMARE_AURA_HELIX = 92566,
|
||||
SPELL_NIGHTMARE_AURA_MECHANICAL = 92567,
|
||||
};
|
||||
|
||||
class npc_deadmines_vanessa_van_cleef_nightmare : public CreatureScript
|
||||
{
|
||||
public:
|
||||
npc_deadmines_vanessa_van_cleef_nightmare() : CreatureScript("npc_deadmines_vanessa_van_cleef_nightmare") { }
|
||||
|
||||
struct npc_deadmines_vanessa_van_cleef_nightmareAI : public ScriptedAI
|
||||
{
|
||||
npc_deadmines_vanessa_van_cleef_nightmareAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { }
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
if (_instance->GetData(DATA_VANESSA_VAN_CLEEF_ENCOUNTER) == NIGHTMARE_STAGE_GLUBTOK)
|
||||
_events.ScheduleEvent(EVENT_TALK_GLUBTOKS_NIGHTMARE_1, Seconds(1));
|
||||
else if (_instance->GetData(DATA_VANESSA_VAN_CLEEF_ENCOUNTER) == NIGHTMARE_STAGE_HELIX)
|
||||
_events.ScheduleEvent(EVENT_TALK_HELIX_NIGHTMARE_1, Seconds(1));
|
||||
else if (_instance->GetData(DATA_VANESSA_VAN_CLEEF_ENCOUNTER) == NIGHTMARE_STAGE_FOE_REAPER)
|
||||
_events.ScheduleEvent(EVENT_TALK_MECHANICAL_NIGHTMARE_1, Seconds(1));
|
||||
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
_events.Update(diff);
|
||||
|
||||
while (uint32 eventId = _events.ExecuteEvent())
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_TALK_GLUBTOKS_NIGHTMARE_1:
|
||||
Talk(SAY_GLUBTOK_INTRO_1);
|
||||
_events.ScheduleEvent(EVENT_TALK_GLUBTOKS_NIGHTMARE_2, Seconds(8) + Milliseconds(400));
|
||||
break;
|
||||
case EVENT_TALK_GLUBTOKS_NIGHTMARE_2:
|
||||
Talk(SAY_GLUBTOK_INTRO_2);
|
||||
_events.ScheduleEvent(EVENT_CANCEL_NIGHTMARE_AURA_TRAP, Seconds(4) + Milliseconds(600));
|
||||
break;
|
||||
case EVENT_CANCEL_NIGHTMARE_AURA_TRAP:
|
||||
DoCastAOE(SPELL_CANCEL_NIGHTMARE_AURA, true);
|
||||
DoCastAOE(SPELL_NIGHTMARE_AURA_GLUBTOK, true);
|
||||
_events.ScheduleEvent(EVENT_ANNOUNCE_ENTERED_GLUBTOKS_NIGHTMARE, Milliseconds(110));
|
||||
break;
|
||||
case EVENT_ANNOUNCE_ENTERED_GLUBTOKS_NIGHTMARE:
|
||||
Talk(SAY_ANNOUNCE_GLUBTOKS_NIGHTMARE);
|
||||
_events.ScheduleEvent(EVENT_ANNOUNCE_GET_BACK_TO_THE_SHIP, Seconds(4) + Milliseconds(800));
|
||||
break;
|
||||
case EVENT_ANNOUNCE_GET_BACK_TO_THE_SHIP:
|
||||
Talk(SAY_ANNOUNCE_GET_BACK_TO_THE_SHIP);
|
||||
if (Creature* glubtok = me->FindNearestCreature(NPC_GLUBTOK_NIGHTMARE, 10.0f, true))
|
||||
glubtok->DespawnOrUnsummon(Seconds(2) + Milliseconds(500));
|
||||
me->DespawnOrUnsummon(Seconds(2) + Milliseconds(500));
|
||||
break;
|
||||
case EVENT_TALK_HELIX_NIGHTMARE_1:
|
||||
Talk(SAY_HELIX_INTRO_1);
|
||||
_events.ScheduleEvent(EVENT_TALK_HELIX_NIGHTMARE_2, Seconds(6));
|
||||
break;
|
||||
case EVENT_TALK_HELIX_NIGHTMARE_2:
|
||||
Talk(SAY_HELIX_INTRO_2);
|
||||
_events.ScheduleEvent(EVENT_CANCEL_NIGHTMARE_AURA_GLUBTOK, Seconds(4) + Milliseconds(600));
|
||||
break;
|
||||
case EVENT_CANCEL_NIGHTMARE_AURA_GLUBTOK:
|
||||
DoCastAOE(SPELL_CANCEL_NIGHTMARE_AURA, true);
|
||||
DoCastAOE(SPELL_NIGHTMARE_AURA_HELIX, true);
|
||||
me->DespawnOrUnsummon(Seconds(3) + Milliseconds(700));
|
||||
break;
|
||||
case EVENT_TALK_MECHANICAL_NIGHTMARE_1:
|
||||
Talk(SAY_MECHANICAL_INTRO_1);
|
||||
_events.ScheduleEvent(EVENT_TALK_MECHANICAL_NIGHTMARE_2, Seconds(3) + Milliseconds(600));
|
||||
break;
|
||||
case EVENT_TALK_MECHANICAL_NIGHTMARE_2:
|
||||
Talk(SAY_MECHANICAL_INTRO_2);
|
||||
_events.ScheduleEvent(EVENT_CANCEL_NIGHTMARE_AURA_HELIX, Seconds(3) + Milliseconds(400));
|
||||
break;
|
||||
case EVENT_CANCEL_NIGHTMARE_AURA_HELIX:
|
||||
DoCastAOE(SPELL_CANCEL_NIGHTMARE_AURA, true);
|
||||
DoCastAOE(SPELL_NIGHTMARE_AURA_MECHANICAL, true);
|
||||
_events.ScheduleEvent(EVENT_ANNOUNCE_ENTERED_MECHANICAL_NIGHTMARE, Milliseconds(200));
|
||||
break;
|
||||
case EVENT_ANNOUNCE_ENTERED_MECHANICAL_NIGHTMARE:
|
||||
Talk(SAY_ANNOUNCE_MECHANICAL_NIGHTMARE);
|
||||
if (Creature* reaper = me->FindNearestCreature(NPC_FOE_REAPER_5000_NIGHTMARE, 20.0f, true))
|
||||
reaper->DespawnOrUnsummon(Seconds(2) + Milliseconds(200));
|
||||
me->DespawnOrUnsummon(Seconds(2) + Milliseconds(200));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
private:
|
||||
EventMap _events;
|
||||
InstanceScript* _instance;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return GetDeadminesAI<npc_deadmines_vanessa_van_cleef_nightmareAI>(creature);
|
||||
}
|
||||
};
|
||||
|
||||
enum GlubtokNightmare
|
||||
{
|
||||
EVENT_SPIRIT_STRIKE = 1,
|
||||
SPELL_SPIRIT_STRIKE = 59304,
|
||||
};
|
||||
|
||||
class npc_deadmines_glubtok_nightmare : public CreatureScript
|
||||
{
|
||||
public:
|
||||
npc_deadmines_glubtok_nightmare() : CreatureScript("npc_deadmines_glubtok_nightmare") { }
|
||||
|
||||
struct npc_deadmines_glubtok_nightmareAI : public ScriptedAI
|
||||
{
|
||||
npc_deadmines_glubtok_nightmareAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { }
|
||||
|
||||
void JustEngagedWith(Unit* /*who*/) override
|
||||
{
|
||||
_events.ScheduleEvent(EVENT_SPIRIT_STRIKE, Seconds(4) + Milliseconds(500));
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
me->DespawnOrUnsummon(Seconds(4));
|
||||
_instance->SetData(DATA_VANESSA_VAN_CLEEF_ENCOUNTER, NIGHTMARE_STAGE_HELIX);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
_events.Update(diff);
|
||||
|
||||
while (uint32 eventId = _events.ExecuteEvent())
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_SPIRIT_STRIKE:
|
||||
DoCastVictim(SPELL_SPIRIT_STRIKE);
|
||||
_events.Repeat(Seconds(3) + Milliseconds(600));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
private:
|
||||
EventMap _events;
|
||||
InstanceScript* _instance;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return GetDeadminesAI<npc_deadmines_glubtok_nightmareAI>(creature);
|
||||
}
|
||||
};
|
||||
|
||||
enum HelixNightmare
|
||||
{
|
||||
SAY_ANNOUNCE_HELIX_NIGHTMARE = 0,
|
||||
SAY_ANNOUNCE_NIGHTMAR_SPIDERS = 1,
|
||||
|
||||
SPELL_HELIX_RIDE = 88337,
|
||||
SPELL_RIDE_FACE_TARGETING = 88349,
|
||||
SPELL_PESTILENCE = 91939,
|
||||
SPELL_SHADOW_FOG = 92792,
|
||||
|
||||
EVENT_TALK_NIGHTMARE = 3,
|
||||
EVENT_MAKE_ATTACKABLE,
|
||||
EVENT_RIDE_PLAYER,
|
||||
EVENT_PESTILENCE,
|
||||
EVENT_SUMMON_NIGHTMARE_SKITTERLINGS,
|
||||
EVENT_ANNOUNCE_SPIDERS,
|
||||
|
||||
};
|
||||
|
||||
class npc_deadmines_helix_nightmare : public CreatureScript
|
||||
{
|
||||
public:
|
||||
npc_deadmines_helix_nightmare() : CreatureScript("npc_deadmines_helix_nightmare") { }
|
||||
|
||||
struct npc_deadmines_helix_nightmareAI : public ScriptedAI
|
||||
{
|
||||
npc_deadmines_helix_nightmareAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { }
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_events.ScheduleEvent(EVENT_MAKE_ATTACKABLE, Seconds(7) + Milliseconds(700));
|
||||
_events.ScheduleEvent(EVENT_TALK_NIGHTMARE, Seconds(17) + Milliseconds(800));
|
||||
}
|
||||
|
||||
void JustEngagedWith(Unit* /*who*/) override
|
||||
{
|
||||
_events.ScheduleEvent(EVENT_SPIRIT_STRIKE, Seconds(4) + Milliseconds(400));
|
||||
_events.ScheduleEvent(EVENT_RIDE_PLAYER, Seconds(2) + Milliseconds(500));
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
me->DespawnOrUnsummon(Seconds(5) + Milliseconds(500));
|
||||
_instance->SetData(DATA_VANESSA_VAN_CLEEF_ENCOUNTER, NIGHTMARE_STAGE_FOE_REAPER);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
_events.Update(diff);
|
||||
|
||||
while (uint32 eventId = _events.ExecuteEvent())
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_MAKE_ATTACKABLE:
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
break;
|
||||
case EVENT_SPIRIT_STRIKE:
|
||||
DoCastVictim(SPELL_SPIRIT_STRIKE);
|
||||
_events.Repeat(Seconds(3) + Milliseconds(600));
|
||||
break;
|
||||
case EVENT_TALK_NIGHTMARE:
|
||||
Talk(SAY_ANNOUNCE_HELIX_NIGHTMARE);
|
||||
_events.ScheduleEvent(EVENT_SUMMON_NIGHTMARE_SKITTERLINGS, Milliseconds(600));
|
||||
break;
|
||||
case EVENT_RIDE_PLAYER:
|
||||
DoCastAOE(SPELL_RIDE_FACE_TARGETING, true);
|
||||
_events.Repeat(Seconds(11));
|
||||
break;
|
||||
case EVENT_SUMMON_NIGHTMARE_SKITTERLINGS:
|
||||
for (uint8 i = 0; i < 100; i++)
|
||||
me->SummonCreature(NPC_NIGHTMARE_SKITTERLING, nightmareSkitterlingPos[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000);
|
||||
for (uint8 i = 0; i < 3; i++)
|
||||
me->SummonCreature(NPC_DARKWEB_DEVOURER, DarkwebDevourerPos[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000);
|
||||
|
||||
me->SummonCreature(NPC_CHATTERING_HORROR, ChatteringHorrorPos, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000);
|
||||
|
||||
if (Creature* dummy = me->SummonCreature(NPC_GENERAL_PURPOSE_DUMMY_JMF, GeneralPurposeBunnyPos, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000))
|
||||
dummy->CastSpell(dummy, SPELL_SHADOW_FOG, true);
|
||||
|
||||
_events.ScheduleEvent(EVENT_ANNOUNCE_SPIDERS, Milliseconds(800));
|
||||
break;
|
||||
case EVENT_ANNOUNCE_SPIDERS:
|
||||
Talk(SAY_ANNOUNCE_NIGHTMAR_SPIDERS);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
private:
|
||||
EventMap _events;
|
||||
InstanceScript* _instance;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return GetDeadminesAI<npc_deadmines_helix_nightmareAI>(creature);
|
||||
}
|
||||
};
|
||||
|
||||
enum DefiasCannon
|
||||
{
|
||||
// GroupID 0 and 1 are used by Foe Reaper 5000
|
||||
@@ -287,7 +574,7 @@ class go_deadmines_defias_cannon : public GameObjectScript
|
||||
{
|
||||
go_deadmines_defias_cannonAI(GameObject* go) : GameObjectAI(go), _instance(go->GetInstanceScript()) { }
|
||||
|
||||
bool OnReportUse(Player* player) override
|
||||
bool OnReportUse(Player* /*player*/) override
|
||||
{
|
||||
if (GameObject* cannon = me->ToGameObject())
|
||||
{
|
||||
@@ -374,12 +661,44 @@ class spell_deadmines_ride_magma_vehicle : public SpellScriptLoader
|
||||
}
|
||||
};
|
||||
|
||||
// We have no dummy npc in sniffs so we use a sniffed coordinate instead
|
||||
class spell_deadmines_magma_trap_throw_to_location : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_deadmines_magma_trap_throw_to_location() : SpellScriptLoader("spell_deadmines_magma_trap_throw_to_location") { }
|
||||
|
||||
class spell_deadmines_magma_trap_throw_to_location_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_deadmines_magma_trap_throw_to_location_SpellScript);
|
||||
|
||||
void HandleScript(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (Position const* pos = GetHitDest())
|
||||
GetHitDest()->Relocate(-225.1973f, -563.7677f, 51.23737f);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectLaunch += SpellEffectFn(spell_deadmines_magma_trap_throw_to_location_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_JUMP_DEST);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const override
|
||||
{
|
||||
return new spell_deadmines_magma_trap_throw_to_location_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_deadmines()
|
||||
{
|
||||
new npc_deadmines_defias_watcher();
|
||||
new npc_deadmines_vanessas_trap_bunny();
|
||||
new npc_deadmines_steam_valve();
|
||||
new npc_deadmines_vanessa_van_cleef_nightmare();
|
||||
new npc_deadmines_glubtok_nightmare();
|
||||
new npc_deadmines_helix_nightmare();
|
||||
new go_deadmines_defias_cannon();
|
||||
new spell_deadmines_on_fire();
|
||||
new spell_deadmines_ride_magma_vehicle();
|
||||
new spell_deadmines_magma_trap_throw_to_location();
|
||||
}
|
||||
|
||||
@@ -46,73 +46,86 @@ enum DMDataTypes
|
||||
DATA_VANESSAS_TRAP_BUNNY = 17,
|
||||
DATA_VANESSA_ANCHOR_BUNNY = 18,
|
||||
DATA_ACTIVATED_VENT = 19,
|
||||
DATA_FOUNDRY_DOOR = 20,
|
||||
};
|
||||
|
||||
enum DMCreatures
|
||||
{
|
||||
// Bosses
|
||||
BOSS_GLUBTOK = 47162,
|
||||
BOSS_HELIX_GEARBREAKER = 47296,
|
||||
BOSS_FOE_REAPER_5000 = 43778,
|
||||
BOSS_ADMIRAL_RIPSNARL = 47626,
|
||||
BOSS_CAPTAIN_COOKIE = 47739,
|
||||
BOSS_VANESSA_VAN_CLEEF = 49541,
|
||||
BOSS_GLUBTOK = 47162,
|
||||
BOSS_HELIX_GEARBREAKER = 47296,
|
||||
BOSS_FOE_REAPER_5000 = 43778,
|
||||
BOSS_ADMIRAL_RIPSNARL = 47626,
|
||||
BOSS_CAPTAIN_COOKIE = 47739,
|
||||
BOSS_VANESSA_VAN_CLEEF = 49541,
|
||||
|
||||
// Horde Creatures
|
||||
NPC_SLINKY_SHARPSHIV = 46906,
|
||||
NPC_KAGTHA = 46889,
|
||||
NPC_MISS_MAYHEM = 46902,
|
||||
NPC_SHATTERED_HAND_ASSASSIN = 46890,
|
||||
NPC_MAYHEM_REAPER_PROTOTYPE = 46903,
|
||||
NPC_SLINKY_SHARPSHIV = 46906,
|
||||
NPC_KAGTHA = 46889,
|
||||
NPC_MISS_MAYHEM = 46902,
|
||||
NPC_SHATTERED_HAND_ASSASSIN = 46890,
|
||||
NPC_MAYHEM_REAPER_PROTOTYPE = 46903,
|
||||
|
||||
// Alliance Creatures
|
||||
NPC_STORMWIND_INVESTIGATOR = 46614,
|
||||
NPC_CRIME_SCENE_ALARM_O_BOT = 46613,
|
||||
NPC_STORMWIND_DEFENDER = 50595,
|
||||
NPC_LIEUTENANT_HORATIO_LAINE = 46612,
|
||||
NPC_QUARTERMASTER_LEWIS = 491,
|
||||
NPC_STORMWIND_INVESTIGATOR = 46614,
|
||||
NPC_CRIME_SCENE_ALARM_O_BOT = 46613,
|
||||
NPC_STORMWIND_DEFENDER = 50595,
|
||||
NPC_LIEUTENANT_HORATIO_LAINE = 46612,
|
||||
NPC_QUARTERMASTER_LEWIS = 491,
|
||||
|
||||
// Encounter Related
|
||||
NPC_GENERAL_PURPOSE_DUMMY_JMF = 45979,
|
||||
NPC_GLUBTOK_FIREWALL_PLATTER = 48974,
|
||||
NPC_FIREWALL_PLATTER_1A = 48975,
|
||||
NPC_FIREWALL_PLATTER_1B = 49039,
|
||||
NPC_FIREWALL_PLATTER_1C = 49040,
|
||||
NPC_FIREWALL_PLATTER_2A = 48976,
|
||||
NPC_FIREWALL_PLATTER_2B = 49041,
|
||||
NPC_FIREWALL_PLATTER_2C = 49042,
|
||||
NPC_GENERAL_PURPOSE_BUNNY_L2 = 47242,
|
||||
NPC_FIRE_BLOSSOM_BUNNY = 47282,
|
||||
NPC_FROST_BLOSSOM_BUNNY = 47284,
|
||||
NPC_LUMBERING_OAF = 47297,
|
||||
NPC_HELIX_CREW = 49139,
|
||||
NPC_STICKY_BOMB = 47314,
|
||||
NPC_DEFIAS_REAPER = 47403,
|
||||
NPC_DEFIAS_WATCHER = 47404,
|
||||
NPC_FOE_REAPER_TARGETING_BUNNY = 47468,
|
||||
NPC_PROTOTYPE_REAPER = 49208,
|
||||
NPC_MOLTEN_SLAG = 49229,
|
||||
NPC_VAPOR = 47714,
|
||||
NPC_COOKIES_CAULDRON = 47754,
|
||||
NPC_CORN = 48006,
|
||||
NPC_ROTTEN_CORN = 48276,
|
||||
NPC_MELON = 48294,
|
||||
NPC_ROTTEN_MELON = 48293,
|
||||
NPC_STEAK = 48296,
|
||||
NPC_ROTTEN_STEAK = 48295,
|
||||
NPC_MYSTERY_MEAT = 48297,
|
||||
NPC_ROTTEN_MYSTERY_MEAT = 48298,
|
||||
NPC_LOAF = 48300,
|
||||
NPC_ROTTEN_LOAF = 48299,
|
||||
NPC_BUN = 48301,
|
||||
NPC_ROTTEN_BUN = 48302,
|
||||
NPC_GENERAL_PURPOSE_DUMMY_JMF = 45979,
|
||||
NPC_GLUBTOK_FIREWALL_PLATTER = 48974,
|
||||
NPC_FIREWALL_PLATTER_1A = 48975,
|
||||
NPC_FIREWALL_PLATTER_1B = 49039,
|
||||
NPC_FIREWALL_PLATTER_1C = 49040,
|
||||
NPC_FIREWALL_PLATTER_2A = 48976,
|
||||
NPC_FIREWALL_PLATTER_2B = 49041,
|
||||
NPC_FIREWALL_PLATTER_2C = 49042,
|
||||
NPC_GENERAL_PURPOSE_BUNNY_L2 = 47242,
|
||||
NPC_FIRE_BLOSSOM_BUNNY = 47282,
|
||||
NPC_FROST_BLOSSOM_BUNNY = 47284,
|
||||
NPC_LUMBERING_OAF = 47297,
|
||||
NPC_HELIX_CREW = 49139,
|
||||
NPC_STICKY_BOMB = 47314,
|
||||
NPC_DEFIAS_REAPER = 47403,
|
||||
NPC_DEFIAS_WATCHER = 47404,
|
||||
NPC_FOE_REAPER_TARGETING_BUNNY = 47468,
|
||||
NPC_PROTOTYPE_REAPER = 49208,
|
||||
NPC_MOLTEN_SLAG = 49229,
|
||||
NPC_VAPOR = 47714,
|
||||
NPC_COOKIES_CAULDRON = 47754,
|
||||
NPC_CORN = 48006,
|
||||
NPC_ROTTEN_CORN = 48276,
|
||||
NPC_MELON = 48294,
|
||||
NPC_ROTTEN_MELON = 48293,
|
||||
NPC_STEAK = 48296,
|
||||
NPC_ROTTEN_STEAK = 48295,
|
||||
NPC_MYSTERY_MEAT = 48297,
|
||||
NPC_ROTTEN_MYSTERY_MEAT = 48298,
|
||||
NPC_LOAF = 48300,
|
||||
NPC_ROTTEN_LOAF = 48299,
|
||||
NPC_BUN = 48301,
|
||||
NPC_ROTTEN_BUN = 48302,
|
||||
|
||||
NPC_A_NOTE_FROM_VANESSA = 49564,
|
||||
NPC_VANESSA_VAN_CLEEF_INTRO = 49429,
|
||||
NPC_VANESSAS_TRAP_BUNNY = 49454,
|
||||
NPC_VANESSA_ANCHOR_BUNNY_JMF = 51624,
|
||||
NPC_STEAM_VALVE = 49457,
|
||||
};
|
||||
NPC_A_NOTE_FROM_VANESSA = 49564,
|
||||
NPC_VANESSA_VAN_CLEEF_INTRO = 49429,
|
||||
NPC_VANESSAS_TRAP_BUNNY = 49454,
|
||||
NPC_VANESSA_ANCHOR_BUNNY_JMF = 51624,
|
||||
NPC_STEAM_VALVE = 49457,
|
||||
|
||||
NPC_VANESSA_VANCLEEF_NIGHTMARE = 49671,
|
||||
NPC_GLUBTOK_NIGHTMARE_FIRE_BUNNY = 51594,
|
||||
NPC_GLUBTOK_NIGHTMARE = 49670,
|
||||
|
||||
NPC_HELIX_GEARBREAKER_NIGHTMARE = 49674,
|
||||
NPC_NIGHTMARE_SKITTERLING = 49493,
|
||||
NPC_DARKWEB_DEVOURER = 49494,
|
||||
NPC_CHATTERING_HORROR = 49495,
|
||||
|
||||
NPC_FOE_REAPER_5000_NIGHTMARE = 49681,
|
||||
NPC_VANESSA_LIGHTNING_PLATTER = 49520,
|
||||
};
|
||||
|
||||
enum DMGameObjects
|
||||
{
|
||||
@@ -137,7 +150,6 @@ enum DMSpells
|
||||
SPELL_FOG = 88768,
|
||||
|
||||
// -- Vanessa VanCleef Encounter
|
||||
// Vanessa's Trap Bunny
|
||||
SPELL_RIDE_MAGMA_VEHICLE = 92378,
|
||||
SPELL_MOLTEN_MAGMA = 92424,
|
||||
SPELL_FORCE_MAGMA_TRAP_THROW = 92489,
|
||||
@@ -152,10 +164,11 @@ enum DMSpells
|
||||
enum DMVanessasNightmareStages
|
||||
{
|
||||
NIGHTMARE_STATE_PREPARE_TRAP = 2,
|
||||
NIGHTMARE_STAGE_GLUBTOK = 3,
|
||||
NIGHTMARE_STATE_HELIX = 4,
|
||||
NIGHTMARE_STAGE_FOE_REAPER = 5,
|
||||
NIGHTMARE_STAGE_RIPSNARL = 6
|
||||
NIGHTMARE_STAGE_MAGMA_TRAP = 3,
|
||||
NIGHTMARE_STAGE_GLUBTOK = 4,
|
||||
NIGHTMARE_STAGE_HELIX = 5,
|
||||
NIGHTMARE_STAGE_FOE_REAPER = 6,
|
||||
NIGHTMARE_STAGE_RIPSNARL = 7
|
||||
};
|
||||
|
||||
Position const captainCookieSpawnPos = { -88.13194f, -819.3299f, 39.23453f };
|
||||
@@ -163,6 +176,191 @@ Position const captainCookieSpawnPos = { -88.13194f, -819.3299f, 39.23453f };
|
||||
Position const noteFromVanessaSpawnPos = { -74.36111f, -820.0139f, 40.37145f, 4.014257f };
|
||||
Position const vanessaVanCleefSpawnPos = { -75.58507f, -819.9636f, 47.06727f, 6.178465f };
|
||||
|
||||
Position const vanessaVanCleefNightmareSpawnPos[] =
|
||||
{
|
||||
{ -230.717f, -563.0139f, 51.31293f, 1.047198f },
|
||||
{ -172.809f, -576.9114f, 19.39756f, 4.817109f },
|
||||
{ -159.3924f, -580.5174f, 19.39817f, 6.195919f },
|
||||
};
|
||||
|
||||
Position const GlubtokNightmareIntroSpawnPos = { -229.3403f, -560.3629f, 51.31293f, 5.742133f };
|
||||
Position const GlubtokNightmareSpawnPos = { -174.8212f, -579.7552f, 19.39602f, 3.193953f };
|
||||
|
||||
Position const HelixNightmareSpawnPos = { -172.6858f, -580.0469f, 19.39752f, 3.176499f };
|
||||
Position const GeneralPurposeBunnyPos = { -205.4688f, -567.2049f, 21.06016f };
|
||||
|
||||
Position const FoeReaperNightmareIntroSpawnPos = { -155.4705f, -580.6945f, 19.39779f };
|
||||
Position const FoeReaperNightmareSpawnPos = { -101.4549f, -663.6493f, 7.505813f, 1.850049f };
|
||||
|
||||
Position const glubtokNightmareFireBunnyPos[] =
|
||||
{
|
||||
{ -192.2031f, -595.9636f, 36.37407f, 2.80998f },
|
||||
{ -220.625f, -577.9618f, 21.06016f, 2.513274f },
|
||||
{ -205.3056f, -563.6285f, 21.06016f, 5.253441f },
|
||||
{ -214.8958f, -546.7136f, 19.3898f, 4.712389f },
|
||||
{ -207.8004f, -570.6441f, 21.06016f, 1.762783f },
|
||||
{ -221.4653f, -549.9358f, 19.3898f, 3.211406f },
|
||||
{ -229.9635f, -559.2552f, 19.3898f, 0.0f },
|
||||
{ -216.8438f, -568.9011f, 21.06016f, 3.909538f },
|
||||
{ -235.9045f, -563.3906f, 19.3898f, 0.0f },
|
||||
{ -226.6736f, -580.8316f, 20.43056f, 2.775074f },
|
||||
{ -227.5226f, -595.1979f, 20.42358f, 4.206244f },
|
||||
{ -215.0399f, -576.3941f, 21.06016f, 3.735005f },
|
||||
{ -210.592f, -583.4739f, 21.06016f, 0.0f },
|
||||
{ -228.592f, -553.1684f, 19.3898f, 5.550147f },
|
||||
{ -220.4879f, -596.382f, 21.95116f, 0.0f },
|
||||
{ -190.4774f, -552.2778f, 51.31293f, 5.305801f },
|
||||
{ -195.6267f, -550.4393f, 51.31293f, 3.752458f },
|
||||
{ -209.7257f, -557.1042f, 51.31293f, 3.525565f },
|
||||
{ -187.9531f, -567.0469f, 51.31293f, 5.305801f },
|
||||
{ -185.2083f, -562.4844f, 19.3898f, 0.9599311f },
|
||||
{ -183.4236f, -577.2674f, 46.87183f, 3.944444f },
|
||||
{ -184.6528f, -572.3663f, 49.27317f, 3.159046f },
|
||||
{ -191.2205f, -581.4965f, 21.06015f, 2.007129f },
|
||||
{ -201.224f, -570.6788f, 21.06016f, 3.577925f },
|
||||
{ -198.4653f, -580.757f, 21.06015f, 0.8901179f },
|
||||
{ -196.8767f, -574.9688f, 21.06016f, 4.29351f },
|
||||
{ -194.1302f, -548.3055f, 19.3898f, 4.153883f },
|
||||
{ -187.3333f, -550.8143f, 19.3898f, 3.385939f },
|
||||
{ -186.9792f, -556.8472f, 19.3898f, 4.153883f },
|
||||
{ -196.5504f, -587.7031f, 21.06015f, 1.27409f },
|
||||
{ -241.5938f, -578.6858f, 19.3898f, 2.775074f },
|
||||
{ -226.1615f, -573.8021f, 20.40991f, 5.218534f }
|
||||
};
|
||||
|
||||
Position const nightmareSkitterlingPos[] =
|
||||
{
|
||||
{ -184.9618f, -552.9132f, 19.3898f },
|
||||
{ -199.1406f, -573.6893f, 21.06016f },
|
||||
{ -194.5851f, -578.3386f, 21.06015f },
|
||||
{ -193.3264f, -569.809f, 21.06016f },
|
||||
{ -185.7622f, -566.6059f, 19.3898f },
|
||||
{ -181.401f, -561.684f, 19.3898f },
|
||||
{ -221.2569f, -549.3316f, 19.3898f },
|
||||
{ -215.125f, -546.0486f, 19.3898f },
|
||||
{ -210.3854f, -550.6736f, 19.3898f },
|
||||
{ -206.8715f, -545.3837f, 19.3898f },
|
||||
{ -208.3247f, -556.5833f, 19.3898f },
|
||||
{ -203.1233f, -550.8281f, 19.3898f },
|
||||
{ -198.2465f, -546.9288f, 19.3898f },
|
||||
{ -178.6389f, -564.4479f, 19.39f },
|
||||
{ -193.3698f, -581.8663f, 21.06015f },
|
||||
{ -188.1788f, -578.3715f, 21.06015f },
|
||||
{ -185.3385f, -562.592f, 19.3898f },
|
||||
{ -179.6458f, -557.9063f, 19.3898f },
|
||||
{ -226.5208f, -587.257f, 19.53274f },
|
||||
{ -199.3351f, -586.7952f, 21.06015f },
|
||||
{ -207.6545f, -594.809f, 21.06015f },
|
||||
{ -201.2587f, -593.309f, 21.06016f },
|
||||
{ -224.2743f, -592.7917f, 20.29579f },
|
||||
{ -211.9844f, -569.5417f, 21.06016f },
|
||||
{ -208.9288f, -563.6094f, 21.06016f },
|
||||
{ -200.8715f, -557.2518f, 19.3898f },
|
||||
{ -196.2396f, -553.6927f, 19.3898f },
|
||||
{ -192.1163f, -550.1024f, 19.3898f },
|
||||
{ -202.4063f, -563.1337f, 21.06016f },
|
||||
{ -195.9635f, -560.8889f, 20.58139f },
|
||||
{ -190.1094f, -557.4722f, 19.3898f },
|
||||
{ -199.3229f, -550.3785f, 19.3898f },
|
||||
{ -195.2552f, -557.0087f, 19.3898f },
|
||||
{ -190.1372f, -553.0625f, 19.3898f },
|
||||
{ -185.2118f, -557.6406f, 19.3898f },
|
||||
{ -190.6406f, -561.441f, 19.3898f },
|
||||
{ -197.7413f, -564.3021f, 21.06016f },
|
||||
{ -215.5365f, -549.8021f, 19.3898f },
|
||||
{ -212.1719f, -555.0226f, 19.3898f },
|
||||
{ -213.2344f, -561.8577f, 21.06016f },
|
||||
{ -208.5451f, -568.1146f, 21.06016f },
|
||||
{ -202.7257f, -572.5174f, 21.06016f },
|
||||
{ -205.6354f, -559.1563f, 21.06016f },
|
||||
{ -206.1615f, -553.3507f, 19.3898f },
|
||||
{ -202.5451f, -546.118f, 19.3898f },
|
||||
{ -204.1024f, -596.7518f, 21.06016f },
|
||||
{ -204.0087f, -590.8386f, 21.06016f },
|
||||
{ -198.8316f, -591.7239f, 21.06015f },
|
||||
{ -195.4375f, -586.2934f, 21.06015f },
|
||||
{ -197.6493f, -582.4653f, 21.06015f },
|
||||
{ -219.1337f, -559.7899f, 19.3898f },
|
||||
{ -221.4063f, -553.1406f, 19.3898f },
|
||||
{ -216.1215f, -564.882f, 21.06016f },
|
||||
{ -199.3125f, -578.1996f, 21.06016f },
|
||||
{ -204.684f, -569.3542f, 21.06016f },
|
||||
{ -197.8576f, -569.3489f, 21.06016f },
|
||||
{ -191.7656f, -565.8559f, 21.06016f },
|
||||
{ -213.4635f, -591.625f, 21.06015f },
|
||||
{ -206.0781f, -588.0712f, 21.06016f },
|
||||
{ -213.1997f, -585.125f, 21.06015f },
|
||||
{ -220.5174f, -581.8143f, 21.06016f },
|
||||
{ -182.8004f, -569.368f, 19.39167f },
|
||||
{ -189.0191f, -571.2674f, 21.06016f },
|
||||
{ -193.7674f, -574.7014f, 21.06016f },
|
||||
{ -226.1285f, -581.059f, 20.79114f },
|
||||
{ -218.6076f, -581.0746f, 21.06016f },
|
||||
{ -216.1094f, -576.8264f, 21.06016f },
|
||||
{ -222.1545f, -555.1077f, 19.3898f },
|
||||
{ -212.6059f, -567.2239f, 21.06016f },
|
||||
{ -203.9184f, -551.0608f, 19.3898f },
|
||||
{ -202.8663f, -590.1371f, 21.06016f },
|
||||
{ -196.4757f, -573.0833f, 21.06016f },
|
||||
{ -185.9288f, -558.125f, 19.3898f },
|
||||
{ -213.8767f, -559.3125f, 20.02806f },
|
||||
{ -221.8142f, -556.3976f, 19.3898f },
|
||||
{ -216.5017f, -553.9722f, 19.3898f },
|
||||
{ -223.7483f, -574.9896f, 21.06015f },
|
||||
{ -226.1215f, -563.0382f, 19.3898f },
|
||||
{ -213.8559f, -574.6094f, 21.06016f },
|
||||
{ -208.3854f, -571.8004f, 21.06016f },
|
||||
{ -224.5625f, -568.1476f, 19.92673f },
|
||||
{ -219.7083f, -588.6094f, 21.06015f },
|
||||
{ -218.8872f, -570.5643f, 21.06016f },
|
||||
{ -221.8264f, -562.2795f, 19.3898f },
|
||||
{ -227.9063f, -559.566f, 19.3898f },
|
||||
{ -230.4948f, -566.0191f, 19.3898f },
|
||||
{ -227.0243f, -552.6736f, 19.3898f },
|
||||
{ -231.566f, -572.1979f, 19.3898f },
|
||||
{ -231.8802f, -578.5677f, 19.3898f },
|
||||
{ -232.4462f, -562.8837f, 19.3898f },
|
||||
{ -232.4514f, -586.2518f, 19.3898f },
|
||||
{ -230.3767f, -592.8577f, 19.3898f },
|
||||
{ -232.8004f, -591.1805f, 19.3898f },
|
||||
{ -234.5208f, -559.4809f, 19.3898f },
|
||||
{ -236.5712f, -565.5573f, 19.3898f },
|
||||
{ -237.5799f, -571.5903f, 19.3898f },
|
||||
{ -238.9063f, -578.1528f, 19.3898f },
|
||||
{ -234.0608f, -598.0f, 19.95063f },
|
||||
{ -236.5122f, -591.9913f, 19.3898f },
|
||||
{ -238.8021f, -584.8594f, 19.3898f },
|
||||
};
|
||||
|
||||
Position const DarkwebDevourerPos[] =
|
||||
{
|
||||
{ -215.7064f, -553.3212f, 51.29544f, 0.7243207f },
|
||||
{ -229.285f, -568.6863f, 51.31313f, 0.8218399f },
|
||||
{ -231.3453f, -584.1043f, 51.31514f, 1.05134f }
|
||||
};
|
||||
|
||||
Position const ChatteringHorrorPos = { -233.625f, -570.5868f, 19.3898f };
|
||||
|
||||
Position const LightningPlatterPos[] =
|
||||
{
|
||||
{ -120.0434f, -638.3785f, 14.28754f, 0.03183358f }, // -120.9898 Y: -638.3776 Z: 12.34728
|
||||
{ -134.4479f, -623.0521f, 16.38484f, 0.03133297f }, // -135.3954 Y: -623.0512 Z: 14.44327
|
||||
{ -119.2101f, -617.6198f, 16.18771f, 6.252115f }, // -120.1581 Y: -617.6207 Z: 14.24549
|
||||
{ -135.7899f, -604.6667f, 17.47415f, 0.03079747f }, // -136.7385 Y: -604.6659 Z: 15.53128
|
||||
{ -129.5313f, -586.5018f, 20.52248f, 0.03022512f }, // -130.4809 Y: -586.5009 Z: 18.57832
|
||||
{ -142.0538f, -574.9202f, 21.08911f, 6.253215f }, // -143.004 Y: -574.9209 Z: 19.1443
|
||||
};
|
||||
|
||||
Position const LightningPlatterCenterPos[] =
|
||||
{
|
||||
{ -120.9898f, -638.3776f, 12.34728f },
|
||||
{ -135.3954f, -623.0512f, 14.44327f },
|
||||
{ -120.1581f, -617.6207f, 14.24549f },
|
||||
{ -136.7385f, -604.6659f, 15.53128f },
|
||||
{ -130.4809f, -586.5009f, 18.57832f },
|
||||
{ -143.004f, -574.9209f, 19.1443f }
|
||||
};
|
||||
|
||||
template<class AI>
|
||||
AI* GetDeadminesAI(Creature* creature)
|
||||
{
|
||||
|
||||
@@ -24,14 +24,43 @@
|
||||
|
||||
enum EventIds
|
||||
{
|
||||
EVENT_SUMMON_CAPTAIN_COOKIE = 1
|
||||
EVENT_SUMMON_CAPTAIN_COOKIE = 1,
|
||||
EVENT_CAST_NIGHTMARE_AURA_1,
|
||||
EVENT_CAST_NIGHTMARE_AURA_2,
|
||||
EVENT_CAST_NIGHTMARE_AURA_3,
|
||||
EVENT_ANNOUNCE_NIGHTMARE_ELIXIR_TAKES_HOLD,
|
||||
EVENT_SETUP_GLUBTOKS_NIGHTMARE,
|
||||
EVENT_SUMMON_ICICLES,
|
||||
EVENT_SUMMON_GLUBTOK,
|
||||
EVENT_ANNOUNCE_NIGHTMARE_SHIFTS,
|
||||
EVENT_DESPAWN_NIGHTMARE_FIRE,
|
||||
EVENT_SETUP_HELIX_NIGHTMARE,
|
||||
EVENT_DESPAWN_NIGHTMARE_SPIDERS,
|
||||
EVENT_SETUP_MECHANICAL_NIGHTMARE,
|
||||
EVENT_SUMMON_FOE_REAPER,
|
||||
};
|
||||
|
||||
enum TextsIds
|
||||
{
|
||||
// Id's 0 - 1 used by Foe Reaper 5000
|
||||
// Id 2 used by Defias Cannon
|
||||
SAY_ANNOUNCE_SHADOWY_FIGURE = 3
|
||||
SAY_ANNOUNCE_SHADOWY_FIGURE = 3,
|
||||
SAY_ANNOUNCE_NIGHTMARE_ELIXIR_TAKES_HOLD = 4,
|
||||
SAY_ANNOUNCE_NIGHTMARE_SHIFTS = 5,
|
||||
};
|
||||
|
||||
enum Spells
|
||||
{
|
||||
SPELL_NIGHTMARE_SLOW = 92559,
|
||||
SPELL_NIGHTMARE_AURA = 92563,
|
||||
|
||||
SPELL_CANCEL_NIGHTMARE_AURA_GLUBTOK = 92584,
|
||||
SPELL_CANCEL_NIGHTMARE_AURA_HELIX = 92585,
|
||||
SPELL_CANCEL_NIGHTMARE_AURA_MECHANICAL = 92586,
|
||||
SPELL_CANCEL_NIGHTMARE_AURA_RIPSNARL = 92587,
|
||||
|
||||
SPELL_SUMMON_ICICLE = 92189,
|
||||
SPELL_OFF_LINE = 88348
|
||||
};
|
||||
|
||||
ObjectData const creatureData[] =
|
||||
@@ -53,6 +82,7 @@ ObjectData const creatureData[] =
|
||||
ObjectData const gameobjectData[] =
|
||||
{
|
||||
{ GO_IRON_CLAD_DOOR, DATA_IRON_CLAD_DOOR },
|
||||
{ GO_FOUNDRY_DOOR, DATA_FOUNDRY_DOOR },
|
||||
{ 0, 0 } // END
|
||||
};
|
||||
|
||||
@@ -179,6 +209,20 @@ class instance_deadmines : public InstanceMapScript
|
||||
case NPC_STEAM_VALVE:
|
||||
_steamValveGuidSet.insert(creature->GetGUID());
|
||||
break;
|
||||
case NPC_GLUBTOK_NIGHTMARE_FIRE_BUNNY:
|
||||
case NPC_GLUBTOK_NIGHTMARE:
|
||||
_glubtokNightmareGuidSet.insert(creature->GetGUID());
|
||||
break;
|
||||
case NPC_HELIX_GEARBREAKER_NIGHTMARE:
|
||||
case NPC_NIGHTMARE_SKITTERLING:
|
||||
case NPC_DARKWEB_DEVOURER:
|
||||
case NPC_CHATTERING_HORROR:
|
||||
_helixNightmareGuidSet.insert(creature->GetGUID());
|
||||
break;
|
||||
case NPC_GENERAL_PURPOSE_DUMMY_JMF:
|
||||
if (_vanessaVanCleefEncounterState == NIGHTMARE_STAGE_HELIX)
|
||||
_helixNightmareGuidSet.insert(creature->GetGUID());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -276,12 +320,27 @@ class instance_deadmines : public InstanceMapScript
|
||||
case NIGHTMARE_STATE_PREPARE_TRAP:
|
||||
if (Creature* trapBunny = GetCreature(DATA_VANESSAS_TRAP_BUNNY))
|
||||
if (Creature* anchorBunny = GetCreature(DATA_VANESSA_ANCHOR_BUNNY))
|
||||
{
|
||||
trapBunny->Respawn();
|
||||
anchorBunny->Respawn();
|
||||
anchorBunny->CastSpell(trapBunny, SPELL_ROPE_BEAM, true);
|
||||
}
|
||||
break;
|
||||
case NIGHTMARE_STAGE_GLUBTOK:
|
||||
case NIGHTMARE_STAGE_MAGMA_TRAP:
|
||||
if (Creature* trapBunny = GetCreature(DATA_VANESSAS_TRAP_BUNNY))
|
||||
trapBunny->CastSpell(trapBunny, SPELL_RIDE_MAGMA_VEHICLE, true);
|
||||
break;
|
||||
case NIGHTMARE_STAGE_GLUBTOK:
|
||||
events.ScheduleEvent(EVENT_CAST_NIGHTMARE_AURA_1, Seconds(4));
|
||||
events.ScheduleEvent(EVENT_ANNOUNCE_NIGHTMARE_ELIXIR_TAKES_HOLD, Seconds(4) + Milliseconds(200));
|
||||
break;
|
||||
case NIGHTMARE_STAGE_HELIX:
|
||||
events.CancelEvent(EVENT_SUMMON_ICICLES);
|
||||
events.ScheduleEvent(EVENT_CAST_NIGHTMARE_AURA_2, Seconds(2) + Milliseconds(900));
|
||||
break;
|
||||
case NIGHTMARE_STAGE_FOE_REAPER:
|
||||
events.ScheduleEvent(EVENT_DESPAWN_NIGHTMARE_SPIDERS, Seconds(2));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -289,8 +348,15 @@ class instance_deadmines : public InstanceMapScript
|
||||
case DATA_ACTIVATED_VENT:
|
||||
_activatedVentCounter++;
|
||||
if (_activatedVentCounter == 4)
|
||||
{
|
||||
for (auto itr = _steamValveGuidSet.begin(); itr != _steamValveGuidSet.end(); itr++)
|
||||
if (Creature* valve = instance->GetCreature((*itr)))
|
||||
valve->DespawnOrUnsummon(Seconds(10));
|
||||
|
||||
SetData(DATA_VANESSA_VAN_CLEEF_ENCOUNTER, NIGHTMARE_STAGE_GLUBTOK);
|
||||
if (Creature* trapBunny = GetCreature(DATA_VANESSAS_TRAP_BUNNY))
|
||||
trapBunny->AI()->DoAction(ACTION_EJECT_PLAYERS);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -345,6 +411,118 @@ class instance_deadmines : public InstanceMapScript
|
||||
_firstCookieSpawn = false;
|
||||
}
|
||||
break;
|
||||
case EVENT_CAST_NIGHTMARE_AURA_1:
|
||||
if (Creature* trapBunny = GetCreature(DATA_VANESSAS_TRAP_BUNNY))
|
||||
if (Creature* purposeBunny = trapBunny->FindNearestCreature(NPC_GENERAL_PURPOSE_DUMMY_JMF, 50.0f, true))
|
||||
{
|
||||
purposeBunny->CastSpell(purposeBunny, SPELL_NIGHTMARE_AURA, true);
|
||||
purposeBunny->CastSpell(purposeBunny, SPELL_NIGHTMARE_SLOW, true);
|
||||
}
|
||||
break;
|
||||
case EVENT_ANNOUNCE_NIGHTMARE_ELIXIR_TAKES_HOLD:
|
||||
if (Creature* trapBunny = GetCreature(DATA_VANESSAS_TRAP_BUNNY))
|
||||
if (Creature* purposeBunny = trapBunny->FindNearestCreature(NPC_GENERAL_PURPOSE_DUMMY_JMF, 50.0f, true))
|
||||
purposeBunny->AI()->Talk(SAY_ANNOUNCE_NIGHTMARE_ELIXIR_TAKES_HOLD);
|
||||
|
||||
events.ScheduleEvent(EVENT_SETUP_GLUBTOKS_NIGHTMARE, Milliseconds(600));
|
||||
break;
|
||||
case EVENT_SETUP_GLUBTOKS_NIGHTMARE:
|
||||
instance->SummonCreature(NPC_VANESSA_VANCLEEF_NIGHTMARE, vanessaVanCleefNightmareSpawnPos[0]);
|
||||
instance->SummonCreature(NPC_GLUBTOK_NIGHTMARE, GlubtokNightmareIntroSpawnPos);
|
||||
|
||||
for (uint8 i = 0; i < 32; i++)
|
||||
instance->SummonCreature(NPC_GLUBTOK_NIGHTMARE_FIRE_BUNNY, glubtokNightmareFireBunnyPos[i]);
|
||||
|
||||
events.ScheduleEvent(EVENT_SUMMON_GLUBTOK, Seconds(14) + Milliseconds(400));
|
||||
events.ScheduleEvent(EVENT_SUMMON_ICICLES, Seconds(14));
|
||||
break;
|
||||
case EVENT_SUMMON_ICICLES:
|
||||
if (Creature* trapBunny = GetCreature(DATA_VANESSAS_TRAP_BUNNY))
|
||||
if (Creature* purposeBunny = trapBunny->FindNearestCreature(NPC_GENERAL_PURPOSE_DUMMY_JMF, 50.0f, true))
|
||||
{
|
||||
std::list<Player*> playerList;
|
||||
purposeBunny->GetPlayerListInGrid(playerList, 100.0f);
|
||||
if (!playerList.empty())
|
||||
if (Player* target = Trinity::Containers::SelectRandomContainerElement(playerList))
|
||||
purposeBunny->CastSpell(target, SPELL_SUMMON_ICICLE, true);
|
||||
}
|
||||
|
||||
events.Repeat(Seconds(3) - Milliseconds(600));
|
||||
break;
|
||||
case EVENT_SUMMON_GLUBTOK:
|
||||
if (Creature* glubtok = instance->SummonCreature(NPC_GLUBTOK_NIGHTMARE, GlubtokNightmareSpawnPos))
|
||||
glubtok->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
||||
break;
|
||||
case EVENT_CAST_NIGHTMARE_AURA_2:
|
||||
if (Creature* trapBunny = GetCreature(DATA_VANESSAS_TRAP_BUNNY))
|
||||
if (Creature* purposeBunny = trapBunny->FindNearestCreature(NPC_GENERAL_PURPOSE_DUMMY_JMF, 50.0f, true))
|
||||
{
|
||||
purposeBunny->CastSpell(purposeBunny, SPELL_CANCEL_NIGHTMARE_AURA_GLUBTOK, true);
|
||||
purposeBunny->CastSpell(purposeBunny, SPELL_NIGHTMARE_AURA, true);
|
||||
purposeBunny->CastSpell(purposeBunny, SPELL_NIGHTMARE_SLOW, true);
|
||||
}
|
||||
|
||||
events.ScheduleEvent(EVENT_ANNOUNCE_NIGHTMARE_SHIFTS, Milliseconds(200));
|
||||
events.ScheduleEvent(EVENT_DESPAWN_NIGHTMARE_FIRE, Milliseconds(400));
|
||||
break;
|
||||
case EVENT_ANNOUNCE_NIGHTMARE_SHIFTS:
|
||||
if (Creature* trapBunny = GetCreature(DATA_VANESSAS_TRAP_BUNNY))
|
||||
if (Creature* purposeBunny = trapBunny->FindNearestCreature(NPC_GENERAL_PURPOSE_DUMMY_JMF, 50.0f, true))
|
||||
purposeBunny->AI()->Talk(SAY_ANNOUNCE_NIGHTMARE_SHIFTS);
|
||||
break;
|
||||
case EVENT_DESPAWN_NIGHTMARE_FIRE:
|
||||
for (auto itr = _glubtokNightmareGuidSet.begin(); itr != _glubtokNightmareGuidSet.end(); itr++)
|
||||
if (Creature* creature = instance->GetCreature(*itr))
|
||||
if (creature->GetEntry() == NPC_GLUBTOK_NIGHTMARE_FIRE_BUNNY)
|
||||
creature->DespawnOrUnsummon();
|
||||
|
||||
events.ScheduleEvent(EVENT_SETUP_HELIX_NIGHTMARE, Seconds(2) + Milliseconds(800));
|
||||
break;
|
||||
case EVENT_SETUP_HELIX_NIGHTMARE:
|
||||
instance->SummonCreature(NPC_VANESSA_VANCLEEF_NIGHTMARE, vanessaVanCleefNightmareSpawnPos[1]);
|
||||
instance->SummonCreature(NPC_HELIX_GEARBREAKER_NIGHTMARE, HelixNightmareSpawnPos);
|
||||
break;
|
||||
case EVENT_DESPAWN_NIGHTMARE_SPIDERS:
|
||||
for (auto itr = _helixNightmareGuidSet.begin(); itr != _helixNightmareGuidSet.end(); itr++)
|
||||
if (Creature* creature = instance->GetCreature(*itr))
|
||||
if (creature->GetEntry() != NPC_HELIX_GEARBREAKER_NIGHTMARE)
|
||||
creature->DespawnOrUnsummon();
|
||||
events.ScheduleEvent(EVENT_ANNOUNCE_NIGHTMARE_SHIFTS, Milliseconds(100));
|
||||
events.ScheduleEvent(EVENT_CAST_NIGHTMARE_AURA_3, Milliseconds(200));
|
||||
break;
|
||||
case EVENT_CAST_NIGHTMARE_AURA_3:
|
||||
if (Creature* trapBunny = GetCreature(DATA_VANESSAS_TRAP_BUNNY))
|
||||
if (Creature* purposeBunny = trapBunny->FindNearestCreature(NPC_GENERAL_PURPOSE_DUMMY_JMF, 50.0f, true))
|
||||
{
|
||||
purposeBunny->CastSpell(purposeBunny, SPELL_CANCEL_NIGHTMARE_AURA_HELIX, true);
|
||||
purposeBunny->CastSpell(purposeBunny, SPELL_NIGHTMARE_AURA, true);
|
||||
purposeBunny->CastSpell(purposeBunny, SPELL_NIGHTMARE_SLOW, true);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_SETUP_MECHANICAL_NIGHTMARE, Seconds(2) + Milliseconds(400));
|
||||
break;
|
||||
case EVENT_SETUP_MECHANICAL_NIGHTMARE:
|
||||
if (GameObject* door = GetGameObject(DATA_FOUNDRY_DOOR))
|
||||
door->SetGoState(GO_STATE_ACTIVE);
|
||||
instance->SummonCreature(NPC_FOE_REAPER_5000_NIGHTMARE, FoeReaperNightmareIntroSpawnPos);
|
||||
instance->SummonCreature(NPC_VANESSA_VANCLEEF_NIGHTMARE, vanessaVanCleefNightmareSpawnPos[2]);
|
||||
for (uint8 i = 0; i < 6; i++)
|
||||
if (Creature* platter = instance->SummonCreature(NPC_VANESSA_LIGHTNING_PLATTER, LightningPlatterPos[i]))
|
||||
{
|
||||
Position const pos = LightningPlatterCenterPos[i];
|
||||
float dist = platter->GetPosition().GetExactDist2d(pos);
|
||||
bool clockwise = RAND(0, 1) == 1;
|
||||
platter->SetSpeed(MOVE_RUN, 0.25f);
|
||||
platter->GetMotionMaster()->MoveCirclePath(pos.GetPositionX(), pos.GetPositionY(), platter->GetPositionZ(), dist, clockwise, 10);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_SUMMON_FOE_REAPER, Seconds(9) + Milliseconds(500));
|
||||
break;
|
||||
case EVENT_SUMMON_FOE_REAPER:
|
||||
if (Creature* reaper = instance->SummonCreature(NPC_FOE_REAPER_5000_NIGHTMARE, FoeReaperNightmareSpawnPos))
|
||||
{
|
||||
reaper->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
||||
reaper->RemoveAurasDueToSpell(SPELL_OFF_LINE);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -360,6 +538,8 @@ class instance_deadmines : public InstanceMapScript
|
||||
uint32 _vanessaVanCleefEncounterState;
|
||||
GuidSet _generalPurposeBunnyJMF2GuidSet;
|
||||
GuidSet _steamValveGuidSet;
|
||||
GuidSet _glubtokNightmareGuidSet;
|
||||
GuidSet _helixNightmareGuidSet;
|
||||
bool _firstCookieSpawn;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user