Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
karazhan.cpp
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6/* ScriptData
7SDName: Karazhan
8SD%Complete: 100
9SDComment: Support for Barnes (Opera controller) and Berthold (Doorman), Support for Quest 9645.
10SDCategory: Karazhan
11EndScriptData */
12
13/* ContentData
14npc_barnes
15npc_berthold
16npc_image_of_medivh
17EndContentData */
18
19#include "ScriptMgr.h"
20#include "ScriptedCreature.h"
21#include "ScriptedGossip.h"
22#include "karazhan.h"
23#include "ScriptedEscortAI.h"
24#include "Player.h"
25
27{
28 // Barnes
30 SPELL_TUXEDO = 32616,
31
32 // Berthold
34
35 // Image of Medivh
40};
41
43{
46};
47
48/*######
49# npc_barnesAI
50######*/
51
52#define GOSSIP_READY "I'm not an actor."
53
54#define SAY_READY "Splendid, I'm going to get the audience ready. Break a leg!"
55#define SAY_OZ_INTRO1 "Finally, everything is in place. Are you ready for your big stage debut?"
56#define OZ_GOSSIP1 "I'm not an actor."
57#define SAY_OZ_INTRO2 "Don't worry, you'll be fine. You look like a natural!"
58#define OZ_GOSSIP2 "Ok, I'll give it a try, then."
59
60#define SAY_RAJ_INTRO1 "The romantic plays are really tough, but you'll do better this time. You have TALENT. Ready?"
61#define RAJ_GOSSIP1 "I've never been more ready."
62
63#define OZ_GM_GOSSIP1 "[GM] Change event to EVENT_OZ"
64#define OZ_GM_GOSSIP2 "[GM] Change event to EVENT_HOOD"
65#define OZ_GM_GOSSIP3 "[GM] Change event to EVENT_RAJ"
66
72
74{
75 {0, 6000},
76 {1, 18000},
77 {2, 9000},
78 {3, 15000}
79};
80
82{
83 {4, 6000},
84 {5, 10000},
85 {6, 14000},
86 {7, 15000}
87};
88
90{
91 {8, 5000},
92 {9, 7000},
93 {10, 14000},
94 {11, 14000}
95};
96
97// Entries and spawn locations for creatures in Oz event
98float Spawns[6][2]=
99{
100 {17535, -10896}, // Dorothee
101 {17546, -10891}, // Roar
102 {17547, -10884}, // Tinhead
103 {17543, -10902}, // Strawman
104 {17603, -10892}, // Grandmother
105 {17534, -10900}, // Julianne
106};
107
108#define SPAWN_Z 90.5f
109#define SPAWN_Y -1758
110#define SPAWN_O 4.738f
111
113{
114public:
115 npc_barnes() : CreatureScript("npc_barnes") { }
116
118 {
119 npc_barnesAI(Creature* creature) : npc_escortAI(creature)
120 {
121 RaidWiped = false;
122 m_uiEventId = 0;
123 instance = creature->GetInstanceScript();
124 }
125
127
129
134
137
139 {
141
142 TalkCount = 0;
143 TalkTimer = 2000;
144 WipeTimer = 5000;
145
146 PerformanceReady = false;
147
148 if (instance)
150 }
151
153 {
154 if (!instance)
155 return;
156
158
159 //resets count for this event, in case earlier failed
160 if (m_uiEventId == EVENT_OZ)
162
163 Start(false, false);
164 }
165
166 void EnterCombat(Unit* /*who*/) OVERRIDE { }
167
169 {
170 if (!instance)
171 return;
172
173 switch (waypointId)
174 {
175 case 0:
176 DoCast(me, SPELL_TUXEDO, false);
177 instance->DoUseDoorOrButton(instance->GetData64(DATA_GO_STAGEDOORLEFT));
178 break;
179 case 4:
180 TalkCount = 0;
181 SetEscortPaused(true);
182
183 if (Creature* spotlight = me->SummonCreature(NPC_SPOTLIGHT,
184 me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0.0f,
186 {
187 spotlight->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
188 spotlight->CastSpell(spotlight, SPELL_SPOTLIGHT, false);
189 m_uiSpotlightGUID = spotlight->GetGUID();
190 }
191 break;
192 case 8:
193 instance->DoUseDoorOrButton(instance->GetData64(DATA_GO_STAGEDOORLEFT));
194 PerformanceReady = true;
195 break;
196 case 9:
198 instance->DoUseDoorOrButton(instance->GetData64(DATA_GO_CURTAINS));
199 break;
200 }
201 }
202
203 void Talk(uint32 count)
204 {
205 int32 text = 0;
206
207 switch (m_uiEventId)
208 {
209 case EVENT_OZ:
210 if (OzDialogue[count].textid)
211 text = OzDialogue[count].textid;
212 if (OzDialogue[count].timer)
213 TalkTimer = OzDialogue[count].timer;
214 break;
215
216 case EVENT_HOOD:
217 if (HoodDialogue[count].textid)
218 text = HoodDialogue[count].textid;
219 if (HoodDialogue[count].timer)
220 TalkTimer = HoodDialogue[count].timer;
221 break;
222
223 case EVENT_RAJ:
224 if (RAJDialogue[count].textid)
225 text = RAJDialogue[count].textid;
226 if (RAJDialogue[count].timer)
227 TalkTimer = RAJDialogue[count].timer;
228 break;
229 }
230
231 if (text)
232 CreatureAI::Talk(text);
233 }
234
236 {
237 SF_LOG_DEBUG("scripts", "Barnes Opera Event - Introduction complete - preparing encounter %d", m_uiEventId);
238 uint8 index = 0;
239 uint8 count = 0;
240
241 switch (m_uiEventId)
242 {
243 case EVENT_OZ:
244 index = 0;
245 count = 4;
246 break;
247 case EVENT_HOOD:
248 index = 4;
249 count = index+1;
250 break;
251 case EVENT_RAJ:
252 index = 5;
253 count = index+1;
254 break;
255 }
256
257 for (; index < count; ++index)
258 {
259 uint32 entry = ((uint32)Spawns[index][0]);
260 float PosX = Spawns[index][1];
261
263 {
264 // In case database has bad flags
265 creature->SetUInt32Value(UNIT_FIELD_FLAGS, 0);
266 creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
267 }
268 }
269
270 RaidWiped = false;
271 }
272
274 {
276
278 {
279 if (TalkTimer <= diff)
280 {
281 if (TalkCount > 3)
282 {
283 if (Creature* pSpotlight = Unit::GetCreature(*me, m_uiSpotlightGUID))
284 pSpotlight->DespawnOrUnsummon();
285
286 SetEscortPaused(false);
287 return;
288 }
289
291 ++TalkCount;
292 } else TalkTimer -= diff;
293 }
294
296 {
297 if (!RaidWiped)
298 {
299 if (WipeTimer <= diff)
300 {
301 Map* map = me->GetMap();
302 if (!map->IsRaid())
303 return;
304
305 Map::PlayerList const &PlayerList = map->GetPlayers();
306 if (PlayerList.isEmpty())
307 return;
308
309 RaidWiped = true;
310 for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
311 {
312 if (i->GetSource()->IsAlive() && !i->GetSource()->IsGameMaster())
313 {
314 RaidWiped = false;
315 break;
316 }
317 }
318
319 if (RaidWiped)
320 {
321 RaidWiped = true;
323 return;
324 }
325
326 WipeTimer = 15000;
327 } else WipeTimer -= diff;
328 }
329 }
330 }
331 };
332
333 bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) OVERRIDE
334 {
335 player->PlayerTalkClass->ClearMenus();
336 npc_barnesAI* pBarnesAI = CAST_AI(npc_barnes::npc_barnesAI, creature->AI());
337
338 switch (action)
339 {
342 player->SEND_GOSSIP_MENU(8971, creature->GetGUID());
343 break;
345 player->CLOSE_GOSSIP_MENU();
346 pBarnesAI->StartEvent();
347 break;
349 player->CLOSE_GOSSIP_MENU();
350 pBarnesAI->m_uiEventId = EVENT_OZ;
351 SF_LOG_INFO("scripts", "player (GUID " UI64FMTD ") manually set Opera event to EVENT_OZ", player->GetGUID());
352 break;
354 player->CLOSE_GOSSIP_MENU();
355 pBarnesAI->m_uiEventId = EVENT_HOOD;
356 SF_LOG_INFO("scripts", "player (GUID " UI64FMTD ") manually set Opera event to EVENT_HOOD", player->GetGUID());
357 break;
359 player->CLOSE_GOSSIP_MENU();
360 pBarnesAI->m_uiEventId = EVENT_RAJ;
361 SF_LOG_INFO("scripts", "player (GUID " UI64FMTD ") manually set Opera event to EVENT_RAJ", player->GetGUID());
362 break;
363 }
364
365 return true;
366 }
367
368 bool OnGossipHello(Player* player, Creature* creature) OVERRIDE
369 {
370 if (InstanceScript* instance = creature->GetInstanceScript())
371 {
372 // Check for death of Moroes and if opera event is not done already
373 if (instance->GetData(TYPE_MOROES) == DONE && instance->GetData(TYPE_OPERA) != DONE)
374 {
376
377 if (player->IsGameMaster())
378 {
382 }
383
384 if (npc_barnesAI* pBarnesAI = CAST_AI(npc_barnes::npc_barnesAI, creature->AI()))
385 {
386 if (!pBarnesAI->RaidWiped)
387 player->SEND_GOSSIP_MENU(8970, creature->GetGUID());
388 else
389 player->SEND_GOSSIP_MENU(8975, creature->GetGUID());
390
391 return true;
392 }
393 }
394 }
395
396 player->SEND_GOSSIP_MENU(8978, creature->GetGUID());
397 return true;
398 }
399
401 {
402 return new npc_barnesAI(creature);
403 }
404};
405
406/*###
407# npc_berthold
408####*/
409
410#define GOSSIP_ITEM_TELEPORT "Teleport me to the Guardian's Library"
411
413{
414public:
415 npc_berthold() : CreatureScript("npc_berthold") { }
416
417 bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action) OVERRIDE
418 {
419 player->PlayerTalkClass->ClearMenus();
420 if (action == GOSSIP_ACTION_INFO_DEF + 1)
421 player->CastSpell(player, SPELL_TELEPORT, true);
422
423 player->CLOSE_GOSSIP_MENU();
424 return true;
425 }
426
427 bool OnGossipHello(Player* player, Creature* creature) OVERRIDE
428 {
429 if (InstanceScript* instance = creature->GetInstanceScript())
430 {
431 // Check if Shade of Aran event is done
432 if (instance->GetData(TYPE_ARAN) == DONE)
434 }
435
436 player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
437 return true;
438 }
439};
440
441/*###
442# npc_image_of_medivh
443####*/
444
445#define SAY_DIALOG_MEDIVH_1 "You've got my attention, dragon. You'll find I'm not as easily scared as the villagers below."
446#define SAY_DIALOG_ARCANAGOS_2 "Your dabbling in the arcane has gone too far, Medivh. You've attracted the attention of powers beyond your understanding. You must leave Karazhan at once!"
447#define SAY_DIALOG_MEDIVH_3 "You dare challenge me at my own dwelling? Your arrogance is astounding, even for a dragon!"
448#define SAY_DIALOG_ARCANAGOS_4 "A dark power seeks to use you, Medivh! If you stay, dire days will follow. You must hurry, we don't have much time!"
449#define SAY_DIALOG_MEDIVH_5 "I do not know what you speak of, dragon... but I will not be bullied by this display of insolence. I'll leave Karazhan when it suits me!"
450#define SAY_DIALOG_ARCANAGOS_6 "You leave me no alternative. I will stop you by force if you won't listen to reason!"
451#define EMOTE_DIALOG_MEDIVH_7 "begins to cast a spell of great power, weaving his own essence into the magic."
452#define SAY_DIALOG_ARCANAGOS_8 "What have you done, wizard? This cannot be! I'm burning from... within!"
453#define SAY_DIALOG_MEDIVH_9 "He should not have angered me. I must go... recover my strength now..."
454
455
456static float MedivPos[4] = {-11161.49f, -1902.24f, 91.48f, 1.94f};
457static float ArcanagosPos[4] = {-11169.75f, -1881.48f, 95.39f, 4.83f};
458
460{
461public:
462 npc_image_of_medivh() : CreatureScript("npc_image_of_medivh") { }
463
465 {
466 return new npc_image_of_medivhAI(creature);
467 }
468
470 {
472 {
473 instance = creature->GetInstanceScript();
474 }
475
477
479
484
486
488 {
489 ArcanagosGUID = 0;
490
491 if (instance && instance->GetData64(DATA_IMAGE_OF_MEDIVH) == 0)
492 {
493 instance->SetData64(DATA_IMAGE_OF_MEDIVH, me->GetGUID());
494 (*me).GetMotionMaster()->MovePoint(1, MedivPos[0], MedivPos[1], MedivPos[2]);
495 Step = 0;
496 }else
497 {
498 me->DealDamage(me, me->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
499 me->RemoveCorpse();
500 }
501 }
502 void EnterCombat(Unit* /*who*/) OVERRIDE { }
503
505 {
506 if (type != POINT_MOTION_TYPE)
507 return;
508 if (id == 1)
509 {
510 StartEvent();
511 me->SetOrientation(MedivPos[3]);
512 me->SetOrientation(MedivPos[3]);
513 }
514 }
515
517 {
518 Step = 1;
519 EventStarted = true;
521 if (!Arcanagos)
522 return;
523 ArcanagosGUID = Arcanagos->GetGUID();
524 Arcanagos->SetDisableGravity(true);
525 (*Arcanagos).GetMotionMaster()->MovePoint(0, ArcanagosPos[0], ArcanagosPos[1], ArcanagosPos[2]);
526 Arcanagos->SetOrientation(ArcanagosPos[3]);
527 me->SetOrientation(MedivPos[3]);
528 YellTimer = 10000;
529 }
530
532 {
534 Map* map = me->GetMap();
535 switch (Step)
536 {
537 case 0: return 9999999;
538 case 1:
540 return 10000;
541 case 2:
542 if (arca)
544 return 20000;
545 case 3:
547 return 10000;
548 case 4:
549 if (arca)
551 return 20000;
552 case 5:
554 return 20000;
555 case 6:
556 if (arca)
558 return 10000;
559 case 7:
560 FireArcanagosTimer = 500;
561 return 5000;
562 case 8:
563 FireMedivhTimer = 500;
565 return 10000;
566 case 9:
567 me->MonsterTextEmote(EMOTE_DIALOG_MEDIVH_7, 0, false);
568 return 10000;
569 case 10:
570 if (arca)
571 DoCast(arca, SPELL_CONFLAGRATION_BLAST, false);
572 return 1000;
573 case 11:
574 if (arca)
576 return 5000;
577 case 12:
578 arca->GetMotionMaster()->MovePoint(0, -11010.82f, -1761.18f, 156.47f);
579 arca->setActive(true);
580 arca->InterruptNonMeleeSpells(true);
581 arca->SetSpeed(MOVE_FLIGHT, 2.0f);
582 return 10000;
583 case 13:
585 return 10000;
586 case 14:
587 me->SetVisible(false);
588 me->ClearInCombat();
589
590 if (map->IsRaid())
591 {
592 InstanceMap::PlayerList const &PlayerList = map->GetPlayers();
593 for (InstanceMap::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
594 {
595 if (i->GetSource()->IsAlive())
596 {
597 if (i->GetSource()->GetQuestStatus(9645) == QUEST_STATUS_INCOMPLETE)
598 i->GetSource()->CompleteQuest(9645);
599 }
600 }
601 }
602 return 50000;
603 case 15:
604 arca->DealDamage(arca, arca->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
605 return 5000;
606 default : return 9999999;
607 }
608 }
609
611 {
612 if (YellTimer <= diff)
613 {
614 if (EventStarted)
616 } else YellTimer -= diff;
617
618 if (Step >= 7 && Step <= 12)
619 {
621
622 if (FireArcanagosTimer <= diff)
623 {
624 if (arca)
625 arca->CastSpell(me, SPELL_FIRE_BALL, false);
626 FireArcanagosTimer = 6000;
627 } else FireArcanagosTimer -= diff;
628
629 if (FireMedivhTimer <= diff)
630 {
631 if (arca)
632 DoCast(arca, SPELL_FIRE_BALL);
633 FireMedivhTimer = 5000;
634 } else FireMedivhTimer -= diff;
635 }
636 }
637 };
638};
639
641{
642 new npc_barnes();
643 new npc_berthold();
645}
@ IN_MILLISECONDS
Definition Common.h:125
@ HOUR
Definition Common.h:120
std::int32_t int32
Definition Define.h:73
#define UI64FMTD
Definition Define.h:64
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
std::uint64_t uint64
Definition Define.h:76
@ GOSSIP_ICON_CHAT
Definition GossipDef.h:46
@ GOSSIP_ICON_DOT
Definition GossipDef.h:56
@ IN_PROGRESS
@ DONE
#define SF_LOG_DEBUG(filterType__,...)
Definition Log.h:134
#define SF_LOG_INFO(filterType__,...)
Definition Log.h:137
@ POINT_MOTION_TYPE
@ TEMPSUMMON_TIMED_OR_DEAD_DESPAWN
Definition Object.h:68
@ TEMPSUMMON_CORPSE_TIMED_DESPAWN
Definition Object.h:73
@ QUEST_STATUS_INCOMPLETE
Definition QuestDef.h:89
#define CAST_AI(a, b)
@ STATE_ESCORT_PAUSED
@ GOSSIP_SENDER_MAIN
@ GOSSIP_ACTION_INFO_DEF
@ SPELL_SCHOOL_MASK_NORMAL
@ MOVE_FLIGHT
Definition Unit.h:561
@ UNIT_FLAG_NON_ATTACKABLE
Definition Unit.h:626
@ UNIT_FLAG_NOT_SELECTABLE
Definition Unit.h:650
@ DIRECT_DAMAGE
Definition Unit.h:614
@ UNIT_FIELD_FLAGS
Creatures
void Talk(uint8 id, WorldObject const *whisperTarget=NULL)
CreatureScript(const char *name)
bool isEmpty() const
Definition LinkedList.h:86
Definition Map.h:238
MapRefManager PlayerList
Definition Map.h:406
bool IsRaid() const
Definition Map.h:372
PlayerList const & GetPlayers() const
Definition Map.h:407
iterator end()
iterator begin()
LinkedListHead::Iterator< MapReference const > const_iterator
void MovePoint(uint32 id, Position const &pos, bool generatePath=true)
uint64 GetGUID() const
Definition Object.h:119
void DoCast(uint32 spellId)
Definition UnitAI.cpp:110
Definition Unit.h:1367
void CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=NULL, AuraEffect const *triggeredByAura=NULL, uint64 originalCaster=0)
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true)
Definition Unit.cpp:1433
MotionMaster * GetMotionMaster()
Definition Unit.h:2605
uint32 DealDamage(Unit *victim, uint32 damage, CleanDamage const *cleanDamage=NULL, DamageEffectType damagetype=DIRECT_DAMAGE, SpellSchoolMask damageSchoolMask=SPELL_SCHOOL_MASK_NORMAL, SpellInfo const *spellProto=NULL, bool durabilityLoss=true)
static Creature * GetCreature(WorldObject &object, uint64 guid)
Definition Unit.cpp:4905
uint32 GetHealth() const
Definition Unit.h:1600
static Unit * GetUnit(WorldObject &object, uint64 guid)
Definition Unit.cpp:4895
void SetSpeed(UnitMoveType mtype, float rate, bool forced=false)
Definition Unit.cpp:4318
bool SetDisableGravity(bool disable, bool packetOnly=false)
Definition Unit.cpp:9156
InstanceScript * GetInstanceScript()
Definition Object.cpp:1612
void setActive(bool isActiveObject)
Definition Object.cpp:1542
void MonsterYell(const char *text, Language language, WorldObject const *target)
Definition Object.cpp:2411
bool OnGossipHello(Player *player, Creature *creature) OVERRIDE
Definition karazhan.cpp:368
bool OnGossipSelect(Player *player, Creature *creature, uint32, uint32 action) OVERRIDE
Definition karazhan.cpp:333
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition karazhan.cpp:400
bool OnGossipSelect(Player *player, Creature *, uint32, uint32 action) OVERRIDE
Definition karazhan.cpp:417
bool OnGossipHello(Player *player, Creature *creature) OVERRIDE
Definition karazhan.cpp:427
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition karazhan.cpp:464
Spawns
Definition hyjalAI.cpp:24
static float ArcanagosPos[4]
Definition karazhan.cpp:457
#define OZ_GOSSIP1
Definition karazhan.cpp:56
#define OZ_GM_GOSSIP2
Definition karazhan.cpp:64
static float MedivPos[4]
Definition karazhan.cpp:456
#define SAY_DIALOG_MEDIVH_1
Definition karazhan.cpp:445
#define SAY_DIALOG_ARCANAGOS_4
Definition karazhan.cpp:448
#define SAY_DIALOG_ARCANAGOS_8
Definition karazhan.cpp:452
#define SPAWN_Y
Definition karazhan.cpp:109
@ NPC_ARCANAGOS
Definition karazhan.cpp:44
@ NPC_SPOTLIGHT
Definition karazhan.cpp:45
#define OZ_GOSSIP2
Definition karazhan.cpp:58
static Dialogue HoodDialogue[]
Definition karazhan.cpp:81
#define SPAWN_O
Definition karazhan.cpp:110
@ SPELL_TUXEDO
Definition karazhan.cpp:30
@ SPELL_FIRE_BALL
Definition karazhan.cpp:36
@ SPELL_CONFLAGRATION_BLAST
Definition karazhan.cpp:38
@ SPELL_MANA_SHIELD
Definition karazhan.cpp:39
@ SPELL_TELEPORT
Definition karazhan.cpp:33
@ SPELL_SPOTLIGHT
Definition karazhan.cpp:29
@ SPELL_UBER_FIREBALL
Definition karazhan.cpp:37
#define SAY_DIALOG_ARCANAGOS_2
Definition karazhan.cpp:446
static Dialogue OzDialogue[]
Definition karazhan.cpp:73
float Spawns[6][2]
Definition karazhan.cpp:98
#define SPAWN_Z
Definition karazhan.cpp:108
#define SAY_DIALOG_MEDIVH_3
Definition karazhan.cpp:447
#define SAY_DIALOG_ARCANAGOS_6
Definition karazhan.cpp:450
#define EMOTE_DIALOG_MEDIVH_7
Definition karazhan.cpp:451
#define GOSSIP_ITEM_TELEPORT
Definition karazhan.cpp:410
#define OZ_GM_GOSSIP3
Definition karazhan.cpp:65
#define SAY_DIALOG_MEDIVH_9
Definition karazhan.cpp:453
static Dialogue RAJDialogue[]
Definition karazhan.cpp:89
#define SAY_DIALOG_MEDIVH_5
Definition karazhan.cpp:449
#define OZ_GM_GOSSIP1
Definition karazhan.cpp:63
void AddSC_karazhan()
Definition karazhan.cpp:640
@ EVENT_HOOD
Definition karazhan.h:48
@ EVENT_OZ
Definition karazhan.h:47
@ EVENT_RAJ
Definition karazhan.h:49
@ DATA_GO_CURTAINS
Definition karazhan.h:30
@ DATA_GO_STAGEDOORLEFT
Definition karazhan.h:31
@ TYPE_MOROES
Definition karazhan.h:12
@ DATA_IMAGE_OF_MEDIVH
Definition karazhan.h:39
@ TYPE_OPERA
Definition karazhan.h:15
@ TYPE_ARAN
Definition karazhan.h:17
@ DATA_OPERA_OZ_DEATHCOUNT
Definition karazhan.h:25
@ DATA_OPERA_PERFORMANCE
Definition karazhan.h:24
int32 textid
Definition karazhan.cpp:69
uint32 timer
Definition karazhan.cpp:70
void SetOrientation(float orientation)
Definition Object.h:323
Creature * me
ScriptedAI(Creature *creature)
void Reset() OVERRIDE
Definition karazhan.cpp:138
void WaypointReached(uint32 waypointId) OVERRIDE
Definition karazhan.cpp:168
void Talk(uint32 count)
Definition karazhan.cpp:203
void EnterCombat(Unit *) OVERRIDE
Definition karazhan.cpp:166
InstanceScript * instance
Definition karazhan.cpp:126
npc_barnesAI(Creature *creature)
Definition karazhan.cpp:119
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition karazhan.cpp:273
void EnterEvadeMode() OVERRIDE
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
bool HasEscortState(uint32 escortState) const
npc_escortAI(Creature *creature)
void SetEscortPaused(bool on)
void Start(bool isActiveAttacker=true, bool run=false, uint64 playerGUID=0, Quest const *quest=NULL, bool instantRespawn=false, bool canLoopPath=false, bool resetWaypoints=true)
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition karazhan.cpp:610
void MovementInform(uint32 type, uint32 id) OVERRIDE
Definition karazhan.cpp:504