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
234 }
235
237 {
238 _events.Update(diff);
239
240 while (uint32 eventId = _events.ExecuteEvent())
241 {
242 switch (eventId)
243 {
244 case EVENT_INTRO_1:
247 break;
248 case EVENT_INTRO_2:
251 break;
252 case EVENT_INTRO_3:
255 break;
256 case EVENT_INTRO_4:
257 if (Creature* mellichar = _instance->GetCreature(DATA_MELLICHAR))
258 me->SetFacingToObject(mellichar);
261 break;
262 case EVENT_INTRO_5:
264 me->SetFacingTo(0.03490658476948738f);
266 break;
267 case EVENT_INTRO_6:
268 if (Creature* mellichar = _instance->GetCreature(DATA_MELLICHAR))
269 me->SetFacingToObject(mellichar);
272 break;
273 case EVENT_INTRO_7:
277 break;
278 case EVENT_INTRO_8:
282 break;
283 case EVENT_INTRO_9:
286 break;
287 case EVENT_INTRO_10:
291 break;
292 case EVENT_INTRO_11:
294 // Clear stand state from Drink spell manually, otherwise it will be not cleared
297 break;
298 case EVENT_INTRO_12:
299 if (Creature* mellichar = _instance->GetCreature(DATA_MELLICHAR))
300 me->SetFacingToObject(mellichar);
301 me->SetImmuneToAll(false);
303 break;
304 default:
305 break;
306 }
307 }
308 }
309
310private:
315};
316
328
339
382
384{
385 // Prisoner 1
388 // Prisoner 2
390 // Prisoner 3
391 NPC_AKKIRIS = 20908,
393 // Prisoner 4
394 NPC_TW_DRAK = 20910,
395 NPC_BL_DRAK = 20911,
396 // Prisoner 5
397 NPC_SKYRISS = 20912
399
401{
402 { 472.231f, -150.860f, 42.6573f, 3.106690f },
403 { 417.242f, -149.795f, 42.6548f, 0.191986f },
404 { 420.851f, -174.337f, 42.6655f, 0.122173f },
405 { 470.364f, -174.656f, 42.6753f, 3.595380f },
406 { 446.086f, -182.506f, 44.0852f, 1.570800f }
407};
408
409// 20904 - Warden Mellichar
411{
413 _instance(creature->GetInstanceScript()), _summons(me), _inProgress(false) { }
414
435
436 void MoveInLineOfSight(Unit* who) override
437 {
438 if (_inProgress)
439 return;
440
442 return;
443
444 JustEngagedWith(who);
445 }
446
447 void JustEngagedWith(Unit* /*who*/) override
448 {
449 if (_inProgress)
450 return;
451
452 _inProgress = true;
455 }
456
457 void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
458 {
459 if (spellInfo->Id == SPELL_SEAL_SPHERE)
461 }
462
463 void DamageTaken(Unit* who, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
464 {
465 // Creature is unkillable by default. But allow to kill self with Quiet Suicide spell
466 if (damage >= me->GetHealth() && who != me)
467 damage = me->GetHealth() -1;
468 }
469
470 void DoAction(int32 action) override
471 {
472 if (action == ACTION_RESET_PRISON)
473 Reset();
474 }
475
476 void JustSummoned(Creature* summon) override
477 {
478 _summons.Summon(summon);
479 DoZoneInCombat(summon);
480 }
481
482 void SummonedCreatureDies(Creature* summon, Unit* /*killer*/) override
483 {
484 // Not entirely correct. Next phase is started when prisoner is about to die, not when he's dead
485 switch (summon->GetEntry())
486 {
487 case NPC_TRICKSTER:
488 case NPC_PH_HUNTER:
490 break;
491 case NPC_AKKIRIS:
492 case NPC_SULFURON:
494 break;
495 case NPC_TW_DRAK:
496 case NPC_BL_DRAK:
498 break;
499 default:
500 break;
501 }
502 }
503
504 void UpdateAI(uint32 diff) override
505 {
506 _events.Update(diff);
507
508 while (uint32 eventId = _events.ExecuteEvent())
509 {
510 switch (eventId)
511 {
514 _events.Repeat(12s);
515 break;
516
520 me->SetImmuneToPC(true);
523 break;
525 me->SetFacingTo(1.605702877044677734f);
526 // Apparently casting this spell makes him reset orientation to default
530 break;
534 break;
538 break;
542 break;
546 break;
548 me->SetFacingTo(4.747295379638671875f);
550 break;
554 break;
557 break;
558
562 me->SetFacingTo(1.675516128540039062f);
566 break;
570 break;
572 me->SetFacingTo(4.747295379638671875f);
575 break;
579 break;
583 break;
587 break;
588
594 break;
596 me->SetFacingTo(2.478367567062377929f);
599 break;
603 break;
605 me->SetFacingTo(4.747295379638671875f);
607 break;
611 break;
615 break;
618 break;
619
623 me->SetFacingTo(6.056292533874511718f);
627 break;
631 break;
633 me->SetFacingTo(4.747295379638671875f);
635 break;
639 break;
643 break;
646 break;
647
654 break;
658 break;
662 break;
666 break;
670 me->DespawnOrUnsummon(18s);
671 break;
672 default:
673 break;
674 }
675 }
676 }
677
678private:
683};
684
696
697// 36677 - Chaos Breath
699{
701
703
704 bool Validate(SpellInfo const* /*spellInfo*/) override
705 {
707 }
708
709 void HandleDummy(SpellEffIndex /*effIndex*/)
710 {
711 Unit* caster = GetCaster();
712 std::array<uint32, 8> spellsToCast = PossibleSpells;
713
715
716 for (uint32 i = 0; i < 3; ++i)
717 caster->CastSpell(caster, spellsToCast[i]);
718 }
719
724};
725
733
734// 36660, 38820 - Death Count
764
First const & RAND(First const &first, Second const &second, Rest const &... rest)
int32_t int32
Definition Define.h:129
uint32_t uint32
Definition Define.h:133
@ IN_PROGRESS
@ FAIL
@ DONE
@ NOT_STARTED
@ POINT_MOTION_TYPE
@ TEMPSUMMON_MANUAL_DESPAWN
#define INTERACTION_DISTANCE
@ TYPEID_PLAYER
Definition ObjectGuid.h:39
#define RegisterSpellScript(spell_script)
Definition ScriptMgr.h:1128
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:34
@ UNIT_NPC_FLAG_GOSSIP
@ UNIT_STATE_CASTING
Definition Unit.h:235
DamageEffectType
Definition Unit.h:352
void AddSC_arcatraz()
Definition arcatraz.cpp:765
MillhouseMisc
Definition arcatraz.cpp:91
@ POINT_CENTER
Definition arcatraz.cpp:92
Position const PrisonerSpawnPos[5]
Definition arcatraz.cpp:400
WardenCreatures
Definition arcatraz.cpp:384
@ NPC_PH_HUNTER
Definition arcatraz.cpp:387
@ NPC_TRICKSTER
Definition arcatraz.cpp:386
@ NPC_SULFURON
Definition arcatraz.cpp:392
@ NPC_SKYRISS
Definition arcatraz.cpp:397
@ NPC_TW_DRAK
Definition arcatraz.cpp:394
@ NPC_BL_DRAK
Definition arcatraz.cpp:395
@ NPC_AKKIRIS
Definition arcatraz.cpp:391
@ NPC_MILLHOUSE_M
Definition arcatraz.cpp:389
WardenTexts
Definition arcatraz.cpp:318
@ SAY_RELEASE_3
Definition arcatraz.cpp:321
@ SAY_RELEASE_4
Definition arcatraz.cpp:322
@ SAY_RELEASE_8
Definition arcatraz.cpp:326
@ SAY_RELEASE_5
Definition arcatraz.cpp:323
@ SAY_RELEASE_1
Definition arcatraz.cpp:319
@ SAY_RELEASE_2
Definition arcatraz.cpp:320
@ SAY_RELEASE_7
Definition arcatraz.cpp:325
@ SAY_RELEASE_6
Definition arcatraz.cpp:324
WardenSpells
Definition arcatraz.cpp:330
@ SPELL_TARGET_GAMMA
Definition arcatraz.cpp:336
@ SPELL_TARGET_BETA
Definition arcatraz.cpp:334
@ SPELL_TARGET_DELTA
Definition arcatraz.cpp:335
@ SPELL_TARGET_OMEGA
Definition arcatraz.cpp:332
@ SPELL_TARGET_ALPHA
Definition arcatraz.cpp:333
@ SPELL_QUIET_SUICIDE
Definition arcatraz.cpp:337
@ SPELL_SEAL_SPHERE
Definition arcatraz.cpp:331
WardenEvents
Definition arcatraz.cpp:341
@ EVENT_RELEASE_1_3
Definition arcatraz.cpp:346
@ EVENT_MAIN_CHANNEL
Definition arcatraz.cpp:342
@ EVENT_RELEASE_1_5
Definition arcatraz.cpp:348
@ EVENT_RELEASE_2_5
Definition arcatraz.cpp:358
@ EVENT_RELEASE_4_5
Definition arcatraz.cpp:373
@ EVENT_RELEASE_1_1
Definition arcatraz.cpp:344
@ EVENT_RELEASE_3_4
Definition arcatraz.cpp:364
@ EVENT_RELEASE_1_2
Definition arcatraz.cpp:345
@ EVENT_RELEASE_3_5
Definition arcatraz.cpp:365
@ EVENT_RELEASE_1_7
Definition arcatraz.cpp:350
@ EVENT_RELEASE_1_8
Definition arcatraz.cpp:351
@ EVENT_RELEASE_2_4
Definition arcatraz.cpp:357
@ EVENT_RELEASE_1_4
Definition arcatraz.cpp:347
@ EVENT_RELEASE_4_6
Definition arcatraz.cpp:374
@ EVENT_RELEASE_2_6
Definition arcatraz.cpp:359
@ EVENT_RELEASE_5_5
Definition arcatraz.cpp:380
@ EVENT_RELEASE_3_1
Definition arcatraz.cpp:361
@ EVENT_RELEASE_4_2
Definition arcatraz.cpp:370
@ EVENT_RELEASE_2_2
Definition arcatraz.cpp:355
@ EVENT_RELEASE_3_2
Definition arcatraz.cpp:362
@ EVENT_RELEASE_5_2
Definition arcatraz.cpp:377
@ EVENT_RELEASE_5_1
Definition arcatraz.cpp:376
@ EVENT_RELEASE_4_4
Definition arcatraz.cpp:372
@ EVENT_RELEASE_3_3
Definition arcatraz.cpp:363
@ EVENT_RELEASE_1_9
Definition arcatraz.cpp:352
@ EVENT_RELEASE_4_3
Definition arcatraz.cpp:371
@ EVENT_RELEASE_5_3
Definition arcatraz.cpp:378
@ EVENT_RELEASE_1_6
Definition arcatraz.cpp:349
@ EVENT_RELEASE_5_4
Definition arcatraz.cpp:379
@ EVENT_RELEASE_2_3
Definition arcatraz.cpp:356
@ EVENT_RELEASE_4_1
Definition arcatraz.cpp:369
@ EVENT_RELEASE_3_6
Definition arcatraz.cpp:366
@ EVENT_RELEASE_2_1
Definition arcatraz.cpp:354
@ EVENT_RELEASE_3_7
Definition arcatraz.cpp:367
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:686
@ SPELL_SHRINK
Definition arcatraz.cpp:691
@ SPELL_WAVERING_WILL
Definition arcatraz.cpp:693
@ SPELL_CORROSIVE_POISON
Definition arcatraz.cpp:688
@ SPELL_HEX
Definition arcatraz.cpp:694
@ SPELL_NECROTIC_POISON
Definition arcatraz.cpp:687
@ SPELL_FEVERED_FATIGUE
Definition arcatraz.cpp:689
@ SPELL_WITHERED_TOUCH
Definition arcatraz.cpp:690
@ SPELL_PIERCING_SHADOW
Definition arcatraz.cpp:692
DeathCountRemover
Definition arcatraz.cpp:727
@ SPELL_DEATH_COUNT_DAMAGE
Definition arcatraz.cpp:728
@ SPELL_DEATH_COUNT_REMOVER
Definition arcatraz.cpp:730
@ SPELL_DEATH_COUNT_DAMAGE_H
Definition arcatraz.cpp:729
@ SPELL_DEATH_COUNT_REMOVER_H
Definition arcatraz.cpp:731
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
void DoZoneInCombat(Creature *creature=nullptr)
bool UpdateVictim()
Creature *const me
Definition CreatureAI.h:82
void SetHomePosition(float x, float y, float z, float o)
Definition Creature.h:293
void SetImmuneToPC(bool apply) override
Definition Creature.h:129
void SetReactState(ReactStates st)
Definition Creature.h:119
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void SetImmuneToAll(bool apply) override
Definition Creature.h:126
void Update(uint32 time)
Definition EventMap.h:67
void Repeat(Milliseconds time)
Definition EventMap.cpp:63
EventId ExecuteEvent()
Definition EventMap.cpp:73
void CancelEvent(EventId eventId)
Definition EventMap.cpp:151
void ScheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
Definition EventMap.cpp:36
void Reset()
Definition EventMap.cpp:21
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={})
static ObjectGuid const Empty
Definition ObjectGuid.h:140
TypeID GetTypeId() const
Definition Object.h:93
uint32 GetEntry() const
Definition Object.h:81
uint32 Id
Definition SpellInfo.h:289
Unit * GetCaster() const
HookList< EffectHandler > OnEffectHitTarget
void Summon(Creature const *summon)
void AttackStartCaster(Unit *victim, float dist)
Definition UnitAI.cpp:48
void DoMeleeAttackIfReady()
Definition UnitAI.cpp:54
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
Definition UnitAI.h:241
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
Definition UnitAI.cpp:166
Definition Unit.h:769
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true)
Definition Unit.cpp:3093
MotionMaster * GetMotionMaster()
Definition Unit.h:1667
void RemoveNpcFlag(NPCFlags flags)
Definition Unit.h:1098
void SetFacingToObject(WorldObject const *object, bool force=true, uint32 movementId=EVENT_FACE)
Definition Unit.cpp:13259
uint32 GetHealth() const
Definition Unit.h:913
void SetNpcFlag(NPCFlags flags)
Definition Unit.h:1097
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Definition Unit.cpp:3784
bool HasUnitState(const uint32 f) const
Definition Unit.h:876
void HandleEmoteCommand(Emote emoteId)
Definition Unit.cpp:1568
void SetFacingTo(float ori, bool force=true, uint32 movementId=EVENT_FACE)
Definition Unit.cpp:13250
void SetStandState(UnitStandStateType state)
Definition Unit.cpp:10363
bool HealthBelowPctDamaged(int32 pct, uint32 damage) const
Definition Unit.h:918
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
Definition Object.cpp:2832
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:1992
bool IsWithinDist(WorldObject const *obj, float dist2compare, bool is3D=true) const
Definition Object.cpp:1187
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
void HandleDummy(SpellEffIndex)
Definition arcatraz.cpp:709
PrepareSpellScript(spell_arcatraz_chaos_breath)
bool Validate(SpellInfo const *) override
Definition arcatraz.cpp:704
static constexpr std::array< uint32, 8 > PossibleSpells
Definition arcatraz.cpp:702
PrepareAuraScript(spell_arcatraz_death_count)
void OnApply(AuraEffect const *, AuraEffectHandleModes)
Definition arcatraz.cpp:744
bool Validate(SpellInfo const *) override
Definition arcatraz.cpp:739
void Register() override
Definition arcatraz.cpp:759
void RandomShuffle(C &container)
Reorder the elements of the container randomly.
Definition Containers.h:166
void GetPosition(float &x, float &y) const
Definition Position.h:84
InstanceScript * _instance
Definition arcatraz.cpp:312
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
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:236
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:436
void JustSummoned(Creature *summon) override
Definition arcatraz.cpp:476
npc_warden_mellichar(Creature *creature)
Definition arcatraz.cpp:412
InstanceScript * _instance
Definition arcatraz.cpp:679
void UpdateAI(uint32 diff) override
Definition arcatraz.cpp:504
void DamageTaken(Unit *who, uint32 &damage, DamageEffectType, SpellInfo const *) override
Definition arcatraz.cpp:463
void DoAction(int32 action) override
Definition arcatraz.cpp:470
void JustEngagedWith(Unit *) override
Definition arcatraz.cpp:447
void SummonedCreatureDies(Creature *summon, Unit *) override
Definition arcatraz.cpp:482
void Reset() override
Definition arcatraz.cpp:415
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override
Definition arcatraz.cpp:457