Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_noxxion.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_Noxxion
8
SD%Complete: 100
9
SDComment:
10
SDCategory: Maraudon
11
EndScriptData */
12
13
#include "
ScriptMgr.h
"
14
#include "
ScriptedCreature.h
"
15
16
enum
Spells
17
{
18
SPELL_TOXICVOLLEY
= 21687,
19
SPELL_UPPERCUT
= 22916
20
};
21
22
class
boss_noxxion
:
public
CreatureScript
23
{
24
public
:
25
boss_noxxion
() :
CreatureScript
(
"boss_noxxion"
) { }
26
27
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
28
{
29
return
new
boss_noxxionAI
(creature);
30
}
31
32
struct
boss_noxxionAI
:
public
ScriptedAI
33
{
34
boss_noxxionAI
(
Creature
* creature) :
ScriptedAI
(creature) { }
35
36
uint32
ToxicVolleyTimer
;
37
uint32
UppercutTimer
;
38
uint32
AddsTimer
;
39
uint32
InvisibleTimer
;
40
bool
Invisible
;
41
42
void
Reset
()
OVERRIDE
43
{
44
ToxicVolleyTimer
= 7000;
45
UppercutTimer
= 16000;
46
AddsTimer
= 19000;
47
InvisibleTimer
= 15000;
//Too much too low?
48
Invisible
=
false
;
49
}
50
51
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
{ }
52
53
void
SummonAdds
(
Unit
* victim)
54
{
55
if
(
Creature
* Add =
DoSpawnCreature
(13456,
float
(std::rand() % 7 + -7),
float
(std::rand() % 7 + -7), 0, 0,
TempSummonType::TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN
, 90000))
56
Add->AI()->AttackStart(victim);
57
}
58
59
void
UpdateAI
(
uint32
diff)
OVERRIDE
60
{
61
if
(
Invisible
&&
InvisibleTimer
<= diff)
62
{
63
//Become visible again
64
me
->setFaction(14);
65
me
->RemoveFlag(
UNIT_FIELD_FLAGS
,
UNIT_FLAG_NOT_SELECTABLE
);
66
//Noxxion model
67
me
->SetDisplayId(11172);
68
Invisible
=
false
;
69
//me->m_canMove = true;
70
}
71
else
if
(
Invisible
)
72
{
73
InvisibleTimer
-= diff;
74
//Do nothing while invisible
75
return
;
76
}
77
78
//Return since we have no target
79
if
(!
UpdateVictim
())
80
return
;
81
82
//ToxicVolleyTimer
83
if
(
ToxicVolleyTimer
<= diff)
84
{
85
DoCastVictim
(
SPELL_TOXICVOLLEY
);
86
ToxicVolleyTimer
= 9000;
87
}
88
else
ToxicVolleyTimer
-= diff;
89
90
//UppercutTimer
91
if
(
UppercutTimer
<= diff)
92
{
93
DoCastVictim
(
SPELL_UPPERCUT
);
94
UppercutTimer
= 12000;
95
}
96
else
UppercutTimer
-= diff;
97
98
//AddsTimer
99
if
(!
Invisible
&&
AddsTimer
<= diff)
100
{
101
//Interrupt any spell casting
102
//me->m_canMove = true;
103
me
->InterruptNonMeleeSpells(
false
);
104
me
->setFaction(35);
105
me
->SetFlag(
UNIT_FIELD_FLAGS
,
UNIT_FLAG_NOT_SELECTABLE
);
106
// Invisible Model
107
me
->SetDisplayId(11686);
108
SummonAdds
(
me
->GetVictim());
109
SummonAdds
(
me
->GetVictim());
110
SummonAdds
(
me
->GetVictim());
111
SummonAdds
(
me
->GetVictim());
112
SummonAdds
(
me
->GetVictim());
113
Invisible
=
true
;
114
InvisibleTimer
= 15000;
115
116
AddsTimer
= 40000;
117
}
118
else
AddsTimer
-= diff;
119
120
DoMeleeAttackIfReady
();
121
}
122
};
123
};
124
125
void
AddSC_boss_noxxion
()
126
{
127
new
boss_noxxion
();
128
}
Spells
Spells
Definition
BattlegroundIC.h:645
uint32
std::uint32_t uint32
Definition
Define.h:77
OVERRIDE
#define OVERRIDE
Definition
Define.h:60
TempSummonType::TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN
@ TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN
Definition
Object.h:69
ScriptMgr.h
ScriptedCreature.h
UNIT_FLAG_NOT_SELECTABLE
@ UNIT_FLAG_NOT_SELECTABLE
Definition
Unit.h:650
UNIT_FIELD_FLAGS
@ UNIT_FIELD_FLAGS
Definition
UpdateFields.h:82
AddSC_boss_noxxion
void AddSC_boss_noxxion()
Definition
boss_noxxion.cpp:125
SPELL_TOXICVOLLEY
@ SPELL_TOXICVOLLEY
Definition
boss_noxxion.cpp:18
SPELL_UPPERCUT
@ SPELL_UPPERCUT
Definition
boss_noxxion.cpp:19
SPELL_UPPERCUT
@ SPELL_UPPERCUT
Definition
boss_warmaster_voone.cpp:14
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
UnitAI::DoMeleeAttackIfReady
void DoMeleeAttackIfReady()
Definition
UnitAI.cpp:28
UnitAI::DoCastVictim
void DoCastVictim(uint32 spellId, bool triggered=false)
Definition
UnitAI.cpp:168
Unit
Definition
Unit.h:1367
boss_noxxion
Definition
boss_noxxion.cpp:23
boss_noxxion::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_noxxion.cpp:27
boss_noxxion::boss_noxxion
boss_noxxion()
Definition
boss_noxxion.cpp:25
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::DoSpawnCreature
Creature * DoSpawnCreature(uint32 entry, float offsetX, float offsetY, float offsetZ, float angle, TempSummonType type, uint32 despawntime)
Definition
ScriptedCreature.cpp:178
ScriptedAI::ScriptedAI
ScriptedAI(Creature *creature)
Definition
ScriptedCreature.cpp:85
boss_noxxion::boss_noxxionAI
Definition
boss_noxxion.cpp:33
boss_noxxion::boss_noxxionAI::InvisibleTimer
uint32 InvisibleTimer
Definition
boss_noxxion.cpp:39
boss_noxxion::boss_noxxionAI::UppercutTimer
uint32 UppercutTimer
Definition
boss_noxxion.cpp:37
boss_noxxion::boss_noxxionAI::ToxicVolleyTimer
uint32 ToxicVolleyTimer
Definition
boss_noxxion.cpp:36
boss_noxxion::boss_noxxionAI::Reset
void Reset() OVERRIDE
Definition
boss_noxxion.cpp:42
boss_noxxion::boss_noxxionAI::AddsTimer
uint32 AddsTimer
Definition
boss_noxxion.cpp:38
boss_noxxion::boss_noxxionAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_noxxion.cpp:59
boss_noxxion::boss_noxxionAI::Invisible
bool Invisible
Definition
boss_noxxion.cpp:40
boss_noxxion::boss_noxxionAI::SummonAdds
void SummonAdds(Unit *victim)
Definition
boss_noxxion.cpp:53
boss_noxxion::boss_noxxionAI::boss_noxxionAI
boss_noxxionAI(Creature *creature)
Definition
boss_noxxion.cpp:34
boss_noxxion::boss_noxxionAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_noxxion.cpp:51
src
server
scripts
Kalimdor
Maraudon
boss_noxxion.cpp
Generated on
for Project SkyFire Core by
1.17.0