Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_maiden_of_grief.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
/* Script Data Start
7
SDName: Boss maiden_of_grief
8
SDAuthor: LordVanMartin
9
SD%Complete:
10
SDComment:
11
SDCategory:
12
Script Data End */
13
14
#include "
ScriptMgr.h
"
15
#include "
ScriptedCreature.h
"
16
#include "
halls_of_stone.h
"
17
18
enum
Spells
19
{
20
SPELL_PARTING_SORROW
= 59723,
21
SPELL_STORM_OF_GRIEF_N
= 50752,
22
SPELL_STORM_OF_GRIEF_H
= 59772,
23
SPELL_SHOCK_OF_SORROW_N
= 50760,
24
SPELL_SHOCK_OF_SORROW_H
= 59726,
25
SPELL_PILLAR_OF_WOE_N
= 50761,
26
SPELL_PILLAR_OF_WOE_H
= 59727
27
};
28
29
enum
Yells
30
{
31
SAY_AGGRO
= 0,
32
SAY_SLAY
= 1,
33
SAY_DEATH
= 2,
34
SAY_STUN
= 3
35
};
36
37
enum
Achievements
38
{
39
ACHIEV_GOOD_GRIEF_START_EVENT
= 20383,
40
};
41
42
class
boss_maiden_of_grief
:
public
CreatureScript
43
{
44
public
:
45
boss_maiden_of_grief
() :
CreatureScript
(
"boss_maiden_of_grief"
) { }
46
47
struct
boss_maiden_of_griefAI
:
public
ScriptedAI
48
{
49
boss_maiden_of_griefAI
(
Creature
* creature) :
ScriptedAI
(creature)
50
{
51
instance
=
me
->GetInstanceScript();
52
}
53
54
InstanceScript
*
instance
;
55
56
uint32
PartingSorrowTimer
;
57
uint32
StormOfGriefTimer
;
58
uint32
ShockOfSorrowTimer
;
59
uint32
PillarOfWoeTimer
;
60
61
void
Reset
()
OVERRIDE
62
{
63
PartingSorrowTimer
= std::rand() % 30000 + 25000;
64
StormOfGriefTimer
= 10000;
65
ShockOfSorrowTimer
= 20000+rand()%5000;
66
PillarOfWoeTimer
= std::rand() % 15000 + 5000;
67
68
if
(
instance
)
69
{
70
instance
->SetBossState(
DATA_MAIDEN_OF_GRIEF
,
NOT_STARTED
);
71
instance
->DoStopTimedAchievement(
ACHIEVEMENT_TIMED_TYPE_EVENT
,
ACHIEV_GOOD_GRIEF_START_EVENT
);
72
}
73
}
74
75
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
76
{
77
Talk
(
SAY_AGGRO
);
78
79
if
(
instance
)
80
{
81
instance
->SetBossState(
DATA_MAIDEN_OF_GRIEF
,
IN_PROGRESS
);
82
instance
->DoStartTimedAchievement(
ACHIEVEMENT_TIMED_TYPE_EVENT
,
ACHIEV_GOOD_GRIEF_START_EVENT
);
83
}
84
}
85
86
void
UpdateAI
(
uint32
diff)
OVERRIDE
87
{
88
//Return since we have no target
89
if
(!
UpdateVictim
())
90
return
;
91
92
if
(
IsHeroic
())
93
{
94
if
(
PartingSorrowTimer
<= diff)
95
{
96
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0))
97
DoCast
(target,
SPELL_PARTING_SORROW
);
98
99
PartingSorrowTimer
= std::rand() % 40000 + 30000;
100
}
else
PartingSorrowTimer
-= diff;
101
}
102
103
if
(
StormOfGriefTimer
<= diff)
104
{
105
DoCastVictim
(
SPELL_STORM_OF_GRIEF_N
,
true
);
106
StormOfGriefTimer
= std::rand() % 20000 + 15000;
107
}
else
StormOfGriefTimer
-= diff;
108
109
if
(
ShockOfSorrowTimer
<= diff)
110
{
111
DoResetThreat
();
112
Talk
(
SAY_STUN
);
113
DoCast
(
me
,
SPELL_SHOCK_OF_SORROW_N
);
114
ShockOfSorrowTimer
= std::rand() % 30000 + 20000;
115
}
else
ShockOfSorrowTimer
-= diff;
116
117
if
(
PillarOfWoeTimer
<= diff)
118
{
119
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 1);
120
121
if
(target)
122
DoCast
(target,
SPELL_PILLAR_OF_WOE_N
);
123
else
124
DoCastVictim
(
SPELL_PILLAR_OF_WOE_N
);
125
126
PillarOfWoeTimer
= std::rand() % 25000 + 5000;
127
}
else
PillarOfWoeTimer
-= diff;
128
129
DoMeleeAttackIfReady
();
130
}
131
132
void
JustDied
(
Unit
*
/*killer*/
)
OVERRIDE
133
{
134
Talk
(
SAY_DEATH
);
135
136
if
(
instance
)
137
instance
->SetBossState(
DATA_MAIDEN_OF_GRIEF
,
DONE
);
138
}
139
140
void
KilledUnit
(
Unit
* victim)
OVERRIDE
141
{
142
if
(victim->GetTypeId() !=
TypeID::TYPEID_PLAYER
)
143
return
;
144
145
Talk
(
SAY_SLAY
);
146
}
147
};
148
149
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
150
{
151
return
GetHallsOfStoneAI<boss_maiden_of_griefAI>
(creature);
152
}
153
};
154
155
void
AddSC_boss_maiden_of_grief
()
156
{
157
new
boss_maiden_of_grief
();
158
}
Spells
Spells
Definition
BattlegroundIC.h:645
ACHIEVEMENT_TIMED_TYPE_EVENT
@ ACHIEVEMENT_TIMED_TYPE_EVENT
Definition
DBCEnums.h:158
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
Achievements
Achievements
Definition
boss_herald_volazj.cpp:41
SAY_DEATH
@ SAY_DEATH
Definition
boss_maiden_of_grief.cpp:33
SAY_AGGRO
@ SAY_AGGRO
Definition
boss_maiden_of_grief.cpp:31
SAY_STUN
@ SAY_STUN
Definition
boss_maiden_of_grief.cpp:34
SAY_SLAY
@ SAY_SLAY
Definition
boss_maiden_of_grief.cpp:32
SPELL_STORM_OF_GRIEF_H
@ SPELL_STORM_OF_GRIEF_H
Definition
boss_maiden_of_grief.cpp:22
SPELL_SHOCK_OF_SORROW_N
@ SPELL_SHOCK_OF_SORROW_N
Definition
boss_maiden_of_grief.cpp:23
SPELL_PILLAR_OF_WOE_N
@ SPELL_PILLAR_OF_WOE_N
Definition
boss_maiden_of_grief.cpp:25
SPELL_STORM_OF_GRIEF_N
@ SPELL_STORM_OF_GRIEF_N
Definition
boss_maiden_of_grief.cpp:21
SPELL_PILLAR_OF_WOE_H
@ SPELL_PILLAR_OF_WOE_H
Definition
boss_maiden_of_grief.cpp:26
SPELL_PARTING_SORROW
@ SPELL_PARTING_SORROW
Definition
boss_maiden_of_grief.cpp:20
SPELL_SHOCK_OF_SORROW_H
@ SPELL_SHOCK_OF_SORROW_H
Definition
boss_maiden_of_grief.cpp:24
AddSC_boss_maiden_of_grief
void AddSC_boss_maiden_of_grief()
Definition
boss_maiden_of_grief.cpp:155
ACHIEV_GOOD_GRIEF_START_EVENT
@ ACHIEV_GOOD_GRIEF_START_EVENT
Definition
boss_maiden_of_grief.cpp:39
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
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_grief
Definition
boss_maiden_of_grief.cpp:43
boss_maiden_of_grief::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_maiden_of_grief.cpp:149
boss_maiden_of_grief::boss_maiden_of_grief
boss_maiden_of_grief()
Definition
boss_maiden_of_grief.cpp:45
halls_of_stone.h
GetHallsOfStoneAI
AI * GetHallsOfStoneAI(Creature *creature)
Definition
halls_of_stone.h:58
DATA_MAIDEN_OF_GRIEF
@ DATA_MAIDEN_OF_GRIEF
Definition
halls_of_stone.h:17
ScriptedAI::IsHeroic
bool IsHeroic() const
Definition
ScriptedCreature.h:279
ScriptedAI::DoResetThreat
void DoResetThreat()
Definition
ScriptedCreature.cpp:260
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::ScriptedAI
ScriptedAI(Creature *creature)
Definition
ScriptedCreature.cpp:85
Yells
Definition
boss_illidan.cpp:256
boss_maiden_of_grief::boss_maiden_of_griefAI::boss_maiden_of_griefAI
boss_maiden_of_griefAI(Creature *creature)
Definition
boss_maiden_of_grief.cpp:49
boss_maiden_of_grief::boss_maiden_of_griefAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_maiden_of_grief.cpp:75
boss_maiden_of_grief::boss_maiden_of_griefAI::KilledUnit
void KilledUnit(Unit *victim) OVERRIDE
Definition
boss_maiden_of_grief.cpp:140
boss_maiden_of_grief::boss_maiden_of_griefAI::JustDied
void JustDied(Unit *) OVERRIDE
Definition
boss_maiden_of_grief.cpp:132
boss_maiden_of_grief::boss_maiden_of_griefAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_maiden_of_grief.cpp:86
boss_maiden_of_grief::boss_maiden_of_griefAI::PillarOfWoeTimer
uint32 PillarOfWoeTimer
Definition
boss_maiden_of_grief.cpp:59
boss_maiden_of_grief::boss_maiden_of_griefAI::ShockOfSorrowTimer
uint32 ShockOfSorrowTimer
Definition
boss_maiden_of_grief.cpp:58
boss_maiden_of_grief::boss_maiden_of_griefAI::PartingSorrowTimer
uint32 PartingSorrowTimer
Definition
boss_maiden_of_grief.cpp:56
boss_maiden_of_grief::boss_maiden_of_griefAI::instance
InstanceScript * instance
Definition
boss_maiden_of_grief.cpp:54
boss_maiden_of_grief::boss_maiden_of_griefAI::StormOfGriefTimer
uint32 StormOfGriefTimer
Definition
boss_maiden_of_grief.cpp:57
boss_maiden_of_grief::boss_maiden_of_griefAI::Reset
void Reset() OVERRIDE
Definition
boss_maiden_of_grief.cpp:61
src
server
scripts
Northrend
Ulduar
HallsOfStone
boss_maiden_of_grief.cpp
Generated on
for Project SkyFire Core by
1.17.0