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 "SpellAuraEffects.h"
28#include "SpellScript.h"
29
31{
35
36 SPELL_CREATE_EMERALD_ESSENCE = 49382, // no effects in spell_dbc
37 SPELL_CREATE_AMBER_ESSENCE = 49447, // no effects in spell_dbc
38 SPELL_CREATE_RUBY_ESSENCE = 49450, // no effects in spell_dbc
41 ITEM_RUBY_ESSENCE = 37860
42};
43
45{
46/*
47 * Ruby Drake (27756)
48 * (summoned by spell Ruby Essence (37860) --> Call Amber Drake (49462) --> Summon 27756)
49 */
50 SPELL_RIDE_RUBY_DRAKE_QUE = 49463, // Apply Aura: Periodic Trigger, Interval: 3 seconds --> 49464
51 SPELL_RUBY_DRAKE_SADDLE = 49464, // Allows you to ride on the back of an Amber Drake. --> Dummy
52 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
53 SPELL_RUBY_EVASIVE_AURA = 50248, // Instant - Allows the Ruby Drake to generate Evasive Charges when hit by hostile attacks and spells.
55 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.
56 // you do not have access to until you kill the Mage-Lord Urom
57 SPELL_RUBY_MARTYR = 50253, // Instant - 10 sec. cooldown - Redirect all harmful spells cast at friendly drakes to yourself for 10 sec.
58
59/*
60 * Amber Drake (27755)
61 * (summoned by spell Amber Essence (37859) --> Call Amber Drake (49461) --> Summon 27755)
62 */
63 SPELL_RIDE_AMBER_DRAKE_QUE = 49459, // Apply Aura: Periodic Trigger, Interval: 3 seconds --> 49460
64 SPELL_AMBER_DRAKE_SADDLE = 49460, // Allows you to ride on the back of an Amber Drake. --> Dummy
66 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.
67 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.
68 // you do not have access to until you kill the Mage-Lord Urom.
69 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.
70
71/*
72 * Emerald Drake (27692)
73 * (summoned by spell Emerald Essence (37815) --> Call Emerald Drake (49345) --> Summon 27692)
74 */
75 SPELL_RIDE_EMERALD_DRAKE_QUE = 49427, // Apply Aura: Periodic Trigger, Interval: 3 seconds --> 49346
76 SPELL_EMERALD_DRAKE_SADDLE = 49346, // Allows you to ride on the back of an Amber Drake. --> Dummy
77 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.
78 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.
79 // you do not have access to until you kill the Mage-Lord Urom
80 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.
81/*
82 * All Drakes
83 * GPS System
84 */
85 SPELL_GPS = 53389,
86
87 // Misc
90};
91
101
119
121{
123
124 void StoreEssence(Player* player, uint32 itemId)
125 {
127 uint32 count = 1;
128 ItemPosCountVec dest;
129 uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, count);
130 if (msg == EQUIP_ERR_OK)
131 if (Item* item = player->StoreNewItem(dest, itemId, true))
132 player->SendNewItem(item, count, true, true);
133 }
134
135 void RemoveEssence(Player* player, uint32 itemId)
136 {
137 player->DestroyItemCount(itemId, 1, true, false);
138 }
139
140 bool OnGossipSelect(Player* player, uint32 menuId, uint32 gossipListId) override
141 {
142 switch (menuId)
143 {
145 if (gossipListId >= 1 && gossipListId <= 3)
146 {
147 if (gossipListId == 2)
149 else if (gossipListId == 3)
151
153 break;
154 }
155 return false;
157 if (gossipListId >= 1 && gossipListId <= 3)
158 {
159 if (gossipListId == 2)
161 else if (gossipListId == 3)
163
165 break;
166 }
167 return false;
169 if (gossipListId <= 2)
170 {
171 if (gossipListId == 1)
173 else if (gossipListId == 2)
175
177 break;
178 }
179 return false;
180 default:
181 return false;
182 }
183 player->PlayerTalkClass->SendCloseGossip();
184 return false;
185 }
186
187 void MovementInform(uint32 /*type*/, uint32 id) override
188 {
189 if (id != POINT_MOVE_OUT)
190 return;
191
192 // When Belgaristraz finish his moving say grateful text
193 if (me->GetEntry() == NPC_BELGARISTRASZ)
195
196 // The gossip flag should activate when Drakos die and not from DB
198 }
199};
200
202{
203 npc_image_belgaristrasz(Creature* creature) : ScriptedAI(creature) { }
204
205 void IsSummonedBy(WorldObject* summoner) override
206 {
207 if (summoner->GetEntry() == NPC_VAROS)
208 {
210 me->DespawnOrUnsummon(60s);
211 }
212
213 if (summoner->GetEntry() == NPC_UROM)
214 {
215 Talk(SAY_UROM);
216 me->DespawnOrUnsummon(60s);
217 }
218 }
219};
220
222{
224 {
225 Initialize();
226 _instance = creature->GetInstanceScript();
227 }
228
230 {
231 _healthWarning = true;
232 }
233
234 void Reset() override
235 {
236 _events.Reset();
237 Initialize();
238 }
239
240 void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
241 {
242 if (Unit* creator = ObjectAccessor::GetUnit(*me, me->GetCreatorGUID()))
243 if (spellInfo->Id == SPELL_GPS)
244 {
246 Talk(WHISPER_GPS_END, creator);
247 else if (_instance->GetBossState(DATA_UROM) == DONE)
248 Talk(WHISPER_GPS_EREGOS, creator);
250 Talk(WHISPER_GPS_UROM, creator);
252 Talk(WHISPER_GPS_VAROS, creator);
257 }
258 }
259
260 void IsSummonedBy(WorldObject* summoner) override
261 {
263 if (Creature* eregos = me->FindNearestCreature(NPC_EREGOS, 450.0f, true))
264 eregos->DespawnOrUnsummon(); // On retail this kills abusive call of drake during engaged Eregos
265
266 me->SetFacingToObject(summoner);
267
268 switch (me->GetEntry())
269 {
271 me->CastSpell(summoner, SPELL_RIDE_RUBY_DRAKE_QUE, true);
272 break;
274 me->CastSpell(summoner, SPELL_RIDE_EMERALD_DRAKE_QUE, true);
275 break;
277 me->CastSpell(summoner, SPELL_RIDE_AMBER_DRAKE_QUE, true);
278 break;
279 default:
280 return;
281 }
282
283 Position pos = summoner->GetPosition();
285 }
286
287 void MovementInform(uint32 type, uint32 id) override
288 {
289 if (type == POINT_MOTION_TYPE && id == POINT_LAND)
290 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.
291 }
292
293 void PassengerBoarded(Unit* passenger, int8 /*seatId*/, bool apply) override
294 {
295 if (passenger->GetTypeId() != TYPEID_PLAYER)
296 return;
297
298 if (apply)
299 {
302
303 else if (_instance->GetBossState(DATA_UROM) == DONE)
305 }
306 else
307 {
308 _events.Reset();
310 }
311 }
312
313 void UpdateAI(uint32 diff) override
314 {
315 if (_healthWarning)
316 {
317 if (me->GetHealthPct() <= 40.0f)
319 }
320
321 _events.Update(diff);
322
323 while (uint32 eventId = _events.ExecuteEvent())
324 {
325 switch (eventId)
326 {
327 case EVENT_WELCOME:
328 if (Unit* creator = ObjectAccessor::GetUnit(*me, me->GetCreatorGUID()))
331 break;
332 case EVENT_ABILITIES:
333 if (Unit* creator = ObjectAccessor::GetUnit(*me, me->GetCreatorGUID()))
335 break;
337 if (Unit* creator = ObjectAccessor::GetUnit(*me, me->GetCreatorGUID()))
339 break;
340 case EVENT_LOW_HEALTH:
341 if (Unit* creator = ObjectAccessor::GetUnit(*me, me->GetCreatorGUID()))
343 _healthWarning = false;
345 break;
347 _healthWarning = true;
348 break;
349 case EVENT_TAKE_OFF:
350 {
351 me->DespawnOrUnsummon(2050ms);
352 me->SetOrientation(2.5f);
355 Position pos = me->GetPosition();
356 Position offset = { 10.0f, 10.0f, 12.0f, 0.0f };
357 pos.RelocateOffset(offset);
358 me->SetDisableGravity(true);
360 break;
361 }
362 default:
363 break;
364 }
365 }
366 }
367
368private:
372};
373
374// 49345 - Call Emerald Drake
375// 49461 - Call Amber Drake
376// 49462 - Call Ruby Drake
378{
380 {
381 // Adjust effect summon position
382 Position const offset = { 0.0f, 0.0f, 12.0f, 0.0f };
383 dest.RelocateOffset(offset);
384 }
385
390};
391
392// 49427 - Ride Emerald Drake Que
393// 49459 - Ride Amber Drake Que
394// 49463 - Ride Ruby Drake Que
396{
397 void HandlePeriodic(AuraEffect const* aurEff)
398 {
399 // caster of the triggered spell is wrong for an unknown reason, handle it here correctly
401 if (Unit* caster = GetCaster())
402 GetTarget()->CastSpell(caster, aurEff->GetSpellEffectInfo().TriggerSpell, true);
403 }
404
409};
410
411// 50240 - Evasive Maneuvers
432
433// 49840 - Shock Lance
435{
436 bool Validate(SpellInfo const* /*spellInfo*/) override
437 {
439 }
440
441 void CalculateDamage(SpellEffectInfo const& /*spellEffectInfo*/, Unit const* victim, int32& /*damage*/, int32& flatMod, float& /*pctMod*/) const
442 {
443 if (AuraEffect const* shockCharges = victim->GetAuraEffect(SPELL_AMBER_SHOCK_CHARGE, EFFECT_0, GetCaster()->GetGUID()))
444 {
445 flatMod += shockCharges->GetAmountAsInt();
446 shockCharges->GetBase()->Remove(AURA_REMOVE_BY_ENEMY_SPELL);
447 }
448 }
449
454};
455
456// 49838 - Stop Time
458{
459 bool Validate(SpellInfo const* /*spellInfo*/) override
460 {
462 }
463
464 void Apply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
465 {
466 Unit* caster = GetCaster();
467 if (!caster)
468 return;
469
470 Unit* target = GetTarget();
471 for (uint32 i = 0; i < 5; ++i)
472 caster->CastSpell(target, SPELL_AMBER_SHOCK_CHARGE, true);
473 }
474
479};
480
481// 49592 - Temporal Rift
483{
484 bool Validate(SpellInfo const* /*spellInfo*/) override
485 {
487 }
488
489 void HandleProc(AuraEffect* aurEff, ProcEventInfo& eventInfo)
490 {
492 DamageInfo* damageInfo = eventInfo.GetDamageInfo();
493 if (!damageInfo || !damageInfo->GetDamage())
494 return;
495
496 SpellEffectValue amount = aurEff->GetAmount() + damageInfo->GetDamage();
497 if (amount >= 15000)
498 {
499 if (Unit* caster = GetCaster())
500 caster->CastSpell(GetTarget(), SPELL_AMBER_SHOCK_CHARGE, true);
501 amount -= 15000;
502 }
503
504 aurEff->SetAmount(amount);
505 }
506
511};
512
513// 50341 - Touch the Nightmare
526
527// 50344 - Dream Funnel
529{
530 void HandleEffectCalcAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& canBeRecalculated)
531 {
532 if (Unit* caster = GetCaster())
533 amount = caster->CountPctFromMaxHealth(5);
534
535 canBeRecalculated = false;
536 }
537
543};
544
uint8_t uint8
Definition Define.h:156
int8_t int8
Definition Define.h:152
int32_t int32
Definition Define.h:150
uint32_t uint32
Definition Define.h:154
@ IN_PROGRESS
@ DONE
@ EQUIP_ERR_OK
Definition ItemDefines.h:26
@ POINT_MOTION_TYPE
@ TYPEID_PLAYER
Definition ObjectGuid.h:44
std::vector< ItemPosCount > ItemPosCountVec
Definition Player.h:841
#define RegisterSpellScript(spell_script)
Definition ScriptMgr.h:1383
SpellEffIndex
@ EFFECT_0
@ EFFECT_2
@ TARGET_DEST_CASTER_FRONT
@ SPELL_EFFECT_SCHOOL_DAMAGE
AuraEffectHandleModes
@ AURA_EFFECT_HANDLE_REAL
@ AURA_REMOVE_BY_ENEMY_SPELL
@ 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
double SpellEffectValue
This is a double instead of float to be able to store full range of int32.
#define AuraEffectProcFn(F, I, N)
#define SpellEffectFn(F, I, N)
#define AuraEffectCalcAmountFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define SpellCalcDamageFn(F)
#define SpellDestinationTargetSelectFn(F, I, N)
#define AuraEffectApplyFn(F, I, N, M)
@ MOVE_FLIGHT
@ UNIT_NPC_FLAG_GOSSIP
@ NULL_BAG
Definition Unit.h:63
@ NULL_SLOT
Definition Unit.h:64
SpellEffectInfo const & GetSpellEffectInfo() const
void SetAmount(SpellEffectValue amount)
SpellEffectValue GetAmount() const
void PreventDefaultAction()
HookList< EffectPeriodicHandler > OnEffectPeriodic
HookList< EffectApplyHandler > AfterEffectApply
HookList< EffectCalcAmountHandler > DoEffectCalcAmount
Unit * GetCaster() const
Unit * GetTarget() const
HookList< EffectProcHandler > OnEffectProc
TypeID GetTypeId() const
Definition BaseEntity.h:166
Creature *const me
Definition CreatureAI.h:63
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
uint32 GetDamage() const
Definition Unit.h:452
uint32 ExecuteEvent()
Definition EventMap.cpp:77
void Update(uint32 time)
Definition EventMap.h:61
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
Definition EventMap.cpp:40
void Reset()
Definition EventMap.cpp:25
EncounterState GetBossState(uint32 id) const
Definition Item.h:179
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< float > closeEnoughDistance={}, Optional< MovementFadeObject > fadeObject={}, Scripting::v2::ActionResultSetter< MovementStopReason > &&scriptResult={})
uint32 GetEntry() const
Definition Object.h:89
Item * StoreNewItem(ItemPosCountVec const &pos, uint32 itemId, bool update, ItemRandomBonusListId randomBonusListId=0, GuidSet const &allowedLooters=GuidSet(), ItemContext context=ItemContext::NONE, std::vector< int32 > const *bonusListIDs=nullptr, bool addToCollection=true)
Definition Player.cpp:11370
uint32 DestroyItemCount(uint32 item, uint32 count, bool update, bool unequip_check=false)
Definition Player.cpp:12222
InventoryResult CanStoreNewItem(uint8 bag, uint8 slot, ItemPosCountVec &dest, uint32 item, uint32 count, uint32 *no_space_count=nullptr) const
Definition Player.cpp:10050
std::unique_ptr< PlayerMenu > PlayerTalkClass
Definition Player.h:2570
void SendNewItem(Item *item, uint32 quantity, bool received, bool created, bool broadcast=false, uint32 dungeonEncounterId=0)
Definition Player.cpp:13878
DamageInfo * GetDamageInfo() const
Definition Unit.h:511
uint32 TriggerSpell
Definition SpellInfo.h:234
uint32 const Id
Definition SpellInfo.h:328
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
HookList< DamageAndHealingCalcHandler > CalcDamage
Unit * GetCaster() const
HookList< DestinationTargetSelectHandler > OnDestinationTargetSelect
HookList< EffectHandler > OnEffectHitTarget
void SetHitDamage(int32 damage)
Definition Unit.h:635
float GetHealthPct() const
Definition Unit.h:796
MotionMaster * GetMotionMaster()
Definition Unit.h:1723
void SetFacingToObject(WorldObject const *object, bool force=true)
Definition Unit.cpp:13307
AuraEffect * GetAuraEffect(uint32 spellId, uint8 effIndex, ObjectGuid casterGUID=ObjectGuid::Empty) const
Definition Unit.cpp:4604
bool SetDisableGravity(bool disable, bool updateAnimTier=true)
Definition Unit.cpp:13361
ObjectGuid GetCreatorGUID() const override
Definition Unit.h:1193
void SetNpcFlag(NPCFlags flags)
Definition Unit.h:997
void RemoveAuraFromStack(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT, uint16 num=1)
Definition Unit.cpp:3990
void SetSpeedRate(UnitMoveType mtype, float rate)
Definition Unit.cpp:8942
InstanceScript * GetInstanceScript() const
Definition Object.cpp:396
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
Definition Object.cpp:2217
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
Definition Object.cpp:1517
virtual uint32 GetData(uint32) const
Definition ZoneScript.h:99
void SetDest(SpellDestination &dest)
Definition oculus.cpp:379
void HandleEffectCalcAmount(AuraEffect const *, SpellEffectValue &amount, bool &canBeRecalculated)
Definition oculus.cpp:530
void Register() override
Definition oculus.cpp:538
void HandleProc(AuraEffect *, ProcEventInfo &)
Definition oculus.cpp:419
bool Validate(SpellInfo const *) override
Definition oculus.cpp:414
void HandlePeriodic(AuraEffect const *aurEff)
Definition oculus.cpp:397
void Register() override
Definition oculus.cpp:450
bool Validate(SpellInfo const *) override
Definition oculus.cpp:436
void CalculateDamage(SpellEffectInfo const &, Unit const *victim, int32 &, int32 &flatMod, float &) const
Definition oculus.cpp:441
void Register() override
Definition oculus.cpp:475
void Apply(AuraEffect const *, AuraEffectHandleModes)
Definition oculus.cpp:464
bool Validate(SpellInfo const *) override
Definition oculus.cpp:459
bool Validate(SpellInfo const *) override
Definition oculus.cpp:484
void HandleProc(AuraEffect *aurEff, ProcEventInfo &eventInfo)
Definition oculus.cpp:489
void Register() override
Definition oculus.cpp:507
void HandleDamageCalc(SpellEffIndex)
Definition oculus.cpp:516
TC_GAME_API Unit * GetUnit(WorldObject const &, ObjectGuid const &guid)
DrakeEvents
Definition oculus.cpp:93
@ EVENT_ABILITIES
Definition oculus.cpp:95
@ EVENT_TAKE_OFF
Definition oculus.cpp:99
@ EVENT_WELCOME
Definition oculus.cpp:94
@ EVENT_LOW_HEALTH
Definition oculus.cpp:97
@ EVENT_SPECIAL_ATTACK
Definition oculus.cpp:96
@ EVENT_RESET_LOW_HEALTH
Definition oculus.cpp:98
@ WHISPER_GPS_EREGOS
Definition oculus.cpp:116
@ WHISPER_DRAKES_WELCOME
Definition oculus.cpp:108
@ SAY_BELGARISTRASZ
Definition oculus.cpp:106
@ SAY_UROM
Definition oculus.cpp:105
@ WHISPER_GPS_1_CONSTRUCT
Definition oculus.cpp:113
@ WHISPER_GPS_10_CONSTRUCTS
Definition oculus.cpp:112
@ SAY_VAROS
Definition oculus.cpp:104
@ WHISPER_DRAKES_LOWHEALTH
Definition oculus.cpp:111
@ SAY_DRAKES_TAKEOFF
Definition oculus.cpp:107
@ WHISPER_GPS_END
Definition oculus.cpp:117
@ WHISPER_GPS_VAROS
Definition oculus.cpp:114
@ WHISPER_GPS_UROM
Definition oculus.cpp:115
@ WHISPER_DRAKES_ABILITIES
Definition oculus.cpp:109
@ WHISPER_DRAKES_SPECIAL
Definition oculus.cpp:110
Drakes
Definition oculus.cpp:45
@ SPELL_AMBER_SHOCK_CHARGE
Definition oculus.cpp:65
@ SPELL_EMERALD_DREAM_FUNNEL
Definition oculus.cpp:80
@ SPELL_RUBY_EVASIVE_MANEUVERS
Definition oculus.cpp:55
@ SPELL_EMERALD_DRAKE_SADDLE
Definition oculus.cpp:76
@ SPELL_RUBY_DRAKE_SADDLE
Definition oculus.cpp:51
@ SPELL_EMERALD_TOUCH_THE_NIGHTMARE
Definition oculus.cpp:78
@ SPELL_RUBY_EVASIVE_AURA
Definition oculus.cpp:53
@ POINT_TAKE_OFF
Definition oculus.cpp:89
@ SPELL_RUBY_SEARING_WRATH
Definition oculus.cpp:52
@ SPELL_RIDE_EMERALD_DRAKE_QUE
Definition oculus.cpp:75
@ SPELL_RUBY_EVASIVE_CHARGES
Definition oculus.cpp:54
@ POINT_LAND
Definition oculus.cpp:88
@ SPELL_RIDE_AMBER_DRAKE_QUE
Definition oculus.cpp:63
@ SPELL_AMBER_TEMPORAL_RIFT
Definition oculus.cpp:69
@ SPELL_EMERALD_LEECHING_POISON
Definition oculus.cpp:77
@ SPELL_AMBER_STOP_TIME
Definition oculus.cpp:67
@ SPELL_GPS
Definition oculus.cpp:85
@ SPELL_AMBER_DRAKE_SADDLE
Definition oculus.cpp:64
@ SPELL_RUBY_MARTYR
Definition oculus.cpp:57
@ SPELL_AMBER_SHOCK_LANCE
Definition oculus.cpp:66
@ SPELL_RIDE_RUBY_DRAKE_QUE
Definition oculus.cpp:50
GossipNPCs
Definition oculus.cpp:31
@ SPELL_CREATE_AMBER_ESSENCE
Definition oculus.cpp:37
@ SPELL_CREATE_RUBY_ESSENCE
Definition oculus.cpp:38
@ GOSSIP_MENU_VERDISA
Definition oculus.cpp:32
@ ITEM_RUBY_ESSENCE
Definition oculus.cpp:41
@ ITEM_EMERALD_ESSENCE
Definition oculus.cpp:39
@ ITEM_AMBER_ESSENCE
Definition oculus.cpp:40
@ SPELL_CREATE_EMERALD_ESSENCE
Definition oculus.cpp:36
@ GOSSIP_MENU_ETERNOS
Definition oculus.cpp:33
@ GOSSIP_MENU_BELGARISTRASZ
Definition oculus.cpp:34
void AddSC_oculus()
Definition oculus.cpp:545
@ 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
constexpr void SetOrientation(float orientation)
Definition Position.h:82
constexpr void GetPosition(float &x, float &y) const
Definition Position.h:92
void RelocateOffset(Position const &offset)
Definition Position.cpp:34
void RelocateOffset(Position const &offset)
Definition Spell.cpp:90
void IsSummonedBy(WorldObject *summoner) override
Definition oculus.cpp:205
npc_image_belgaristrasz(Creature *creature)
Definition oculus.cpp:203
InstanceScript * _instance
Definition oculus.cpp:369
npc_ruby_emerald_amber_drake(Creature *creature)
Definition oculus.cpp:223
void MovementInform(uint32 type, uint32 id) override
Definition oculus.cpp:287
void UpdateAI(uint32 diff) override
Definition oculus.cpp:313
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override
Definition oculus.cpp:240
void IsSummonedBy(WorldObject *summoner) override
Definition oculus.cpp:260
void PassengerBoarded(Unit *passenger, int8, bool apply) override
== Fields =======================================
Definition oculus.cpp:293
npc_verdisa_beglaristrasz_eternos(Creature *creature)
Definition oculus.cpp:122
void MovementInform(uint32, uint32 id) override
Definition oculus.cpp:187
void StoreEssence(Player *player, uint32 itemId)
Definition oculus.cpp:124
bool OnGossipSelect(Player *player, uint32 menuId, uint32 gossipListId) override
Definition oculus.cpp:140
void RemoveEssence(Player *player, uint32 itemId)
Definition oculus.cpp:135