Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
alterac_valley.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
9
enum
Spells
10
{
11
SPELL_CHARGE
= 22911,
12
SPELL_CLEAVE
= 40504,
13
SPELL_DEMORALIZING_SHOUT
= 23511,
14
SPELL_ENRAGE
= 8599,
15
SPELL_WHIRLWIND
= 13736,
16
17
SPELL_NORTH_MARSHAL
= 45828,
18
SPELL_SOUTH_MARSHAL
= 45829,
19
SPELL_STONEHEARTH_MARSHAL
= 45830,
20
SPELL_ICEWING_MARSHAL
= 45831,
21
SPELL_ICEBLOOD_WARMASTER
= 45822,
22
SPELL_TOWER_POINT_WARMASTER
= 45823,
23
SPELL_WEST_FROSTWOLF_WARMASTER
= 45824,
24
SPELL_EAST_FROSTWOLF_WARMASTER
= 45826
25
};
26
27
enum
Creatures
28
{
29
NPC_NORTH_MARSHAL
= 14762,
30
NPC_SOUTH_MARSHAL
= 14763,
31
NPC_ICEWING_MARSHAL
= 14764,
32
NPC_STONEHEARTH_MARSHAL
= 14765,
33
NPC_EAST_FROSTWOLF_WARMASTER
= 14772,
34
NPC_ICEBLOOD_WARMASTER
= 14773,
35
NPC_TOWER_POINT_WARMASTER
= 14776,
36
NPC_WEST_FROSTWOLF_WARMASTER
= 14777
37
};
38
39
enum
Events
40
{
41
EVENT_CHARGE_TARGET
= 1,
42
EVENT_CLEAVE
= 2,
43
EVENT_DEMORALIZING_SHOUT
= 3,
44
EVENT_WHIRLWIND
= 4,
45
EVENT_ENRAGE
= 5,
46
EVENT_CHECK_RESET
= 6
47
};
48
49
struct
SpellPair
50
{
51
uint32
npcEntry
;
52
uint32
spellId
;
53
};
54
55
uint8
const
MAX_SPELL_PAIRS
= 8;
56
SpellPair
const
_auraPairs
[
MAX_SPELL_PAIRS
] =
57
{
58
{
NPC_NORTH_MARSHAL
,
SPELL_NORTH_MARSHAL
},
59
{
NPC_SOUTH_MARSHAL
,
SPELL_SOUTH_MARSHAL
},
60
{
NPC_STONEHEARTH_MARSHAL
,
SPELL_STONEHEARTH_MARSHAL
},
61
{
NPC_ICEWING_MARSHAL
,
SPELL_ICEWING_MARSHAL
},
62
{
NPC_EAST_FROSTWOLF_WARMASTER
,
SPELL_EAST_FROSTWOLF_WARMASTER
},
63
{
NPC_WEST_FROSTWOLF_WARMASTER
,
SPELL_WEST_FROSTWOLF_WARMASTER
},
64
{
NPC_TOWER_POINT_WARMASTER
,
SPELL_TOWER_POINT_WARMASTER
},
65
{
NPC_ICEBLOOD_WARMASTER
,
SPELL_ICEBLOOD_WARMASTER
}
66
};
67
68
class
npc_av_marshal_or_warmaster
:
public
CreatureScript
69
{
70
public
:
71
npc_av_marshal_or_warmaster
() :
CreatureScript
(
"npc_av_marshal_or_warmaster"
) { }
72
73
struct
npc_av_marshal_or_warmasterAI
:
public
ScriptedAI
74
{
75
npc_av_marshal_or_warmasterAI
(
Creature
* creature) :
ScriptedAI
(creature) { }
76
77
void
Reset
()
OVERRIDE
78
{
79
events
.Reset();
80
events
.ScheduleEvent(
EVENT_CHARGE_TARGET
, std::rand() % (12 *
IN_MILLISECONDS
) + (2 *
IN_MILLISECONDS
));
81
events
.ScheduleEvent(
EVENT_CLEAVE
, std::rand() % (11 *
IN_MILLISECONDS
) + (1 *
IN_MILLISECONDS
));
82
events
.ScheduleEvent(
EVENT_DEMORALIZING_SHOUT
, 2000);
83
events
.ScheduleEvent(
EVENT_WHIRLWIND
, std::rand() % (20 *
IN_MILLISECONDS
) + (5 *
IN_MILLISECONDS
));
84
events
.ScheduleEvent(
EVENT_ENRAGE
, std::rand() % (20 *
IN_MILLISECONDS
) + (5 *
IN_MILLISECONDS
));
85
events
.ScheduleEvent(
EVENT_CHECK_RESET
, 5000);
86
87
_hasAura
=
false
;
88
}
89
90
void
JustRespawned
()
OVERRIDE
91
{
92
Reset
();
93
}
94
95
void
UpdateAI
(
uint32
diff)
OVERRIDE
96
{
97
// I have a feeling this isn't blizzlike, but owell, I'm only passing by and cleaning up.
98
if
(!
_hasAura
)
99
{
100
for
(
uint8
i = 0; i <
MAX_SPELL_PAIRS
; ++i)
101
if
(
_auraPairs
[i].npcEntry ==
me
->GetEntry())
102
DoCast
(
me
,
_auraPairs
[i].spellId);
103
104
_hasAura
=
true
;
105
}
106
107
if
(!
UpdateVictim
())
108
return
;
109
110
events
.Update(diff);
111
112
if
(
me
->HasUnitState(
UNIT_STATE_CASTING
))
113
return
;
114
115
while
(
uint32
eventId =
events
.ExecuteEvent())
116
{
117
switch
(eventId)
118
{
119
case
EVENT_CHARGE_TARGET
:
120
DoCastVictim
(
SPELL_CHARGE
);
121
events
.ScheduleEvent(
EVENT_CHARGE
, std::rand() % (25 *
IN_MILLISECONDS
) + (10 *
IN_MILLISECONDS
));
122
break
;
123
case
EVENT_CLEAVE
:
124
DoCastVictim
(
SPELL_CLEAVE
);
125
events
.ScheduleEvent(
EVENT_CLEAVE
, std::rand() % (16 *
IN_MILLISECONDS
) + (10 *
IN_MILLISECONDS
));
126
break
;
127
case
EVENT_DEMORALIZING_SHOUT
:
128
DoCast
(
me
,
SPELL_DEMORALIZING_SHOUT
);
129
events
.ScheduleEvent(
EVENT_DEMORALIZING_SHOUT
, std::rand() % (15 *
IN_MILLISECONDS
) + (10 *
IN_MILLISECONDS
));
130
break
;
131
case
EVENT_WHIRLWIND
:
132
DoCast
(
me
,
SPELL_WHIRLWIND
);
133
events
.ScheduleEvent(
EVENT_WHIRLWIND
, std::rand() % (25 *
IN_MILLISECONDS
) + (10 *
IN_MILLISECONDS
));
134
break
;
135
case
EVENT_ENRAGE
:
136
DoCast
(
me
,
SPELL_ENRAGE
);
137
events
.ScheduleEvent(
EVENT_ENRAGE
, std::rand() % (30 *
IN_MILLISECONDS
) + (10 *
IN_MILLISECONDS
));
138
break
;
139
case
EVENT_CHECK_RESET
:
140
{
141
Position
const
& _homePosition =
me
->GetHomePosition();
142
if
(
me
->GetDistance2d(_homePosition.
GetPositionX
(), _homePosition.
GetPositionY
()) > 50.0f)
143
{
144
EnterEvadeMode
();
145
return
;
146
}
147
events
.ScheduleEvent(
EVENT_CHECK_RESET
, 5000);
148
break
;
149
}
150
}
151
}
152
153
DoMeleeAttackIfReady
();
154
}
155
156
private
:
157
EventMap
events
;
158
bool
_hasAura
;
159
};
160
161
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
162
{
163
return
new
npc_av_marshal_or_warmasterAI
(creature);
164
}
165
};
166
167
void
AddSC_alterac_valley
()
168
{
169
new
npc_av_marshal_or_warmaster
();
170
}
Spells
Spells
Definition
BattlegroundIC.h:645
IN_MILLISECONDS
@ IN_MILLISECONDS
Definition
Common.h:125
uint8
std::uint8_t uint8
Definition
Define.h:79
uint32
std::uint32_t uint32
Definition
Define.h:77
OVERRIDE
#define OVERRIDE
Definition
Define.h:60
ScriptMgr.h
ScriptedCreature.h
EVENT_CHARGE
@ EVENT_CHARGE
Definition
SharedDefines.h:3854
UNIT_STATE_CASTING
@ UNIT_STATE_CASTING
Definition
Unit.h:527
Creatures
Creatures
Definition
alterac_valley.cpp:28
NPC_EAST_FROSTWOLF_WARMASTER
@ NPC_EAST_FROSTWOLF_WARMASTER
Definition
alterac_valley.cpp:33
NPC_TOWER_POINT_WARMASTER
@ NPC_TOWER_POINT_WARMASTER
Definition
alterac_valley.cpp:35
NPC_ICEWING_MARSHAL
@ NPC_ICEWING_MARSHAL
Definition
alterac_valley.cpp:31
NPC_ICEBLOOD_WARMASTER
@ NPC_ICEBLOOD_WARMASTER
Definition
alterac_valley.cpp:34
NPC_SOUTH_MARSHAL
@ NPC_SOUTH_MARSHAL
Definition
alterac_valley.cpp:30
NPC_NORTH_MARSHAL
@ NPC_NORTH_MARSHAL
Definition
alterac_valley.cpp:29
NPC_WEST_FROSTWOLF_WARMASTER
@ NPC_WEST_FROSTWOLF_WARMASTER
Definition
alterac_valley.cpp:36
NPC_STONEHEARTH_MARSHAL
@ NPC_STONEHEARTH_MARSHAL
Definition
alterac_valley.cpp:32
AddSC_alterac_valley
void AddSC_alterac_valley()
Definition
alterac_valley.cpp:167
SPELL_CLEAVE
@ SPELL_CLEAVE
Definition
alterac_valley.cpp:12
SPELL_WEST_FROSTWOLF_WARMASTER
@ SPELL_WEST_FROSTWOLF_WARMASTER
Definition
alterac_valley.cpp:23
SPELL_ENRAGE
@ SPELL_ENRAGE
Definition
alterac_valley.cpp:14
SPELL_CHARGE
@ SPELL_CHARGE
Definition
alterac_valley.cpp:11
SPELL_TOWER_POINT_WARMASTER
@ SPELL_TOWER_POINT_WARMASTER
Definition
alterac_valley.cpp:22
SPELL_ICEWING_MARSHAL
@ SPELL_ICEWING_MARSHAL
Definition
alterac_valley.cpp:20
SPELL_STONEHEARTH_MARSHAL
@ SPELL_STONEHEARTH_MARSHAL
Definition
alterac_valley.cpp:19
SPELL_NORTH_MARSHAL
@ SPELL_NORTH_MARSHAL
Definition
alterac_valley.cpp:17
SPELL_DEMORALIZING_SHOUT
@ SPELL_DEMORALIZING_SHOUT
Definition
alterac_valley.cpp:13
SPELL_SOUTH_MARSHAL
@ SPELL_SOUTH_MARSHAL
Definition
alterac_valley.cpp:18
SPELL_ICEBLOOD_WARMASTER
@ SPELL_ICEBLOOD_WARMASTER
Definition
alterac_valley.cpp:21
SPELL_EAST_FROSTWOLF_WARMASTER
@ SPELL_EAST_FROSTWOLF_WARMASTER
Definition
alterac_valley.cpp:24
SPELL_WHIRLWIND
@ SPELL_WHIRLWIND
Definition
alterac_valley.cpp:15
_auraPairs
SpellPair const _auraPairs[MAX_SPELL_PAIRS]
Definition
alterac_valley.cpp:56
MAX_SPELL_PAIRS
uint8 const MAX_SPELL_PAIRS
Definition
alterac_valley.cpp:55
Events
Events
Definition
alterac_valley.cpp:40
EVENT_ENRAGE
@ EVENT_ENRAGE
Definition
alterac_valley.cpp:45
EVENT_WHIRLWIND
@ EVENT_WHIRLWIND
Definition
alterac_valley.cpp:44
EVENT_CHECK_RESET
@ EVENT_CHECK_RESET
Definition
alterac_valley.cpp:46
EVENT_DEMORALIZING_SHOUT
@ EVENT_DEMORALIZING_SHOUT
Definition
alterac_valley.cpp:43
EVENT_CLEAVE
@ EVENT_CLEAVE
Definition
alterac_valley.cpp:42
EVENT_CHARGE_TARGET
@ EVENT_CHARGE_TARGET
Definition
alterac_valley.cpp:41
CreatureAI
Definition
CreatureAI.h:54
CreatureAI::UpdateVictim
bool UpdateVictim()
Definition
CreatureAI.cpp:192
CreatureAI::EnterEvadeMode
virtual void EnterEvadeMode()
Definition
CreatureAI.cpp:130
Creature
Definition
Creature.h:427
CreatureScript::CreatureScript
CreatureScript(const char *name)
Definition
ScriptMgr.cpp:1436
EventMap
Definition
CreatureAIImpl.h:304
UnitAI::DoMeleeAttackIfReady
void DoMeleeAttackIfReady()
Definition
UnitAI.cpp:28
UnitAI::DoCast
void DoCast(uint32 spellId)
Definition
UnitAI.cpp:110
UnitAI::DoCastVictim
void DoCastVictim(uint32 spellId, bool triggered=false)
Definition
UnitAI.cpp:168
npc_av_marshal_or_warmaster
Definition
alterac_valley.cpp:69
npc_av_marshal_or_warmaster::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
alterac_valley.cpp:161
npc_av_marshal_or_warmaster::npc_av_marshal_or_warmaster
npc_av_marshal_or_warmaster()
Definition
alterac_valley.cpp:71
Position
Definition
Object.h:274
Position::GetPositionX
float GetPositionX() const
Definition
Object.h:328
Position::GetPositionY
float GetPositionY() const
Definition
Object.h:329
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::ScriptedAI
ScriptedAI(Creature *creature)
Definition
ScriptedCreature.cpp:85
SpellPair
Definition
alterac_valley.cpp:50
SpellPair::npcEntry
uint32 npcEntry
Definition
alterac_valley.cpp:51
SpellPair::spellId
uint32 spellId
Definition
alterac_valley.cpp:52
npc_av_marshal_or_warmaster::npc_av_marshal_or_warmasterAI
Definition
alterac_valley.cpp:74
npc_av_marshal_or_warmaster::npc_av_marshal_or_warmasterAI::_hasAura
bool _hasAura
Definition
alterac_valley.cpp:158
npc_av_marshal_or_warmaster::npc_av_marshal_or_warmasterAI::JustRespawned
void JustRespawned() OVERRIDE
Definition
alterac_valley.cpp:90
npc_av_marshal_or_warmaster::npc_av_marshal_or_warmasterAI::events
EventMap events
Definition
alterac_valley.cpp:157
npc_av_marshal_or_warmaster::npc_av_marshal_or_warmasterAI::Reset
void Reset() OVERRIDE
Definition
alterac_valley.cpp:77
npc_av_marshal_or_warmaster::npc_av_marshal_or_warmasterAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
alterac_valley.cpp:95
npc_av_marshal_or_warmaster::npc_av_marshal_or_warmasterAI::npc_av_marshal_or_warmasterAI
npc_av_marshal_or_warmasterAI(Creature *creature)
Definition
alterac_valley.cpp:75
src
server
scripts
EasternKingdoms
AlteracValley
alterac_valley.cpp
Generated on
for Project SkyFire Core by
1.17.0