Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
zone_the_scarlet_enclave.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
#include "
PassiveAI.h
"
9
#include "
Player.h
"
10
11
/*####
12
## npc_valkyr_battle_maiden
13
####*/
14
15
enum
Spells_VBM
16
{
17
SPELL_REVIVE
= 51918
18
};
19
20
enum
Says_VBM
21
{
22
WHISPER_REVIVE
= 0
23
};
24
25
class
npc_valkyr_battle_maiden
:
public
CreatureScript
26
{
27
public
:
28
npc_valkyr_battle_maiden
() :
CreatureScript
(
"npc_valkyr_battle_maiden"
) { }
29
30
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
31
{
32
return
new
npc_valkyr_battle_maidenAI
(creature);
33
}
34
35
struct
npc_valkyr_battle_maidenAI
:
public
PassiveAI
36
{
37
npc_valkyr_battle_maidenAI
(
Creature
* creature) :
PassiveAI
(creature) { }
38
39
uint32
FlyBackTimer
;
40
float
x
,
y
,
z
;
41
uint32
phase
;
42
43
void
Reset
()
OVERRIDE
44
{
45
me
->setActive(
true
);
46
me
->SetVisible(
false
);
47
me
->SetFlag(
UNIT_FIELD_FLAGS
,
UNIT_FLAG_NON_ATTACKABLE
);
48
me
->SetCanFly(
true
);
49
FlyBackTimer
= 500;
50
phase
= 0;
51
52
me
->GetPosition(
x
,
y
,
z
);
53
z
+= 4.0f;
54
x
-= 3.5f;
55
y
-= 5.0f;
56
me
->GetMotionMaster()->Clear(
false
);
57
me
->SetPosition(
x
,
y
,
z
, 0.0f);
58
}
59
60
void
UpdateAI
(
uint32
diff)
OVERRIDE
61
{
62
if
(
FlyBackTimer
<= diff)
63
{
64
Player
* player = NULL;
65
if
(
me
->IsSummon())
66
if
(
Unit
* summoner =
me
->ToTempSummon()->GetSummoner())
67
player = summoner->
ToPlayer
();
68
69
if
(!player)
70
phase
= 3;
71
72
switch
(
phase
)
73
{
74
case
0:
75
me
->SetWalk(
false
);
76
me
->HandleEmoteCommand(
EMOTE_STATE_FLYGRABCLOSED
);
77
FlyBackTimer
= 500;
78
break
;
79
case
1:
80
player->
GetClosePoint
(
x
,
y
,
z
,
me
->GetObjectSize());
81
z
+= 2.5f;
82
x
-= 2.0f;
83
y
-= 1.5f;
84
me
->GetMotionMaster()->MovePoint(0,
x
,
y
,
z
);
85
me
->SetTarget(player->
GetGUID
());
86
me
->SetVisible(
true
);
87
FlyBackTimer
= 4500;
88
break
;
89
case
2:
90
if
(!player->
IsRessurectRequested
())
91
{
92
me
->HandleEmoteCommand(
EMOTE_ONESHOT_CUSTOM_SPELL_01
);
93
DoCast
(player,
SPELL_REVIVE
,
true
);
94
Talk
(
WHISPER_REVIVE
, player);
95
}
96
FlyBackTimer
= 5000;
97
break
;
98
case
3:
99
me
->SetVisible(
false
);
100
FlyBackTimer
= 3000;
101
break
;
102
case
4:
103
me
->DisappearAndDie();
104
break
;
105
default
:
106
//Nothing To DO
107
break
;
108
}
109
++
phase
;
110
}
else
FlyBackTimer
-=diff;
111
}
112
};
113
};
114
115
void
AddSC_the_scarlet_enclave
()
116
{
117
new
npc_valkyr_battle_maiden
();
118
}
uint32
std::uint32_t uint32
Definition
Define.h:77
OVERRIDE
#define OVERRIDE
Definition
Define.h:60
PassiveAI.h
Player.h
ScriptMgr.h
ScriptedCreature.h
EMOTE_ONESHOT_CUSTOM_SPELL_01
@ EMOTE_ONESHOT_CUSTOM_SPELL_01
Definition
SharedDefines.h:2234
EMOTE_STATE_FLYGRABCLOSED
@ EMOTE_STATE_FLYGRABCLOSED
Definition
SharedDefines.h:2284
UNIT_FLAG_NON_ATTACKABLE
@ UNIT_FLAG_NON_ATTACKABLE
Definition
Unit.h:626
UNIT_FIELD_FLAGS
@ UNIT_FIELD_FLAGS
Definition
UpdateFields.h:82
Says_VBM
Says_VBM
Definition
chapter1.cpp:328
CreatureAI
Definition
CreatureAI.h:54
CreatureAI::Talk
void Talk(uint8 id, WorldObject const *whisperTarget=NULL)
Definition
CreatureAI.cpp:28
CreatureAI::me
Creature *const me
Definition
CreatureAI.h:56
Creature
Definition
Creature.h:427
CreatureScript::CreatureScript
CreatureScript(const char *name)
Definition
ScriptMgr.cpp:1436
Object::GetGUID
uint64 GetGUID() const
Definition
Object.h:119
Object::ToPlayer
Player * ToPlayer()
Definition
Object.h:204
PassiveAI::PassiveAI
PassiveAI(Creature *c)
Definition
PassiveAI.cpp:10
Player
Definition
Player.h:1289
Player::IsRessurectRequested
bool IsRessurectRequested() const
Definition
Player.h:2211
UnitAI::DoCast
void DoCast(uint32 spellId)
Definition
UnitAI.cpp:110
Unit
Definition
Unit.h:1367
WorldObject::GetClosePoint
void GetClosePoint(float &x, float &y, float &z, float size, float distance2d=0, float angle=0) const
Definition
Object.cpp:3070
npc_valkyr_battle_maiden
Definition
zone_the_scarlet_enclave.cpp:26
npc_valkyr_battle_maiden::npc_valkyr_battle_maiden
npc_valkyr_battle_maiden()
Definition
zone_the_scarlet_enclave.cpp:28
npc_valkyr_battle_maiden::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
zone_the_scarlet_enclave.cpp:30
npc_valkyr_battle_maiden::npc_valkyr_battle_maidenAI
Definition
zone_the_scarlet_enclave.cpp:36
npc_valkyr_battle_maiden::npc_valkyr_battle_maidenAI::Reset
void Reset() OVERRIDE
Definition
zone_the_scarlet_enclave.cpp:43
npc_valkyr_battle_maiden::npc_valkyr_battle_maidenAI::x
float x
Definition
zone_the_scarlet_enclave.cpp:40
npc_valkyr_battle_maiden::npc_valkyr_battle_maidenAI::FlyBackTimer
uint32 FlyBackTimer
Definition
zone_the_scarlet_enclave.cpp:39
npc_valkyr_battle_maiden::npc_valkyr_battle_maidenAI::npc_valkyr_battle_maidenAI
npc_valkyr_battle_maidenAI(Creature *creature)
Definition
zone_the_scarlet_enclave.cpp:37
npc_valkyr_battle_maiden::npc_valkyr_battle_maidenAI::phase
uint32 phase
Definition
zone_the_scarlet_enclave.cpp:41
npc_valkyr_battle_maiden::npc_valkyr_battle_maidenAI::y
float y
Definition
zone_the_scarlet_enclave.cpp:40
npc_valkyr_battle_maiden::npc_valkyr_battle_maidenAI::z
float z
Definition
zone_the_scarlet_enclave.cpp:40
npc_valkyr_battle_maiden::npc_valkyr_battle_maidenAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
zone_the_scarlet_enclave.cpp:60
WHISPER_REVIVE
@ WHISPER_REVIVE
Definition
zone_the_scarlet_enclave.cpp:22
AddSC_the_scarlet_enclave
void AddSC_the_scarlet_enclave()
Definition
zone_the_scarlet_enclave.cpp:115
Spells_VBM
Spells_VBM
Definition
zone_the_scarlet_enclave.cpp:16
SPELL_REVIVE
@ SPELL_REVIVE
Definition
zone_the_scarlet_enclave.cpp:17
src
server
scripts
EasternKingdoms
ScarletEnclave
zone_the_scarlet_enclave.cpp
Generated on
for Project SkyFire Core by
1.17.0