Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_drekthar.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
9
enum
Spells
10
{
11
SPELL_WHIRLWIND
= 15589,
12
SPELL_WHIRLWIND2
= 13736,
13
SPELL_KNOCKDOWN
= 19128,
14
SPELL_FRENZY
= 8269,
15
SPELL_SWEEPING_STRIKES
= 18765,
// not sure
16
SPELL_CLEAVE
= 20677,
// not sure
17
SPELL_WINDFURY
= 35886,
// not sure
18
SPELL_STORMPIKE
= 51876
// not sure
19
};
20
21
enum
Yells
22
{
23
YELL_AGGRO
= 0,
24
YELL_EVADE
= 1,
25
YELL_RESPAWN
= 2,
26
YELL_RANDOM
= 3
27
};
28
29
class
boss_drekthar
:
public
CreatureScript
30
{
31
public
:
32
boss_drekthar
() :
CreatureScript
(
"boss_drekthar"
) { }
33
34
struct
boss_drektharAI
:
public
ScriptedAI
35
{
36
boss_drektharAI
(
Creature
* creature) :
ScriptedAI
(creature) { }
37
38
uint32
WhirlwindTimer
;
39
uint32
Whirlwind2Timer
;
40
uint32
KnockdownTimer
;
41
uint32
FrenzyTimer
;
42
uint32
YellTimer
;
43
uint32
ResetTimer
;
44
45
void
Reset
()
OVERRIDE
46
{
47
WhirlwindTimer
= std::rand() % (20 *
IN_MILLISECONDS
) + (1 *
IN_MILLISECONDS
);
48
Whirlwind2Timer
= std::rand() % (20 *
IN_MILLISECONDS
) + (1 *
IN_MILLISECONDS
) ;
49
KnockdownTimer
= 12 *
IN_MILLISECONDS
;
50
FrenzyTimer
= 6 *
IN_MILLISECONDS
;
51
ResetTimer
= 5 *
IN_MILLISECONDS
;
52
YellTimer
= std::rand() % (30 *
IN_MILLISECONDS
) + (20 *
IN_MILLISECONDS
);
//20 to 30 seconds
53
}
54
55
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
56
{
57
Talk
(
YELL_AGGRO
);
58
}
59
60
void
JustRespawned
()
OVERRIDE
61
{
62
Reset
();
63
Talk
(
YELL_RESPAWN
);
64
}
65
66
void
UpdateAI
(
uint32
diff)
OVERRIDE
67
{
68
if
(!
UpdateVictim
())
69
return
;
70
71
if
(
WhirlwindTimer
<= diff)
72
{
73
DoCastVictim
(
SPELL_WHIRLWIND
);
74
WhirlwindTimer
= std::rand() % (18 *
IN_MILLISECONDS
) + (8 *
IN_MILLISECONDS
);
75
}
else
WhirlwindTimer
-= diff;
76
77
if
(
Whirlwind2Timer
<= diff)
78
{
79
DoCastVictim
(
SPELL_WHIRLWIND2
);
80
Whirlwind2Timer
= std::rand() % (25 *
IN_MILLISECONDS
) + (7 *
IN_MILLISECONDS
);
81
}
else
Whirlwind2Timer
-= diff;
82
83
if
(
KnockdownTimer
<= diff)
84
{
85
DoCastVictim
(
SPELL_KNOCKDOWN
);
86
KnockdownTimer
= std::rand() % (15 *
IN_MILLISECONDS
) + (10 *
IN_MILLISECONDS
);
87
}
else
KnockdownTimer
-= diff;
88
89
if
(
FrenzyTimer
<= diff)
90
{
91
DoCastVictim
(
SPELL_FRENZY
);
92
FrenzyTimer
= std::rand() % (30 *
IN_MILLISECONDS
) + (20 *
IN_MILLISECONDS
);
93
}
else
FrenzyTimer
-= diff;
94
95
if
(
YellTimer
<= diff)
96
{
97
Talk
(
YELL_RANDOM
);
98
YellTimer
= std::rand() % (30 *
IN_MILLISECONDS
) + (20 *
IN_MILLISECONDS
);
//20 to 30 seconds
99
}
else
YellTimer
-= diff;
100
101
// check if creature is not outside of building
102
if
(
ResetTimer
<= diff)
103
{
104
if
(
me
->GetDistance2d(
me
->GetHomePosition().GetPositionX(),
me
->GetHomePosition().GetPositionY()) > 50)
105
{
106
EnterEvadeMode
();
107
Talk
(
YELL_EVADE
);
108
}
109
ResetTimer
= 5 *
IN_MILLISECONDS
;
110
}
else
ResetTimer
-= diff;
111
112
DoMeleeAttackIfReady
();
113
}
114
};
115
116
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
117
{
118
return
new
boss_drektharAI
(creature);
119
}
120
};
121
122
void
AddSC_boss_drekthar
()
123
{
124
new
boss_drekthar
;
125
}
Spells
Spells
Definition
BattlegroundIC.h:645
IN_MILLISECONDS
@ IN_MILLISECONDS
Definition
Common.h:125
uint32
std::uint32_t uint32
Definition
Define.h:77
OVERRIDE
#define OVERRIDE
Definition
Define.h:60
ScriptMgr.h
ScriptedCreature.h
SPELL_CLEAVE
@ SPELL_CLEAVE
Definition
alterac_valley.cpp:12
SPELL_WHIRLWIND
@ SPELL_WHIRLWIND
Definition
alterac_valley.cpp:15
YELL_EVADE
@ YELL_EVADE
Definition
boss_balinda.cpp:20
YELL_AGGRO
@ YELL_AGGRO
Definition
boss_balinda.cpp:19
AddSC_boss_drekthar
void AddSC_boss_drekthar()
Definition
boss_drekthar.cpp:122
YELL_RANDOM
@ YELL_RANDOM
Definition
boss_drekthar.cpp:26
YELL_EVADE
@ YELL_EVADE
Definition
boss_drekthar.cpp:24
YELL_AGGRO
@ YELL_AGGRO
Definition
boss_drekthar.cpp:23
YELL_RESPAWN
@ YELL_RESPAWN
Definition
boss_drekthar.cpp:25
SPELL_WINDFURY
@ SPELL_WINDFURY
Definition
boss_drekthar.cpp:17
SPELL_STORMPIKE
@ SPELL_STORMPIKE
Definition
boss_drekthar.cpp:18
SPELL_WHIRLWIND2
@ SPELL_WHIRLWIND2
Definition
boss_drekthar.cpp:12
SPELL_FRENZY
@ SPELL_FRENZY
Definition
boss_drekthar.cpp:14
SPELL_SWEEPING_STRIKES
@ SPELL_SWEEPING_STRIKES
Definition
boss_drekthar.cpp:15
SPELL_KNOCKDOWN
@ SPELL_KNOCKDOWN
Definition
boss_drekthar.cpp:13
SPELL_WHIRLWIND
@ SPELL_WHIRLWIND
Definition
boss_drekthar.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
CreatureAI::EnterEvadeMode
virtual void EnterEvadeMode()
Definition
CreatureAI.cpp:130
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_drekthar
Definition
boss_drekthar.cpp:30
boss_drekthar::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_drekthar.cpp:116
boss_drekthar::boss_drekthar
boss_drekthar()
Definition
boss_drekthar.cpp:32
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::ScriptedAI
ScriptedAI(Creature *creature)
Definition
ScriptedCreature.cpp:85
Yells
Definition
boss_illidan.cpp:256
boss_drekthar::boss_drektharAI
Definition
boss_drekthar.cpp:35
boss_drekthar::boss_drektharAI::JustRespawned
void JustRespawned() OVERRIDE
Definition
boss_drekthar.cpp:60
boss_drekthar::boss_drektharAI::KnockdownTimer
uint32 KnockdownTimer
Definition
boss_drekthar.cpp:40
boss_drekthar::boss_drektharAI::boss_drektharAI
boss_drektharAI(Creature *creature)
Definition
boss_drekthar.cpp:36
boss_drekthar::boss_drektharAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_drekthar.cpp:66
boss_drekthar::boss_drektharAI::Whirlwind2Timer
uint32 Whirlwind2Timer
Definition
boss_drekthar.cpp:39
boss_drekthar::boss_drektharAI::ResetTimer
uint32 ResetTimer
Definition
boss_drekthar.cpp:43
boss_drekthar::boss_drektharAI::YellTimer
uint32 YellTimer
Definition
boss_drekthar.cpp:42
boss_drekthar::boss_drektharAI::Reset
void Reset() OVERRIDE
Definition
boss_drekthar.cpp:45
boss_drekthar::boss_drektharAI::WhirlwindTimer
uint32 WhirlwindTimer
Definition
boss_drekthar.cpp:38
boss_drekthar::boss_drektharAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_drekthar.cpp:55
boss_drekthar::boss_drektharAI::FrenzyTimer
uint32 FrenzyTimer
Definition
boss_drekthar.cpp:41
src
server
scripts
EasternKingdoms
AlteracValley
boss_drekthar.cpp
Generated on
for Project SkyFire Core by
1.17.0