Boss/Script: Add Crazed Apothecary to Apothecary Hummel encounter

Closes #19520
Closes #24176
This commit is contained in:
Killyana
2020-02-18 20:22:02 +01:00
parent f7f630bcb3
commit 3181a1c87f
4 changed files with 59 additions and 27 deletions

View File

@@ -70,7 +70,9 @@ enum ApothecaryEvents
EVENT_PERFUME_SPRAY,
EVENT_COLOGNE_SPRAY,
EVENT_CALL_BAXTER,
EVENT_CALL_FRYE
EVENT_CALL_FRYE,
EVENT_CALL_CRAZED_APOTHECARY,
EVENT_CRAZED_APOTHECARY
};
enum ApothecaryMisc
@@ -220,8 +222,9 @@ class boss_apothecary_hummel : public CreatureScript
events.ScheduleEvent(EVENT_CALL_FRYE, 14s);
events.ScheduleEvent(EVENT_PERFUME_SPRAY, Milliseconds(3640));
events.ScheduleEvent(EVENT_CHAIN_REACTION, 15s);
events.ScheduleEvent(EVENT_CALL_CRAZED_APOTHECARY, 15s);
events.ScheduleEvent(EVENT_CRAZED_APOTHECARY, 15s);
Talk(SAY_SUMMON_ADDS);
std::vector<Creature*> trashs;
me->GetCreatureListWithEntryInGrid(trashs, NPC_CROWN_APOTHECARY);
for (Creature* crea : trashs)
@@ -244,6 +247,13 @@ class boss_apothecary_hummel : public CreatureScript
summons.DoAction(ACTION_START_FIGHT, pred);
break;
}
case EVENT_CALL_CRAZED_APOTHECARY:
Talk(SAY_SUMMON_ADDS);
break;
case EVENT_CRAZED_APOTHECARY:
instance->SetData(DATA_SPAWN_VALENTINE_ADDS, 0);
events.Repeat(Seconds(4), Seconds(6));
break;
case EVENT_PERFUME_SPRAY:
DoCastVictim(SPELL_PERFUME_SPRAY);
events.Repeat(Milliseconds(3640));

View File

@@ -40,24 +40,10 @@ enum Yells
SAY_ARCHMAGE = 0
};
enum Creatures
{
NPC_ASH = 3850,
NPC_ADA = 3849,
NPC_ARCHMAGE_ARUGAL = 4275,
NPC_ARUGAL_VOIDWALKER = 4627
};
enum GameObjects
{
GO_COURTYARD_DOOR = 18895, //door to open when talking to NPC's
GO_SORCERER_DOOR = 18972, //door to open when Fenrus the Devourer
GO_ARUGAL_DOOR = 18971 //door to open when Wolf Master Nandos
};
enum Spells
{
SPELL_ASHCROMBE_TELEPORT = 15742
SPELL_ASHCROMBE_TELEPORT = 15742,
SPELL_SUMMON_VALENTINE_ADD = 68610
};
const Position SpawnLocation[] =
@@ -68,6 +54,7 @@ const Position SpawnLocation[] =
{-140.794f, 2178.037f, 128.448f, 4.090f},
{-138.640f, 2170.159f, 136.577f, 2.737f}
};
class instance_shadowfang_keep : public InstanceMapScript
{
public:
@@ -107,9 +94,20 @@ public:
{
switch (creature->GetEntry())
{
case NPC_ASH: uiAshGUID = creature->GetGUID(); break;
case NPC_ADA: uiAdaGUID = creature->GetGUID(); break;
case NPC_ARCHMAGE_ARUGAL: uiArchmageArugalGUID = creature->GetGUID(); break;
case NPC_ASH:
uiAshGUID = creature->GetGUID();
break;
case NPC_ADA:
uiAdaGUID = creature->GetGUID();
break;
case NPC_ARCHMAGE_ARUGAL:
uiArchmageArugalGUID = creature->GetGUID();
break;
case NPC_DND_CRAZED_APOTHECARY_GENERATOR:
_crazedApothecaryGeneratorGUIDs.push_back(creature->GetGUID());
break;
default:
break;
}
}
@@ -179,6 +177,15 @@ public:
DoUseDoorOrButton(DoorArugalGUID);
m_auiEncounter[3] = data;
break;
case DATA_SPAWN_VALENTINE_ADDS:
for (ObjectGuid guid : _crazedApothecaryGeneratorGUIDs)
{
if (Creature* generator = instance->GetCreature(guid))
generator->CastSpell(nullptr, SPELL_SUMMON_VALENTINE_ADD);
}
break;
default:
break;
}
if (data == DONE)
@@ -279,6 +286,9 @@ public:
} else uiTimer -= uiDiff;
}
}
private:
GuidVector _crazedApothecaryGeneratorGUIDs;
};
};

View File

@@ -56,11 +56,6 @@ enum Spells
SPELL_DARK_OFFERING = 7154
};
enum Creatures
{
NPC_ASH = 3850
};
class npc_shadowfang_prisoner : public CreatureScript
{
public:

View File

@@ -30,7 +30,24 @@ enum SKDataTypes
TYPE_FENRUS = 3,
TYPE_NANDOS = 4,
BOSS_ARUGAL = 5,
DATA_APOTHECARY_HUMMEL = 6
DATA_APOTHECARY_HUMMEL = 6,
DATA_SPAWN_VALENTINE_ADDS = 7
};
enum SKCreatures
{
NPC_ASH = 3850,
NPC_ADA = 3849,
NPC_ARCHMAGE_ARUGAL = 4275,
NPC_ARUGAL_VOIDWALKER = 4627,
NPC_DND_CRAZED_APOTHECARY_GENERATOR = 36212
};
enum SKGameObjects
{
GO_COURTYARD_DOOR = 18895, //door to open when talking to NPC's
GO_SORCERER_DOOR = 18972, //door to open when Fenrus the Devourer
GO_ARUGAL_DOOR = 18971 //door to open when Wolf Master Nandos
};
template <class AI, class T>