AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
zone_dalaran.cpp File Reference
#include "AreaDefines.h"
#include "CreatureScript.h"
#include "Map.h"
#include "MoveSplineInit.h"
#include "Player.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
#include "TaskScheduler.h"
#include "World.h"
#include <algorithm>
#include <array>

Go to the source code of this file.

Classes

class  npc_steam_powered_auctioneer
 
struct  npc_steam_powered_auctioneer::npc_steam_powered_auctioneerAI
 
class  npc_mei_francis_mount
 
struct  npc_mei_francis_mount::npc_mei_francis_mountAI
 
class  npc_shandy_dalaran
 
struct  npc_shandy_dalaran::npc_shandy_dalaranAI
 
class  npc_archmage_landalock
 
struct  npc_archmage_landalock::npc_archmage_landalockAI
 
class  npc_mageguard_dalaran
 
struct  npc_mageguard_dalaran::npc_mageguard_dalaranAI
 
struct  npc_minigob_manabonk
 
class  npc_dalaran_mage
 
struct  npc_dalaran_mage::npc_dalaran_mageAI
 
class  npc_dalaran_warrior
 
struct  npc_dalaran_warrior::npc_dalaran_warriorAI
 
struct  npc_cosmetic_toy_plane
 

Enumerations

enum  DisguiseEvent {
  ACTION_SHANDY_INTRO = 0 ,
  ACTION_WATER = 1 ,
  ACTION_SHIRTS = 2 ,
  ACTION_PANTS = 3 ,
  ACTION_UNMENTIONABLES = 4 ,
  EVENT_INTRO_DH1 = 1 ,
  EVENT_INTRO_DH2 = 2 ,
  EVENT_INTRO_DH3 = 3 ,
  EVENT_INTRO_DH4 = 4 ,
  EVENT_INTRO_DH5 = 5 ,
  EVENT_INTRO_DH6 = 6 ,
  EVENT_OUTRO_DH = 7 ,
  SAY_SHANDY1 = 0 ,
  SAY_SHANDY2 = 1 ,
  SAY_SHANDY3 = 2 ,
  SAY_SHANDY_WATER = 3 ,
  SAY_SHANDY4 = 7 ,
  SAY_SHANDY5 = 8 ,
  SAY_SHANDY6 = 9
}
 
enum  DisguiseMisc {
  QUEST_SUITABLE_DISGUISE_A = 20438 ,
  QUEST_SUITABLE_DISGUISE_H = 24556 ,
  SPELL_EVOCATION_VISUAL = 69659 ,
  NPC_AQUANOS_ENTRY = 36851 ,
  GOSSIP_MENU_AQUANOS = 10854 ,
  GOSSIP_AQUANOS_ALLIANCE = 0 ,
  GOSSIP_AQUANOS_HORDE = 1
}
 
enum  spells {
  SPELL_WARRIOR_BATTLESHOUT = 9128 ,
  SPELL_WARRIOR_DISARM = 6713 ,
  SPELL_WARRIOR_SHOUT = 19134 ,
  SPELL_WARRIOR_HAMSTRING = 9080 ,
  SPELL_BLINK = 14514 ,
  SPELL_BLIZZARD = 44178 ,
  SPELL_COC = 12611 ,
  SPELL_FROST_NOVA = 15532 ,
  SPELL_FROSTFIRE = 44614
}
 
enum  ArchmageLandalockQuests {
  QUEST_SARTHARION_MUST_DIE = 24579 ,
  QUEST_ANUBREKHAN_MUST_DIE = 24580 ,
  QUEST_NOTH_THE_PLAGUEBINGER_MUST_DIE = 24581 ,
  QUEST_INSTRUCTOR_RAZUVIOUS_MUST_DIE = 24582 ,
  QUEST_PATCHWERK_MUST_DIE = 24583 ,
  QUEST_MALYGOS_MUST_DIE = 24584 ,
  QUEST_FLAME_LEVIATHAN_MUST_DIE = 24585 ,
  QUEST_RAZORSCALE_MUST_DIE = 24586 ,
  QUEST_IGNIS_THE_FURNACE_MASTER_MUST_DIE = 24587 ,
  QUEST_XT_002_DECONSTRUCTOR_MUST_DIE = 24588 ,
  QUEST_LORD_JARAXXUS_MUST_DIE = 24589 ,
  QUEST_LORD_MARROWGAR_MUST_DIE = 24590
}
 
enum  ArchmageLandalockImages {
  NPC_SARTHARION_IMAGE = 37849 ,
  NPC_ANUBREKHAN_IMAGE = 37850 ,
  NPC_NOTH_THE_PLAGUEBINGER_IMAGE = 37851 ,
  NPC_INSTRUCTOR_RAZUVIOUS_IMAGE = 37853 ,
  NPC_PATCHWERK_IMAGE = 37854 ,
  NPC_MALYGOS_IMAGE = 37855 ,
  NPC_FLAME_LEVIATHAN_IMAGE = 37856 ,
  NPC_RAZORSCALE_IMAGE = 37858 ,
  NPC_IGNIS_THE_FURNACE_MASTER_IMAGE = 37859 ,
  NPC_XT_002_DECONSTRUCTOR_IMAGE = 37861 ,
  NPC_LORD_JARAXXUS_IMAGE = 37862 ,
  NPC_LORD_MARROWGAR_IMAGE = 37864
}
 
enum  Spells {
  SPELL_TRESPASSER_A = 54028 ,
  SPELL_TRESPASSER_H = 54029 ,
  SPELL_SUNREAVER_DISGUISE_FEMALE = 70973 ,
  SPELL_SUNREAVER_DISGUISE_MALE = 70974 ,
  SPELL_SILVER_COVENANT_DISGUISE_FEMALE = 70971 ,
  SPELL_SILVER_COVENANT_DISGUISE_MALE = 70972
}
 
enum  NPCs {
  NPC_SILVER_COVENANT_GUARDIAN_MAGE = 29254 ,
  NPC_SUNREAVER_GUARDIAN_MAGE = 29255
}
 
enum  MinigobData {
  SPELL_MANABONKED = 61834 ,
  SPELL_TELEPORT_VISUAL = 51347 ,
  SPELL_IMPROVED_BLINK = 61995 ,
  EVENT_SELECT_TARGET = 1 ,
  EVENT_POLYMORPH = 2 ,
  EVENT_LAUGH = 3 ,
  EVENT_MOVE = 4 ,
  EVENT_DESPAWN_VISUAL = 5 ,
  EVENT_DESPAWN = 6 ,
  MAIL_MINIGOB_ENTRY = 264 ,
  MAIL_DELIVER_DELAY_MIN = 5 * MINUTE ,
  MAIL_DELIVER_DELAY_MAX = 15 * MINUTE
}
 
enum  ToyPlane {
  NPC_DND_DALARAN_TOY_STORE_PLANE_STRING_HOOK = 29807 ,
  SPELL_TOY_PLANE_CABLE = 55281
}
 

Functions

template<std::size_t N>
bool IsInsideWMOGroups (WorldObject const *who, std::array< int32, N > const &groups)
 
void AddSC_dalaran ()
 

Variables

constexpr float GUARD_WATCH_RANGE = 40.0f
 
constexpr std::array< int32, 11 > WMO_GROUPS_SILVER_ENCLAVE
 
constexpr std::array< int32, 7 > WMO_GROUPS_SUNREAVERS_SANCTUARY
 

Enumeration Type Documentation

◆ ArchmageLandalockImages

Enumerator
NPC_SARTHARION_IMAGE 
NPC_ANUBREKHAN_IMAGE 
NPC_NOTH_THE_PLAGUEBINGER_IMAGE 
NPC_INSTRUCTOR_RAZUVIOUS_IMAGE 
NPC_PATCHWERK_IMAGE 
NPC_MALYGOS_IMAGE 
NPC_FLAME_LEVIATHAN_IMAGE 
NPC_RAZORSCALE_IMAGE 
NPC_IGNIS_THE_FURNACE_MASTER_IMAGE 
NPC_XT_002_DECONSTRUCTOR_IMAGE 
NPC_LORD_JARAXXUS_IMAGE 
NPC_LORD_MARROWGAR_IMAGE 
294{
295 NPC_SARTHARION_IMAGE = 37849,
296 NPC_ANUBREKHAN_IMAGE = 37850,
299 NPC_PATCHWERK_IMAGE = 37854,
300 NPC_MALYGOS_IMAGE = 37855,
302 NPC_RAZORSCALE_IMAGE = 37858,
307};
@ NPC_ANUBREKHAN_IMAGE
Definition zone_dalaran.cpp:296
@ NPC_LORD_MARROWGAR_IMAGE
Definition zone_dalaran.cpp:306
@ NPC_IGNIS_THE_FURNACE_MASTER_IMAGE
Definition zone_dalaran.cpp:303
@ NPC_XT_002_DECONSTRUCTOR_IMAGE
Definition zone_dalaran.cpp:304
@ NPC_SARTHARION_IMAGE
Definition zone_dalaran.cpp:295
@ NPC_PATCHWERK_IMAGE
Definition zone_dalaran.cpp:299
@ NPC_INSTRUCTOR_RAZUVIOUS_IMAGE
Definition zone_dalaran.cpp:298
@ NPC_NOTH_THE_PLAGUEBINGER_IMAGE
Definition zone_dalaran.cpp:297
@ NPC_LORD_JARAXXUS_IMAGE
Definition zone_dalaran.cpp:305
@ NPC_MALYGOS_IMAGE
Definition zone_dalaran.cpp:300
@ NPC_FLAME_LEVIATHAN_IMAGE
Definition zone_dalaran.cpp:301
@ NPC_RAZORSCALE_IMAGE
Definition zone_dalaran.cpp:302

◆ ArchmageLandalockQuests

Enumerator
QUEST_SARTHARION_MUST_DIE 
QUEST_ANUBREKHAN_MUST_DIE 
QUEST_NOTH_THE_PLAGUEBINGER_MUST_DIE 
QUEST_INSTRUCTOR_RAZUVIOUS_MUST_DIE 
QUEST_PATCHWERK_MUST_DIE 
QUEST_MALYGOS_MUST_DIE 
QUEST_FLAME_LEVIATHAN_MUST_DIE 
QUEST_RAZORSCALE_MUST_DIE 
QUEST_IGNIS_THE_FURNACE_MASTER_MUST_DIE 
QUEST_XT_002_DECONSTRUCTOR_MUST_DIE 
QUEST_LORD_JARAXXUS_MUST_DIE 
QUEST_LORD_MARROWGAR_MUST_DIE 
278{
291};
@ QUEST_INSTRUCTOR_RAZUVIOUS_MUST_DIE
Definition zone_dalaran.cpp:282
@ QUEST_MALYGOS_MUST_DIE
Definition zone_dalaran.cpp:284
@ QUEST_LORD_MARROWGAR_MUST_DIE
Definition zone_dalaran.cpp:290
@ QUEST_ANUBREKHAN_MUST_DIE
Definition zone_dalaran.cpp:280
@ QUEST_FLAME_LEVIATHAN_MUST_DIE
Definition zone_dalaran.cpp:285
@ QUEST_IGNIS_THE_FURNACE_MASTER_MUST_DIE
Definition zone_dalaran.cpp:287
@ QUEST_LORD_JARAXXUS_MUST_DIE
Definition zone_dalaran.cpp:289
@ QUEST_RAZORSCALE_MUST_DIE
Definition zone_dalaran.cpp:286
@ QUEST_XT_002_DECONSTRUCTOR_MUST_DIE
Definition zone_dalaran.cpp:288
@ QUEST_SARTHARION_MUST_DIE
Definition zone_dalaran.cpp:279
@ QUEST_PATCHWERK_MUST_DIE
Definition zone_dalaran.cpp:283
@ QUEST_NOTH_THE_PLAGUEBINGER_MUST_DIE
Definition zone_dalaran.cpp:281

◆ DisguiseEvent

Enumerator
ACTION_SHANDY_INTRO 
ACTION_WATER 
ACTION_SHIRTS 
ACTION_PANTS 
ACTION_UNMENTIONABLES 
EVENT_INTRO_DH1 
EVENT_INTRO_DH2 
EVENT_INTRO_DH3 
EVENT_INTRO_DH4 
EVENT_INTRO_DH5 
EVENT_INTRO_DH6 
EVENT_OUTRO_DH 
SAY_SHANDY1 
SAY_SHANDY2 
SAY_SHANDY3 
SAY_SHANDY_WATER 
SAY_SHANDY4 
SAY_SHANDY5 
SAY_SHANDY6 
83{
85 ACTION_WATER = 1,
86 ACTION_SHIRTS = 2,
87 ACTION_PANTS = 3,
89
97
98 SAY_SHANDY1 = 0,
99 SAY_SHANDY2 = 1,
100 SAY_SHANDY3 = 2,
101 SAY_SHANDY_WATER = 3, // shirts = 4, pants = 5, unmentionables = 6
102 SAY_SHANDY4 = 7,
103 SAY_SHANDY5 = 8,
104 SAY_SHANDY6 = 9,
105};
@ EVENT_INTRO_DH2
Definition zone_dalaran.cpp:91
@ SAY_SHANDY6
Definition zone_dalaran.cpp:104
@ SAY_SHANDY3
Definition zone_dalaran.cpp:100
@ EVENT_INTRO_DH1
Definition zone_dalaran.cpp:90
@ SAY_SHANDY1
Definition zone_dalaran.cpp:98
@ EVENT_INTRO_DH3
Definition zone_dalaran.cpp:92
@ ACTION_PANTS
Definition zone_dalaran.cpp:87
@ ACTION_UNMENTIONABLES
Definition zone_dalaran.cpp:88
@ SAY_SHANDY_WATER
Definition zone_dalaran.cpp:101
@ EVENT_OUTRO_DH
Definition zone_dalaran.cpp:96
@ EVENT_INTRO_DH6
Definition zone_dalaran.cpp:95
@ ACTION_WATER
Definition zone_dalaran.cpp:85
@ SAY_SHANDY5
Definition zone_dalaran.cpp:103
@ EVENT_INTRO_DH5
Definition zone_dalaran.cpp:94
@ ACTION_SHIRTS
Definition zone_dalaran.cpp:86
@ SAY_SHANDY2
Definition zone_dalaran.cpp:99
@ ACTION_SHANDY_INTRO
Definition zone_dalaran.cpp:84
@ SAY_SHANDY4
Definition zone_dalaran.cpp:102
@ EVENT_INTRO_DH4
Definition zone_dalaran.cpp:93

◆ DisguiseMisc

Enumerator
QUEST_SUITABLE_DISGUISE_A 
QUEST_SUITABLE_DISGUISE_H 
SPELL_EVOCATION_VISUAL 
NPC_AQUANOS_ENTRY 
GOSSIP_MENU_AQUANOS 
GOSSIP_AQUANOS_ALLIANCE 
GOSSIP_AQUANOS_HORDE 
108{
111
113
114 NPC_AQUANOS_ENTRY = 36851,
115
116 GOSSIP_MENU_AQUANOS = 10854,
119};
@ GOSSIP_AQUANOS_HORDE
Definition zone_dalaran.cpp:118
@ QUEST_SUITABLE_DISGUISE_H
Definition zone_dalaran.cpp:110
@ GOSSIP_AQUANOS_ALLIANCE
Definition zone_dalaran.cpp:117
@ NPC_AQUANOS_ENTRY
Definition zone_dalaran.cpp:114
@ SPELL_EVOCATION_VISUAL
Definition zone_dalaran.cpp:112
@ QUEST_SUITABLE_DISGUISE_A
Definition zone_dalaran.cpp:109
@ GOSSIP_MENU_AQUANOS
Definition zone_dalaran.cpp:116

◆ MinigobData

Enumerator
SPELL_MANABONKED 
SPELL_TELEPORT_VISUAL 
SPELL_IMPROVED_BLINK 
EVENT_SELECT_TARGET 
EVENT_POLYMORPH 
EVENT_LAUGH 
EVENT_MOVE 
EVENT_DESPAWN_VISUAL 
EVENT_DESPAWN 
MAIL_MINIGOB_ENTRY 
MAIL_DELIVER_DELAY_MIN 
MAIL_DELIVER_DELAY_MAX 
540{
541 SPELL_MANABONKED = 61834,
542 SPELL_TELEPORT_VISUAL = 51347,
543 SPELL_IMPROVED_BLINK = 61995,
544
546 EVENT_POLYMORPH = 2,
547 EVENT_LAUGH = 3,
548 EVENT_MOVE = 4,
550 EVENT_DESPAWN = 6,
551
552 MAIL_MINIGOB_ENTRY = 264,
555};
constexpr auto MINUTE
Definition Common.h:47
@ MAIL_DELIVER_DELAY_MIN
Definition zone_dalaran.cpp:553
@ SPELL_MANABONKED
Definition zone_dalaran.cpp:541
@ MAIL_DELIVER_DELAY_MAX
Definition zone_dalaran.cpp:554
@ EVENT_DESPAWN
Definition zone_dalaran.cpp:550
@ MAIL_MINIGOB_ENTRY
Definition zone_dalaran.cpp:552
@ EVENT_SELECT_TARGET
Definition zone_dalaran.cpp:545
@ SPELL_TELEPORT_VISUAL
Definition zone_dalaran.cpp:542
@ EVENT_POLYMORPH
Definition zone_dalaran.cpp:546
@ EVENT_MOVE
Definition zone_dalaran.cpp:548
@ EVENT_DESPAWN_VISUAL
Definition zone_dalaran.cpp:549
@ SPELL_IMPROVED_BLINK
Definition zone_dalaran.cpp:543
@ EVENT_LAUGH
Definition zone_dalaran.cpp:547

◆ NPCs

enum NPCs
Enumerator
NPC_SILVER_COVENANT_GUARDIAN_MAGE 
NPC_SUNREAVER_GUARDIAN_MAGE 
420{
423};
@ NPC_SILVER_COVENANT_GUARDIAN_MAGE
Definition zone_dalaran.cpp:421
@ NPC_SUNREAVER_GUARDIAN_MAGE
Definition zone_dalaran.cpp:422

◆ spells

enum spells
Enumerator
SPELL_WARRIOR_BATTLESHOUT 
SPELL_WARRIOR_DISARM 
SPELL_WARRIOR_SHOUT 
SPELL_WARRIOR_HAMSTRING 
SPELL_BLINK 
SPELL_BLIZZARD 
SPELL_COC 
SPELL_FROST_NOVA 
SPELL_FROSTFIRE 
122{
123 // Sewers Warrior Spells
126 SPELL_WARRIOR_SHOUT = 19134,
128
129 // Sewers Mage Spells
130 SPELL_BLINK = 14514,
131 SPELL_BLIZZARD = 44178,
132 SPELL_COC = 12611,
133 SPELL_FROST_NOVA = 15532,
134 SPELL_FROSTFIRE = 44614
135};
@ SPELL_BLINK
Definition zone_dalaran.cpp:130
@ SPELL_WARRIOR_BATTLESHOUT
Definition zone_dalaran.cpp:124
@ SPELL_WARRIOR_DISARM
Definition zone_dalaran.cpp:125
@ SPELL_COC
Definition zone_dalaran.cpp:132
@ SPELL_WARRIOR_HAMSTRING
Definition zone_dalaran.cpp:127
@ SPELL_BLIZZARD
Definition zone_dalaran.cpp:131
@ SPELL_FROST_NOVA
Definition zone_dalaran.cpp:133
@ SPELL_WARRIOR_SHOUT
Definition zone_dalaran.cpp:126
@ SPELL_FROSTFIRE
Definition zone_dalaran.cpp:134

◆ Spells

enum Spells
Enumerator
SPELL_TRESPASSER_A 
SPELL_TRESPASSER_H 
SPELL_SUNREAVER_DISGUISE_FEMALE 
SPELL_SUNREAVER_DISGUISE_MALE 
SPELL_SILVER_COVENANT_DISGUISE_FEMALE 
SPELL_SILVER_COVENANT_DISGUISE_MALE 
409{
410 SPELL_TRESPASSER_A = 54028,
411 SPELL_TRESPASSER_H = 54029,
412
417};
@ SPELL_SUNREAVER_DISGUISE_MALE
Definition zone_dalaran.cpp:414
@ SPELL_SILVER_COVENANT_DISGUISE_FEMALE
Definition zone_dalaran.cpp:415
@ SPELL_TRESPASSER_H
Definition zone_dalaran.cpp:411
@ SPELL_SILVER_COVENANT_DISGUISE_MALE
Definition zone_dalaran.cpp:416
@ SPELL_TRESPASSER_A
Definition zone_dalaran.cpp:410
@ SPELL_SUNREAVER_DISGUISE_FEMALE
Definition zone_dalaran.cpp:413

◆ ToyPlane

enum ToyPlane
Enumerator
NPC_DND_DALARAN_TOY_STORE_PLANE_STRING_HOOK 
SPELL_TOY_PLANE_CABLE 
848{
850
851 SPELL_TOY_PLANE_CABLE = 55281,
852};
@ NPC_DND_DALARAN_TOY_STORE_PLANE_STRING_HOOK
Definition zone_dalaran.cpp:849
@ SPELL_TOY_PLANE_CABLE
Definition zone_dalaran.cpp:851

Function Documentation

◆ AddSC_dalaran()

void AddSC_dalaran ( )
903{
904 // our
907 new npc_shandy_dalaran();
909 new npc_dalaran_mage();
914}
#define RegisterCreatureAI(ai_name)
Definition CreatureScript.h:71
Definition zone_dalaran.cpp:310
Definition zone_dalaran.cpp:662
Definition zone_dalaran.cpp:766
Definition zone_dalaran.cpp:466
Definition zone_dalaran.cpp:55
Definition zone_dalaran.cpp:138
Definition zone_dalaran.cpp:31
Definition zone_dalaran.cpp:855
Definition zone_dalaran.cpp:558

References RegisterCreatureAI.

Referenced by AddNorthrendScripts().

◆ IsInsideWMOGroups()

template<std::size_t N>
bool IsInsideWMOGroups ( WorldObject const *  who,
std::array< int32, N > const &  groups 
)
454{
455 uint32 mogpFlags;
456 int32 adtId, rootId, groupId;
457 if (!who->GetMap()->GetAreaInfo(who->GetPhaseMask(),
458 who->GetPositionX(), who->GetPositionY(), who->GetPositionZ(),
459 mogpFlags, adtId, rootId, groupId))
460 return false;
461
462 return std::find(groups.begin(), groups.end(), groupId) != groups.end();
463}
std::int32_t int32
Definition Define.h:103
std::uint32_t uint32
Definition Define.h:107

References Map::GetAreaInfo(), WorldObject::GetMap(), WorldObject::GetPhaseMask(), Position::GetPositionX(), Position::GetPositionY(), and Position::GetPositionZ().

Referenced by npc_mageguard_dalaran::npc_mageguard_dalaranAI::MoveInLineOfSight().

Variable Documentation

◆ GUARD_WATCH_RANGE

constexpr float GUARD_WATCH_RANGE = 40.0f
constexpr

◆ WMO_GROUPS_SILVER_ENCLAVE

constexpr std::array<int32, 11> WMO_GROUPS_SILVER_ENCLAVE
constexpr
Initial value:
=
{
24537, 24704, 24713, 25067, 25177, 25367, 25368, 25369, 25370, 25371, 25768
}
444{
445 24537, 24704, 24713, 25067, 25177, 25367, 25368, 25369, 25370, 25371, 25768
446};

Referenced by npc_mageguard_dalaran::npc_mageguard_dalaranAI::MoveInLineOfSight().

◆ WMO_GROUPS_SUNREAVERS_SANCTUARY

constexpr std::array<int32, 7> WMO_GROUPS_SUNREAVERS_SANCTUARY
constexpr
Initial value:
=
{
24725, 25066, 25145, 25381, 25383, 25384, 25406
}
448{
449 24725, 25066, 25145, 25381, 25383, 25384, 25406
450};

Referenced by npc_mageguard_dalaran::npc_mageguard_dalaranAI::MoveInLineOfSight().