TrinityCore
Loading...
Searching...
No Matches
oculus.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 "CombatAI.h"
20#include "InstanceScript.h"
21#include "MotionMaster.h"
22#include "ObjectAccessor.h"
23#include "oculus.h"
24#include "Player.h"
25#include "ScriptedCreature.h"
26#include "ScriptedGossip.h"
27#include "Spell.h"
28#include "SpellAuraEffects.h"
29#include "SpellScript.h"
30#include "Vehicle.h"
31
33{
37
38 SPELL_CREATE_EMERALD_ESSENCE = 49382, // no effects in spell_dbc
39 SPELL_CREATE_AMBER_ESSENCE = 49447, // no effects in spell_dbc
40 SPELL_CREATE_RUBY_ESSENCE = 49450, // no effects in spell_dbc
43 ITEM_RUBY_ESSENCE = 37860
44};
45
47{
48/*
49 * Ruby Drake (27756)
50 * (summoned by spell Ruby Essence (37860) --> Call Amber Drake (49462) --> Summon 27756)
51 */
52 SPELL_RIDE_RUBY_DRAKE_QUE = 49463, // Apply Aura: Periodic Trigger, Interval: 3 seconds --> 49464
53 SPELL_RUBY_DRAKE_SADDLE = 49464, // Allows you to ride on the back of an Amber Drake. --> Dummy
54 SPELL_RUBY_SEARING_WRATH = 50232, // (60 yds) - Instant - Breathes a stream of fire at an enemy dragon, dealing 6800 to 9200 Fire damage and then jumping to additional dragons within 30 yards. Each jump increases the damage by 50%. Affects up to 5 total targets
55 SPELL_RUBY_EVASIVE_AURA = 50248, // Instant - Allows the Ruby Drake to generate Evasive Charges when hit by hostile attacks and spells.
57 SPELL_RUBY_EVASIVE_MANEUVERS = 50240, // Instant - 5 sec. cooldown - Allows your drake to dodge all incoming attacks and spells. Requires Evasive Charges to use. Each attack or spell dodged while this ability is active burns one Evasive Charge. Lasts 30 sec. or until all charges are exhausted.
58 // you do not have access to until you kill the Mage-Lord Urom
59 SPELL_RUBY_MARTYR = 50253, // Instant - 10 sec. cooldown - Redirect all harmful spells cast at friendly drakes to yourself for 10 sec.
60
61/*
62 * Amber Drake (27755)
63 * (summoned by spell Amber Essence (37859) --> Call Amber Drake (49461) --> Summon 27755)
64 */
65 SPELL_RIDE_AMBER_DRAKE_QUE = 49459, // Apply Aura: Periodic Trigger, Interval: 3 seconds --> 49460
66 SPELL_AMBER_DRAKE_SADDLE = 49460, // Allows you to ride on the back of an Amber Drake. --> Dummy
68 SPELL_AMBER_SHOCK_LANCE = 49840, // (60 yds) - Instant - Deals 4822 to 5602 Arcane damage and detonates all Shock Charges on an enemy dragon. Damage is increased by 6525 for each detonated.
69 SPELL_AMBER_STOP_TIME = 49838, // Instant - 1 min cooldown - Halts the passage of time, freezing all enemy dragons in place for 10 sec. This attack applies 5 Shock Charges to each affected target.
70 // you do not have access to until you kill the Mage-Lord Urom.
71 SPELL_AMBER_TEMPORAL_RIFT = 49592, // (60 yds) - Channeled - Channels a temporal rift on an enemy dragon for 10 sec. While trapped in the rift, all damage done to the target is increased by 100%. In addition, for every 15, 000 damage done to a target affected by Temporal Rift, 1 Shock Charge is generated.
72
73/*
74 * Emerald Drake (27692)
75 * (summoned by spell Emerald Essence (37815) --> Call Emerald Drake (49345) --> Summon 27692)
76 */
77 SPELL_RIDE_EMERALD_DRAKE_QUE = 49427, // Apply Aura: Periodic Trigger, Interval: 3 seconds --> 49346
78 SPELL_EMERALD_DRAKE_SADDLE = 49346, // Allows you to ride on the back of an Amber Drake. --> Dummy
79 SPELL_EMERALD_LEECHING_POISON = 50328, // (60 yds) - Instant - Poisons the enemy dragon, leeching 1300 to the caster every 2 sec. for 12 sec. Stacks up to 3 times.
80 SPELL_EMERALD_TOUCH_THE_NIGHTMARE = 50341, // (60 yds) - Instant - Consumes 30% of the caster's max health to inflict 25, 000 nature damage to an enemy dragon and reduce the damage it deals by 25% for 30 sec.
81 // you do not have access to until you kill the Mage-Lord Urom
82 SPELL_EMERALD_DREAM_FUNNEL = 50344, // (60 yds) - Channeled - Transfers 5% of the caster's max health to a friendly drake every second for 10 seconds as long as the caster channels.
83/*
84 * All Drakes
85 * GPS System
86 */
87 SPELL_GPS = 53389,
88
89 // Misc
92};
93
103
121
123{
125
126 void StoreEssence(Player* player, uint32 itemId)
127 {
129 uint32 count = 1;
130 ItemPosCountVec dest;
131 uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, count);
132 if (msg == EQUIP_ERR_OK)
133 if (Item* item = player->StoreNewItem(dest, itemId, true))
134 player->SendNewItem(item, count, true, true);
135 }
136
137 void RemoveEssence(Player* player, uint32 itemId)
138 {
139 player->DestroyItemCount(itemId, 1, true, false);
140 }
141
142 bool OnGossipSelect(Player* player, uint32 menuId, uint32 gossipListId) override
143 {
144 switch (menuId)
145 {
147 if (gossipListId >= 1 && gossipListId <= 3)
148 {
149 if (gossipListId == 2)
151 else if (gossipListId == 3)
153
155 break;
156 }
157 return false;
159 if (gossipListId >= 1 && gossipListId <= 3)
160 {
161 if (gossipListId == 2)
163 else if (gossipListId == 3)
165
167 break;
168 }
169 return false;
171 if (gossipListId <= 2)
172 {
173 if (gossipListId == 1)
175 else if (gossipListId == 2)
177
179 break;
180 }
181 return false;
182 default:
183 return false;
184 }
186 return false;
187 }
188
189 void MovementInform(uint32 /*type*/, uint32 id) override
190 {
191 if (id != POINT_MOVE_OUT)
192 return;
193
194 // When Belgaristraz finish his moving say grateful text
195 if (me->GetEntry() == NPC_BELGARISTRASZ)
197
198 // The gossip flag should activate when Drakos die and not from DB
200 }
201};
202
204{
205 npc_image_belgaristrasz(Creature* creature) : ScriptedAI(creature) { }
206
207 void IsSummonedBy(WorldObject* summoner) override
208 {
209 if (summoner->GetEntry() == NPC_VAROS)
210 {
212 me->DespawnOrUnsummon(60s);
213 }
214
215 if (summoner->GetEntry() == NPC_UROM)
216 {
217 Talk(SAY_UROM);
218 me->DespawnOrUnsummon(60s);
219 }
220 }
221};
222
224{
226 {
227 Initialize();
228 _instance = creature->GetInstanceScript();
229 }
230
232 {
233 _healthWarning = true;
234 }
235
236 void Reset() override
237 {
238 _events.Reset();
239 Initialize();
240 }
241
242 void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
243 {
244 if (Unit* creator = ObjectAccessor::GetUnit(*me, me->GetCreatorGUID()))
245 if (spellInfo->Id == SPELL_GPS)
246 {
248 Talk(WHISPER_GPS_END, creator);
249 else if (_instance->GetBossState(DATA_UROM) == DONE)
250 Talk(WHISPER_GPS_EREGOS, creator);
252 Talk(WHISPER_GPS_UROM, creator);
254 Talk(WHISPER_GPS_VAROS, creator);
259 }
260 }
261
262 void IsSummonedBy(WorldObject* summoner) override
263 {
265 if (Creature* eregos = me->FindNearestCreature(NPC_EREGOS, 450.0f, true))
266 eregos->DespawnOrUnsummon(); // On retail this kills abusive call of drake during engaged Eregos
267
268 me->SetFacingToObject(summoner);
269
270 switch (me->GetEntry())
271 {
273 me->CastSpell(summoner, SPELL_RIDE_RUBY_DRAKE_QUE, true);
274 break;
276 me->CastSpell(summoner, SPELL_RIDE_EMERALD_DRAKE_QUE, true);
277 break;
279 me->CastSpell(summoner, SPELL_RIDE_AMBER_DRAKE_QUE, true);
280 break;
281 default:
282 return;
283 }
284
285 Position pos = summoner->GetPosition();
287 }
288
289 void MovementInform(uint32 type, uint32 id) override
290 {
291 if (type == POINT_MOTION_TYPE && id == POINT_LAND)
292 me->SetDisableGravity(false); // Needed this for proper animation after spawn, the summon in air fall to ground bug leave no other option for now, if this isn't used the drake will only walk on move.
293 }
294
295 void PassengerBoarded(Unit* passenger, int8 /*seatId*/, bool apply) override
296 {
297 if (passenger->GetTypeId() != TYPEID_PLAYER)
298 return;
299
300 if (apply)
301 {
304
305 else if (_instance->GetBossState(DATA_UROM) == DONE)
307 }
308 else
309 {
310 _events.Reset();
312 }
313 }
314
315 void UpdateAI(uint32 diff) override
316 {
317 if (_healthWarning)
318 {
319 if (me->GetHealthPct() <= 40.0f)
321 }
322
323 _events.Update(diff);
324
325 while (uint32 eventId = _events.ExecuteEvent())
326 {
327 switch (eventId)
328 {
329 case EVENT_WELCOME:
330 if (Unit* creator = ObjectAccessor::GetUnit(*me, me->GetCreatorGUID()))
333 break;
334 case EVENT_ABILITIES:
335 if (Unit* creator = ObjectAccessor::GetUnit(*me, me->GetCreatorGUID()))
337 break;
339 if (Unit* creator = ObjectAccessor::GetUnit(*me, me->GetCreatorGUID()))
341 break;
342 case EVENT_LOW_HEALTH:
343 if (Unit* creator = ObjectAccessor::GetUnit(*me, me->GetCreatorGUID()))
345 _healthWarning = false;
347 break;
349 _healthWarning = true;
350 break;
351 case EVENT_TAKE_OFF:
352 {
353 me->DespawnOrUnsummon(2050ms);
354 me->SetOrientation(2.5f);
357 Position pos = me->GetPosition();
358 Position offset = { 10.0f, 10.0f, 12.0f, 0.0f };
359 pos.RelocateOffset(offset);
360 me->SetDisableGravity(true);
362 break;
363 }
364 default:
365 break;
366 }
367 }
368 };
369
370private:
374};
375
376// 49345 - Call Emerald Drake
377// 49461 - Call Amber Drake
378// 49462 - Call Ruby Drake
380{
382
384 {
385 // Adjust effect summon position
386 Position const offset = { 0.0f, 0.0f, 12.0f, 0.0f };
387 dest.RelocateOffset(offset);
388 }
389
394};
395
396// 49427 - Ride Emerald Drake Que
397// 49459 - Ride Amber Drake Que
398// 49463 - Ride Ruby Drake Que
400{
402
403 void HandlePeriodic(AuraEffect const* aurEff)
404 {
405 // caster of the triggered spell is wrong for an unknown reason, handle it here correctly
407 if (Unit* caster = GetCaster())
408 GetTarget()->CastSpell(caster, aurEff->GetSpellEffectInfo().TriggerSpell, true);
409 }
410
415};
416
417// 50240 - Evasive Maneuvers
440
441// 49840 - Shock Lance
443{
445
446 bool Validate(SpellInfo const* /*spellInfo*/) override
447 {
449 }
450
451 void CalcDamage(SpellEffIndex /*effIndex*/)
452 {
453 int32 damage = GetEffectValue();
454 if (Unit* target = GetHitUnit())
455 {
456 if (AuraEffect const* shockCharges = target->GetAuraEffect(SPELL_AMBER_SHOCK_CHARGE, EFFECT_0, GetCaster()->GetGUID()))
457 {
458 damage += shockCharges->GetAmount();
459 shockCharges->GetBase()->Remove(AURA_REMOVE_BY_ENEMY_SPELL);
460 }
461 }
462
463 SetEffectValue(damage);
464 }
465
470};
471
472// 49838 - Stop Time
474{
476
477 bool Validate(SpellInfo const* /*spellInfo*/) override
478 {
480 }
481
482 void Apply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
483 {
484 Unit* caster = GetCaster();
485 if (!caster)
486 return;
487
488 Unit* target = GetTarget();
489 for (uint32 i = 0; i < 5; ++i)
490 caster->CastSpell(target, SPELL_AMBER_SHOCK_CHARGE, true);
491 }
492
497};
498
499// 49592 - Temporal Rift
501{
503
504 bool Validate(SpellInfo const* /*spellInfo*/) override
505 {
507 }
508
509 void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
510 {
512 DamageInfo* damageInfo = eventInfo.GetDamageInfo();
513 if (!damageInfo || !damageInfo->GetDamage())
514 return;
515
516 int32 amount = aurEff->GetAmount() + damageInfo->GetDamage();
517 if (amount >= 15000)
518 {
519 if (Unit* caster = GetCaster())
520 caster->CastSpell(GetTarget(), SPELL_AMBER_SHOCK_CHARGE, true);
521 amount -= 15000;
522 }
523
524 const_cast<AuraEffect*>(aurEff)->SetAmount(amount);
525 }
526
531};
532
533// 50341 - Touch the Nightmare
548
549// 50344 - Dream Funnel
551{
553
554 void HandleEffectCalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated)
555 {
556 if (Unit* caster = GetCaster())
557 amount = int32(caster->CountPctFromMaxHealth(5));
558
559 canBeRecalculated = false;
560 }
561
567};
568
uint8_t uint8
Definition Define.h:135
int8_t int8
Definition Define.h:131
int32_t int32
Definition Define.h:129
uint32_t uint32
Definition Define.h:133
@ IN_PROGRESS
@ DONE
@ EQUIP_ERR_OK
Definition ItemDefines.h:26
@ POINT_MOTION_TYPE
@ TYPEID_PLAYER
Definition ObjectGuid.h:39
std::vector< ItemPosCount > ItemPosCountVec
Definition Player.h:624
#define RegisterSpellScript(spell_script)
Definition ScriptMgr.h:1128
SpellEffIndex
@ EFFECT_0
@ EFFECT_2
@ SPELL_EFFECT_SCHOOL_DAMAGE
@ TARGET_DEST_CASTER_FRONT
@ AURA_REMOVE_BY_ENEMY_SPELL
AuraEffectHandleModes
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_PERIODIC_DAMAGE
@ SPELL_AURA_PROC_TRIGGER_SPELL
@ SPELL_AURA_PERIODIC_HEAL
@ SPELL_AURA_DUMMY
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL
@ SPELL_AURA_MOD_STUN
#define AuraEffectProcFn(F, I, N)
#define SpellEffectFn(F, I, N)
#define AuraEffectCalcAmountFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define SpellDestinationTargetSelectFn(F, I, N)
#define AuraEffectApplyFn(F, I, N, M)
@ UNIT_NPC_FLAG_GOSSIP
@ MOVE_FLIGHT
@ NULL_BAG
Definition Unit.h:61
@ NULL_SLOT
Definition Unit.h:62
SpellEffectInfo const & GetSpellEffectInfo() const
int32 GetAmount() const
void PreventDefaultAction()
HookList< EffectPeriodicHandler > OnEffectPeriodic
HookList< EffectApplyHandler > AfterEffectApply
HookList< EffectCalcAmountHandler > DoEffectCalcAmount
Unit * GetCaster() const
Unit * GetTarget() const
void Remove(AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
HookList< EffectProcHandler > OnEffectProc
Creature *const me
Definition CreatureAI.h:82
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
uint32 GetDamage() const
Definition Unit.h:464
void Update(uint32 time)
Definition EventMap.h:67
EventId ExecuteEvent()
Definition EventMap.cpp:73
void ScheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
Definition EventMap.cpp:36
void Reset()
Definition EventMap.cpp:21
EncounterState GetBossState(uint32 id) const
Definition Item.h:62
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={})
TypeID GetTypeId() const
Definition Object.h:93
uint32 GetEntry() const
Definition Object.h:81
void SendCloseGossip()
Item * StoreNewItem(ItemPosCountVec const &pos, uint32 item, bool update, int32 randomPropertyId=0, GuidSet const &allowedLooters=GuidSet())
Definition Player.cpp:11621
uint32 DestroyItemCount(uint32 item, uint32 count, bool update, bool unequip_check=false)
Definition Player.cpp:12209
void SendNewItem(Item *item, uint32 count, bool received, bool created, bool broadcast=false, bool sendChatMessage=true)
Definition Player.cpp:13856
InventoryResult CanStoreNewItem(uint8 bag, uint8 slot, ItemPosCountVec &dest, uint32 item, uint32 count, uint32 *no_space_count=nullptr) const
Definition Player.cpp:9989
PlayerMenu * PlayerTalkClass
Definition Player.h:1969
DamageInfo * GetDamageInfo() const
Definition Unit.h:519
uint32 TriggerSpell
Definition SpellInfo.h:228
uint32 Id
Definition SpellInfo.h:289
void SetEffectValue(int32 value)
Unit * GetCaster() const
HookList< DestinationTargetSelectHandler > OnDestinationTargetSelect
Unit * GetHitUnit() const
int32 GetEffectValue() const
HookList< EffectHandler > OnEffectHitTarget
HookList< EffectHandler > OnEffectLaunchTarget
void SetHitDamage(int32 damage)
Definition Unit.h:769
float GetHealthPct() const
Definition Unit.h:921
ObjectGuid GetCreatorGUID() const
Definition Unit.h:1243
MotionMaster * GetMotionMaster()
Definition Unit.h:1667
bool SetDisableGravity(bool disable, bool updateAnimTier=true)
Definition Unit.cpp:13286
void SetFacingToObject(WorldObject const *object, bool force=true, uint32 movementId=EVENT_FACE)
Definition Unit.cpp:13259
void RemoveAuraFromStack(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Definition Unit.cpp:3800
void SetNpcFlag(NPCFlags flags)
Definition Unit.h:1097
void SetSpeedRate(UnitMoveType mtype, float rate)
Definition Unit.cpp:8678
InstanceScript * GetInstanceScript() const
Definition Object.cpp:1087
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
Definition Object.cpp:2832
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
Definition Object.cpp:2099
virtual uint32 GetData(uint32) const
Definition ZoneScript.h:55
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
void SetDest(SpellDestination &dest)
Definition oculus.cpp:383
PrepareSpellScript(spell_oculus_call_ruby_emerald_amber_drake)
void Register() override
Definition oculus.cpp:562
void HandleEffectCalcAmount(AuraEffect const *, int32 &amount, bool &canBeRecalculated)
Definition oculus.cpp:554
PrepareAuraScript(spell_oculus_dream_funnel)
void HandleProc(AuraEffect const *, ProcEventInfo &)
Definition oculus.cpp:427
PrepareAuraScript(spell_oculus_evasive_maneuvers)
bool Validate(SpellInfo const *) override
Definition oculus.cpp:422
PrepareAuraScript(spell_oculus_ride_ruby_emerald_amber_drake_que)
void HandlePeriodic(AuraEffect const *aurEff)
Definition oculus.cpp:403
void Register() override
Definition oculus.cpp:466
PrepareSpellScript(spell_oculus_shock_lance)
bool Validate(SpellInfo const *) override
Definition oculus.cpp:446
void CalcDamage(SpellEffIndex)
Definition oculus.cpp:451
void Register() override
Definition oculus.cpp:493
void Apply(AuraEffect const *, AuraEffectHandleModes)
Definition oculus.cpp:482
bool Validate(SpellInfo const *) override
Definition oculus.cpp:477
PrepareAuraScript(spell_oculus_stop_time)
PrepareAuraScript(spell_oculus_temporal_rift)
bool Validate(SpellInfo const *) override
Definition oculus.cpp:504
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
Definition oculus.cpp:509
void Register() override
Definition oculus.cpp:527
void HandleDamageCalc(SpellEffIndex)
Definition oculus.cpp:538
PrepareSpellScript(spell_oculus_touch_the_nightmare)
TC_GAME_API Unit * GetUnit(WorldObject const &, ObjectGuid const &guid)
@ EVENT_ABILITIES
Definition oculus.cpp:97
@ EVENT_TAKE_OFF
Definition oculus.cpp:101
@ EVENT_WELCOME
Definition oculus.cpp:96
@ EVENT_LOW_HEALTH
Definition oculus.cpp:99
@ EVENT_SPECIAL_ATTACK
Definition oculus.cpp:98
@ EVENT_RESET_LOW_HEALTH
Definition oculus.cpp:100
@ WHISPER_GPS_EREGOS
Definition oculus.cpp:118
@ WHISPER_DRAKES_WELCOME
Definition oculus.cpp:110
@ SAY_BELGARISTRASZ
Definition oculus.cpp:108
@ SAY_UROM
Definition oculus.cpp:107
@ WHISPER_GPS_1_CONSTRUCT
Definition oculus.cpp:115
@ WHISPER_GPS_10_CONSTRUCTS
Definition oculus.cpp:114
@ SAY_VAROS
Definition oculus.cpp:106
@ WHISPER_DRAKES_LOWHEALTH
Definition oculus.cpp:113
@ SAY_DRAKES_TAKEOFF
Definition oculus.cpp:109
@ WHISPER_GPS_END
Definition oculus.cpp:119
@ WHISPER_GPS_VAROS
Definition oculus.cpp:116
@ WHISPER_GPS_UROM
Definition oculus.cpp:117
@ WHISPER_DRAKES_ABILITIES
Definition oculus.cpp:111
@ WHISPER_DRAKES_SPECIAL
Definition oculus.cpp:112
Drakes
Definition oculus.cpp:47
@ SPELL_AMBER_SHOCK_CHARGE
Definition oculus.cpp:67
@ SPELL_EMERALD_DREAM_FUNNEL
Definition oculus.cpp:82
@ SPELL_RUBY_EVASIVE_MANEUVERS
Definition oculus.cpp:57
@ SPELL_EMERALD_DRAKE_SADDLE
Definition oculus.cpp:78
@ SPELL_RUBY_DRAKE_SADDLE
Definition oculus.cpp:53
@ SPELL_EMERALD_TOUCH_THE_NIGHTMARE
Definition oculus.cpp:80
@ SPELL_RUBY_EVASIVE_AURA
Definition oculus.cpp:55
@ POINT_TAKE_OFF
Definition oculus.cpp:91
@ SPELL_RUBY_SEARING_WRATH
Definition oculus.cpp:54
@ SPELL_RIDE_EMERALD_DRAKE_QUE
Definition oculus.cpp:77
@ SPELL_RUBY_EVASIVE_CHARGES
Definition oculus.cpp:56
@ POINT_LAND
Definition oculus.cpp:90
@ SPELL_RIDE_AMBER_DRAKE_QUE
Definition oculus.cpp:65
@ SPELL_AMBER_TEMPORAL_RIFT
Definition oculus.cpp:71
@ SPELL_EMERALD_LEECHING_POISON
Definition oculus.cpp:79
@ SPELL_AMBER_STOP_TIME
Definition oculus.cpp:69
@ SPELL_GPS
Definition oculus.cpp:87
@ SPELL_AMBER_DRAKE_SADDLE
Definition oculus.cpp:66
@ SPELL_RUBY_MARTYR
Definition oculus.cpp:59
@ SPELL_AMBER_SHOCK_LANCE
Definition oculus.cpp:68
@ SPELL_RIDE_RUBY_DRAKE_QUE
Definition oculus.cpp:52
GossipNPCs
Definition oculus.cpp:33
@ SPELL_CREATE_AMBER_ESSENCE
Definition oculus.cpp:39
@ SPELL_CREATE_RUBY_ESSENCE
Definition oculus.cpp:40
@ GOSSIP_MENU_VERDISA
Definition oculus.cpp:34
@ ITEM_RUBY_ESSENCE
Definition oculus.cpp:43
@ ITEM_EMERALD_ESSENCE
Definition oculus.cpp:41
@ ITEM_AMBER_ESSENCE
Definition oculus.cpp:42
@ SPELL_CREATE_EMERALD_ESSENCE
Definition oculus.cpp:38
@ GOSSIP_MENU_ETERNOS
Definition oculus.cpp:35
@ GOSSIP_MENU_BELGARISTRASZ
Definition oculus.cpp:36
void AddSC_oculus()
Definition oculus.cpp:569
@ DATA_VAROS
Definition oculus.h:32
@ DATA_EREGOS
Definition oculus.h:34
@ DATA_UROM
Definition oculus.h:33
@ DATA_CONSTRUCTS
Definition oculus.h:36
@ POINT_MOVE_OUT
Definition oculus.h:107
@ NPC_AMBER_DRAKE_VEHICLE
Definition oculus.h:50
@ NPC_EMERALD_DRAKE_VEHICLE
Definition oculus.h:49
@ NPC_EREGOS
Definition oculus.h:44
@ NPC_BELGARISTRASZ
Definition oculus.h:52
@ NPC_UROM
Definition oculus.h:43
@ NPC_VAROS
Definition oculus.h:42
@ NPC_RUBY_DRAKE_VEHICLE
Definition oculus.h:48
@ KILL_NO_CONSTRUCT
Definition oculus.h:100
@ KILL_ONE_CONSTRUCT
Definition oculus.h:101
@ KILL_MORE_CONSTRUCT
Definition oculus.h:102
#define RegisterOculusCreatureAI(ai_name)
Definition oculus.h:116
void SetOrientation(float orientation)
Definition Position.h:74
void GetPosition(float &x, float &y) const
Definition Position.h:84
void RelocateOffset(Position const &offset)
Definition Position.cpp:36
void RelocateOffset(Position const &offset)
Definition Spell.cpp:110
void IsSummonedBy(WorldObject *summoner) override
Definition oculus.cpp:207
npc_image_belgaristrasz(Creature *creature)
Definition oculus.cpp:205
InstanceScript * _instance
Definition oculus.cpp:371
npc_ruby_emerald_amber_drake(Creature *creature)
Definition oculus.cpp:225
void MovementInform(uint32 type, uint32 id) override
Definition oculus.cpp:289
void UpdateAI(uint32 diff) override
Definition oculus.cpp:315
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override
Definition oculus.cpp:242
void IsSummonedBy(WorldObject *summoner) override
Definition oculus.cpp:262
void PassengerBoarded(Unit *passenger, int8, bool apply) override
== Fields =======================================
Definition oculus.cpp:295
npc_verdisa_beglaristrasz_eternos(Creature *creature)
Definition oculus.cpp:124
void MovementInform(uint32, uint32 id) override
Definition oculus.cpp:189
void StoreEssence(Player *player, uint32 itemId)
Definition oculus.cpp:126
bool OnGossipSelect(Player *player, uint32 menuId, uint32 gossipListId) override
Definition oculus.cpp:142
void RemoveEssence(Player *player, uint32 itemId)
Definition oculus.cpp:137