Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
ruby_sanctum.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
#include "
ScriptMgr.h
"
7
#include "
ScriptedCreature.h
"
8
#include "
ScriptedGossip.h
"
9
#include "
ruby_sanctum.h
"
10
#include "
Player.h
"
11
12
enum
Texts
13
{
14
SAY_XERESTRASZA_EVENT
= 0,
15
SAY_XERESTRASZA_EVENT_1
= 1,
16
SAY_XERESTRASZA_EVENT_2
= 2,
17
SAY_XERESTRASZA_EVENT_3
= 3,
18
SAY_XERESTRASZA_EVENT_4
= 4,
19
SAY_XERESTRASZA_EVENT_5
= 5,
20
SAY_XERESTRASZA_EVENT_6
= 6,
21
SAY_XERESTRASZA_EVENT_7
= 7,
22
SAY_XERESTRASZA_INTRO
= 8,
23
};
24
25
enum
Events
26
{
27
EVENT_XERESTRASZA_EVENT_1
= 1,
28
EVENT_XERESTRASZA_EVENT_2
= 2,
29
EVENT_XERESTRASZA_EVENT_3
= 3,
30
EVENT_XERESTRASZA_EVENT_4
= 4,
31
EVENT_XERESTRASZA_EVENT_5
= 5,
32
EVENT_XERESTRASZA_EVENT_6
= 6,
33
EVENT_XERESTRASZA_EVENT_7
= 7,
34
};
35
36
Position
const
xerestraszaMovePos
= {3151.236f, 379.8733f, 86.31996f, 0.0f};
37
38
class
npc_xerestrasza
:
public
CreatureScript
39
{
40
public
:
41
npc_xerestrasza
() :
CreatureScript
(
"npc_xerestrasza"
) { }
42
43
struct
npc_xerestraszaAI
:
public
ScriptedAI
44
{
45
npc_xerestraszaAI
(
Creature
* creature) :
ScriptedAI
(creature)
46
{
47
_isIntro
=
true
;
48
_introDone
=
false
;
49
}
50
51
void
Reset
()
OVERRIDE
52
{
53
_events
.Reset();
54
me
->RemoveFlag(
UNIT_FIELD_NPC_FLAGS
,
GOSSIP_OPTION_QUESTGIVER
);
55
}
56
57
void
DoAction
(
int32
action)
OVERRIDE
58
{
59
if
(action ==
ACTION_BALTHARUS_DEATH
)
60
{
61
me
->setActive(
true
);
62
_isIntro
=
false
;
63
64
Talk
(
SAY_XERESTRASZA_EVENT
);
65
me
->SetWalk(
true
);
66
me
->GetMotionMaster()->MovePoint(0,
xerestraszaMovePos
);
67
68
_events
.ScheduleEvent(
EVENT_XERESTRASZA_EVENT_1
, 16000);
69
_events
.ScheduleEvent(
EVENT_XERESTRASZA_EVENT_2
, 25000);
70
_events
.ScheduleEvent(
EVENT_XERESTRASZA_EVENT_3
, 32000);
71
_events
.ScheduleEvent(
EVENT_XERESTRASZA_EVENT_4
, 42000);
72
_events
.ScheduleEvent(
EVENT_XERESTRASZA_EVENT_5
, 51000);
73
_events
.ScheduleEvent(
EVENT_XERESTRASZA_EVENT_6
, 61000);
74
_events
.ScheduleEvent(
EVENT_XERESTRASZA_EVENT_7
, 69000);
75
}
76
else
if
(action ==
ACTION_INTRO_BALTHARUS
&& !
_introDone
)
77
{
78
_introDone
=
true
;
79
Talk
(
SAY_XERESTRASZA_INTRO
);
80
}
81
}
82
83
void
UpdateAI
(
uint32
diff)
OVERRIDE
84
{
85
if
(
_isIntro
)
86
return
;
87
88
_events
.Update(diff);
89
90
while
(
uint32
eventId =
_events
.ExecuteEvent())
91
{
92
switch
(eventId)
93
{
94
case
EVENT_XERESTRASZA_EVENT_1
:
95
Talk
(
SAY_XERESTRASZA_EVENT_1
);
96
break
;
97
case
EVENT_XERESTRASZA_EVENT_2
:
98
Talk
(
SAY_XERESTRASZA_EVENT_2
);
99
break
;
100
case
EVENT_XERESTRASZA_EVENT_3
:
101
Talk
(
SAY_XERESTRASZA_EVENT_3
);
102
break
;
103
case
EVENT_XERESTRASZA_EVENT_4
:
104
Talk
(
SAY_XERESTRASZA_EVENT_4
);
105
break
;
106
case
EVENT_XERESTRASZA_EVENT_5
:
107
Talk
(
SAY_XERESTRASZA_EVENT_5
);
108
break
;
109
case
EVENT_XERESTRASZA_EVENT_6
:
110
Talk
(
SAY_XERESTRASZA_EVENT_6
);
111
break
;
112
case
EVENT_XERESTRASZA_EVENT_7
:
113
me
->SetFlag(
UNIT_FIELD_NPC_FLAGS
,
GOSSIP_OPTION_QUESTGIVER
);
114
Talk
(
SAY_XERESTRASZA_EVENT_7
);
115
me
->setActive(
false
);
116
break
;
117
default
:
118
break
;
119
}
120
}
121
}
122
123
private
:
124
EventMap
_events
;
125
bool
_isIntro
;
126
bool
_introDone
;
127
};
128
129
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
130
{
131
return
GetRubySanctumAI<npc_xerestraszaAI>
(creature);
132
}
133
};
134
135
class
at_baltharus_plateau
:
public
AreaTriggerScript
136
{
137
public
:
138
at_baltharus_plateau
() :
AreaTriggerScript
(
"at_baltharus_plateau"
) { }
139
140
bool
OnTrigger
(
Player
* player,
AreaTriggerEntry
const
*
/*areaTrigger*/
)
OVERRIDE
141
{
142
// Only trigger once
143
if
(
InstanceScript
* instance = player->GetInstanceScript())
144
{
145
if
(
Creature
* xerestrasza =
ObjectAccessor::GetCreature
(*player, instance->GetData64(
DATA_XERESTRASZA
)))
146
xerestrasza->AI()->DoAction(
ACTION_INTRO_BALTHARUS
);
147
148
if
(
Creature
* baltharus =
ObjectAccessor::GetCreature
(*player, instance->GetData64(
DATA_BALTHARUS_THE_WARBORN
)))
149
baltharus->AI()->DoAction(
ACTION_INTRO_BALTHARUS
);
150
}
151
152
return
true
;
153
}
154
};
155
156
void
AddSC_ruby_sanctum
()
157
{
158
new
npc_xerestrasza
();
159
new
at_baltharus_plateau
();
160
}
int32
std::int32_t int32
Definition
Define.h:73
uint32
std::uint32_t uint32
Definition
Define.h:77
OVERRIDE
#define OVERRIDE
Definition
Define.h:60
GOSSIP_OPTION_QUESTGIVER
@ GOSSIP_OPTION_QUESTGIVER
Definition
GossipDef.h:22
Player.h
ScriptMgr.h
ScriptedCreature.h
ScriptedGossip.h
UNIT_FIELD_NPC_FLAGS
@ UNIT_FIELD_NPC_FLAGS
Definition
UpdateFields.h:107
Events
Events
Definition
alterac_valley.cpp:40
Texts
Texts
Definition
boss_alizabal.cpp:13
AreaTriggerScript::AreaTriggerScript
AreaTriggerScript(const char *name)
Definition
ScriptMgr.cpp:1448
CreatureAI
Definition
CreatureAI.h:54
CreatureAI::Talk
void Talk(uint8 id, WorldObject const *whisperTarget=NULL)
Definition
CreatureAI.cpp:28
Creature
Definition
Creature.h:427
CreatureScript::CreatureScript
CreatureScript(const char *name)
Definition
ScriptMgr.cpp:1436
EventMap
Definition
CreatureAIImpl.h:304
InstanceScript
Definition
InstanceScript.h:123
ObjectAccessor::GetCreature
static Creature * GetCreature(WorldObject const &u, uint64 guid)
Definition
ObjectAccessor.cpp:209
Player
Definition
Player.h:1289
at_baltharus_plateau
Definition
ruby_sanctum.cpp:136
at_baltharus_plateau::OnTrigger
bool OnTrigger(Player *player, AreaTriggerEntry const *) OVERRIDE
Definition
ruby_sanctum.cpp:140
at_baltharus_plateau::at_baltharus_plateau
at_baltharus_plateau()
Definition
ruby_sanctum.cpp:138
npc_xerestrasza
Definition
ruby_sanctum.cpp:39
npc_xerestrasza::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
ruby_sanctum.cpp:129
npc_xerestrasza::npc_xerestrasza
npc_xerestrasza()
Definition
ruby_sanctum.cpp:41
AddSC_ruby_sanctum
void AddSC_ruby_sanctum()
Definition
ruby_sanctum.cpp:156
SAY_XERESTRASZA_EVENT_3
@ SAY_XERESTRASZA_EVENT_3
Definition
ruby_sanctum.cpp:17
SAY_XERESTRASZA_EVENT_1
@ SAY_XERESTRASZA_EVENT_1
Definition
ruby_sanctum.cpp:15
SAY_XERESTRASZA_INTRO
@ SAY_XERESTRASZA_INTRO
Definition
ruby_sanctum.cpp:22
SAY_XERESTRASZA_EVENT_5
@ SAY_XERESTRASZA_EVENT_5
Definition
ruby_sanctum.cpp:19
SAY_XERESTRASZA_EVENT_6
@ SAY_XERESTRASZA_EVENT_6
Definition
ruby_sanctum.cpp:20
SAY_XERESTRASZA_EVENT
@ SAY_XERESTRASZA_EVENT
Definition
ruby_sanctum.cpp:14
SAY_XERESTRASZA_EVENT_2
@ SAY_XERESTRASZA_EVENT_2
Definition
ruby_sanctum.cpp:16
SAY_XERESTRASZA_EVENT_4
@ SAY_XERESTRASZA_EVENT_4
Definition
ruby_sanctum.cpp:18
SAY_XERESTRASZA_EVENT_7
@ SAY_XERESTRASZA_EVENT_7
Definition
ruby_sanctum.cpp:21
xerestraszaMovePos
Position const xerestraszaMovePos
Definition
ruby_sanctum.cpp:36
EVENT_XERESTRASZA_EVENT_7
@ EVENT_XERESTRASZA_EVENT_7
Definition
ruby_sanctum.cpp:33
EVENT_XERESTRASZA_EVENT_2
@ EVENT_XERESTRASZA_EVENT_2
Definition
ruby_sanctum.cpp:28
EVENT_XERESTRASZA_EVENT_4
@ EVENT_XERESTRASZA_EVENT_4
Definition
ruby_sanctum.cpp:30
EVENT_XERESTRASZA_EVENT_6
@ EVENT_XERESTRASZA_EVENT_6
Definition
ruby_sanctum.cpp:32
EVENT_XERESTRASZA_EVENT_5
@ EVENT_XERESTRASZA_EVENT_5
Definition
ruby_sanctum.cpp:31
EVENT_XERESTRASZA_EVENT_3
@ EVENT_XERESTRASZA_EVENT_3
Definition
ruby_sanctum.cpp:29
EVENT_XERESTRASZA_EVENT_1
@ EVENT_XERESTRASZA_EVENT_1
Definition
ruby_sanctum.cpp:27
ruby_sanctum.h
ACTION_INTRO_BALTHARUS
@ ACTION_INTRO_BALTHARUS
Definition
ruby_sanctum.h:47
ACTION_BALTHARUS_DEATH
@ ACTION_BALTHARUS_DEATH
Definition
ruby_sanctum.h:48
GetRubySanctumAI
CreatureAI * GetRubySanctumAI(Creature *creature)
Definition
ruby_sanctum.h:121
DATA_XERESTRASZA
@ DATA_XERESTRASZA
Definition
ruby_sanctum.h:29
DATA_BALTHARUS_THE_WARBORN
@ DATA_BALTHARUS_THE_WARBORN
Definition
ruby_sanctum.h:22
AreaTriggerEntry
Definition
DBCStructure.h:716
Position
Definition
Object.h:274
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::ScriptedAI
ScriptedAI(Creature *creature)
Definition
ScriptedCreature.cpp:85
npc_xerestrasza::npc_xerestraszaAI::DoAction
void DoAction(int32 action) OVERRIDE
Definition
ruby_sanctum.cpp:57
npc_xerestrasza::npc_xerestraszaAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
ruby_sanctum.cpp:83
npc_xerestrasza::npc_xerestraszaAI::_isIntro
bool _isIntro
Definition
ruby_sanctum.cpp:125
npc_xerestrasza::npc_xerestraszaAI::npc_xerestraszaAI
npc_xerestraszaAI(Creature *creature)
Definition
ruby_sanctum.cpp:45
npc_xerestrasza::npc_xerestraszaAI::_introDone
bool _introDone
Definition
ruby_sanctum.cpp:126
npc_xerestrasza::npc_xerestraszaAI::Reset
void Reset() OVERRIDE
Definition
ruby_sanctum.cpp:51
npc_xerestrasza::npc_xerestraszaAI::_events
EventMap _events
Definition
ruby_sanctum.cpp:124
src
server
scripts
Northrend
ChamberOfAspects
RubySanctum
ruby_sanctum.cpp
Generated on
for Project SkyFire Core by
1.17.0