Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
ruby_sanctum.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 "ScriptedGossip.h"
9#include "ruby_sanctum.h"
10#include "Player.h"
11
24
35
36Position const xerestraszaMovePos = {3151.236f, 379.8733f, 86.31996f, 0.0f};
37
39{
40 public:
41 npc_xerestrasza() : CreatureScript("npc_xerestrasza") { }
42
44 {
45 npc_xerestraszaAI(Creature* creature) : ScriptedAI(creature)
46 {
47 _isIntro = true;
48 _introDone = false;
49 }
50
52 {
53 _events.Reset();
55 }
56
57 void DoAction(int32 action) OVERRIDE
58 {
59 if (action == ACTION_BALTHARUS_DEATH)
60 {
61 me->setActive(true);
62 _isIntro = false;
63
65 me->SetWalk(true);
66 me->GetMotionMaster()->MovePoint(0, xerestraszaMovePos);
67
68 _events.ScheduleEvent(EVENT_XERESTRASZA_EVENT_1, 16000);
69 _events.ScheduleEvent(EVENT_XERESTRASZA_EVENT_2, 25000);
70 _events.ScheduleEvent(EVENT_XERESTRASZA_EVENT_3, 32000);
71 _events.ScheduleEvent(EVENT_XERESTRASZA_EVENT_4, 42000);
72 _events.ScheduleEvent(EVENT_XERESTRASZA_EVENT_5, 51000);
73 _events.ScheduleEvent(EVENT_XERESTRASZA_EVENT_6, 61000);
74 _events.ScheduleEvent(EVENT_XERESTRASZA_EVENT_7, 69000);
75 }
76 else if (action == ACTION_INTRO_BALTHARUS && !_introDone)
77 {
78 _introDone = true;
80 }
81 }
82
84 {
85 if (_isIntro)
86 return;
87
88 _events.Update(diff);
89
90 while (uint32 eventId = _events.ExecuteEvent())
91 {
92 switch (eventId)
93 {
96 break;
99 break;
102 break;
105 break;
108 break;
111 break;
115 me->setActive(false);
116 break;
117 default:
118 break;
119 }
120 }
121 }
122
123 private:
127 };
128
130 {
132 }
133};
134
136{
137 public:
138 at_baltharus_plateau() : AreaTriggerScript("at_baltharus_plateau") { }
139
140 bool OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/) OVERRIDE
141 {
142 // Only trigger once
143 if (InstanceScript* instance = player->GetInstanceScript())
144 {
145 if (Creature* xerestrasza = ObjectAccessor::GetCreature(*player, instance->GetData64(DATA_XERESTRASZA)))
146 xerestrasza->AI()->DoAction(ACTION_INTRO_BALTHARUS);
147
148 if (Creature* baltharus = ObjectAccessor::GetCreature(*player, instance->GetData64(DATA_BALTHARUS_THE_WARBORN)))
149 baltharus->AI()->DoAction(ACTION_INTRO_BALTHARUS);
150 }
151
152 return true;
153 }
154};
155
157{
158 new npc_xerestrasza();
160}
std::int32_t int32
Definition Define.h:73
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
@ GOSSIP_OPTION_QUESTGIVER
Definition GossipDef.h:22
@ UNIT_FIELD_NPC_FLAGS
AreaTriggerScript(const char *name)
void Talk(uint8 id, WorldObject const *whisperTarget=NULL)
CreatureScript(const char *name)
static Creature * GetCreature(WorldObject const &u, uint64 guid)
bool OnTrigger(Player *player, AreaTriggerEntry const *) OVERRIDE
CreatureAI * GetAI(Creature *creature) const OVERRIDE
void AddSC_ruby_sanctum()
@ SAY_XERESTRASZA_EVENT_3
@ SAY_XERESTRASZA_EVENT_1
@ SAY_XERESTRASZA_INTRO
@ SAY_XERESTRASZA_EVENT_5
@ SAY_XERESTRASZA_EVENT_6
@ SAY_XERESTRASZA_EVENT
@ SAY_XERESTRASZA_EVENT_2
@ SAY_XERESTRASZA_EVENT_4
@ SAY_XERESTRASZA_EVENT_7
Position const xerestraszaMovePos
@ EVENT_XERESTRASZA_EVENT_7
@ EVENT_XERESTRASZA_EVENT_2
@ EVENT_XERESTRASZA_EVENT_4
@ EVENT_XERESTRASZA_EVENT_6
@ EVENT_XERESTRASZA_EVENT_5
@ EVENT_XERESTRASZA_EVENT_3
@ EVENT_XERESTRASZA_EVENT_1
@ ACTION_INTRO_BALTHARUS
@ ACTION_BALTHARUS_DEATH
CreatureAI * GetRubySanctumAI(Creature *creature)
@ DATA_XERESTRASZA
@ DATA_BALTHARUS_THE_WARBORN
Creature * me
ScriptedAI(Creature *creature)
void DoAction(int32 action) OVERRIDE
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
npc_xerestraszaAI(Creature *creature)