TrinityCore
Loading...
Searching...
No Matches
mana_tombs.cpp
Go to the documentation of this file.
1
/*
2
* This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3
*
4
* This program is free software; you can redistribute it and/or modify it
5
* under the terms of the GNU General Public License as published by the
6
* Free Software Foundation; either version 2 of the License, or (at your
7
* option) any later version.
8
*
9
* This program is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12
* more details.
13
*
14
* You should have received a copy of the GNU General Public License along
15
* with this program. If not, see <http://www.gnu.org/licenses/>.
16
*/
17
18
#include "
ScriptMgr.h
"
19
#include "
ScriptedCreature.h
"
20
#include "
SpellScript.h
"
21
#include "
Unit.h
"
22
#include "
mana_tombs.h
"
23
24
enum
YorSpells
25
{
26
SPELL_DOUBLE_BREATH
= 38361
27
};
28
29
// 22930 - Yor
30
struct
npc_yor
:
public
ScriptedAI
31
{
32
npc_yor
(
Creature
* creature) :
ScriptedAI
(creature) { }
33
34
void
JustAppeared
()
override
35
{
36
_scheduler
.
Schedule
(1500ms, [
this
](
TaskContext
/*task*/
)
37
{
38
me
->
SetFaction
(
FACTION_MONSTER_2
);
39
});
40
}
41
42
void
JustEngagedWith
(
Unit
*
/*who*/
)
override
43
{
44
_scheduler
.
Schedule
(6s, 14s, [
this
](
TaskContext
task)
45
{
46
DoCastVictim
(
SPELL_DOUBLE_BREATH
);
47
task.
Repeat
(8s, 14s);
48
});
49
}
50
51
void
EnterEvadeMode
(
EvadeReason
/*why*/
)
override
52
{
53
_scheduler
.
CancelAll
();
54
}
55
56
void
UpdateAI
(
uint32
diff)
override
57
{
58
_scheduler
.
Update
(diff);
59
60
if
(!
UpdateVictim
())
61
return
;
62
63
DoMeleeAttackIfReady
();
64
}
65
66
private
:
67
TaskScheduler
_scheduler
;
68
};
69
70
enum
SummonArcaneFiends
71
{
72
SPELL_SUMMON_ARCANE_FIEND_1
= 32349,
73
SPELL_SUMMON_ARCANE_FIEND_2
= 32353
74
};
75
76
// 32348 - Summon Arcane Fiends
77
class
spell_mana_tombs_summon_arcane_fiends
:
public
SpellScript
78
{
79
PrepareSpellScript
(
spell_mana_tombs_summon_arcane_fiends
);
80
81
bool
Validate
(
SpellInfo
const
*
/*spellInfo*/
)
override
82
{
83
return
ValidateSpellInfo
(
84
{
85
SPELL_SUMMON_ARCANE_FIEND_1
,
86
SPELL_SUMMON_ARCANE_FIEND_2
87
});
88
}
89
90
void
HandleScript
(
SpellEffIndex
/*effIndex*/
)
91
{
92
Unit
* caster =
GetCaster
();
93
caster->
CastSpell
(caster,
SPELL_SUMMON_ARCANE_FIEND_1
);
94
caster->
CastSpell
(caster,
SPELL_SUMMON_ARCANE_FIEND_2
);
95
}
96
97
void
Register
()
override
98
{
99
OnEffectHit
+=
SpellEffectFn
(
spell_mana_tombs_summon_arcane_fiends::HandleScript
,
EFFECT_0
,
SPELL_EFFECT_SCRIPT_EFFECT
);
100
}
101
};
102
103
void
AddSC_mana_tombs
()
104
{
105
RegisterManaTombsCreatureAI
(
npc_yor
);
106
RegisterSpellScript
(
spell_mana_tombs_summon_arcane_fiends
);
107
}
uint32
uint32_t uint32
Definition
Define.h:133
ScriptMgr.h
RegisterSpellScript
#define RegisterSpellScript(spell_script)
Definition
ScriptMgr.h:1128
ScriptedCreature.h
SpellEffIndex
SpellEffIndex
Definition
SharedDefines.h:30
EFFECT_0
@ EFFECT_0
Definition
SharedDefines.h:31
SPELL_EFFECT_SCRIPT_EFFECT
@ SPELL_EFFECT_SCRIPT_EFFECT
Definition
SharedDefines.h:943
FACTION_MONSTER_2
@ FACTION_MONSTER_2
Definition
SharedDefines.h:236
SpellScript.h
SpellEffectFn
#define SpellEffectFn(F, I, N)
Definition
SpellScript.h:382
Unit.h
CreatureAI::EvadeReason
EvadeReason
Definition
CreatureAI.h:93
CreatureAI::UpdateVictim
bool UpdateVictim()
Definition
CreatureAI.cpp:240
CreatureAI::me
Creature *const me
Definition
CreatureAI.h:82
Creature
Definition
Creature.h:62
SpellInfo
Definition
SpellInfo.h:285
SpellScript
Definition
SpellScript.h:199
SpellScript::GetCaster
Unit * GetCaster() const
Definition
SpellScript.cpp:458
SpellScript::OnEffectHit
HookList< EffectHandler > OnEffectHit
Definition
SpellScript.h:379
TaskContext
Definition
TaskScheduler.h:392
TaskContext::Repeat
TaskContext & Repeat(std::chrono::duration< _Rep, _Period > const &duration)
Definition
TaskScheduler.h:462
TaskScheduler
Definition
TaskScheduler.h:48
TaskScheduler::CancelAll
TaskScheduler & CancelAll()
Definition
TaskScheduler.cpp:45
TaskScheduler::Schedule
TaskScheduler & Schedule(std::chrono::duration< _Rep, _Period > const &time, task_handler_t const &task)
Definition
TaskScheduler.h:225
TaskScheduler::Update
TaskScheduler & Update(success_t const &callback=EmptyCallback)
Definition
TaskScheduler.cpp:27
UnitAI::DoMeleeAttackIfReady
void DoMeleeAttackIfReady()
Definition
UnitAI.cpp:54
UnitAI::DoCastVictim
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
Definition
UnitAI.cpp:166
Unit
Definition
Unit.h:769
Unit::SetFaction
void SetFaction(uint32 faction) override
Definition
Unit.h:974
WorldObject::CastSpell
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
Definition
Object.cpp:2832
_SpellScript::ValidateSpellInfo
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
Definition
SpellScript.h:145
spell_mana_tombs_summon_arcane_fiends
Definition
mana_tombs.cpp:78
spell_mana_tombs_summon_arcane_fiends::Validate
bool Validate(SpellInfo const *) override
Definition
mana_tombs.cpp:81
spell_mana_tombs_summon_arcane_fiends::HandleScript
void HandleScript(SpellEffIndex)
Definition
mana_tombs.cpp:90
spell_mana_tombs_summon_arcane_fiends::PrepareSpellScript
PrepareSpellScript(spell_mana_tombs_summon_arcane_fiends)
spell_mana_tombs_summon_arcane_fiends::Register
void Register() override
Definition
mana_tombs.cpp:97
AddSC_mana_tombs
void AddSC_mana_tombs()
Definition
mana_tombs.cpp:103
SummonArcaneFiends
SummonArcaneFiends
Definition
mana_tombs.cpp:71
SPELL_SUMMON_ARCANE_FIEND_1
@ SPELL_SUMMON_ARCANE_FIEND_1
Definition
mana_tombs.cpp:72
SPELL_SUMMON_ARCANE_FIEND_2
@ SPELL_SUMMON_ARCANE_FIEND_2
Definition
mana_tombs.cpp:73
YorSpells
YorSpells
Definition
mana_tombs.cpp:25
SPELL_DOUBLE_BREATH
@ SPELL_DOUBLE_BREATH
Definition
mana_tombs.cpp:26
mana_tombs.h
RegisterManaTombsCreatureAI
#define RegisterManaTombsCreatureAI(ai_name)
Definition
mana_tombs.h:48
ScriptedAI
Definition
ScriptedCreature.h:132
npc_yor
Definition
mana_tombs.cpp:31
npc_yor::JustAppeared
void JustAppeared() override
Definition
mana_tombs.cpp:34
npc_yor::npc_yor
npc_yor(Creature *creature)
Definition
mana_tombs.cpp:32
npc_yor::UpdateAI
void UpdateAI(uint32 diff) override
Definition
mana_tombs.cpp:56
npc_yor::_scheduler
TaskScheduler _scheduler
Definition
mana_tombs.cpp:67
npc_yor::EnterEvadeMode
void EnterEvadeMode(EvadeReason) override
Definition
mana_tombs.cpp:51
npc_yor::JustEngagedWith
void JustEngagedWith(Unit *) override
Definition
mana_tombs.cpp:42
server
scripts
Outland
Auchindoun
ManaTombs
mana_tombs.cpp
Generated on Sun May 10 2026 02:30:24 for TrinityCore by
1.9.8