Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_salramm_the_fleshcrafter.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 salramm
8
SDAuthor: Tartalo
9
SD%Complete: 80
10
SDComment: @todo Intro
11
SDCategory:
12
Script Data End */
13
14
#include "
ScriptMgr.h
"
15
#include "
ScriptedCreature.h
"
16
#include "
culling_of_stratholme.h
"
17
18
enum
Spells
19
{
20
SPELL_CURSE_OF_TWISTED_FLESH
= 58845,
21
SPELL_EXPLODE_GHOUL
= 52480,
22
H_SPELL_EXPLODE_GHOUL
= 58825,
23
SPELL_SHADOW_BOLT
= 57725,
24
H_SPELL_SHADOW_BOLT
= 58828,
25
SPELL_STEAL_FLESH
= 52708,
26
SPELL_SUMMON_GHOULS
= 52451
27
};
28
29
enum
Yells
30
{
31
SAY_AGGRO
= 0,
32
SAY_SPAWN
= 1,
33
SAY_SLAY
= 2,
34
SAY_DEATH
= 3,
35
SAY_EXPLODE_GHOUL
= 4,
36
SAY_STEAL_FLESH
= 5,
37
SAY_SUMMON_GHOULS
= 6
38
};
39
40
class
boss_salramm
:
public
CreatureScript
41
{
42
public
:
43
boss_salramm
() :
CreatureScript
(
"boss_salramm"
) { }
44
45
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
46
{
47
return
new
boss_salrammAI
(creature);
48
}
49
50
struct
boss_salrammAI
:
public
ScriptedAI
51
{
52
boss_salrammAI
(
Creature
* creature) :
ScriptedAI
(creature)
53
{
54
instance
= creature->
GetInstanceScript
();
55
if
(
instance
)
56
Talk
(
SAY_SPAWN
);
57
}
58
59
uint32
uiCurseFleshTimer
;
60
uint32
uiExplodeGhoulTimer
;
61
uint32
uiShadowBoltTimer
;
62
uint32
uiStealFleshTimer
;
63
uint32
uiSummonGhoulsTimer
;
64
65
InstanceScript
*
instance
;
66
67
void
Reset
()
OVERRIDE
68
{
69
uiCurseFleshTimer
= 30000;
//30s DBM
70
uiExplodeGhoulTimer
= std::rand() % 28000 + 25000;
//approx 6 sec after summon ghouls
71
uiShadowBoltTimer
= std::rand() % 12000 + 8000;
// approx 10s
72
uiStealFleshTimer
= 12345;
73
uiSummonGhoulsTimer
= std::rand() % 24000 + 19000;
//on a video approx 24s after aggro
74
75
if
(
instance
)
76
instance
->SetData(
DATA_SALRAMM_EVENT
,
NOT_STARTED
);
77
}
78
79
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
80
{
81
Talk
(
SAY_AGGRO
);
82
83
if
(
instance
)
84
instance
->SetData(
DATA_SALRAMM_EVENT
,
IN_PROGRESS
);
85
}
86
87
void
UpdateAI
(
uint32
diff)
OVERRIDE
88
{
89
//Return since we have no target
90
if
(!
UpdateVictim
())
91
return
;
92
93
//Curse of twisted flesh timer
94
if
(
uiCurseFleshTimer
<= diff)
95
{
96
DoCastVictim
(
SPELL_CURSE_OF_TWISTED_FLESH
);
97
uiCurseFleshTimer
= 37000;
98
}
else
uiCurseFleshTimer
-= diff;
99
100
//Shadow bolt timer
101
if
(
uiShadowBoltTimer
<= diff)
102
{
103
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0))
104
DoCast
(target,
SPELL_SHADOW_BOLT
);
105
uiShadowBoltTimer
= std::rand() % 12000 + 8000;
106
}
else
uiShadowBoltTimer
-= diff;
107
108
//Steal Flesh timer
109
if
(
uiStealFleshTimer
<= diff)
110
{
111
Talk
(
SAY_STEAL_FLESH
);
112
if
(
Unit
* random_pTarget =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0))
113
DoCast
(random_pTarget,
SPELL_STEAL_FLESH
);
114
uiStealFleshTimer
= 10000;
115
}
else
uiStealFleshTimer
-= diff;
116
117
//Summon ghouls timer
118
if
(
uiSummonGhoulsTimer
<= diff)
119
{
120
Talk
(
SAY_SUMMON_GHOULS
);
121
if
(
Unit
* random_pTarget =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0))
122
DoCast
(random_pTarget,
SPELL_SUMMON_GHOULS
);
123
uiSummonGhoulsTimer
= 10000;
124
}
else
uiSummonGhoulsTimer
-= diff;
125
126
DoMeleeAttackIfReady
();
127
}
128
129
void
JustDied
(
Unit
*
/*killer*/
)
OVERRIDE
130
{
131
Talk
(
SAY_DEATH
);
132
133
if
(
instance
)
134
instance
->SetData(
DATA_SALRAMM_EVENT
,
DONE
);
135
}
136
137
void
KilledUnit
(
Unit
* victim)
OVERRIDE
138
{
139
if
(victim->GetTypeId() !=
TypeID::TYPEID_PLAYER
)
140
return
;
141
142
Talk
(
SAY_SLAY
);
143
}
144
};
145
};
146
147
void
AddSC_boss_salramm
()
148
{
149
new
boss_salramm
();
150
}
Spells
Spells
Definition
BattlegroundIC.h:645
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
SPELL_SHADOW_BOLT
@ SPELL_SHADOW_BOLT
Definition
boss_gehennas.cpp:22
SAY_SPAWN
@ SAY_SPAWN
Definition
boss_majordomo_executus.cpp:23
SAY_DEATH
@ SAY_DEATH
Definition
boss_salramm_the_fleshcrafter.cpp:34
SAY_STEAL_FLESH
@ SAY_STEAL_FLESH
Definition
boss_salramm_the_fleshcrafter.cpp:36
SAY_SUMMON_GHOULS
@ SAY_SUMMON_GHOULS
Definition
boss_salramm_the_fleshcrafter.cpp:37
SAY_AGGRO
@ SAY_AGGRO
Definition
boss_salramm_the_fleshcrafter.cpp:31
SAY_EXPLODE_GHOUL
@ SAY_EXPLODE_GHOUL
Definition
boss_salramm_the_fleshcrafter.cpp:35
SAY_SLAY
@ SAY_SLAY
Definition
boss_salramm_the_fleshcrafter.cpp:33
SAY_SPAWN
@ SAY_SPAWN
Definition
boss_salramm_the_fleshcrafter.cpp:32
SPELL_CURSE_OF_TWISTED_FLESH
@ SPELL_CURSE_OF_TWISTED_FLESH
Definition
boss_salramm_the_fleshcrafter.cpp:20
SPELL_STEAL_FLESH
@ SPELL_STEAL_FLESH
Definition
boss_salramm_the_fleshcrafter.cpp:25
H_SPELL_SHADOW_BOLT
@ H_SPELL_SHADOW_BOLT
Definition
boss_salramm_the_fleshcrafter.cpp:24
SPELL_SUMMON_GHOULS
@ SPELL_SUMMON_GHOULS
Definition
boss_salramm_the_fleshcrafter.cpp:26
H_SPELL_EXPLODE_GHOUL
@ H_SPELL_EXPLODE_GHOUL
Definition
boss_salramm_the_fleshcrafter.cpp:22
SPELL_SHADOW_BOLT
@ SPELL_SHADOW_BOLT
Definition
boss_salramm_the_fleshcrafter.cpp:23
SPELL_EXPLODE_GHOUL
@ SPELL_EXPLODE_GHOUL
Definition
boss_salramm_the_fleshcrafter.cpp:21
AddSC_boss_salramm
void AddSC_boss_salramm()
Definition
boss_salramm_the_fleshcrafter.cpp:147
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
WorldObject::GetInstanceScript
InstanceScript * GetInstanceScript()
Definition
Object.cpp:1612
boss_salramm
Definition
boss_salramm_the_fleshcrafter.cpp:41
boss_salramm::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_salramm_the_fleshcrafter.cpp:45
boss_salramm::boss_salramm
boss_salramm()
Definition
boss_salramm_the_fleshcrafter.cpp:43
culling_of_stratholme.h
DATA_SALRAMM_EVENT
@ DATA_SALRAMM_EVENT
Definition
culling_of_stratholme.h:12
ScriptedAI::ScriptedAI
ScriptedAI(Creature *creature)
Definition
ScriptedCreature.cpp:85
Yells
Definition
boss_illidan.cpp:256
boss_salramm::boss_salrammAI
Definition
boss_salramm_the_fleshcrafter.cpp:51
boss_salramm::boss_salrammAI::KilledUnit
void KilledUnit(Unit *victim) OVERRIDE
Definition
boss_salramm_the_fleshcrafter.cpp:137
boss_salramm::boss_salrammAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_salramm_the_fleshcrafter.cpp:87
boss_salramm::boss_salrammAI::uiShadowBoltTimer
uint32 uiShadowBoltTimer
Definition
boss_salramm_the_fleshcrafter.cpp:61
boss_salramm::boss_salrammAI::uiSummonGhoulsTimer
uint32 uiSummonGhoulsTimer
Definition
boss_salramm_the_fleshcrafter.cpp:63
boss_salramm::boss_salrammAI::instance
InstanceScript * instance
Definition
boss_salramm_the_fleshcrafter.cpp:65
boss_salramm::boss_salrammAI::uiStealFleshTimer
uint32 uiStealFleshTimer
Definition
boss_salramm_the_fleshcrafter.cpp:62
boss_salramm::boss_salrammAI::uiExplodeGhoulTimer
uint32 uiExplodeGhoulTimer
Definition
boss_salramm_the_fleshcrafter.cpp:60
boss_salramm::boss_salrammAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_salramm_the_fleshcrafter.cpp:79
boss_salramm::boss_salrammAI::Reset
void Reset() OVERRIDE
Definition
boss_salramm_the_fleshcrafter.cpp:67
boss_salramm::boss_salrammAI::uiCurseFleshTimer
uint32 uiCurseFleshTimer
Definition
boss_salramm_the_fleshcrafter.cpp:59
boss_salramm::boss_salrammAI::JustDied
void JustDied(Unit *) OVERRIDE
Definition
boss_salramm_the_fleshcrafter.cpp:129
boss_salramm::boss_salrammAI::boss_salrammAI
boss_salrammAI(Creature *creature)
Definition
boss_salramm_the_fleshcrafter.cpp:52
src
server
scripts
Kalimdor
CavernsOfTime
CullingOfStratholme
boss_salramm_the_fleshcrafter.cpp
Generated on
for Project SkyFire Core by
1.17.0