Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_broggok.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_Broggok
8
SD%Complete: 70
9
SDComment: pre-event not made
10
SDCategory: Hellfire Citadel, Blood Furnace
11
EndScriptData */
12
13
#include "
ScriptMgr.h
"
14
#include "
ScriptedCreature.h
"
15
#include "
blood_furnace.h
"
16
17
enum
Yells
18
{
19
SAY_AGGRO
= 0
20
};
21
22
enum
Spells
23
{
24
SPELL_SLIME_SPRAY
= 30913,
25
SPELL_POISON_CLOUD
= 30916,
26
SPELL_POISON_BOLT
= 30917,
27
28
SPELL_POISON
= 30914
29
};
30
31
class
boss_broggok
:
public
CreatureScript
32
{
33
public
:
34
boss_broggok
() :
CreatureScript
(
"boss_broggok"
) { }
35
36
struct
boss_broggokAI
:
public
BossAI
37
{
38
boss_broggokAI
(
Creature
* creature) :
BossAI
(creature,
DATA_BROGGOK
)
39
{
40
instance
= creature->
GetInstanceScript
();
41
42
AcidSpray_Timer
= 0;
43
PoisonSpawn_Timer
= 0;
44
PoisonBolt_Timer
= 0;
45
canAttack
=
false
;
46
}
47
48
void
Reset
()
OVERRIDE
49
{
50
_Reset
();
51
AcidSpray_Timer
= 10000;
52
PoisonSpawn_Timer
= 5000;
53
PoisonBolt_Timer
= 7000;
54
DoAction
(
ACTION_RESET_BROGGOK
);
55
instance
->SetData(
TYPE_BROGGOK_EVENT
,
NOT_STARTED
);
56
}
57
58
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
59
{
60
Talk
(
SAY_AGGRO
);
61
}
62
63
void
JustSummoned
(
Creature
* summoned)
OVERRIDE
64
{
65
summoned->setFaction(16);
66
summoned->SetFlag(
UNIT_FIELD_FLAGS
,
UNIT_FLAG_NON_ATTACKABLE
);
67
summoned->SetFlag(
UNIT_FIELD_FLAGS
,
UNIT_FLAG_NOT_SELECTABLE
);
68
summoned->CastSpell(summoned,
SPELL_POISON
,
false
, 0, 0,
me
->GetGUID());
69
}
70
71
void
UpdateAI
(
uint32
diff)
OVERRIDE
72
{
73
if
(!
UpdateVictim
())
74
return
;
75
if
(!
canAttack
)
76
return
;
77
if
(
AcidSpray_Timer
<= diff)
78
{
79
DoCastVictim
(
SPELL_SLIME_SPRAY
);
80
AcidSpray_Timer
= 4000+rand()%8000;
81
}
82
else
83
AcidSpray_Timer
-=diff;
84
85
if
(
PoisonBolt_Timer
<= diff)
86
{
87
DoCastVictim
(
SPELL_POISON_BOLT
);
88
PoisonBolt_Timer
= 4000+rand()%8000;
89
}
90
else
91
PoisonBolt_Timer
-=diff;
92
93
if
(
PoisonSpawn_Timer
<= diff)
94
{
95
DoCast
(
me
,
SPELL_POISON_CLOUD
);
96
PoisonSpawn_Timer
= 20000;
97
}
98
else
99
PoisonSpawn_Timer
-=diff;
100
101
DoMeleeAttackIfReady
();
102
}
103
104
void
JustDied
(
Unit
*
/*killer*/
)
OVERRIDE
105
{
106
if
(
instance
)
107
{
108
instance
->HandleGameObject(
instance
->GetData64(
DATA_DOOR4
),
true
);
109
instance
->HandleGameObject(
instance
->GetData64(
DATA_DOOR5
),
true
);
110
instance
->SetData(
TYPE_BROGGOK_EVENT
,
DONE
);
111
}
112
}
113
114
void
DoAction
(
int32
action)
OVERRIDE
115
{
116
switch
(action)
117
{
118
case
ACTION_PREPARE_BROGGOK
:
119
me
->SetInCombatWithZone();
120
break
;
121
case
ACTION_ACTIVATE_BROGGOK
:
122
me
->SetReactState(
REACT_AGGRESSIVE
);
123
me
->RemoveFlag(
UNIT_FIELD_FLAGS
,
UNIT_FLAG_IMMUNE_TO_PC
|
UNIT_FLAG_IMMUNE_TO_NPC
|
UNIT_FLAG_NON_ATTACKABLE
);
124
canAttack
=
true
;
125
break
;
126
case
ACTION_RESET_BROGGOK
:
127
me
->SetReactState(
REACT_PASSIVE
);
128
me
->SetFlag(
UNIT_FIELD_FLAGS
,
UNIT_FLAG_IMMUNE_TO_PC
|
UNIT_FLAG_IMMUNE_TO_NPC
|
UNIT_FLAG_NON_ATTACKABLE
);
129
canAttack
=
false
;
130
break
;
131
}
132
}
133
134
private
:
135
InstanceScript
*
instance
;
136
137
uint32
AcidSpray_Timer
;
138
uint32
PoisonSpawn_Timer
;
139
uint32
PoisonBolt_Timer
;
140
bool
canAttack
;
141
};
142
143
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
144
{
145
return
new
boss_broggokAI
(creature);
146
}
147
};
148
149
class
go_broggok_lever
:
public
GameObjectScript
150
{
151
public
:
152
go_broggok_lever
() :
GameObjectScript
(
"go_broggok_lever"
) { }
153
154
bool
OnGossipHello
(
Player
*
/*player*/
,
GameObject
* go)
OVERRIDE
155
{
156
if
(
InstanceScript
* instance = go->GetInstanceScript())
157
if
(instance->GetData(
TYPE_BROGGOK_EVENT
) !=
DONE
&& instance->GetData(
TYPE_BROGGOK_EVENT
) !=
IN_PROGRESS
)
158
{
159
instance->SetData(
TYPE_BROGGOK_EVENT
,
IN_PROGRESS
);
160
if
(
Creature
* broggok =
Creature::GetCreature
(*go, instance->GetData64(
DATA_BROGGOK
)))
161
broggok->AI()->DoAction(
ACTION_PREPARE_BROGGOK
);
162
}
163
go->UseDoorOrButton();
164
return
false
;
165
}
166
};
167
168
void
AddSC_boss_broggok
()
169
{
170
new
boss_broggok
();
171
new
go_broggok_lever
();
172
}
Spells
Spells
Definition
BattlegroundIC.h:645
int32
std::int32_t int32
Definition
Define.h:73
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
ScriptMgr.h
ScriptedCreature.h
REACT_PASSIVE
@ REACT_PASSIVE
Definition
Unit.h:1156
REACT_AGGRESSIVE
@ REACT_AGGRESSIVE
Definition
Unit.h:1158
UNIT_FLAG_NON_ATTACKABLE
@ UNIT_FLAG_NON_ATTACKABLE
Definition
Unit.h:626
UNIT_FLAG_IMMUNE_TO_NPC
@ UNIT_FLAG_IMMUNE_TO_NPC
Definition
Unit.h:634
UNIT_FLAG_NOT_SELECTABLE
@ UNIT_FLAG_NOT_SELECTABLE
Definition
Unit.h:650
UNIT_FLAG_IMMUNE_TO_PC
@ UNIT_FLAG_IMMUNE_TO_PC
Definition
Unit.h:633
UNIT_FIELD_FLAGS
@ UNIT_FIELD_FLAGS
Definition
UpdateFields.h:82
blood_furnace.h
ACTION_PREPARE_BROGGOK
@ ACTION_PREPARE_BROGGOK
Definition
blood_furnace.h:38
ACTION_ACTIVATE_BROGGOK
@ ACTION_ACTIVATE_BROGGOK
Definition
blood_furnace.h:36
ACTION_RESET_BROGGOK
@ ACTION_RESET_BROGGOK
Definition
blood_furnace.h:37
TYPE_BROGGOK_EVENT
@ TYPE_BROGGOK_EVENT
Definition
blood_furnace.h:15
DATA_DOOR5
@ DATA_DOOR5
Definition
blood_furnace.h:21
DATA_BROGGOK
@ DATA_BROGGOK
Definition
blood_furnace.h:12
DATA_DOOR4
@ DATA_DOOR4
Definition
blood_furnace.h:20
SPELL_POISON_CLOUD
@ SPELL_POISON_CLOUD
Definition
boss_aku_mai.cpp:12
SAY_AGGRO
@ SAY_AGGRO
Definition
boss_broggok.cpp:19
SPELL_POISON_BOLT
@ SPELL_POISON_BOLT
Definition
boss_broggok.cpp:26
SPELL_POISON
@ SPELL_POISON
Definition
boss_broggok.cpp:28
SPELL_SLIME_SPRAY
@ SPELL_SLIME_SPRAY
Definition
boss_broggok.cpp:24
SPELL_POISON_CLOUD
@ SPELL_POISON_CLOUD
Definition
boss_broggok.cpp:25
AddSC_boss_broggok
void AddSC_boss_broggok()
Definition
boss_broggok.cpp:168
SAY_AGGRO
#define SAY_AGGRO
Definition
boss_commander_kolurg.cpp:28
SPELL_POISON_BOLT
@ SPELL_POISON_BOLT
Definition
boss_lady_vashj.cpp:38
SPELL_SLIME_SPRAY
@ SPELL_SLIME_SPRAY
Definition
boss_rotface.cpp:35
BossAI::BossAI
BossAI(Creature *creature, uint32 bossId)
Definition
ScriptedCreature.cpp:456
BossAI::_Reset
void _Reset()
Definition
ScriptedCreature.cpp:462
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
GameObject
Definition
GameObject.h:629
GameObjectScript::GameObjectScript
GameObjectScript(const char *name)
Definition
ScriptMgr.cpp:1442
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::DoCastVictim
void DoCastVictim(uint32 spellId, bool triggered=false)
Definition
UnitAI.cpp:168
Unit
Definition
Unit.h:1367
Unit::GetCreature
static Creature * GetCreature(WorldObject &object, uint64 guid)
Definition
Unit.cpp:4905
WorldObject::GetInstanceScript
InstanceScript * GetInstanceScript()
Definition
Object.cpp:1612
boss_broggok
Definition
boss_broggok.cpp:32
boss_broggok::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_broggok.cpp:143
boss_broggok::boss_broggok
boss_broggok()
Definition
boss_broggok.cpp:34
go_broggok_lever
Definition
boss_broggok.cpp:150
go_broggok_lever::OnGossipHello
bool OnGossipHello(Player *, GameObject *go) OVERRIDE
Definition
boss_broggok.cpp:154
go_broggok_lever::go_broggok_lever
go_broggok_lever()
Definition
boss_broggok.cpp:152
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
Yells
Definition
boss_illidan.cpp:256
boss_broggok::boss_broggokAI
Definition
boss_broggok.cpp:37
boss_broggok::boss_broggokAI::canAttack
bool canAttack
Definition
boss_broggok.cpp:140
boss_broggok::boss_broggokAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_broggok.cpp:71
boss_broggok::boss_broggokAI::PoisonSpawn_Timer
uint32 PoisonSpawn_Timer
Definition
boss_broggok.cpp:138
boss_broggok::boss_broggokAI::JustDied
void JustDied(Unit *) OVERRIDE
Definition
boss_broggok.cpp:104
boss_broggok::boss_broggokAI::AcidSpray_Timer
uint32 AcidSpray_Timer
Definition
boss_broggok.cpp:137
boss_broggok::boss_broggokAI::DoAction
void DoAction(int32 action) OVERRIDE
Definition
boss_broggok.cpp:114
boss_broggok::boss_broggokAI::PoisonBolt_Timer
uint32 PoisonBolt_Timer
Definition
boss_broggok.cpp:139
boss_broggok::boss_broggokAI::JustSummoned
void JustSummoned(Creature *summoned) OVERRIDE
Definition
boss_broggok.cpp:63
boss_broggok::boss_broggokAI::instance
InstanceScript * instance
Definition
boss_broggok.cpp:135
boss_broggok::boss_broggokAI::boss_broggokAI
boss_broggokAI(Creature *creature)
Definition
boss_broggok.cpp:38
boss_broggok::boss_broggokAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_broggok.cpp:58
boss_broggok::boss_broggokAI::Reset
void Reset() OVERRIDE
Definition
boss_broggok.cpp:48
SPELL_POISON
@ SPELL_POISON
Definition
zone_teldrassil.cpp:40
src
server
scripts
Outland
HellfireCitadel
BloodFurnace
boss_broggok.cpp
Generated on
for Project SkyFire Core by
1.17.0