TrinityCore
Loading...
Searching...
No Matches
arcatraz.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/*
19 * The way Mellichar's event is reset requires additional research
20 */
21
22#include "ScriptMgr.h"
23#include "arcatraz.h"
24#include "Containers.h"
25#include "InstanceScript.h"
26#include "MotionMaster.h"
27#include "ScriptedCreature.h"
28#include "SpellInfo.h"
29#include "SpellScript.h"
30
48
65
89
94
95Position const CenterPos = { 445.88043f, -158.70554f, 43.068977f, 0.0f };
96
97// 20977 - Millhouse Manastorm
99{
101 _instance(creature->GetInstanceScript()), _lowHealth(false), _hasIceBlock(false) { }
102
108
109 void Reset() override
110 {
111 _events.Reset();
112 _lowHealth = false;
113 _hasIceBlock = false;
114
116 {
119 }
120 }
121
130
131 void AttackStart(Unit* who) override
132 {
134 }
135
136 void MovementInform(uint32 type, uint32 pointId) override
137 {
138 if (type != POINT_MOTION_TYPE)
139 return;
140
141 if (pointId == POINT_CENTER)
143 }
144
145 void DamageTaken(Unit* /*killer*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
146 {
147 if (!_lowHealth && me->HealthBelowPctDamaged(20, damage))
148 {
149 _lowHealth = true;
151 }
152 // Guessed, how this spell should be used?
153 if (!_hasIceBlock && me->HealthBelowPctDamaged(10, damage))
154 {
155 _hasIceBlock = true;
157 }
158 }
159
160 void OnSpellStart(SpellInfo const* spell) override
161 {
162 if (spell->Id == SPELL_PYROBLAST)
163 Talk(SAY_PYRO);
164 }
165
166 void OnSpellCast(SpellInfo const* spell) override
167 {
168 if (spell->Id == SPELL_ICE_BLOCK)
170 }
171
172 void KilledUnit(Unit* /*who*/) override
173 {
174 Talk(SAY_SLAY);
175 }
176
177 void JustDied(Unit* /*killer*/) override
178 {
180 }
181
182 void UpdateAI(uint32 diff) override
183 {
184 if (!UpdateVictim())
185 {
186 UpdateIntroEvents(diff);
187 return;
188 }
189
190 _events.Update(diff);
191
193 return;
194
195 while (uint32 eventId = _events.ExecuteEvent())
196 {
197 switch (eventId)
198 {
199 case EVENT_MAIN_SPELL:
201 _events.Repeat(3s);
202 break;
205 _events.Repeat(20s, 30s);
206 break;
209 _events.Repeat(20s, 30s);
210 break;
211 case EVENT_FIRE_BLAST:
213 _events.Repeat(25s, 40s);
214 break;
215 case EVENT_PYROBLAST:
217 _events.Repeat(40s, 60s);
218 break;
219 case EVENT_ICE_BLOCK:
221 break;
222 case EVENT_LOW_HEALTH:
224 break;
225 default:
226 break;
227 }
228
230 return;
231 }
232 }
233
235 {
236 _events.Update(diff);
237
238 while (uint32 eventId = _events.ExecuteEvent())
239 {
240 switch (eventId)
241 {
242 case EVENT_INTRO_1:
245 break;
246 case EVENT_INTRO_2:
249 break;
250 case EVENT_INTRO_3:
253 break;
254 case EVENT_INTRO_4:
255 if (Creature* mellichar = _instance->GetCreature(DATA_MELLICHAR))
256 me->SetFacingToObject(mellichar);
259 break;
260 case EVENT_INTRO_5:
262 me->SetFacingTo(0.03490658476948738f);
264 break;
265 case EVENT_INTRO_6:
266 if (Creature* mellichar = _instance->GetCreature(DATA_MELLICHAR))
267 me->SetFacingToObject(mellichar);
270 break;
271 case EVENT_INTRO_7:
275 break;
276 case EVENT_INTRO_8:
280 break;
281 case EVENT_INTRO_9:
284 break;
285 case EVENT_INTRO_10:
289 break;
290 case EVENT_INTRO_11:
292 // Clear stand state from Drink spell manually, otherwise it will be not cleared
295 break;
296 case EVENT_INTRO_12:
297 if (Creature* mellichar = _instance->GetCreature(DATA_MELLICHAR))
298 me->SetFacingToObject(mellichar);
299 me->SetImmuneToAll(false);
301 break;
302 default:
303 break;
304 }
305 }
306 }
307
308private:
313};
314
326
337
380
382{
383 // Prisoner 1
386 // Prisoner 2
388 // Prisoner 3
389 NPC_AKKIRIS = 20908,
391 // Prisoner 4
392 NPC_TW_DRAK = 20910,
393 NPC_BL_DRAK = 20911,
394 // Prisoner 5
395 NPC_SKYRISS = 20912
397
399{
400 { 472.231f, -150.860f, 42.6573f, 3.106690f },
401 { 417.242f, -149.795f, 42.6548f, 0.191986f },
402 { 420.851f, -174.337f, 42.6655f, 0.122173f },
403 { 470.364f, -174.656f, 42.6753f, 3.595380f },
404 { 446.086f, -182.506f, 44.0852f, 1.570800f }
405};
406
407// 20904 - Warden Mellichar
409{
411 _instance(creature->GetInstanceScript()), _summons(me), _inProgress(false) { }
412
433
434 void MoveInLineOfSight(Unit* who) override
435 {
436 if (_inProgress)
437 return;
438
440 return;
441
442 JustEngagedWith(who);
443 }
444
445 void JustEngagedWith(Unit* /*who*/) override
446 {
447 if (_inProgress)
448 return;
449
450 _inProgress = true;
453 }
454
455 void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
456 {
457 if (spellInfo->Id == SPELL_SEAL_SPHERE)
459 }
460
461 void DamageTaken(Unit* who, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
462 {
463 // Creature is unkillable by default. But allow to kill self with Quiet Suicide spell
464 if (damage >= me->GetHealth() && who != me)
465 damage = me->GetHealth() -1;
466 }
467
468 void DoAction(int32 action) override
469 {
470 if (action == ACTION_RESET_PRISON)
471 Reset();
472 }
473
474 void JustSummoned(Creature* summon) override
475 {
476 _summons.Summon(summon);
477 DoZoneInCombat(summon);
478 }
479
480 void SummonedCreatureDies(Creature* summon, Unit* /*killer*/) override
481 {
482 // Not entirely correct. Next phase is started when prisoner is about to die, not when he's dead
483 switch (summon->GetEntry())
484 {
485 case NPC_TRICKSTER:
486 case NPC_PH_HUNTER:
488 break;
489 case NPC_AKKIRIS:
490 case NPC_SULFURON:
492 break;
493 case NPC_TW_DRAK:
494 case NPC_BL_DRAK:
496 break;
497 default:
498 break;
499 }
500 }
501
502 void UpdateAI(uint32 diff) override
503 {
504 _events.Update(diff);
505
506 while (uint32 eventId = _events.ExecuteEvent())
507 {
508 switch (eventId)
509 {
512 _events.Repeat(12s);
513 break;
514
518 me->SetImmuneToPC(true);
521 break;
523 me->SetFacingTo(1.605702877044677734f);
524 // Apparently casting this spell makes him reset orientation to default
528 break;
532 break;
536 break;
540 break;
544 break;
546 me->SetFacingTo(4.747295379638671875f);
548 break;
552 break;
555 break;
556
560 me->SetFacingTo(1.675516128540039062f);
564 break;
568 break;
570 me->SetFacingTo(4.747295379638671875f);
573 break;
577 break;
581 break;
585 break;
586
592 break;
594 me->SetFacingTo(2.478367567062377929f);
597 break;
601 break;
603 me->SetFacingTo(4.747295379638671875f);
605 break;
609 break;
613 break;
616 break;
617
621 me->SetFacingTo(6.056292533874511718f);
625 break;
629 break;
631 me->SetFacingTo(4.747295379638671875f);
633 break;
637 break;
641 break;
644 break;
645
652 break;
656 break;
660 break;
664 break;
668 me->DespawnOrUnsummon(18s);
669 break;
670 default:
671 break;
672 }
673 }
674 }
675
676private:
681};
682
694
695// 36677 - Chaos Breath
697{
699
700 bool Validate(SpellInfo const* /*spellInfo*/) override
701 {
703 }
704
705 void HandleDummy(SpellEffIndex /*effIndex*/)
706 {
707 Unit* caster = GetCaster();
708 std::array<uint32, 8> spellsToCast = PossibleSpells;
709
711
712 for (uint32 i = 0; i < 3; ++i)
713 caster->CastSpell(caster, spellsToCast[i]);
714 }
715
720};
721
729
730// 36660, 38820 - Death Count
732{
733 bool Validate(SpellInfo const* /*spell*/) override
734 {
736 }
737
738 void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
739 {
740 switch (GetId())
741 {
744 break;
747 break;
748 default:
749 break;
750 }
751 }
752
757};
758
First const & RAND(First const &first, Second const &second, Rest const &... rest)
int32_t int32
Definition Define.h:150
uint32_t uint32
Definition Define.h:154
@ IN_PROGRESS
@ FAIL
@ DONE
@ NOT_STARTED
@ POINT_MOTION_TYPE
@ TEMPSUMMON_MANUAL_DESPAWN
#define INTERACTION_DISTANCE
@ TYPEID_PLAYER
Definition ObjectGuid.h:44
#define RegisterSpellScript(spell_script)
Definition ScriptMgr.h:1383
SpellEffIndex
@ EFFECT_0
@ SPELL_EFFECT_DUMMY
@ EMOTE_ONESHOT_EXCLAMATION
AuraEffectHandleModes
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_DUMMY
#define SpellEffectFn(F, I, N)
#define AuraEffectApplyFn(F, I, N, M)
@ REACT_PASSIVE
@ UNIT_STAND_STATE_STAND
Definition UnitDefines.h:42
@ UNIT_NPC_FLAG_GOSSIP
DamageEffectType
@ UNIT_STATE_CASTING
Definition Unit.h:290
void AddSC_arcatraz()
Definition arcatraz.cpp:759
MillhouseMisc
Definition arcatraz.cpp:91
@ POINT_CENTER
Definition arcatraz.cpp:92
Position const PrisonerSpawnPos[5]
Definition arcatraz.cpp:398
WardenCreatures
Definition arcatraz.cpp:382
@ NPC_PH_HUNTER
Definition arcatraz.cpp:385
@ NPC_TRICKSTER
Definition arcatraz.cpp:384
@ NPC_SULFURON
Definition arcatraz.cpp:390
@ NPC_SKYRISS
Definition arcatraz.cpp:395
@ NPC_TW_DRAK
Definition arcatraz.cpp:392
@ NPC_BL_DRAK
Definition arcatraz.cpp:393
@ NPC_AKKIRIS
Definition arcatraz.cpp:389
@ NPC_MILLHOUSE_M
Definition arcatraz.cpp:387
WardenTexts
Definition arcatraz.cpp:316
@ SAY_RELEASE_3
Definition arcatraz.cpp:319
@ SAY_RELEASE_4
Definition arcatraz.cpp:320
@ SAY_RELEASE_8
Definition arcatraz.cpp:324
@ SAY_RELEASE_5
Definition arcatraz.cpp:321
@ SAY_RELEASE_1
Definition arcatraz.cpp:317
@ SAY_RELEASE_2
Definition arcatraz.cpp:318
@ SAY_RELEASE_7
Definition arcatraz.cpp:323
@ SAY_RELEASE_6
Definition arcatraz.cpp:322
WardenSpells
Definition arcatraz.cpp:328
@ SPELL_TARGET_GAMMA
Definition arcatraz.cpp:334
@ SPELL_TARGET_BETA
Definition arcatraz.cpp:332
@ SPELL_TARGET_DELTA
Definition arcatraz.cpp:333
@ SPELL_TARGET_OMEGA
Definition arcatraz.cpp:330
@ SPELL_TARGET_ALPHA
Definition arcatraz.cpp:331
@ SPELL_QUIET_SUICIDE
Definition arcatraz.cpp:335
@ SPELL_SEAL_SPHERE
Definition arcatraz.cpp:329
WardenEvents
Definition arcatraz.cpp:339
@ EVENT_RELEASE_1_3
Definition arcatraz.cpp:344
@ EVENT_MAIN_CHANNEL
Definition arcatraz.cpp:340
@ EVENT_RELEASE_1_5
Definition arcatraz.cpp:346
@ EVENT_RELEASE_2_5
Definition arcatraz.cpp:356
@ EVENT_RELEASE_4_5
Definition arcatraz.cpp:371
@ EVENT_RELEASE_1_1
Definition arcatraz.cpp:342
@ EVENT_RELEASE_3_4
Definition arcatraz.cpp:362
@ EVENT_RELEASE_1_2
Definition arcatraz.cpp:343
@ EVENT_RELEASE_3_5
Definition arcatraz.cpp:363
@ EVENT_RELEASE_1_7
Definition arcatraz.cpp:348
@ EVENT_RELEASE_1_8
Definition arcatraz.cpp:349
@ EVENT_RELEASE_2_4
Definition arcatraz.cpp:355
@ EVENT_RELEASE_1_4
Definition arcatraz.cpp:345
@ EVENT_RELEASE_4_6
Definition arcatraz.cpp:372
@ EVENT_RELEASE_2_6
Definition arcatraz.cpp:357
@ EVENT_RELEASE_5_5
Definition arcatraz.cpp:378
@ EVENT_RELEASE_3_1
Definition arcatraz.cpp:359
@ EVENT_RELEASE_4_2
Definition arcatraz.cpp:368
@ EVENT_RELEASE_2_2
Definition arcatraz.cpp:353
@ EVENT_RELEASE_3_2
Definition arcatraz.cpp:360
@ EVENT_RELEASE_5_2
Definition arcatraz.cpp:375
@ EVENT_RELEASE_5_1
Definition arcatraz.cpp:374
@ EVENT_RELEASE_4_4
Definition arcatraz.cpp:370
@ EVENT_RELEASE_3_3
Definition arcatraz.cpp:361
@ EVENT_RELEASE_1_9
Definition arcatraz.cpp:350
@ EVENT_RELEASE_4_3
Definition arcatraz.cpp:369
@ EVENT_RELEASE_5_3
Definition arcatraz.cpp:376
@ EVENT_RELEASE_1_6
Definition arcatraz.cpp:347
@ EVENT_RELEASE_5_4
Definition arcatraz.cpp:377
@ EVENT_RELEASE_2_3
Definition arcatraz.cpp:354
@ EVENT_RELEASE_4_1
Definition arcatraz.cpp:367
@ EVENT_RELEASE_3_6
Definition arcatraz.cpp:364
@ EVENT_RELEASE_2_1
Definition arcatraz.cpp:352
@ EVENT_RELEASE_3_7
Definition arcatraz.cpp:365
MillhouseEvents
Definition arcatraz.cpp:67
@ EVENT_ARCANE_MISSILES
Definition arcatraz.cpp:82
@ EVENT_INTRO_12
Definition arcatraz.cpp:79
@ EVENT_INTRO_4
Definition arcatraz.cpp:71
@ EVENT_FIRE_BLAST
Definition arcatraz.cpp:84
@ EVENT_INTRO_1
Definition arcatraz.cpp:68
@ EVENT_INTRO_2
Definition arcatraz.cpp:69
@ EVENT_INTRO_5
Definition arcatraz.cpp:72
@ EVENT_INTRO_8
Definition arcatraz.cpp:75
@ EVENT_MAIN_SPELL
Definition arcatraz.cpp:81
@ EVENT_INTRO_9
Definition arcatraz.cpp:76
@ EVENT_INTRO_6
Definition arcatraz.cpp:73
@ EVENT_INTRO_7
Definition arcatraz.cpp:74
@ EVENT_LOW_HEALTH
Definition arcatraz.cpp:87
@ EVENT_INTRO_10
Definition arcatraz.cpp:77
@ EVENT_ICE_BLOCK
Definition arcatraz.cpp:86
@ EVENT_INTRO_3
Definition arcatraz.cpp:70
@ EVENT_PYROBLAST
Definition arcatraz.cpp:85
@ EVENT_INTRO_11
Definition arcatraz.cpp:78
@ EVENT_CONE_OF_COLD
Definition arcatraz.cpp:83
ChaosBreath
Definition arcatraz.cpp:684
@ SPELL_SHRINK
Definition arcatraz.cpp:689
@ SPELL_WAVERING_WILL
Definition arcatraz.cpp:691
@ SPELL_CORROSIVE_POISON
Definition arcatraz.cpp:686
@ SPELL_HEX
Definition arcatraz.cpp:692
@ SPELL_NECROTIC_POISON
Definition arcatraz.cpp:685
@ SPELL_FEVERED_FATIGUE
Definition arcatraz.cpp:687
@ SPELL_WITHERED_TOUCH
Definition arcatraz.cpp:688
@ SPELL_PIERCING_SHADOW
Definition arcatraz.cpp:690
DeathCountRemover
Definition arcatraz.cpp:723
@ SPELL_DEATH_COUNT_DAMAGE
Definition arcatraz.cpp:724
@ SPELL_DEATH_COUNT_REMOVER
Definition arcatraz.cpp:726
@ SPELL_DEATH_COUNT_DAMAGE_H
Definition arcatraz.cpp:725
@ SPELL_DEATH_COUNT_REMOVER_H
Definition arcatraz.cpp:727
MillhouseSpells
Definition arcatraz.cpp:50
@ SPELL_DRINK
Definition arcatraz.cpp:55
@ SPELL_FROSTBOLT
Definition arcatraz.cpp:58
@ SPELL_ICE_BLOCK
Definition arcatraz.cpp:63
@ SPELL_ICE_ARMOR
Definition arcatraz.cpp:54
@ SPELL_SIMPLE_TELEPORT
Definition arcatraz.cpp:51
@ SPELL_CONJURE_WATER
Definition arcatraz.cpp:52
@ SPELL_ARCANE_INTELLECT
Definition arcatraz.cpp:53
@ SPELL_FIREBALL
Definition arcatraz.cpp:57
@ SPELL_CONE_OF_COLD
Definition arcatraz.cpp:60
@ SPELL_PYROBLAST
Definition arcatraz.cpp:62
@ SPELL_FIRE_BLAST
Definition arcatraz.cpp:61
@ SPELL_ARCANE_MISSILES
Definition arcatraz.cpp:59
MillhouseTexts
Definition arcatraz.cpp:32
@ SAY_DEATH
Definition arcatraz.cpp:45
@ SAY_INTRO_2
Definition arcatraz.cpp:34
@ SAY_PYRO
Definition arcatraz.cpp:42
@ SAY_BUFFS
Definition arcatraz.cpp:38
@ SAY_INTRO_1
Definition arcatraz.cpp:33
@ SAY_WATER
Definition arcatraz.cpp:37
@ SAY_ICEBLOCK
Definition arcatraz.cpp:43
@ SAY_READY
Definition arcatraz.cpp:40
@ SAY_SLAY
Definition arcatraz.cpp:41
@ SAY_INTRO_3
Definition arcatraz.cpp:35
@ SAY_LOWHP
Definition arcatraz.cpp:44
@ SAY_COMPLETE
Definition arcatraz.cpp:46
@ SAY_INTRO_4
Definition arcatraz.cpp:36
@ SAY_DRINK
Definition arcatraz.cpp:39
Position const CenterPos
Definition arcatraz.cpp:95
@ ACTION_RESET_PRISON
Definition arcatraz.h:79
#define RegisterArcatrazCreatureAI(ai_name)
Definition arcatraz.h:88
@ DATA_MELLICHAR
Definition arcatraz.h:43
@ DATA_WARDENS_SHIELD
Definition arcatraz.h:44
@ DATA_STASIS_POD_DELTA
Definition arcatraz.h:47
@ DATA_STASIS_POD_GAMMA
Definition arcatraz.h:48
@ DATA_STASIS_POD_BETA
Definition arcatraz.h:46
@ DATA_HARBINGER_SKYRISS
Definition arcatraz.h:34
@ DATA_STASIS_POD_OMEGA
Definition arcatraz.h:49
@ DATA_STASIS_POD_ALPHA
Definition arcatraz.h:45
HookList< EffectApplyHandler > AfterEffectApply
Unit * GetTarget() const
uint32 GetId() const
TypeID GetTypeId() const
Definition BaseEntity.h:166
void DoZoneInCombat()
Definition CreatureAI.h:169
bool UpdateVictim()
Creature *const me
Definition CreatureAI.h:63
void SetHomePosition(float x, float y, float z, float o)
Definition Creature.h:394
void SetImmuneToPC(bool apply) override
Definition Creature.h:190
void SetReactState(ReactStates st)
Definition Creature.h:180
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void SetImmuneToAll(bool apply) override
Definition Creature.h:187
void Update(uint32 time)
Definition EventMap.h:77
void Repeat(Milliseconds time)
Definition EventMap.cpp:67
EventId ExecuteEvent()
Definition EventMap.cpp:77
void CancelEvent(EventId eventId)
Definition EventMap.cpp:156
void ScheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
Definition EventMap.cpp:40
void Reset()
Definition EventMap.cpp:25
virtual bool SetBossState(uint32 id, EncounterState state)
Creature * GetCreature(uint32 type)
void HandleGameObject(ObjectGuid guid, bool open, GameObject *go=nullptr)
EncounterState GetBossState(uint32 id) const
GameObject * GetGameObject(uint32 type)
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={})
static ObjectGuid const Empty
Definition ObjectGuid.h:314
uint32 GetEntry() const
Definition Object.h:89
uint32 const Id
Definition SpellInfo.h:328
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
Unit * GetCaster() const
HookList< EffectHandler > OnEffectHitTarget
void Summon(Creature const *summon)
void AttackStartCaster(Unit *victim, float dist)
Definition UnitAI.cpp:47
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
Definition UnitAI.h:160
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
Definition UnitAI.cpp:172
Definition Unit.h:647
void SetStandState(UnitStandStateType state, uint32 animKitID=0)
Definition Unit.cpp:10804
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true)
Definition Unit.cpp:3253
MotionMaster * GetMotionMaster()
Definition Unit.h:1750
void RemoveNpcFlag(NPCFlags flags)
Definition Unit.h:1013
void SetFacingToObject(WorldObject const *object, bool force=true, uint32 movementId=EVENT_FACE)
Definition Unit.cpp:13394
uint64 GetHealth() const
Definition Unit.h:800
void SetNpcFlag(NPCFlags flags)
Definition Unit.h:1012
bool HealthBelowPctDamaged(float pct, uint32 damage) const
Definition Unit.h:805
bool HasUnitState(const uint32 f) const
Definition Unit.h:755
void SetFacingTo(float ori, bool force=true, uint32 movementId=EVENT_FACE)
Definition Unit.cpp:13385
void HandleEmoteCommand(Emote emoteId, Player *target=nullptr, Trinity::IteratorPair< int32 const * > spellVisualKitIds={}, int32 sequenceVariation=0)
Definition Unit.cpp:1662
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Definition Unit.cpp:3992
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
Definition Object.cpp:2222
TempSummon * SummonCreature(uint32 entry, Position const &pos, TempSummonType despawnType=TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime=0s, uint32 vehId=0, uint32 spellId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty)
Definition Object.cpp:1403
bool IsWithinDist(WorldObject const *obj, float dist2compare, bool is3D=true, bool incOwnRadius=true, bool incTargetRadius=true) const
Definition Object.cpp:494
void HandleDummy(SpellEffIndex)
Definition arcatraz.cpp:705
bool Validate(SpellInfo const *) override
Definition arcatraz.cpp:700
static constexpr std::array< uint32, 8 > PossibleSpells
Definition arcatraz.cpp:698
void OnApply(AuraEffect const *, AuraEffectHandleModes)
Definition arcatraz.cpp:738
bool Validate(SpellInfo const *) override
Definition arcatraz.cpp:733
void Register() override
Definition arcatraz.cpp:753
void RandomShuffle(Iterator begin, Iterator end)
Reorder the elements of the iterator range randomly.
Definition Containers.h:171
constexpr void GetPosition(float &x, float &y) const
Definition Position.h:92
InstanceScript * _instance
Definition arcatraz.cpp:310
npc_millhouse_manastorm(Creature *creature)
Definition arcatraz.cpp:100
void UpdateAI(uint32 diff) override
Definition arcatraz.cpp:182
void Reset() override
Definition arcatraz.cpp:109
void MovementInform(uint32 type, uint32 pointId) override
Definition arcatraz.cpp:136
void OnSpellStart(SpellInfo const *spell) override
Definition arcatraz.cpp:160
void DamageTaken(Unit *, uint32 &damage, DamageEffectType, SpellInfo const *) override
Definition arcatraz.cpp:145
void JustEngagedWith(Unit *) override
Definition arcatraz.cpp:122
void AttackStart(Unit *who) override
== Triggered Actions Requested ==================
Definition arcatraz.cpp:131
void KilledUnit(Unit *) override
Definition arcatraz.cpp:172
void JustAppeared() override
Definition arcatraz.cpp:103
void UpdateIntroEvents(uint32 diff)
Definition arcatraz.cpp:234
void OnSpellCast(SpellInfo const *spell) override
Definition arcatraz.cpp:166
void JustDied(Unit *) override
Definition arcatraz.cpp:177
void MoveInLineOfSight(Unit *who) override
Definition arcatraz.cpp:434
void JustSummoned(Creature *summon) override
Definition arcatraz.cpp:474
npc_warden_mellichar(Creature *creature)
Definition arcatraz.cpp:410
InstanceScript * _instance
Definition arcatraz.cpp:677
void UpdateAI(uint32 diff) override
Definition arcatraz.cpp:502
void DamageTaken(Unit *who, uint32 &damage, DamageEffectType, SpellInfo const *) override
Definition arcatraz.cpp:461
void DoAction(int32 action) override
Definition arcatraz.cpp:468
void JustEngagedWith(Unit *) override
Definition arcatraz.cpp:445
void SummonedCreatureDies(Creature *summon, Unit *) override
Definition arcatraz.cpp:480
void Reset() override
Definition arcatraz.cpp:413
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override
Definition arcatraz.cpp:455