1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
/*
* This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "ScriptMgr.h"
#include "Creature.h"
#include "GameObject.h"
#include "gnomeregan.h"
#include "InstanceScript.h"
#include "Map.h"
static constexpr DungeonEncounterData Encounters[] =
{
{ DATA_BLASTMASTER_EVENT, { { 379 } } },
{ DATA_VICIOUS_FALLOUT , { { 378 } } },
{ DATA_ELECTROCUTIONER , { { 380 } } },
{ DATA_CROWD_PUMMELER , { { 381 } } },
{ DATA_THERMAPLUGG , { { 382 } } },
};
class instance_gnomeregan : public InstanceMapScript
{
public:
instance_gnomeregan() : InstanceMapScript(GNOScriptName, 90) { }
InstanceScript* GetInstanceScript(InstanceMap* map) const override
{
return new instance_gnomeregan_InstanceMapScript(map);
}
struct instance_gnomeregan_InstanceMapScript : public InstanceScript
{
instance_gnomeregan_InstanceMapScript(InstanceMap* map) : InstanceScript(map)
{
SetHeaders(DataHeader);
SetBossNumber(MAX_ENCOUNTER);
LoadDungeonEncounterData(Encounters);
}
ObjectGuid uiCaveInLeftGUID;
ObjectGuid uiCaveInRightGUID;
ObjectGuid uiBlastmasterEmiShortfuseGUID;
void OnCreatureCreate(Creature* creature) override
{
switch (creature->GetEntry())
{
case NPC_BLASTMASTER_EMI_SHORTFUSE:
uiBlastmasterEmiShortfuseGUID = creature->GetGUID();
break;
}
}
void OnGameObjectCreate(GameObject* go) override
{
switch (go->GetEntry())
{
case GO_CAVE_IN_LEFT:
uiCaveInLeftGUID = go->GetGUID();
break;
case GO_CAVE_IN_RIGHT:
uiCaveInRightGUID = go->GetGUID();
break;
}
}
void OnUnitDeath(Unit* unit) override
{
Creature* creature = unit->ToCreature();
if (creature)
switch (creature->GetEntry())
{
case NPC_VICIOUS_FALLOUT:
SetBossState(DATA_VICIOUS_FALLOUT, DONE);
break;
case NPC_ELECTROCUTIONER:
SetBossState(DATA_ELECTROCUTIONER, DONE);
break;
case NPC_CROWD_PUMMELER:
SetBossState(DATA_CROWD_PUMMELER, DONE);
break;
case NPC_MEKGINEER:
SetBossState(DATA_THERMAPLUGG, DONE);
break;
}
}
ObjectGuid GetGuidData(uint32 uiType) const override
{
switch (uiType)
{
case DATA_GO_CAVE_IN_LEFT: return uiCaveInLeftGUID;
case DATA_GO_CAVE_IN_RIGHT: return uiCaveInRightGUID;
case DATA_NPC_BASTMASTER_EMI_SHORTFUSE: return uiBlastmasterEmiShortfuseGUID;
}
return ObjectGuid::Empty;
}
};
};
void AddSC_instance_gnomeregan()
{
new instance_gnomeregan();
}
|