Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
zone_mulgore.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
7
SDName: Mulgore
8
SD%Complete: 100
9
SDComment: Support for quest: 14491
10
SDCategory: Mulgore
11
EndScriptData */
12
13
/* ContentData
14
npc_agitated_earth_spirit
15
EndContentData */
16
17
#include "
ScriptMgr.h
"
18
#include "
ScriptedCreature.h
"
19
#include "
ScriptedGossip.h
"
20
#include "
Player.h
"
21
#include "
SpellInfo.h
"
22
23
enum
eAgitatedEarthSpirit
24
{
25
SPELL_SOOTHE_EARTH_SPIRIT
= 69453,
26
SPELL_ROCK_BARRAGE
= 81305,
27
28
NPC_EARTH_SPIRIT_CREDIT_BUNNY
= 36872,
29
30
EVENT_ROCK_BARRAGE
= 1
31
};
32
33
// 36845 - Agitated Earth Spirit
34
class
npc_agitated_earth_spirit
:
public
CreatureScript
35
{
36
public
:
37
npc_agitated_earth_spirit
() :
CreatureScript
(
"npc_agitated_earth_spirit"
) { }
38
39
struct
npc_agitated_earth_spiritAI
:
public
ScriptedAI
40
{
41
npc_agitated_earth_spiritAI
(
Creature
* creature) :
ScriptedAI
(creature) { }
42
43
void
Reset
()
OVERRIDE
44
{
45
events
.Reset();
46
playerGUID
= 0;
47
me
->setFaction(190);
48
}
49
50
void
SpellHit
(
Unit
* caster,
SpellInfo
const
* spell)
OVERRIDE
51
{
52
if
(spell->Id ==
SPELL_SOOTHE_EARTH_SPIRIT
&&
me
->getFaction() == 190)
53
{
54
Position
pos;
55
caster->GetNearPoint(caster, pos.
m_positionX
, pos.
m_positionY
, pos.
m_positionZ
, 0.0f,
MIN_MELEE_REACH
, caster->GetAngle(
me
));
56
me
->GetMotionMaster()->MovePoint(1, pos);
57
playerGUID
= caster->GetGUID();
58
}
59
}
60
61
void
MovementInform
(
uint32
type,
uint32
pointId)
OVERRIDE
62
{
63
if
(type ==
POINT_MOTION_TYPE
&& pointId == 1)
64
{
65
switch
(std::rand() % 1)
66
{
67
case
0:
68
{
69
me
->setFaction(35);
70
if
(
Player
* player =
ObjectAccessor::GetPlayer
(*
me
,
playerGUID
))
71
player->KilledMonsterCredit(
NPC_EARTH_SPIRIT_CREDIT_BUNNY
);
72
73
me
->DespawnOrUnsummon(1000);
74
break
;
75
}
76
case
1:
77
me
->setFaction(14);
78
if
(
Player
* player =
ObjectAccessor::GetPlayer
(*
me
,
playerGUID
))
79
{
80
Talk
(0, player);
81
AttackStart
(player);
82
}
83
break
;
84
}
85
}
86
}
87
88
void
EnterCombat
(
Unit
*
/*victim*/
)
OVERRIDE
89
{
90
events
.ScheduleEvent(
EVENT_ROCK_BARRAGE
, std::rand() % 5000 + 4000);
91
}
92
93
void
UpdateAI
(
uint32
diff)
OVERRIDE
94
{
95
if
(!
UpdateVictim
())
96
return
;
97
98
events
.Update(diff);
99
100
while
(
uint32
eventId =
events
.ExecuteEvent())
101
{
102
switch
(eventId)
103
{
104
case
EVENT_ROCK_BARRAGE
:
105
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0))
106
DoCast
(target,
SPELL_ROCK_BARRAGE
);
107
events
.ScheduleEvent(
EVENT_ROCK_BARRAGE
, std::rand() % 21000 + 18000);
108
break
;
109
}
110
}
111
112
DoMeleeAttackIfReady
();
113
}
114
115
private
:
116
uint64
playerGUID
;
117
EventMap
events
;
118
};
119
120
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
121
{
122
return
new
npc_agitated_earth_spiritAI
(creature);
123
}
124
};
125
126
void
AddSC_mulgore
()
127
{
128
new
npc_agitated_earth_spirit
();
129
}
uint32
std::uint32_t uint32
Definition
Define.h:77
OVERRIDE
#define OVERRIDE
Definition
Define.h:60
uint64
std::uint64_t uint64
Definition
Define.h:76
POINT_MOTION_TYPE
@ POINT_MOTION_TYPE
Definition
MotionMaster.h:33
MIN_MELEE_REACH
#define MIN_MELEE_REACH
Definition
Object.h:31
Player.h
ScriptMgr.h
ScriptedCreature.h
ScriptedGossip.h
SpellInfo.h
SELECT_TARGET_RANDOM
@ SELECT_TARGET_RANDOM
Definition
UnitAI.h:23
CreatureAI
Definition
CreatureAI.h:54
CreatureAI::Talk
void Talk(uint8 id, WorldObject const *whisperTarget=NULL)
Definition
CreatureAI.cpp:28
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
ObjectAccessor::GetPlayer
static Player * GetPlayer(WorldObject const &, uint64 guid)
Definition
ObjectAccessor.cpp:219
Player
Definition
Player.h:1289
SpellInfo
Definition
SpellInfo.h:158
UnitAI::DoMeleeAttackIfReady
void DoMeleeAttackIfReady()
Definition
UnitAI.cpp:28
UnitAI::DoCast
void DoCast(uint32 spellId)
Definition
UnitAI.cpp:110
UnitAI::SelectTarget
Unit * SelectTarget(SelectAggroTarget targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, int32 aura=0)
Definition
UnitAI.cpp:66
Unit
Definition
Unit.h:1367
npc_agitated_earth_spirit
Definition
zone_mulgore.cpp:35
npc_agitated_earth_spirit::npc_agitated_earth_spirit
npc_agitated_earth_spirit()
Definition
zone_mulgore.cpp:37
npc_agitated_earth_spirit::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
zone_mulgore.cpp:120
Position
Definition
Object.h:274
Position::m_positionZ
float m_positionZ
Definition
Object.h:289
Position::m_positionX
float m_positionX
Definition
Object.h:287
Position::m_positionY
float m_positionY
Definition
Object.h:288
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::ScriptedAI
ScriptedAI(Creature *creature)
Definition
ScriptedCreature.cpp:85
ScriptedAI::AttackStart
void AttackStart(Unit *) OVERRIDE
Definition
ScriptedCreature.cpp:118
npc_agitated_earth_spirit::npc_agitated_earth_spiritAI
Definition
zone_mulgore.cpp:40
npc_agitated_earth_spirit::npc_agitated_earth_spiritAI::MovementInform
void MovementInform(uint32 type, uint32 pointId) OVERRIDE
Definition
zone_mulgore.cpp:61
npc_agitated_earth_spirit::npc_agitated_earth_spiritAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
zone_mulgore.cpp:88
npc_agitated_earth_spirit::npc_agitated_earth_spiritAI::playerGUID
uint64 playerGUID
Definition
zone_mulgore.cpp:116
npc_agitated_earth_spirit::npc_agitated_earth_spiritAI::npc_agitated_earth_spiritAI
npc_agitated_earth_spiritAI(Creature *creature)
Definition
zone_mulgore.cpp:41
npc_agitated_earth_spirit::npc_agitated_earth_spiritAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
zone_mulgore.cpp:93
npc_agitated_earth_spirit::npc_agitated_earth_spiritAI::events
EventMap events
Definition
zone_mulgore.cpp:117
npc_agitated_earth_spirit::npc_agitated_earth_spiritAI::SpellHit
void SpellHit(Unit *caster, SpellInfo const *spell) OVERRIDE
Definition
zone_mulgore.cpp:50
npc_agitated_earth_spirit::npc_agitated_earth_spiritAI::Reset
void Reset() OVERRIDE
Definition
zone_mulgore.cpp:43
AddSC_mulgore
void AddSC_mulgore()
Definition
zone_mulgore.cpp:126
eAgitatedEarthSpirit
eAgitatedEarthSpirit
Definition
zone_mulgore.cpp:24
NPC_EARTH_SPIRIT_CREDIT_BUNNY
@ NPC_EARTH_SPIRIT_CREDIT_BUNNY
Definition
zone_mulgore.cpp:28
EVENT_ROCK_BARRAGE
@ EVENT_ROCK_BARRAGE
Definition
zone_mulgore.cpp:30
SPELL_ROCK_BARRAGE
@ SPELL_ROCK_BARRAGE
Definition
zone_mulgore.cpp:26
SPELL_SOOTHE_EARTH_SPIRIT
@ SPELL_SOOTHE_EARTH_SPIRIT
Definition
zone_mulgore.cpp:25
src
server
scripts
Kalimdor
zone_mulgore.cpp
Generated on
for Project SkyFire Core by
1.17.0