TrinityCore
zulaman.cpp
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#include "ScriptMgr.h"
19#include "CreatureTextMgr.h"
20#include "GameObject.h"
21#include "InstanceScript.h"
22#include "MotionMaster.h"
23#include "ObjectAccessor.h"
24#include "Player.h"
25#include "ScriptedCreature.h"
26#include "zulaman.h"
27
28enum Says
29{
30 // Vol'jin
36
37 // Hex Lord Malacrass
39};
40
42{
43 // Vol'jin
45};
46
48{
60};
61
63{
68};
69
70enum Misc
71{
73
75};
76
78{
79 { 117.7349f, 1662.77f, 42.02156f, 0.0f },
80 { 132.14f, 1645.143f, 42.02158f, 0.0f },
81 { 121.8901f, 1639.118f, 42.23253f, 0.0f },
82 { 122.618f, 1639.546f, 42.11659f, 0.0f },
83};
84
86{
87 public:
88 npc_voljin_zulaman() : CreatureScript("npc_voljin_zulaman") { }
89
91 {
92 npc_voljin_zulamanAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript())
93 {
97 }
98
99 void Reset() override
100 {
101 _gongCount = 0;
102 }
103
104 bool OnGossipSelect(Player* player, uint32 menuId, uint32 gossipListId) override
105 {
107 return true;
108
109 if (menuId == GOSSIP_MENU_START_INTRO && !gossipListId)
110 {
111 _events.Reset();
116 Talk(SAY_INTRO_1, player);
117 me->SetWalk(true);
118 }
119 return false;
120 }
121
122 void DoAction(int32 action) override
123 {
124 if (action == ACTION_START_ZULAMAN)
125 {
126 if (++_gongCount == 10)
128 }
129 }
130
131 void UpdateAI(uint32 diff) override
132 {
133 _events.Update(diff);
134 while (uint32 eventId = _events.ExecuteEvent())
135 {
136 switch (eventId)
137 {
141 break;
145 break;
149 break;
153 strangeGong->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
155 break;
159 break;
161 me->SetVirtualItem(0, uint32(0));
163 strangeGong->SetFlag(GO_FLAG_NOT_SELECTABLE);
165 break;
168 break;
172 masiveGate->SetGoState(GO_STATE_ACTIVE);
174 break;
178 break;
181 break;
184 sCreatureTextMgr->SendChat(hexLordTrigger, SAY_HEXLOR_INTRO, nullptr, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_MAP);
185 break;
186 default:
187 break;
188 }
189 }
190 }
191
192 void MovementInform(uint32 movementType, uint32 pointId) override
193 {
194 if (movementType != POINT_MOTION_TYPE)
195 return;
196
197 switch (pointId)
198 {
201 me->SetFacingToObject(strangeGong); // setInFront
202 break;
204 me->SetFacingTo(4.747295f);
208 break;
209 default:
210 break;
211 }
212 }
213
214 private:
218 };
219
220 CreatureAI* GetAI(Creature* creature) const override
221 {
222 return GetZulAmanAI<npc_voljin_zulamanAI>(creature);
223 }
224};
225
227{
228 new npc_voljin_zulaman();
229}
#define sCreatureTextMgr
@ TEXT_RANGE_MAP
uint8_t uint8
Definition: Define.h:144
int32_t int32
Definition: Define.h:138
uint32_t uint32
Definition: Define.h:142
@ IN_PROGRESS
@ NOT_STARTED
@ POINT_MOTION_TYPE
Spells
Definition: PlayerAI.cpp:32
@ LANG_ADDON
@ UNIT_DYNFLAG_NONE
@ GO_FLAG_NOT_SELECTABLE
@ CHAT_MSG_ADDON
@ GO_STATE_ACTIVE
@ UNIT_NPC_FLAG_GOSSIP
Definition: UnitDefines.h:297
Says
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
Definition: CreatureAI.cpp:56
Creature *const me
Definition: CreatureAI.h:61
void SetDisplayFromModel(uint32 modelIdx)
Definition: Creature.cpp:3413
uint32 ExecuteEvent()
Definition: EventMap.cpp:73
void Update(uint32 time)
Definition: EventMap.h:56
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
Definition: EventMap.cpp:36
void Reset()
Definition: EventMap.cpp:21
virtual ObjectGuid GetGuidData(uint32 type) const override
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< float > closeEnoughDistance={})
void ReplaceAllDynamicFlags(uint32 flag)
Definition: Object.h:171
SpellCastResult DoCast(uint32 spellId)
Definition: UnitAI.cpp:89
void SetVirtualItem(uint32 slot, uint32 itemId, uint16 appearanceModId=0, uint16 itemVisual=0)
Definition: Unit.cpp:13604
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
Definition: Unit.cpp:3685
MotionMaster * GetMotionMaster()
Definition: Unit.h:1652
void SetFacingToObject(WorldObject const *object, bool force=true)
Definition: Unit.cpp:12671
void RemoveNpcFlag(NPCFlags flags)
Definition: Unit.h:983
void SetNpcFlag(NPCFlags flags)
Definition: Unit.h:982
bool SetWalk(bool enable)
Definition: Unit.cpp:12707
void SetFacingTo(float const ori, bool force=true)
Definition: Unit.cpp:12653
void SetMountDisplayId(uint32 mountDisplayId)
Definition: Unit.h:900
virtual uint32 GetData(uint32) const
Definition: ZoneScript.h:91
virtual void SetData(uint32, uint32)
Definition: ZoneScript.h:92
CreatureAI * GetAI(Creature *creature) const override
Definition: zulaman.cpp:220
TC_GAME_API GameObject * GetGameObject(WorldObject const &u, ObjectGuid const &guid)
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
npc_voljin_zulamanAI(Creature *creature)
Definition: zulaman.cpp:92
void UpdateAI(uint32 diff) override
Definition: zulaman.cpp:131
void DoAction(int32 action) override
Definition: zulaman.cpp:122
void MovementInform(uint32 movementType, uint32 pointId) override
Definition: zulaman.cpp:192
bool OnGossipSelect(Player *player, uint32 menuId, uint32 gossipListId) override
Definition: zulaman.cpp:104
@ SAY_INTRO_2
Definition: zulaman.cpp:32
@ SAY_INTRO_FAIL
Definition: zulaman.cpp:35
@ SAY_HEXLOR_INTRO
Definition: zulaman.cpp:38
@ SAY_INTRO_1
Definition: zulaman.cpp:31
@ SAY_INTRO_3
Definition: zulaman.cpp:33
@ SAY_INTRO_4
Definition: zulaman.cpp:34
@ GOSSIP_MENU_START_INTRO
Definition: zulaman.cpp:74
@ ITEM_VIRTUAL_ITEM
Definition: zulaman.cpp:72
@ POINT_INTRO
Definition: zulaman.cpp:64
@ POINT_START_DOOR_OPENING_1
Definition: zulaman.cpp:66
@ POINT_STRANGE_GONG
Definition: zulaman.cpp:65
@ POINT_START_DOOR_OPENING_2
Definition: zulaman.cpp:67
@ SPELL_BANGING_THE_GONG
Definition: zulaman.cpp:44
void AddSC_zulaman()
Definition: zulaman.cpp:226
Position const VoljinIntroWaypoint[4]
Definition: zulaman.cpp:77
@ EVENT_START_DOOR_OPENING_1
Definition: zulaman.cpp:53
@ EVENT_INTRO_MOVEPOINT_1
Definition: zulaman.cpp:49
@ EVENT_START_DOOR_OPENING_5
Definition: zulaman.cpp:57
@ EVENT_START_DOOR_OPENING_2
Definition: zulaman.cpp:54
@ EVENT_START_DOOR_OPENING_7
Definition: zulaman.cpp:59
@ EVENT_INTRO_MOVEPOINT_2
Definition: zulaman.cpp:50
@ EVENT_START_DOOR_OPENING_6
Definition: zulaman.cpp:58
@ EVENT_INTRO_MOVEPOINT_3
Definition: zulaman.cpp:51
@ EVENT_BANGING_THE_GONG
Definition: zulaman.cpp:52
@ EVENT_START_DOOR_OPENING_3
Definition: zulaman.cpp:55
@ EVENT_START_DOOR_OPENING_4
Definition: zulaman.cpp:56
@ DATA_STRANGE_GONG
Definition: zulaman.h:40
@ DATA_ZULAMAN_STATE
Definition: zulaman.h:44
@ DATA_MASSIVE_GATE
Definition: zulaman.h:41
@ DATA_HEXLORD_TRIGGER
Definition: zulaman.h:38
@ ACTION_START_ZULAMAN
Definition: zulaman.h:74