Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_cyanigosa.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 "
violet_hold.h
"
9
10
enum
Spells
11
{
12
SPELL_ARCANE_VACUUM
= 58694,
13
SPELL_BLIZZARD
= 58693,
14
H_SPELL_BLIZZARD
= 59369,
15
SPELL_MANA_DESTRUCTION
= 59374,
16
SPELL_TAIL_SWEEP
= 58690,
17
H_SPELL_TAIL_SWEEP
= 59283,
18
SPELL_UNCONTROLLABLE_ENERGY
= 58688,
19
H_SPELL_UNCONTROLLABLE_ENERGY
= 59281,
20
SPELL_TRANSFORM
= 58668
21
};
22
23
enum
Yells
24
{
25
SAY_AGGRO
= 0,
26
SAY_SLAY
= 1,
27
SAY_DEATH
= 2,
28
SAY_SPAWN
= 3,
29
SAY_DISRUPTION
= 4,
30
SAY_BREATH_ATTACK
= 5,
31
SAY_SPECIAL_ATTACK
= 6
32
};
33
34
class
boss_cyanigosa
:
public
CreatureScript
35
{
36
public
:
37
boss_cyanigosa
() :
CreatureScript
(
"boss_cyanigosa"
) { }
38
39
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
40
{
41
return
new
boss_cyanigosaAI
(creature);
42
}
43
44
struct
boss_cyanigosaAI
:
public
ScriptedAI
45
{
46
boss_cyanigosaAI
(
Creature
* creature) :
ScriptedAI
(creature)
47
{
48
instance
= creature->
GetInstanceScript
();
49
}
50
51
uint32
uiArcaneVacuumTimer
;
52
uint32
uiBlizzardTimer
;
53
uint32
uiManaDestructionTimer
;
54
uint32
uiTailSweepTimer
;
55
uint32
uiUncontrollableEnergyTimer
;
56
57
InstanceScript
*
instance
;
58
59
void
Reset
()
OVERRIDE
60
{
61
uiArcaneVacuumTimer
= 10000;
62
uiBlizzardTimer
= 15000;
63
uiManaDestructionTimer
= 30000;
64
uiTailSweepTimer
= 20000;
65
uiUncontrollableEnergyTimer
= 25000;
66
if
(
instance
)
67
instance
->SetData(
DATA_CYANIGOSA_EVENT
,
NOT_STARTED
);
68
}
69
70
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
71
{
72
Talk
(
SAY_AGGRO
);
73
74
if
(
instance
)
75
instance
->SetData(
DATA_CYANIGOSA_EVENT
,
IN_PROGRESS
);
76
}
77
78
void
MoveInLineOfSight
(
Unit
*
/*who*/
)
OVERRIDE
{ }
79
80
81
void
UpdateAI
(
uint32
diff)
OVERRIDE
82
{
83
if
(
instance
&&
instance
->GetData(
DATA_REMOVE_NPC
) == 1)
84
{
85
me
->DespawnOrUnsummon();
86
instance
->SetData(
DATA_REMOVE_NPC
, 0);
87
}
88
89
//Return since we have no target
90
if
(!
UpdateVictim
())
91
return
;
92
93
if
(
uiArcaneVacuumTimer
<= diff)
94
{
95
DoCast
(
SPELL_ARCANE_VACUUM
);
96
uiArcaneVacuumTimer
= 10000;
97
}
else
uiArcaneVacuumTimer
-= diff;
98
99
if
(
uiBlizzardTimer
<= diff)
100
{
101
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0, 100,
true
))
102
DoCast
(target,
SPELL_BLIZZARD
);
103
uiBlizzardTimer
= 15000;
104
}
else
uiBlizzardTimer
-= diff;
105
106
if
(
uiTailSweepTimer
<= diff)
107
{
108
DoCast
(
SPELL_TAIL_SWEEP
);
109
uiTailSweepTimer
= 20000;
110
}
else
uiTailSweepTimer
-= diff;
111
112
if
(
uiUncontrollableEnergyTimer
<= diff)
113
{
114
DoCastVictim
(
SPELL_UNCONTROLLABLE_ENERGY
);
115
uiUncontrollableEnergyTimer
= 25000;
116
}
else
uiUncontrollableEnergyTimer
-= diff;
117
118
if
(
IsHeroic
())
119
{
120
if
(
uiManaDestructionTimer
<= diff)
121
{
122
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0, 100,
true
))
123
DoCast
(target,
SPELL_MANA_DESTRUCTION
);
124
uiManaDestructionTimer
= 30000;
125
}
else
uiManaDestructionTimer
-= diff;
126
}
127
128
DoMeleeAttackIfReady
();
129
}
130
131
void
JustDied
(
Unit
*
/*killer*/
)
OVERRIDE
132
{
133
Talk
(
SAY_DEATH
);
134
135
if
(
instance
)
136
instance
->SetData(
DATA_CYANIGOSA_EVENT
,
DONE
);
137
}
138
139
void
KilledUnit
(
Unit
* victim)
OVERRIDE
140
{
141
if
(victim->GetTypeId() !=
TypeID::TYPEID_PLAYER
)
142
return
;
143
144
Talk
(
SAY_SLAY
);
145
}
146
};
147
};
148
149
class
achievement_defenseless
:
public
AchievementCriteriaScript
150
{
151
public
:
152
achievement_defenseless
() :
AchievementCriteriaScript
(
"achievement_defenseless"
)
153
{
154
}
155
156
bool
OnCheck
(
Player
*
/*player*/
,
Unit
* target)
OVERRIDE
157
{
158
if
(!target)
159
return
false
;
160
161
InstanceScript
* instance = target->GetInstanceScript();
162
if
(!instance)
163
return
false
;
164
165
if
(!instance->
GetData
(
DATA_DEFENSELESS
))
166
return
false
;
167
168
return
true
;
169
}
170
};
171
172
void
AddSC_boss_cyanigosa
()
173
{
174
new
boss_cyanigosa
();
175
new
achievement_defenseless
();
176
}
Spells
Spells
Definition
BattlegroundIC.h:645
uint32
std::uint32_t uint32
Definition
Define.h:77
OVERRIDE
#define OVERRIDE
Definition
Define.h:60
IN_PROGRESS
@ IN_PROGRESS
Definition
InstanceScript.h:47
DONE
@ DONE
Definition
InstanceScript.h:49
NOT_STARTED
@ NOT_STARTED
Definition
InstanceScript.h:46
TypeID::TYPEID_PLAYER
@ TYPEID_PLAYER
Definition
Object.h:55
ScriptMgr.h
ScriptedCreature.h
SELECT_TARGET_RANDOM
@ SELECT_TARGET_RANDOM
Definition
UnitAI.h:23
SAY_SLAY
@ SAY_SLAY
Definition
boss_alizabal.cpp:20
SAY_DEATH
#define SAY_DEATH
Definition
boss_commander_kolurg.cpp:30
SAY_AGGRO
#define SAY_AGGRO
Definition
boss_commander_kolurg.cpp:28
SPELL_TRANSFORM
@ SPELL_TRANSFORM
Definition
boss_cthun.cpp:83
SAY_DEATH
@ SAY_DEATH
Definition
boss_cyanigosa.cpp:27
SAY_BREATH_ATTACK
@ SAY_BREATH_ATTACK
Definition
boss_cyanigosa.cpp:30
SAY_AGGRO
@ SAY_AGGRO
Definition
boss_cyanigosa.cpp:25
SAY_DISRUPTION
@ SAY_DISRUPTION
Definition
boss_cyanigosa.cpp:29
SAY_SLAY
@ SAY_SLAY
Definition
boss_cyanigosa.cpp:26
SAY_SPECIAL_ATTACK
@ SAY_SPECIAL_ATTACK
Definition
boss_cyanigosa.cpp:31
H_SPELL_BLIZZARD
@ H_SPELL_BLIZZARD
Definition
boss_cyanigosa.cpp:14
H_SPELL_UNCONTROLLABLE_ENERGY
@ H_SPELL_UNCONTROLLABLE_ENERGY
Definition
boss_cyanigosa.cpp:19
SPELL_UNCONTROLLABLE_ENERGY
@ SPELL_UNCONTROLLABLE_ENERGY
Definition
boss_cyanigosa.cpp:18
SPELL_ARCANE_VACUUM
@ SPELL_ARCANE_VACUUM
Definition
boss_cyanigosa.cpp:12
SPELL_BLIZZARD
@ SPELL_BLIZZARD
Definition
boss_cyanigosa.cpp:13
SPELL_MANA_DESTRUCTION
@ SPELL_MANA_DESTRUCTION
Definition
boss_cyanigosa.cpp:15
H_SPELL_TAIL_SWEEP
@ H_SPELL_TAIL_SWEEP
Definition
boss_cyanigosa.cpp:17
SPELL_TAIL_SWEEP
@ SPELL_TAIL_SWEEP
Definition
boss_cyanigosa.cpp:16
AddSC_boss_cyanigosa
void AddSC_boss_cyanigosa()
Definition
boss_cyanigosa.cpp:172
SAY_SPAWN
@ SAY_SPAWN
Definition
boss_majordomo_executus.cpp:23
SPELL_TAIL_SWEEP
@ SPELL_TAIL_SWEEP
Definition
boss_nightbane.cpp:24
SPELL_BLIZZARD
@ SPELL_BLIZZARD
Definition
boss_priestess_delrissa.cpp:736
AchievementCriteriaScript::AchievementCriteriaScript
AchievementCriteriaScript(const char *name)
Definition
ScriptMgr.cpp:1508
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
InstanceScript
Definition
InstanceScript.h:123
Player
Definition
Player.h:1289
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
WorldObject::GetInstanceScript
InstanceScript * GetInstanceScript()
Definition
Object.cpp:1612
ZoneScript::GetData
virtual uint32 GetData(uint32) const
Definition
ZoneScript.h:36
achievement_defenseless
Definition
boss_cyanigosa.cpp:150
achievement_defenseless::OnCheck
bool OnCheck(Player *, Unit *target) OVERRIDE
Definition
boss_cyanigosa.cpp:156
achievement_defenseless::achievement_defenseless
achievement_defenseless()
Definition
boss_cyanigosa.cpp:152
boss_cyanigosa
Definition
boss_cyanigosa.cpp:35
boss_cyanigosa::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_cyanigosa.cpp:39
boss_cyanigosa::boss_cyanigosa
boss_cyanigosa()
Definition
boss_cyanigosa.cpp:37
ScriptedAI::IsHeroic
bool IsHeroic() const
Definition
ScriptedCreature.h:279
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::ScriptedAI
ScriptedAI(Creature *creature)
Definition
ScriptedCreature.cpp:85
Yells
Definition
boss_illidan.cpp:256
boss_cyanigosa::boss_cyanigosaAI
Definition
boss_cyanigosa.cpp:45
boss_cyanigosa::boss_cyanigosaAI::uiTailSweepTimer
uint32 uiTailSweepTimer
Definition
boss_cyanigosa.cpp:54
boss_cyanigosa::boss_cyanigosaAI::uiManaDestructionTimer
uint32 uiManaDestructionTimer
Definition
boss_cyanigosa.cpp:53
boss_cyanigosa::boss_cyanigosaAI::JustDied
void JustDied(Unit *) OVERRIDE
Definition
boss_cyanigosa.cpp:131
boss_cyanigosa::boss_cyanigosaAI::instance
InstanceScript * instance
Definition
boss_cyanigosa.cpp:57
boss_cyanigosa::boss_cyanigosaAI::Reset
void Reset() OVERRIDE
Definition
boss_cyanigosa.cpp:59
boss_cyanigosa::boss_cyanigosaAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_cyanigosa.cpp:70
boss_cyanigosa::boss_cyanigosaAI::KilledUnit
void KilledUnit(Unit *victim) OVERRIDE
Definition
boss_cyanigosa.cpp:139
boss_cyanigosa::boss_cyanigosaAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_cyanigosa.cpp:81
boss_cyanigosa::boss_cyanigosaAI::uiUncontrollableEnergyTimer
uint32 uiUncontrollableEnergyTimer
Definition
boss_cyanigosa.cpp:55
boss_cyanigosa::boss_cyanigosaAI::MoveInLineOfSight
void MoveInLineOfSight(Unit *) OVERRIDE
Definition
boss_cyanigosa.cpp:78
boss_cyanigosa::boss_cyanigosaAI::uiArcaneVacuumTimer
uint32 uiArcaneVacuumTimer
Definition
boss_cyanigosa.cpp:51
boss_cyanigosa::boss_cyanigosaAI::uiBlizzardTimer
uint32 uiBlizzardTimer
Definition
boss_cyanigosa.cpp:52
boss_cyanigosa::boss_cyanigosaAI::boss_cyanigosaAI
boss_cyanigosaAI(Creature *creature)
Definition
boss_cyanigosa.cpp:46
violet_hold.h
DATA_CYANIGOSA_EVENT
@ DATA_CYANIGOSA_EVENT
Definition
violet_hold.h:13
DATA_REMOVE_NPC
@ DATA_REMOVE_NPC
Definition
violet_hold.h:15
DATA_DEFENSELESS
@ DATA_DEFENSELESS
Definition
violet_hold.h:26
src
server
scripts
Northrend
VioletHold
boss_cyanigosa.cpp
Generated on
for Project SkyFire Core by
1.17.0