Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_azuregos.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: Boss_Azuregos
8
SD%Complete: 90
9
SDComment: Teleport not included, spell reflect not effecting dots (Core problem)
10
SDCategory: Azshara
11
EndScriptData */
12
13
#include "
ScriptMgr.h
"
14
#include "
ScriptedCreature.h
"
15
16
enum
Say
17
{
18
SAY_TELEPORT
= 0
19
};
20
21
enum
Spells
22
{
23
SPELL_MARKOFFROST
= 23182,
24
SPELL_MANASTORM
= 21097,
25
SPELL_CHILL
= 21098,
26
SPELL_FROSTBREATH
= 21099,
27
SPELL_REFLECT
= 22067,
28
SPELL_CLEAVE
= 8255,
//Perhaps not right ID
29
SPELL_ENRAGE
= 23537
30
};
31
32
class
boss_azuregos
:
public
CreatureScript
33
{
34
public
:
35
boss_azuregos
() :
CreatureScript
(
"boss_azuregos"
) { }
36
37
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
38
{
39
return
new
boss_azuregosAI
(creature);
40
}
41
42
struct
boss_azuregosAI
:
public
ScriptedAI
43
{
44
boss_azuregosAI
(
Creature
* creature) :
ScriptedAI
(creature) { }
45
46
uint32
MarkOfFrostTimer
;
47
uint32
ManaStormTimer
;
48
uint32
ChillTimer
;
49
uint32
BreathTimer
;
50
uint32
TeleportTimer
;
51
uint32
ReflectTimer
;
52
uint32
CleaveTimer
;
53
uint32
EnrageTimer
;
54
bool
Enraged
;
55
56
void
Reset
()
OVERRIDE
57
{
58
MarkOfFrostTimer
= 35000;
59
ManaStormTimer
= urand(5000, 17000);
60
ChillTimer
= urand(10000, 30000);
61
BreathTimer
= urand(2000, 8000);
62
TeleportTimer
= 30000;
63
ReflectTimer
= urand(15000, 30000);
64
CleaveTimer
= 7000;
65
EnrageTimer
= 0;
66
Enraged
=
false
;
67
}
68
69
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
{ }
70
71
void
UpdateAI
(
uint32
diff)
OVERRIDE
72
{
73
//Return since we have no target
74
if
(!
UpdateVictim
())
75
return
;
76
77
if
(
TeleportTimer
<= diff)
78
{
79
Talk
(
SAY_TELEPORT
);
80
ThreatContainer::StorageType
threatlist =
me
->getThreatManager().getThreatList();
81
ThreatContainer::StorageType::const_iterator i = threatlist.begin();
82
for
(i = threatlist.begin(); i != threatlist.end(); ++i)
83
{
84
Unit
* unit =
Unit::GetUnit
(*
me
, (*i)->getUnitGuid());
85
if
(unit && (unit->
GetTypeId
() ==
TYPEID_PLAYER
))
86
{
87
DoTeleportPlayer
(unit,
me
->GetPositionX(),
me
->GetPositionY(),
me
->GetPositionZ()+3, unit->
GetOrientation
());
88
}
89
}
90
91
DoResetThreat
();
92
TeleportTimer
= 30000;
93
}
else
TeleportTimer
-= diff;
94
95
// //MarkOfFrostTimer
96
// if (MarkOfFrostTimer <= diff)
97
// {
98
// DoCastVictim(SPELL_MARKOFFROST);
99
// MarkOfFrostTimer = 25000;
100
// } else MarkOfFrostTimer -= diff;
101
102
//ChillTimer
103
if
(
ChillTimer
<= diff)
104
{
105
DoCastVictim
(
SPELL_CHILL
);
106
ChillTimer
= urand(13000, 25000);
107
}
else
ChillTimer
-= diff;
108
109
//BreathTimer
110
if
(
BreathTimer
<= diff)
111
{
112
DoCastVictim
(
SPELL_FROSTBREATH
);
113
BreathTimer
= urand(10000, 15000);
114
}
else
BreathTimer
-= diff;
115
116
//ManaStormTimer
117
if
(
ManaStormTimer
<= diff)
118
{
119
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0))
120
DoCast
(target,
SPELL_MANASTORM
);
121
ManaStormTimer
= urand(7500, 12500);
122
}
else
ManaStormTimer
-= diff;
123
124
//ReflectTimer
125
if
(
ReflectTimer
<= diff)
126
{
127
DoCast
(
me
,
SPELL_REFLECT
);
128
ReflectTimer
= urand(20000, 35000);
129
}
else
ReflectTimer
-= diff;
130
131
//CleaveTimer
132
if
(
CleaveTimer
<= diff)
133
{
134
DoCastVictim
(
SPELL_CLEAVE
);
135
CleaveTimer
= 7000;
136
}
else
CleaveTimer
-= diff;
137
138
//EnrageTimer
139
if
(
HealthBelowPct
(26) && !
Enraged
)
140
{
141
DoCast
(
me
,
SPELL_ENRAGE
);
142
Enraged
=
true
;
143
}
144
145
DoMeleeAttackIfReady
();
146
}
147
};
148
};
149
150
void
AddSC_boss_azuregos
()
151
{
152
new
boss_azuregos
();
153
}
Spells
Spells
Definition
BattlegroundIC.h:645
uint32
std::uint32_t uint32
Definition
Define.h:77
OVERRIDE
#define OVERRIDE
Definition
Define.h:60
TYPEID_PLAYER
static constexpr TypeID TYPEID_PLAYER
Definition
ElunaCompatibility.h:20
ScriptMgr.h
ScriptedCreature.h
SELECT_TARGET_RANDOM
@ SELECT_TARGET_RANDOM
Definition
UnitAI.h:23
SPELL_CLEAVE
@ SPELL_CLEAVE
Definition
alterac_valley.cpp:12
SPELL_ENRAGE
@ SPELL_ENRAGE
Definition
alterac_valley.cpp:14
AddSC_boss_azuregos
void AddSC_boss_azuregos()
Definition
boss_azuregos.cpp:150
SPELL_CLEAVE
@ SPELL_CLEAVE
Definition
boss_azuregos.cpp:28
SPELL_ENRAGE
@ SPELL_ENRAGE
Definition
boss_azuregos.cpp:29
SPELL_FROSTBREATH
@ SPELL_FROSTBREATH
Definition
boss_azuregos.cpp:26
SPELL_REFLECT
@ SPELL_REFLECT
Definition
boss_azuregos.cpp:27
SPELL_MANASTORM
@ SPELL_MANASTORM
Definition
boss_azuregos.cpp:24
SPELL_CHILL
@ SPELL_CHILL
Definition
boss_azuregos.cpp:25
SPELL_MARKOFFROST
@ SPELL_MARKOFFROST
Definition
boss_azuregos.cpp:23
SAY_TELEPORT
@ SAY_TELEPORT
Definition
boss_azuregos.cpp:18
Say
Say
Definition
boss_broodlord_lashlayer.cpp:11
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
Object::GetTypeId
TypeID GetTypeId() const
Definition
Object.h:131
ThreatContainer::StorageType
std::list< HostileReference * > StorageType
Definition
ThreatManager.h:127
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
UnitAI::DoCastVictim
void DoCastVictim(uint32 spellId, bool triggered=false)
Definition
UnitAI.cpp:168
Unit
Definition
Unit.h:1367
Unit::GetUnit
static Unit * GetUnit(WorldObject &object, uint64 guid)
Definition
Unit.cpp:4895
boss_azuregos
Definition
boss_azuregos.cpp:33
boss_azuregos::boss_azuregos
boss_azuregos()
Definition
boss_azuregos.cpp:35
boss_azuregos::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_azuregos.cpp:37
Position::GetOrientation
float GetOrientation() const
Definition
Object.h:331
ScriptedAI::DoResetThreat
void DoResetThreat()
Definition
ScriptedCreature.cpp:260
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::DoTeleportPlayer
void DoTeleportPlayer(Unit *unit, float x, float y, float z, float o)
Definition
ScriptedCreature.cpp:304
ScriptedAI::HealthBelowPct
bool HealthBelowPct(uint32 pct) const
Definition
ScriptedCreature.h:247
ScriptedAI::ScriptedAI
ScriptedAI(Creature *creature)
Definition
ScriptedCreature.cpp:85
boss_azuregos::boss_azuregosAI
Definition
boss_azuregos.cpp:43
boss_azuregos::boss_azuregosAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_azuregos.cpp:69
boss_azuregos::boss_azuregosAI::TeleportTimer
uint32 TeleportTimer
Definition
boss_azuregos.cpp:50
boss_azuregos::boss_azuregosAI::Enraged
bool Enraged
Definition
boss_azuregos.cpp:54
boss_azuregos::boss_azuregosAI::boss_azuregosAI
boss_azuregosAI(Creature *creature)
Definition
boss_azuregos.cpp:44
boss_azuregos::boss_azuregosAI::MarkOfFrostTimer
uint32 MarkOfFrostTimer
Definition
boss_azuregos.cpp:46
boss_azuregos::boss_azuregosAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_azuregos.cpp:71
boss_azuregos::boss_azuregosAI::BreathTimer
uint32 BreathTimer
Definition
boss_azuregos.cpp:49
boss_azuregos::boss_azuregosAI::EnrageTimer
uint32 EnrageTimer
Definition
boss_azuregos.cpp:53
boss_azuregos::boss_azuregosAI::ChillTimer
uint32 ChillTimer
Definition
boss_azuregos.cpp:48
boss_azuregos::boss_azuregosAI::ReflectTimer
uint32 ReflectTimer
Definition
boss_azuregos.cpp:51
boss_azuregos::boss_azuregosAI::Reset
void Reset() OVERRIDE
Definition
boss_azuregos.cpp:56
boss_azuregos::boss_azuregosAI::CleaveTimer
uint32 CleaveTimer
Definition
boss_azuregos.cpp:52
boss_azuregos::boss_azuregosAI::ManaStormTimer
uint32 ManaStormTimer
Definition
boss_azuregos.cpp:47
src
server
scripts
Kalimdor
boss_azuregos.cpp
Generated on
for Project SkyFire Core by
1.17.0