Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_maiden_of_virtue.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_Maiden_of_Virtue
8
SD%Complete: 100
9
SDComment:
10
SDCategory: Karazhan
11
EndScriptData */
12
13
#include "
ScriptMgr.h
"
14
#include "
ScriptedCreature.h
"
15
16
enum
MaidenOfVirtue
17
{
18
SAY_AGGRO
= 0,
19
SAY_SLAY
= 1,
20
SAY_REPENTANCE
= 2,
21
SAY_DEATH
= 3,
22
23
SPELL_REPENTANCE
= 29511,
24
SPELL_HOLYFIRE
= 29522,
25
SPELL_HOLYWRATH
= 32445,
26
SPELL_HOLYGROUND
= 29512,
27
SPELL_BERSERK
= 26662,
28
};
29
30
class
boss_maiden_of_virtue
:
public
CreatureScript
31
{
32
public
:
33
boss_maiden_of_virtue
() :
CreatureScript
(
"boss_maiden_of_virtue"
) { }
34
35
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
36
{
37
return
new
boss_maiden_of_virtueAI
(creature);
38
}
39
40
struct
boss_maiden_of_virtueAI
:
public
ScriptedAI
41
{
42
boss_maiden_of_virtueAI
(
Creature
* creature) :
ScriptedAI
(creature) { }
43
44
uint32
Repentance_Timer
;
45
uint32
Holyfire_Timer
;
46
uint32
Holywrath_Timer
;
47
uint32
Holyground_Timer
;
48
uint32
Enrage_Timer
;
49
50
bool
Enraged
;
51
52
void
Reset
()
OVERRIDE
53
{
54
Repentance_Timer
= 25000+(rand()%15000);
55
Holyfire_Timer
= 8000+(rand()%17000);
56
Holywrath_Timer
= 15000+(rand()%10000);
57
Holyground_Timer
= 3000;
58
Enrage_Timer
= 600000;
59
60
Enraged
=
false
;
61
}
62
63
void
KilledUnit
(
Unit
*
/*Victim*/
)
OVERRIDE
64
{
65
if
((std::rand() % 1) == 0)
66
Talk
(
SAY_SLAY
);
67
}
68
69
void
JustDied
(
Unit
*
/*killer*/
)
OVERRIDE
70
{
71
Talk
(
SAY_DEATH
);
72
}
73
74
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
75
{
76
Talk
(
SAY_AGGRO
);
77
}
78
79
void
UpdateAI
(
uint32
diff)
OVERRIDE
80
{
81
if
(!
UpdateVictim
())
82
return
;
83
84
if
(
Enrage_Timer
< diff && !
Enraged
)
85
{
86
DoCast
(
me
,
SPELL_BERSERK
,
true
);
87
Enraged
=
true
;
88
}
else
Enrage_Timer
-= diff;
89
90
if
(
Holyground_Timer
<= diff)
91
{
92
DoCast
(
me
,
SPELL_HOLYGROUND
,
true
);
//Triggered so it doesn't interrupt her at all
93
Holyground_Timer
= 3000;
94
}
else
Holyground_Timer
-= diff;
95
96
if
(
Repentance_Timer
<= diff)
97
{
98
DoCastVictim
(
SPELL_REPENTANCE
);
99
Talk
(
SAY_REPENTANCE
);
100
101
Repentance_Timer
= std::rand() % 35000 + 25000;
//A little randomness on that spell
102
}
else
Repentance_Timer
-= diff;
103
104
if
(
Holyfire_Timer
<= diff)
105
{
106
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0, 100,
true
))
107
DoCast
(target,
SPELL_HOLYFIRE
);
108
109
Holyfire_Timer
= std::rand() % 23000 + 8000;
//Anywhere from 8 to 23 seconds, good luck having several of those in a row!
110
}
else
Holyfire_Timer
-= diff;
111
112
if
(
Holywrath_Timer
<= diff)
113
{
114
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0, 100,
true
))
115
DoCast
(target,
SPELL_HOLYWRATH
);
116
117
Holywrath_Timer
= std::rand() % 25000 + 20000;
//20-30 secs sounds nice
118
}
else
Holywrath_Timer
-= diff;
119
120
DoMeleeAttackIfReady
();
121
}
122
};
123
};
124
125
void
AddSC_boss_maiden_of_virtue
()
126
{
127
new
boss_maiden_of_virtue
();
128
}
uint32
std::uint32_t uint32
Definition
Define.h:77
OVERRIDE
#define OVERRIDE
Definition
Define.h:60
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_BERSERK
#define SPELL_BERSERK
Definition
boss_four_horsemen.cpp:62
AddSC_boss_maiden_of_virtue
void AddSC_boss_maiden_of_virtue()
Definition
boss_maiden_of_virtue.cpp:125
MaidenOfVirtue
MaidenOfVirtue
Definition
boss_maiden_of_virtue.cpp:17
SAY_DEATH
@ SAY_DEATH
Definition
boss_maiden_of_virtue.cpp:21
SPELL_HOLYGROUND
@ SPELL_HOLYGROUND
Definition
boss_maiden_of_virtue.cpp:26
SPELL_REPENTANCE
@ SPELL_REPENTANCE
Definition
boss_maiden_of_virtue.cpp:23
SAY_REPENTANCE
@ SAY_REPENTANCE
Definition
boss_maiden_of_virtue.cpp:20
SAY_AGGRO
@ SAY_AGGRO
Definition
boss_maiden_of_virtue.cpp:18
SAY_SLAY
@ SAY_SLAY
Definition
boss_maiden_of_virtue.cpp:19
SPELL_HOLYWRATH
@ SPELL_HOLYWRATH
Definition
boss_maiden_of_virtue.cpp:25
SPELL_HOLYFIRE
@ SPELL_HOLYFIRE
Definition
boss_maiden_of_virtue.cpp:24
SPELL_BERSERK
@ SPELL_BERSERK
Definition
boss_maiden_of_virtue.cpp:27
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
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
boss_maiden_of_virtue
Definition
boss_maiden_of_virtue.cpp:31
boss_maiden_of_virtue::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_maiden_of_virtue.cpp:35
boss_maiden_of_virtue::boss_maiden_of_virtue
boss_maiden_of_virtue()
Definition
boss_maiden_of_virtue.cpp:33
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::ScriptedAI
ScriptedAI(Creature *creature)
Definition
ScriptedCreature.cpp:85
boss_maiden_of_virtue::boss_maiden_of_virtueAI
Definition
boss_maiden_of_virtue.cpp:41
boss_maiden_of_virtue::boss_maiden_of_virtueAI::Holyfire_Timer
uint32 Holyfire_Timer
Definition
boss_maiden_of_virtue.cpp:45
boss_maiden_of_virtue::boss_maiden_of_virtueAI::KilledUnit
void KilledUnit(Unit *) OVERRIDE
Definition
boss_maiden_of_virtue.cpp:63
boss_maiden_of_virtue::boss_maiden_of_virtueAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_maiden_of_virtue.cpp:74
boss_maiden_of_virtue::boss_maiden_of_virtueAI::Reset
void Reset() OVERRIDE
Definition
boss_maiden_of_virtue.cpp:52
boss_maiden_of_virtue::boss_maiden_of_virtueAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_maiden_of_virtue.cpp:79
boss_maiden_of_virtue::boss_maiden_of_virtueAI::Enrage_Timer
uint32 Enrage_Timer
Definition
boss_maiden_of_virtue.cpp:48
boss_maiden_of_virtue::boss_maiden_of_virtueAI::Repentance_Timer
uint32 Repentance_Timer
Definition
boss_maiden_of_virtue.cpp:44
boss_maiden_of_virtue::boss_maiden_of_virtueAI::boss_maiden_of_virtueAI
boss_maiden_of_virtueAI(Creature *creature)
Definition
boss_maiden_of_virtue.cpp:42
boss_maiden_of_virtue::boss_maiden_of_virtueAI::Enraged
bool Enraged
Definition
boss_maiden_of_virtue.cpp:50
boss_maiden_of_virtue::boss_maiden_of_virtueAI::JustDied
void JustDied(Unit *) OVERRIDE
Definition
boss_maiden_of_virtue.cpp:69
boss_maiden_of_virtue::boss_maiden_of_virtueAI::Holywrath_Timer
uint32 Holywrath_Timer
Definition
boss_maiden_of_virtue.cpp:46
boss_maiden_of_virtue::boss_maiden_of_virtueAI::Holyground_Timer
uint32 Holyground_Timer
Definition
boss_maiden_of_virtue.cpp:47
src
server
scripts
EasternKingdoms
Karazhan
boss_maiden_of_virtue.cpp
Generated on
for Project SkyFire Core by
1.17.0