Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
pet_shaman.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
/*
7
* Ordered alphabetically using scriptname.
8
* Scriptnames of files in this file should be prefixed with "npc_pet_sha_".
9
*/
10
11
#include "
ScriptMgr.h
"
12
#include "
ScriptedCreature.h
"
13
14
enum
ShamanSpells
15
{
16
SPELL_SHAMAN_ANGEREDEARTH
= 36213,
17
SPELL_SHAMAN_FIREBLAST
= 57984,
18
SPELL_SHAMAN_FIRENOVA
= 12470,
19
SPELL_SHAMAN_FIRESHIELD
= 13376
20
};
21
22
enum
ShamanEvents
23
{
24
// Earth Elemental
25
EVENT_SHAMAN_ANGEREDEARTH
= 1,
26
// Fire Elemental
27
EVENT_SHAMAN_FIRENOVA
= 1,
28
EVENT_SHAMAN_FIRESHIELD
= 2,
29
EVENT_SHAMAN_FIREBLAST
= 3
30
};
31
32
class
npc_pet_shaman_earth_elemental
:
public
CreatureScript
33
{
34
public
:
35
npc_pet_shaman_earth_elemental
() :
CreatureScript
(
"npc_pet_shaman_earth_elemental"
) { }
36
37
struct
npc_pet_shaman_earth_elementalAI
:
public
ScriptedAI
38
{
39
npc_pet_shaman_earth_elementalAI
(
Creature
* creature) :
ScriptedAI
(creature) { }
40
41
42
void
Reset
()
OVERRIDE
43
{
44
_events
.Reset();
45
_events
.ScheduleEvent(
EVENT_SHAMAN_ANGEREDEARTH
, 0);
46
me
->ApplySpellImmune(0,
IMMUNITY_SCHOOL
,
SPELL_SCHOOL_MASK_NATURE
,
true
);
47
}
48
49
void
UpdateAI
(
uint32
diff)
OVERRIDE
50
{
51
if
(!
UpdateVictim
())
52
return
;
53
54
_events
.Update(diff);
55
56
if
(
_events
.ExecuteEvent() ==
EVENT_SHAMAN_ANGEREDEARTH
)
57
{
58
DoCastVictim
(
SPELL_SHAMAN_ANGEREDEARTH
);
59
_events
.ScheduleEvent(
EVENT_SHAMAN_ANGEREDEARTH
, std::rand() % 20000 + 5000);
60
}
61
62
DoMeleeAttackIfReady
();
63
}
64
65
private
:
66
EventMap
_events
;
67
};
68
69
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
70
{
71
return
new
npc_pet_shaman_earth_elementalAI
(creature);
72
}
73
};
74
75
class
npc_pet_shaman_fire_elemental
:
public
CreatureScript
76
{
77
public
:
78
npc_pet_shaman_fire_elemental
() :
CreatureScript
(
"npc_pet_shaman_fire_elemental"
) { }
79
80
struct
npc_pet_shaman_fire_elementalAI
:
public
ScriptedAI
81
{
82
npc_pet_shaman_fire_elementalAI
(
Creature
* creature) :
ScriptedAI
(creature) { }
83
84
void
Reset
()
OVERRIDE
85
{
86
_events
.Reset();
87
_events
.ScheduleEvent(
EVENT_SHAMAN_FIRENOVA
, std::rand() % 20000 + 5000);
88
_events
.ScheduleEvent(
EVENT_SHAMAN_FIREBLAST
, std::rand() % 20000 + 5000);
89
_events
.ScheduleEvent(
EVENT_SHAMAN_FIRESHIELD
, 0);
90
me
->ApplySpellImmune(0,
IMMUNITY_SCHOOL
,
SPELL_SCHOOL_MASK_FIRE
,
true
);
91
}
92
93
void
UpdateAI
(
uint32
diff)
OVERRIDE
94
{
95
if
(!
UpdateVictim
())
96
return
;
97
98
if
(
me
->HasUnitState(
UNIT_STATE_CASTING
))
99
return
;
100
101
_events
.Update(diff);
102
103
while
(
uint32
eventId =
_events
.ExecuteEvent())
104
{
105
switch
(eventId)
106
{
107
case
EVENT_SHAMAN_FIRENOVA
:
108
DoCastVictim
(
SPELL_SHAMAN_FIRENOVA
);
109
_events
.ScheduleEvent(
EVENT_SHAMAN_FIRENOVA
, std::rand() % 20000 + 5000);
110
break
;
111
case
EVENT_SHAMAN_FIRESHIELD
:
112
DoCastVictim
(
SPELL_SHAMAN_FIRESHIELD
);
113
_events
.ScheduleEvent(
EVENT_SHAMAN_FIRESHIELD
, 2000);
114
break
;
115
case
EVENT_SHAMAN_FIREBLAST
:
116
DoCastVictim
(
SPELL_SHAMAN_FIREBLAST
);
117
_events
.ScheduleEvent(
EVENT_SHAMAN_FIREBLAST
, std::rand() % 20000 + 5000);
118
break
;
119
default
:
120
break
;
121
}
122
}
123
124
DoMeleeAttackIfReady
();
125
}
126
127
private
:
128
EventMap
_events
;
129
};
130
131
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
132
{
133
return
new
npc_pet_shaman_fire_elementalAI
(creature);
134
}
135
};
136
137
void
AddSC_shaman_pet_scripts
()
138
{
139
new
npc_pet_shaman_earth_elemental
();
140
new
npc_pet_shaman_fire_elemental
();
141
}
uint32
std::uint32_t uint32
Definition
Define.h:77
OVERRIDE
#define OVERRIDE
Definition
Define.h:60
ScriptMgr.h
ScriptedCreature.h
IMMUNITY_SCHOOL
@ IMMUNITY_SCHOOL
Definition
SharedDefines.h:1598
SPELL_SCHOOL_MASK_NATURE
@ SPELL_SCHOOL_MASK_NATURE
Definition
SharedDefines.h:273
SPELL_SCHOOL_MASK_FIRE
@ SPELL_SCHOOL_MASK_FIRE
Definition
SharedDefines.h:272
UNIT_STATE_CASTING
@ UNIT_STATE_CASTING
Definition
Unit.h:527
CreatureAI
Definition
CreatureAI.h:54
CreatureAI::UpdateVictim
bool UpdateVictim()
Definition
CreatureAI.cpp:192
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::DoCastVictim
void DoCastVictim(uint32 spellId, bool triggered=false)
Definition
UnitAI.cpp:168
npc_pet_shaman_earth_elemental
Definition
pet_shaman.cpp:33
npc_pet_shaman_earth_elemental::npc_pet_shaman_earth_elemental
npc_pet_shaman_earth_elemental()
Definition
pet_shaman.cpp:35
npc_pet_shaman_earth_elemental::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
pet_shaman.cpp:69
npc_pet_shaman_fire_elemental
Definition
pet_shaman.cpp:76
npc_pet_shaman_fire_elemental::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
pet_shaman.cpp:131
npc_pet_shaman_fire_elemental::npc_pet_shaman_fire_elemental
npc_pet_shaman_fire_elemental()
Definition
pet_shaman.cpp:78
ShamanEvents
ShamanEvents
Definition
pet_shaman.cpp:23
EVENT_SHAMAN_FIRESHIELD
@ EVENT_SHAMAN_FIRESHIELD
Definition
pet_shaman.cpp:28
EVENT_SHAMAN_ANGEREDEARTH
@ EVENT_SHAMAN_ANGEREDEARTH
Definition
pet_shaman.cpp:25
EVENT_SHAMAN_FIRENOVA
@ EVENT_SHAMAN_FIRENOVA
Definition
pet_shaman.cpp:27
EVENT_SHAMAN_FIREBLAST
@ EVENT_SHAMAN_FIREBLAST
Definition
pet_shaman.cpp:29
ShamanSpells
ShamanSpells
Definition
pet_shaman.cpp:15
SPELL_SHAMAN_FIRESHIELD
@ SPELL_SHAMAN_FIRESHIELD
Definition
pet_shaman.cpp:19
SPELL_SHAMAN_ANGEREDEARTH
@ SPELL_SHAMAN_ANGEREDEARTH
Definition
pet_shaman.cpp:16
SPELL_SHAMAN_FIRENOVA
@ SPELL_SHAMAN_FIRENOVA
Definition
pet_shaman.cpp:18
SPELL_SHAMAN_FIREBLAST
@ SPELL_SHAMAN_FIREBLAST
Definition
pet_shaman.cpp:17
AddSC_shaman_pet_scripts
void AddSC_shaman_pet_scripts()
Definition
pet_shaman.cpp:137
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::ScriptedAI
ScriptedAI(Creature *creature)
Definition
ScriptedCreature.cpp:85
npc_pet_shaman_earth_elemental::npc_pet_shaman_earth_elementalAI
Definition
pet_shaman.cpp:38
npc_pet_shaman_earth_elemental::npc_pet_shaman_earth_elementalAI::npc_pet_shaman_earth_elementalAI
npc_pet_shaman_earth_elementalAI(Creature *creature)
Definition
pet_shaman.cpp:39
npc_pet_shaman_earth_elemental::npc_pet_shaman_earth_elementalAI::Reset
void Reset() OVERRIDE
Definition
pet_shaman.cpp:42
npc_pet_shaman_earth_elemental::npc_pet_shaman_earth_elementalAI::_events
EventMap _events
Definition
pet_shaman.cpp:66
npc_pet_shaman_earth_elemental::npc_pet_shaman_earth_elementalAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
pet_shaman.cpp:49
npc_pet_shaman_fire_elemental::npc_pet_shaman_fire_elementalAI
Definition
pet_shaman.cpp:81
npc_pet_shaman_fire_elemental::npc_pet_shaman_fire_elementalAI::npc_pet_shaman_fire_elementalAI
npc_pet_shaman_fire_elementalAI(Creature *creature)
Definition
pet_shaman.cpp:82
npc_pet_shaman_fire_elemental::npc_pet_shaman_fire_elementalAI::_events
EventMap _events
Definition
pet_shaman.cpp:128
npc_pet_shaman_fire_elemental::npc_pet_shaman_fire_elementalAI::Reset
void Reset() OVERRIDE
Definition
pet_shaman.cpp:84
npc_pet_shaman_fire_elemental::npc_pet_shaman_fire_elementalAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
pet_shaman.cpp:93
src
server
scripts
Pet
pet_shaman.cpp
Generated on
for Project SkyFire Core by
1.17.0