AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
boss_mimiron Struct Reference
Inheritance diagram for boss_mimiron:
BossAI ScriptedAI CreatureAI UnitAI

Public Member Functions

 boss_mimiron (Creature *creature)
 
void Reset () override
 
void AttackStart (Unit *who) override
 
void JustReachedHome () override
 
void JustEngagedWith (Unit *) override
 Called for reaction when initially engaged - this happens after JustEnteredCombat.
 
void UpdateAI (uint32 diff) override
 Use to start attacking a target. Called just before JustEngagedWith()
 
void SpellHit (Unit *, SpellInfo const *spellInfo) override
 
void MoveInLineOfSight (Unit *) override
 
void EnterEvadeMode (EvadeReason why) override
 
void ResetGameObjects ()
 
void CloseDoorAndButton ()
 
void SetData (uint32, uint32 value) override
 
uint32 GetData (uint32 id) const override
 
- Public Member Functions inherited from BossAI
 BossAI (Creature *creature, uint32 bossId)
 
 ~BossAI () override
 
bool CanRespawn () override
 
void OnSpellCast (SpellInfo const *spell) override
 
void OnChannelFinished (SpellInfo const *spell) override
 
void OnSpellFailed (SpellInfo const *spell) override
 
void DamageTaken (Unit *attacker, uint32 &damage, DamageEffectType damagetype, SpellSchoolMask damageSchoolMask) override
 Called at any Damage from any attacker (before damage apply)
 
void JustSummoned (Creature *summon) override
 
void SummonedCreatureDespawn (Creature *summon) override
 
void SummonedCreatureDespawnAll () override
 
void UpdateAI (uint32 diff) override
 Use to start attacking a target. Called just before JustEngagedWith()
 
void ScheduleHealthCheckEvent (uint32 healthPct, std::function< void()> exec, bool allowedWhileCasting=true)
 Executes a function once the creature reaches the defined health point percent.
 
void ScheduleHealthCheckEvent (std::initializer_list< uint8 > healthPct, std::function< void()> exec, bool allowedWhileCasting=true)
 
void ProcessHealthCheck ()
 
void ScheduleEnrageTimer (uint32 spellId, Milliseconds timer, uint8 textId=0)
 
virtual void ExecuteEvent (uint32)
 
virtual void ScheduleTasks ()
 
void Reset () override
 
void JustEngagedWith (Unit *) override
 Called for reaction when initially engaged - this happens after JustEnteredCombat.
 
void EnterEvadeMode (EvadeReason why=EVADE_REASON_OTHER) override
 
void JustDied (Unit *) override
 
void JustReachedHome () override
 
- Public Member Functions inherited from ScriptedAI
 ScriptedAI (Creature *creature)
 
 ~ScriptedAI () override
 
void AttackStartNoMove (Unit *target)
 
void DamageTaken (Unit *, uint32 &, DamageEffectType, SpellSchoolMask) override
 Called at any Damage from any attacker (before damage apply)
 
void UpdateAI (uint32 diff) override
 Use to start attacking a target. Called just before JustEngagedWith()
 
void JustDied (Unit *) override
 
void KilledUnit (Unit *) override
 
void JustSummoned (Creature *) override
 
void SummonedCreatureDespawn (Creature *) override
 
void SpellHit (Unit *, SpellInfo const *) override
 
void SpellHitTarget (Unit *, SpellInfo const *) override
 
void MovementInform (uint32, uint32) override
 
void OnPossess (bool)
 
bool IsInRoom (const Position *pos, Axis axis, bool above)
 
void Reset () override
 
void JustEngagedWith (Unit *) override
 Called for reaction when initially engaged - this happens after JustEnteredCombat.
 
void AttackStart (Unit *) override
 
void DoStartMovement (Unit *target, float distance=0.0f, float angle=0.0f)
 
void DoStartNoMovement (Unit *target)
 
void DoStopAttack ()
 
void DoRewardPlayersInArea ()
 
void DoCastSpell (Unit *target, SpellInfo const *spellInfo, bool triggered=false)
 
void DoPlaySoundToSet (WorldObject *source, uint32 soundId)
 
void DoPlayMusic (uint32 soundId, bool zone)
 
void DoAddThreat (Unit *unit, float amount)
 
void DoModifyThreatByPercent (Unit *unit, int32 pct)
 
void DoResetThreat (Unit *unit)
 
void DoResetThreatList ()
 
float DoGetThreat (Unit *unit)
 
void DoTeleportPlayer (Unit *unit, float x, float y, float z, float o)
 
void DoTeleportPlayer (Unit *unit, Position pos)
 
void DoTeleportAll (float x, float y, float z, float o)
 
UnitDoSelectLowestHpFriendly (float range, uint32 minHPDiff=1)
 
std::list< Creature * > DoFindFriendlyCC (float range)
 
std::list< Creature * > DoFindFriendlyMissingBuff (float range, uint32 spellId)
 
PlayerGetPlayerAtMinimumRange (float minRange)
 
CreatureDoSpawnCreature (uint32 entry, float offsetX, float offsetY, float offsetZ, float angle, uint32 type, uint32 despawntime)
 
bool IsUniqueTimedEventDone (uint32 id) const
 
void SetUniqueTimedEventDone (uint32 id)
 
void ResetUniqueTimedEvent (uint32 id)
 
void ClearUniqueTimedEventsDone ()
 
void ScheduleTimedEvent (Milliseconds timerMin, Milliseconds timerMax, std::function< void()> exec, Milliseconds repeatMin, Milliseconds repeatMax=0ms, uint32 uniqueId=0)
 
void ScheduleTimedEvent (Milliseconds timerMax, std::function< void()> exec, Milliseconds repeatMin, Milliseconds repeatMax=0ms, uint32 uniqueId=0)
 
void ScheduleUniqueTimedEvent (Milliseconds timer, std::function< void()> exec, uint32 uniqueId)
 
bool HealthBelowPct (uint32 pct) const
 
bool HealthAbovePct (uint32 pct) const
 
SpellInfo const * SelectSpell (Unit *target, uint32 school, uint32 mechanic, SelectTargetType targets, uint32 powerCostMin, uint32 powerCostMax, float rangeMin, float rangeMax, SelectEffect effect)
 
void SetEquipmentSlots (bool loadDefault, int32 mainHand=EQUIP_NO_CHANGE, int32 offHand=EQUIP_NO_CHANGE, int32 ranged=EQUIP_NO_CHANGE)
 
virtual bool CheckEvadeIfOutOfCombatArea () const
 
bool IsHeroic () const
 
Difficulty GetDifficulty () const
 
bool Is25ManRaid () const
 
template<class T >
const T & DUNGEON_MODE (const T &normal5, const T &heroic10) const
 
template<class T >
const T & RAID_MODE (const T &normal10, const T &normal25) const
 
template<class T >
const T & RAID_MODE (const T &normal10, const T &normal25, const T &heroic10, const T &heroic25) const
 
PlayerSelectTargetFromPlayerList (float maxdist, uint32 excludeAura=0, bool mustBeInLOS=false) const
 
void SetInvincibility (bool apply)
 
bool IsInvincible () const
 
void SetAutoAttackAllowed (bool allow)
 
bool IsAutoAttackAllowed () const
 
- Public Member Functions inherited from CreatureAI
void Talk (uint8 id, WorldObject const *whisperTarget=nullptr, Milliseconds delay=0ms)
 Causes the creature to talk/say the text assigned to their entry in the creature_text database table.
 
void Talk (uint8 id, Milliseconds delay)
 
WorldObjectGetSummoner () const
 Returns the summoner creature/object, if the creature is a temporary summon.
 
 CreatureAI (Creature *creature)
 
 ~CreatureAI () override
 
bool IsEngaged () const
 Check if creature is currently engaged in combat.
 
void MoveCircleChecks ()
 
void MoveBackwardsChecks ()
 
void MoveInLineOfSight_Safe (Unit *who)
 == Reactions At =================================
 
void TriggerAlert (Unit const *who) const
 
void JustEnteredCombat (Unit *who) override
 Called when the unit enters combat.
 
virtual void JustStartedThreateningMe (Unit *who)
 
void EngagementStart (Unit *who)
 
void EngagementOver ()
 
void JustExitedCombat () override
 Called when the unit leaves combat.
 
virtual void IsSummonedBy (WorldObject *)
 
virtual void SummonedCreatureDies (Creature *, Unit *)
 
virtual void SummonedCreatureEvade (Creature *)
 
virtual void OnSpellStart (SpellInfo const *)
 
virtual void AttackedBy (Unit *)
 
virtual bool IsEscorted ()
 
virtual void JustRespawned ()
 
virtual void PathEndReached (uint32)
 
virtual void WaypointPathStarted (uint32)
 == Waypoints system =============================
 
virtual void WaypointStarted (uint32, uint32)
 
virtual void WaypointReached (uint32, uint32)
 
virtual void WaypointPathEnded (uint32, uint32)
 
void OnCharmed (bool apply) override
 Called when unit is charmed.
 
void DoZoneInCombat (Creature *creature=nullptr, float maxRangeToNearestTarget=250.0f)
 
virtual void ReceiveEmote (Player *, uint32)
 
virtual void OwnerAttackedBy (Unit *attacker)
 
virtual void OwnerAttacked (Unit *target)
 
void OnOwnerCombatInteraction (Unit *target)
 
virtual void CorpseRemoved (uint32 &)
 == Triggered Actions Requested ==================
 
virtual void PassengerBoarded (Unit *, int8, bool)
 == Fields =======================================
 
virtual bool BeforeSpellClick (Unit *)
 
virtual void OnSpellClick (Unit *, bool &)
 
virtual bool CanSeeAlways (WorldObject const *)
 
virtual bool CanBeSeen (Player const *)
 
virtual bool CanAlwaysBeDetectable (WorldObject const *)
 
virtual void PetStopAttack ()
 
int32 VisualizeBoundary (uint32 duration, Unit *owner=nullptr, bool fill=false, bool checkZ=false) const
 
virtual bool CheckInRoom ()
 
CreatureBoundary const * GetBoundary () const
 
void SetBoundary (CreatureBoundary const *boundary, bool negativeBoundaries=false)
 
bool IsInBoundary (Position const *who=nullptr) const
 
virtual void CalculateThreat (Unit *, float &, SpellInfo const *)
 
virtual bool OnTeleportUnreacheablePlayer (Player *)
 
virtual void OnAuraRemove (AuraApplication *, AuraRemoveMode)
 
virtual void DistancingStarted ()
 
virtual void DistancingEnded ()
 
- Public Member Functions inherited from UnitAI
 UnitAI (Unit *unit)
 
virtual ~UnitAI ()
 
virtual bool CanAIAttack (Unit const *) const
 
virtual void InitializeAI ()
 
virtual void DoAction (int32)
 
virtual void SetGUID (ObjectGuid const &, int32=0)
 
virtual ObjectGuid GetGUID (int32=0) const
 
UnitSelectTarget (SelectTargetMethod targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
 
template<class PREDICATE >
UnitSelectTarget (SelectTargetMethod targetType, uint32 position, PREDICATE const &predicate)
 
void SelectTargetList (std::list< Unit * > &targetList, uint32 num, SelectTargetMethod targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
 Select the best (up to) <num> targets (in <targetType> order) from the threat list that fulfill the following:
 
template<class PREDICATE >
void SelectTargetList (std::list< Unit * > &targetList, uint32 num, SelectTargetMethod targetType, uint32 position, PREDICATE const &predicate)
 
virtual void EvadeTimerExpired ()
 Called when evade timer expires (target unreachable for too long)
 
virtual void DamageDealt (Unit *, uint32 &, DamageEffectType, SpellSchoolMask)
 Called at any Damage to any victim (before damage apply)
 
virtual void HealReceived (Unit *, uint32 &)
 Called when the creature receives heal.
 
virtual void OnPowerUpdate (Powers, int32, int32, uint32)
 Called when the creature power updates.
 
virtual void HealDone (Unit *, uint32 &)
 Called when the unit heals.
 
virtual void OnCalculateMeleeDamageReceived (uint32 &, Unit *)
 Called during damage calculations.
 
virtual void OnCalculateSpellDamageReceived (int32 &, Unit *)
 
virtual void OnCalculatePeriodicTickReceived (uint32 &, Unit *)
 Called during calculation when receiving periodic healing or damage (DoT or HoT)
 
void AttackStartCaster (Unit *victim, float dist)
 
SpellCastResult DoAddAuraToAllHostilePlayers (uint32 spellid)
 
SpellCastResult DoCast (uint32 spellId)
 
SpellCastResult DoCast (Unit *victim, uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastSelf (uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastToAllHostilePlayers (uint32 spellid, bool triggered=false)
 To specify the caster as target if the spell is self-cast.
 
SpellCastResult DoCastVictim (uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastAOE (uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastRandomTarget (uint32 spellId, uint32 threatTablePosition=0, float dist=0.0f, bool playerOnly=true, bool triggered=false, bool withTank=true)
 Cast the spell on a random unit from the threat list.
 
SpellCastResult DoCastMaxThreat (uint32 spellId, uint32 threatTablePosition=0, float dist=0.0f, bool playerOnly=true, bool triggered=false)
 Cast spell on the top threat target, which may not be the current victim.
 
float DoGetSpellMaxRange (uint32 spellId, bool positive=false)
 
void DoMeleeAttackIfReady ()
 
bool DoSpellAttackIfReady (uint32 spell)
 
void DoSpellAttackToRandomTargetIfReady (uint32 spell, uint32 threatTablePosition=0, float dist=0.f, bool playerOnly=true)
 
virtual void SummonMovementInform (Creature *, uint32, uint32)
 Called when a summon reaches a waypoint or point movement finished.
 
virtual void sGossipHello (Player *)
 
virtual void sGossipSelect (Player *, uint32, uint32)
 
virtual void sGossipSelectCode (Player *, uint32, uint32, char const *)
 
virtual void sQuestAccept (Player *, Quest const *)
 
virtual void sQuestSelect (Player *, Quest const *)
 
virtual void sQuestComplete (Player *, Quest const *)
 
virtual void sQuestReward (Player *, Quest const *, uint32)
 
virtual void sOnGameEvent (bool, uint16)
 
virtual std::string GetDebugInfo () const
 

Private Attributes

bool _isEvading
 
bool _hardmode
 
bool _berserk
 
bool _achievProximityMine
 
bool _achievBombBot
 
bool _achievRocketStrike
 
uint32 _allowedFlameSpreadTime
 
bool _changeAllowedFlameSpreadTime
 
uint8 _minutesTalkNum
 
uint32 _outOfCombatTimer
 

Additional Inherited Members

- Public Types inherited from ScriptedAI
enum class  Axis {
  AXIS_X ,
  AXIS_Y
}
 
- Public Types inherited from CreatureAI
enum  EvadeReason {
  EVADE_REASON_NO_HOSTILES ,
  EVADE_REASON_BOUNDARY ,
  EVADE_REASON_SEQUENCE_BREAK ,
  EVADE_REASON_NO_PATH ,
  EVADE_REASON_OTHER
}
 
- Static Public Member Functions inherited from CreatureAI
static bool IsInBounds (CreatureBoundary const &boundary, Position const *who)
 
- Static Public Member Functions inherited from UnitAI
static void FillAISpellInfo ()
 
- Public Attributes inherited from BossAI
float callForHelpRange
 
InstanceScript *const instance
 
- Public Attributes inherited from ScriptedAI
Creatureme
 
- Static Public Attributes inherited from UnitAI
static AISpellInfoTypeAISpellInfo
 
- Protected Member Functions inherited from BossAI
void _Reset ()
 
void _JustEngagedWith ()
 
void _JustDied ()
 
void _JustReachedHome ()
 
void _EnterEvadeMode (EvadeReason why=EVADE_REASON_OTHER)
 
void TeleportCheaters ()
 
- Protected Member Functions inherited from CreatureAI
bool UpdateVictim ()
 
bool UpdateVictimWithGaze ()
 
void SetGazeOn (Unit *target)
 
CreatureDoSummon (uint32 entry, Position const &pos, uint32 despawnTime=30000, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
 
CreatureDoSummon (uint32 entry, WorldObject *obj, float radius=5.0f, uint32 despawnTime=30000, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
 
CreatureDoSummonFlyer (uint32 entry, WorldObject *obj, float flightZ, float radius=5.0f, uint32 despawnTime=30000, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
 
bool _EnterEvadeMode (EvadeReason why=EVADE_REASON_OTHER)
 
- Protected Attributes inherited from BossAI
SummonList summons
 
- Protected Attributes inherited from CreatureAI
Creature *const me
 
EventMap events
 
TaskScheduler scheduler
 
CreatureBoundary const * _boundary
 
bool _negateBoundary
 
bool _isEngaged
 
- Protected Attributes inherited from UnitAI
Unit *const me
 

Detailed Description

Todo:
: replace with sniffed position

Constructor & Destructor Documentation

◆ boss_mimiron()

boss_mimiron::boss_mimiron ( Creature creature)
inline
267 : BossAI(creature, BOSS_MIMIRON)
268 {
269 if (!me->IsAlive())
271
272 _isEvading = false;
273 }
@ DONE
Definition InstanceScript.h:61
Definition ScriptedCreature.h:485
InstanceScript *const instance
Definition ScriptedCreature.h:492
virtual bool SetBossState(uint32 id, EncounterState state)
Definition InstanceScript.cpp:390
bool IsAlive() const
Definition Unit.h:1793
Creature * me
Definition ScriptedCreature.h:281
bool _isEvading
Definition boss_mimiron.cpp:909
@ BOSS_MIMIRON
Definition ulduar.h:40

References _isEvading, BOSS_MIMIRON, DONE, BossAI::instance, Unit::IsAlive(), ScriptedAI::me, and InstanceScript::SetBossState().

Member Function Documentation

◆ AttackStart()

void boss_mimiron::AttackStart ( Unit who)
inlineoverridevirtual

Reimplemented from UnitAI.

293 {
294 if (who)
295 me->Attack(who, true); // skip following
296 }
bool Attack(Unit *victim, bool meleeAttack)
Definition Unit.cpp:7272

References Unit::Attack(), and ScriptedAI::me.

◆ CloseDoorAndButton()

void boss_mimiron::CloseDoorAndButton ( )
inline
831 {
832 if (GameObject* button = me->FindNearestGameObject(GO_BUTTON, 200.0f))
833 if (button->GetGoState() != GO_STATE_ACTIVE)
834 {
835 button->SetLootState(GO_READY);
836 button->UseDoorOrButton(0, false);
837 }
838 }
@ GO_STATE_ACTIVE
Definition GameObjectData.h:708
@ GO_READY
Definition GameObject.h:111
@ GO_BUTTON
Definition boss_mimiron.cpp:109
Definition GameObject.h:120
GameObject * FindNearestGameObject(uint32 entry, float range, bool onlySpawned=false) const
Definition Object.cpp:2508

References WorldObject::FindNearestGameObject(), GO_BUTTON, GO_READY, GO_STATE_ACTIVE, and ScriptedAI::me.

Referenced by JustEngagedWith().

◆ EnterEvadeMode()

void boss_mimiron::EnterEvadeMode ( EvadeReason  why)
inlineoverridevirtual

Reimplemented from CreatureAI.

782 {
783 if (_isEvading)
784 return;
785 _isEvading = true;
786
787 if (Creature* c = GetLMK2())
788 c->AI()->EnterEvadeMode(why);
789 if (Creature* c = GetVX001())
790 {
791 c->AI()->EnterEvadeMode(why);
792 c->DespawnOrUnsummon();
793 }
794 if (Creature* c = GetACU())
795 {
796 c->AI()->EnterEvadeMode(why);
797 c->DespawnOrUnsummon();
798 }
799
800 summons.DoAction(1337); // despawn summons of summons
801
803 me->ExitVehicle();
805
806 _isEvading = false;
807 }
#define GetACU()
Definition boss_mimiron.cpp:261
#define GetVX001()
Definition boss_mimiron.cpp:260
#define GetLMK2()
Definition boss_mimiron.cpp:259
SummonList summons
Definition ScriptedCreature.h:539
void EnterEvadeMode(EvadeReason why=EVADE_REASON_OTHER) override
Definition ScriptedCreature.h:526
Definition Creature.h:47
void DoAction(int32 info, uint16 max=0)
Definition ScriptedCreature.h:102
void RemoveAllAuras()
Definition Unit.cpp:5580
void ExitVehicle(Position const *exitPosition=nullptr)
Definition Unit.cpp:15674

References _isEvading, SummonList::DoAction(), BossAI::EnterEvadeMode(), Unit::ExitVehicle(), GetACU, GetLMK2, GetVX001, ScriptedAI::me, Unit::RemoveAllAuras(), and BossAI::summons.

Referenced by JustEngagedWith(), SetData(), and UpdateAI().

◆ GetData()

uint32 boss_mimiron::GetData ( uint32  id) const
inlineoverridevirtual

Reimplemented from UnitAI.

889 {
890 switch (id)
891 {
892 case 1:
893 return (_hardmode ? 1 : 0);
894 case 2:
895 return (_berserk ? 1 : 0);
896 case 10:
898 case 11:
899 return (_achievProximityMine ? 1 : 0);
900 case 12:
901 return (_achievBombBot ? 1 : 0);
902 case 13:
903 return (_achievRocketStrike ? 1 : 0);
904 }
905 return 0;
906 }
bool _achievProximityMine
Definition boss_mimiron.cpp:912
uint32 _allowedFlameSpreadTime
Definition boss_mimiron.cpp:915
bool _achievRocketStrike
Definition boss_mimiron.cpp:914
bool _achievBombBot
Definition boss_mimiron.cpp:913
bool _hardmode
Definition boss_mimiron.cpp:910
bool _berserk
Definition boss_mimiron.cpp:911

References _achievBombBot, _achievProximityMine, _achievRocketStrike, _allowedFlameSpreadTime, _berserk, and _hardmode.

◆ JustEngagedWith()

void boss_mimiron::JustEngagedWith ( Unit )
inlineoverridevirtual

Called for reaction when initially engaged - this happens after JustEnteredCombat.

Reimplemented from CreatureAI.

305 {
306 me->setActive(true);
310 events.Reset();
311
312 if (Creature* c = GetLMK2())
313 {
314 if (c->IsInEvadeMode())
315 {
317 return;
318 }
319 if (!c->IsAlive())
320 c->Respawn();
321
322 me->EnterVehicle(c, 1);
323 }
324 else
325 {
327 return;
328 }
330
331 if (!_hardmode)
332 {
334 events.ScheduleEvent(EVENT_SIT_LMK2, 6s);
335 events.ScheduleEvent(EVENT_BERSERK, 15min);
336 }
337 else
338 {
339 events.ScheduleEvent(EVENT_MIMIRON_SAY_HARDMODE, 7s);
340 events.ScheduleEvent(EVENT_BERSERK, Is25ManRaid() ? 10min : 8min);
341
342 if (Creature* computer = me->SummonCreature(NPC_COMPUTER, 2746.7f, 2569.44f, 410.39f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 1000))
343 computer->AI()->Talk(TALK_COMPUTER_INITIATED);
344
345 events.ScheduleEvent(EVENT_COMPUTER_SAY_MINUTES, 3s);
347 for (uint32 i = 0; i < uint32(TALK_COMPUTER_ZERO - _minutesTalkNum - 1); ++i)
348 events.ScheduleEvent(EVENT_COMPUTER_SAY_MINUTES, Milliseconds((i + 1) * 60000));
350 }
351
352 // ensure LMK2 is at proper position
353 if (Creature* LMK2 = GetLMK2())
354 {
355 LMK2->UpdatePosition(LMK2->GetHomePosition(), true);
356 LMK2->StopMovingOnCurrentPos();
357 }
358
361 }
std::uint32_t uint32
Definition Define.h:107
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
Definition Duration.h:27
@ IN_PROGRESS
Definition InstanceScript.h:59
@ TEMPSUMMON_TIMED_DESPAWN
Definition Object.h:51
@ UNIT_FLAG_NOT_SELECTABLE
Definition UnitDefines.h:282
@ EVENT_SIT_LMK2
Definition boss_mimiron.cpp:147
@ EVENT_MIMIRON_SAY_HARDMODE
Definition boss_mimiron.cpp:203
@ EVENT_BERSERK
Definition boss_mimiron.cpp:174
@ EVENT_COMPUTER_SAY_MINUTES
Definition boss_mimiron.cpp:202
@ NPC_COMPUTER
Definition boss_mimiron.cpp:95
@ TALK_COMPUTER_ZERO
Definition boss_mimiron.cpp:255
@ TALK_COMPUTER_EIGHT
Definition boss_mimiron.cpp:247
@ TALK_COMPUTER_TEN
Definition boss_mimiron.cpp:245
@ TALK_COMPUTER_INITIATED
Definition boss_mimiron.cpp:243
@ SAY_MKII_ACTIVATE
Definition boss_mimiron.cpp:225
events
Definition boss_sartura.cpp:43
@ EVADE_REASON_OTHER
Definition CreatureAI.h:92
void DoZoneInCombat(Creature *creature=nullptr, float maxRangeToNearestTarget=250.0f)
Definition CreatureAI.cpp:117
bool IsBossDone(uint32 bossId) const
Definition InstanceScript.h:295
void EnterVehicle(Unit *base, int8 seatId=-1)
Definition Unit.cpp:15578
void SetUnitFlag(UnitFlags flags)
UnitFlags available in UnitDefines.h.
Definition Unit.h:748
TempSummon * SummonCreature(uint32 id, const Position &pos, TempSummonType spwtype=TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime=0, uint32 vehId=0, SummonPropertiesEntry const *properties=nullptr, bool visibleBySummonerOnly=false) const
Definition Object.cpp:2394
void setActive(bool isActiveObject)
Definition Object.cpp:1082
Talk
Definition hyjal.cpp:82
bool Is25ManRaid() const
Definition ScriptedCreature.h:389
uint8 _minutesTalkNum
Definition boss_mimiron.cpp:917
void EnterEvadeMode(EvadeReason why) override
Definition boss_mimiron.cpp:781
void CloseDoorAndButton()
Definition boss_mimiron.cpp:830

References _hardmode, _minutesTalkNum, BOSS_MIMIRON, CloseDoorAndButton(), CreatureAI::DoZoneInCombat(), EnterEvadeMode(), Unit::EnterVehicle(), CreatureAI::EVADE_REASON_OTHER, EVENT_BERSERK, EVENT_COMPUTER_SAY_MINUTES, EVENT_MIMIRON_SAY_HARDMODE, EVENT_SIT_LMK2, GetLMK2, IN_PROGRESS, BossAI::instance, ScriptedAI::Is25ManRaid(), InstanceScript::IsBossDone(), ScriptedAI::me, NPC_COMPUTER, Unit::RemoveAllAuras(), SAY_MKII_ACTIVATE, WorldObject::setActive(), InstanceScript::SetBossState(), Unit::SetUnitFlag(), WorldObject::SummonCreature(), TALK_COMPUTER_EIGHT, TALK_COMPUTER_INITIATED, TALK_COMPUTER_TEN, TALK_COMPUTER_ZERO, TEMPSUMMON_TIMED_DESPAWN, and UNIT_FLAG_NOT_SELECTABLE.

◆ JustReachedHome()

void boss_mimiron::JustReachedHome ( )
inlineoverridevirtual

Reimplemented from CreatureAI.

299 {
301 me->setActive(false);
302 }
void _JustReachedHome()
Definition ScriptedCreature.h:534

References BossAI::_JustReachedHome(), ScriptedAI::me, and WorldObject::setActive().

◆ MoveInLineOfSight()

void boss_mimiron::MoveInLineOfSight ( Unit )
inlineoverridevirtual

Reimplemented from CreatureAI.

779{}

◆ Reset()

void boss_mimiron::Reset ( )
inlineoverridevirtual

Reimplemented from UnitAI.

276 {
277 _hardmode = false;
278 _berserk = false;
279 _achievProximityMine = false;
280 _achievBombBot = false;
281 _achievRocketStrike = false;
287
289 _Reset();
290 }
void _Reset()
Definition ScriptedCreature.cpp:644
void RemoveUnitFlag(UnitFlags flags)
UnitFlags available in UnitDefines.h.
Definition Unit.h:749
uint32 _outOfCombatTimer
Definition boss_mimiron.cpp:918
bool _changeAllowedFlameSpreadTime
Definition boss_mimiron.cpp:916
void ResetGameObjects()
Definition boss_mimiron.cpp:809

References _achievBombBot, _achievProximityMine, _achievRocketStrike, _allowedFlameSpreadTime, _berserk, _changeAllowedFlameSpreadTime, _hardmode, _outOfCombatTimer, BossAI::_Reset(), BOSS_MIMIRON, BossAI::instance, InstanceScript::IsBossDone(), ScriptedAI::me, Unit::RemoveUnitFlag(), ResetGameObjects(), and UNIT_FLAG_NOT_SELECTABLE.

◆ ResetGameObjects()

void boss_mimiron::ResetGameObjects ( )
inline
810 {
811 if (GameObject* elevator = me->FindNearestGameObject(GO_MIMIRON_ELEVATOR, 200.0f))
812 {
813 if (elevator->GetGoState() != GO_STATE_ACTIVE )
814 {
815 elevator->SetLootState(GO_READY);
816 elevator->SetByteValue(GAMEOBJECT_BYTES_1, 0, GO_STATE_ACTIVE);
817 }
818 elevator->EnableCollision(false);
819 }
820
821 if (GameObject* button = me->FindNearestGameObject(GO_BUTTON, 200.0f))
822 if (button->GetGoState() != GO_STATE_READY )
823 {
824 button->SetLootState(GO_READY);
825 button->UseDoorOrButton(0, false);
826 button->RemoveGameObjectFlag(GO_FLAG_IN_USE);
827 }
828 }
@ GO_STATE_READY
Definition GameObjectData.h:709
@ GO_FLAG_IN_USE
Definition SharedDefines.h:1609
@ GAMEOBJECT_BYTES_1
Definition UpdateFields.h:404
@ GO_MIMIRON_ELEVATOR
Definition ulduar.h:274

References WorldObject::FindNearestGameObject(), GAMEOBJECT_BYTES_1, GO_BUTTON, GO_FLAG_IN_USE, GO_MIMIRON_ELEVATOR, GO_READY, GO_STATE_ACTIVE, GO_STATE_READY, and ScriptedAI::me.

Referenced by Reset().

◆ SetData()

void boss_mimiron::SetData ( uint32  ,
uint32  value 
)
inlineoverridevirtual

Reimplemented from UnitAI.

841 {
842 switch (value) // end of phase 1-3, 4-6 for voltron
843 {
844 case 1:
845 events.ScheduleEvent(EVENT_LMK2_RETREAT_INTERVAL, 5s);
846 break;
847 case 2:
848 events.ScheduleEvent(EVENT_VX001_EMOTESTATE_DEATH, 2500ms);
849 break;
850 case 3:
851 events.ScheduleEvent(EVENT_SAY_ACU_DEAD, 5s);
852 break;
853 case 4:
854 case 5:
855 case 6:
856 {
857 Creature* LMK2 = GetLMK2();
858 Creature* VX001 = GetVX001();
859 Creature* ACU = GetACU();
860 if (!LMK2 || !VX001 || !ACU)
861 {
863 return;
864 }
865
869 if (s1 && s2 && s3 && s1->GetSpellInfo()->Id == SPELL_SELF_REPAIR && s2->GetSpellInfo()->Id == SPELL_SELF_REPAIR && s3->GetSpellInfo()->Id == SPELL_SELF_REPAIR)
870 events.ScheduleEvent(EVENT_FINISH, 0ms);
871 }
872 break;
873 case 7:
874 _hardmode = true;
875 break;
876 case 11:
878 break;
879 case 12:
880 _achievBombBot = true;
881 break;
882 case 13:
883 _achievRocketStrike = true;
884 break;
885 }
886 }
@ CURRENT_GENERIC_SPELL
Definition Unit.h:556
@ EVENT_FINISH
Definition boss_mimiron.cpp:170
@ EVENT_SAY_ACU_DEAD
Definition boss_mimiron.cpp:163
@ EVENT_LMK2_RETREAT_INTERVAL
Definition boss_mimiron.cpp:149
@ EVENT_VX001_EMOTESTATE_DEATH
Definition boss_mimiron.cpp:162
@ SPELL_SELF_REPAIR
Definition boss_mimiron.cpp:83
uint32 Id
Definition SpellInfo.h:344
Definition Spell.h:298
SpellInfo const * GetSpellInfo() const
Definition Spell.h:593
Spell * GetCurrentSpell(CurrentSpellTypes spellType) const
Definition Unit.h:1576

References _achievBombBot, _achievProximityMine, _achievRocketStrike, _hardmode, CURRENT_GENERIC_SPELL, EnterEvadeMode(), CreatureAI::EVADE_REASON_OTHER, EVENT_FINISH, EVENT_LMK2_RETREAT_INTERVAL, EVENT_SAY_ACU_DEAD, EVENT_VX001_EMOTESTATE_DEATH, GetACU, Unit::GetCurrentSpell(), GetLMK2, Spell::GetSpellInfo(), GetVX001, SpellInfo::Id, and SPELL_SELF_REPAIR.

◆ SpellHit()

void boss_mimiron::SpellHit ( Unit ,
SpellInfo const *  spellInfo 
)
inlineoverridevirtual

Reimplemented from CreatureAI.

771 {
772 if (spellInfo->Id == SPELL_TELEPORT)
773 {
776 }
777 }
void DespawnOrUnsummon(Milliseconds msTimeToDespawn=0ms, Seconds forcedRespawnTimer=0s)
Definition Creature.cpp:2126
virtual void SetData(uint32, uint32)
Definition ZoneScript.h:52
@ SPELL_TELEPORT
Definition karazhan.cpp:36
@ EVENT_KEEPER_TELEPORTED
Definition ulduar.h:351

References Creature::DespawnOrUnsummon(), DONE, EVENT_KEEPER_TELEPORTED, SpellInfo::Id, BossAI::instance, ScriptedAI::me, ZoneScript::SetData(), and SPELL_TELEPORT.

◆ UpdateAI()

void boss_mimiron::UpdateAI ( uint32  )
inlineoverridevirtual

Use to start attacking a target. Called just before JustEngagedWith()

Implements UnitAI.

364 {
365 if (!me->IsInCombat())
366 {
367 _outOfCombatTimer += diff;
368 if (_outOfCombatTimer >= 10000)
369 {
371 if (Creature* c = GetLMK2())
373 }
374 return;
375 }
376
378 if (me->GetExactDist(&p) > 80.0f || !SelectTargetFromPlayerList(150.0f))
379 {
381 return;
382 }
383
384 events.Update(diff);
385
386 switch (events.ExecuteEvent())
387 {
388 case 0:
389 break;
391 if (Creature* computer = me->SummonCreature(NPC_COMPUTER, 2746.7f, 2569.44f, 410.39f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 1000))
392 computer->AI()->Talk(_minutesTalkNum++);
393 break;
396 events.ScheduleEvent(EVENT_SPAWN_FLAMES_INITIAL, 0ms);
397 events.ScheduleEvent(EVENT_SIT_LMK2, 4s);
398 break;
400 {
403
404 std::vector<Player*> pg;
405 Map::PlayerList const& pl = me->GetMap()->GetPlayers();
406 for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
407 if (Player* plr = itr->GetSource())
408 if (plr->IsAlive() && plr->GetExactDist2d(me) < 150.0f && !plr->IsGameMaster())
409 pg.push_back(plr);
410
411 for( uint8 i = 0; i < 3; ++i )
412 if (!pg.empty())
413 {
414 uint8 index = urand(0, pg.size() - 1);
415 Player* player = pg[index];
416 float angle = rand_norm() * 2 * M_PI;
417 float z = 364.35f;
418 if (!player->IsWithinLOS(player->GetPositionX() + cos(angle) * 5.0f, player->GetPositionY() + std::sin(angle) * 5.0f, z))
419 {
420 angle = player->GetAngle(2744.65f, 2569.46f);
421 }
422 me->CastSpell(player->GetPositionX() + cos(angle) * 5.0f, player->GetPositionY() + std::sin(angle) * 5.0f, z, SPELL_SUMMON_FLAMES_INITIAL, true);
423 pg.erase(pg.begin() + index);
424 }
425
426 events.Repeat(30s);
427 }
428 break;
429 case EVENT_BERSERK:
430 _berserk = true;
432 if (_hardmode)
433 me->SummonCreature(33576, 2744.78f, 2569.47f, 364.32f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 120000);
434 events.ScheduleEvent(EVENT_BERSERK_2, 0ms);
435 break;
436 case EVENT_BERSERK_2:
437 {
438 Creature* VX001 = nullptr;
439 Creature* LMK2 = nullptr;
440 Creature* ACU = nullptr;
441 if ((VX001 = GetVX001()))
442 VX001->CastSpell(VX001, SPELL_BERSERK, true);
443 if ((LMK2 = GetLMK2()))
444 LMK2->CastSpell(LMK2, SPELL_BERSERK, true);
445 if ((ACU = GetACU()))
446 ACU->CastSpell(ACU, SPELL_BERSERK, true);
447 events.Repeat(30s);
448 }
449 break;
450 case EVENT_SIT_LMK2:
451 if (Creature* LMK2 = GetLMK2())
452 {
453 me->EnterVehicle(LMK2, 6);
454 events.ScheduleEvent(EVENT_SIT_LMK2_INTERVAL, 2s);
455 break;
456 }
458 break;
460 if (Creature* LMK2 = GetLMK2())
461 {
462 if (_hardmode)
463 {
464 LMK2->CastSpell(LMK2, SPELL_EMERGENCY_MODE, true);
465 if (Vehicle* veh = LMK2->GetVehicleKit())
466 if (Unit* cannon = veh->GetPassenger(3))
467 cannon->CastSpell(cannon, SPELL_EMERGENCY_MODE, true);
468 }
469 LMK2->AI()->SetData(1, 1);
470 break;
471 }
473 break;
475 if (Creature* LMK2 = GetLMK2())
476 {
477 me->EnterVehicle(LMK2, 1);
479 LMK2->SetFacingTo(3.58f);
480 events.ScheduleEvent(EVENT_ELEVATOR_INTERVAL_0, 6s);
481 break;
482 }
484 break;
486 if (GameObject* elevator = me->FindNearestGameObject(GO_MIMIRON_ELEVATOR, 100.0f))
487 {
488 elevator->SetLootState(GO_READY);
489 elevator->UseDoorOrButton(0, false);
490 elevator->EnableCollision(false);
491 }
492 events.ScheduleEvent(EVENT_ELEVATOR_INTERVAL_1, 6s);
493 break;
495 if (me->SummonCreature(NPC_VX001, 2744.65f, 2569.46f, 364.40f, 3.14f, TEMPSUMMON_MANUAL_DESPAWN))
496 {
497 if (GameObject* elevator = me->FindNearestGameObject(GO_MIMIRON_ELEVATOR, 100.0f))
498 {
499 elevator->SetLootState(GO_READY);
500 elevator->UseDoorOrButton(0, true);
501 elevator->EnableCollision(false);
502 }
503 events.ScheduleEvent(EVENT_ELEVATOR_INTERVAL_2, 18s);
504 break;
505 }
507 break;
509 if (Creature* VX001 = GetVX001())
510 {
511 me->EnterVehicle(VX001, 0);
512 events.ScheduleEvent(EVENT_SITTING_ON_VX001, 4s);
513 break;
514 }
516 break;
519 events.ScheduleEvent(EVENT_ENTER_VX001, 5s);
520 break;
522 if (Creature* VX001 = GetVX001())
523 {
524 me->EnterVehicle(VX001, 1);
525 events.ScheduleEvent(EVENT_EMOTE_VX001, 2s);
526 break;
527 }
529 break;
531 if (Creature* VX001 = GetVX001())
532 {
534 events.ScheduleEvent(EVENT_VX001_START_FIGHT, 1750ms);
535 break;
536 }
538 break;
540 if (Creature* VX001 = GetVX001())
541 {
542 if (_hardmode)
543 VX001->CastSpell(VX001, SPELL_EMERGENCY_MODE, true);
544 VX001->AI()->SetData(1, 2);
546 break;
547 }
549 break;
551 if (Creature* VX001 = GetVX001())
552 {
555 events.ScheduleEvent(EVENT_GET_OUT_VX001, 2500ms);
556 break;
557 }
559 break;
561 if (Creature* VX001 = GetVX001())
563 {
564 me->EnterVehicle(VX001, 4);
565 events.ScheduleEvent(EVENT_SAY_VX001_DEAD, 2s);
566 break;
567 }
569 break;
573 events.ScheduleEvent(EVENT_ENTER_ACU, 7s);
574 break;
575 case EVENT_ENTER_ACU:
576 if (Creature* ACU = GetACU())
577 {
578 me->EnterVehicle(ACU, 0);
579 events.ScheduleEvent(EVENT_SAY_ACU_ACTIVATE, 6s);
580 break;
581 }
583 break;
586 events.ScheduleEvent(EVENT_ACU_START_ATTACK, 4s);
587 break;
589 if (Creature* ACU = GetACU())
590 {
591 if (_hardmode)
592 ACU->CastSpell(ACU, SPELL_EMERGENCY_MODE, true);
593 ACU->AI()->SetData(1, 3);
595 break;
596 }
598 break;
601 events.ScheduleEvent(EVENT_LEVIATHAN_COME_CLOSER, 5s);
602 break;
604 if (Creature* LMK2 = GetLMK2())
605 {
606 LMK2->GetMotionMaster()->MoveCharge(2755.77f, 2574.95f, 364.31f, 21.0f);
607 events.ScheduleEvent(EVENT_VX001_EMOTE_JUMP, 4s);
608 break;
609 }
611 break;
613 {
614 Creature* LMK2 = GetLMK2();
615 Creature* VX001 = GetVX001();
616 if (!VX001 || !LMK2)
617 {
619 return;
620 }
621
622 VX001->SendMeleeAttackStop();
625 events.ScheduleEvent(EVENT_LEVIATHAN_RIDE_MIDDLE, 4800ms);
626 }
627 break;
629 {
630 Creature* VX001 = GetVX001();
631 Creature* LMK2 = GetLMK2();
632 if (!VX001 || !LMK2)
633 {
635 return;
636 }
637
638 LMK2->GetMotionMaster()->MoveCharge(2744.65f, 2569.46f, 364.31f, 21.0f);
641 VX001->EnterVehicle(LMK2, 3);
642 events.ScheduleEvent(EVENT_JOIN_TOGETHER, 3s);
643 }
644 break;
646 {
647 Creature* ACU = GetACU();
648 Creature* VX001 = GetVX001();
649 if (!VX001 || !ACU)
650 {
652 return;
653 }
654
655 ACU->SetDisableGravity(false);
656 ACU->EnterVehicle(VX001, 3);
657 me->EnterVehicle(VX001, 1);
659 events.ScheduleEvent(EVENT_START_PHASE4, 10s);
660 }
661 break;
663 {
664 Creature* VX001 = GetVX001();
665 Creature* LMK2 = GetLMK2();
666 Creature* ACU = GetACU();
667 if (!VX001 || !LMK2 || !ACU)
668 {
670 return;
671 }
672
673 LMK2->AI()->SetData(1, 4);
674 VX001->AI()->SetData(1, 4);
675 ACU->AI()->SetData(1, 4);
676 LMK2->CastSpell(LMK2, SPELL_SELF_REPAIR, true); //LMK2->SetHealth( LMK2->GetMaxHealth()/2 );
677 VX001->CastSpell(VX001, SPELL_SELF_REPAIR, true); //VX001->SetHealth( VX001->GetMaxHealth()/2 );
678 ACU->CastSpell(ACU, SPELL_SELF_REPAIR, true); //ACU->SetHealth( ACU->GetMaxHealth()/2 );
679 if (_hardmode)
680 {
681 LMK2->CastSpell(LMK2, SPELL_EMERGENCY_MODE, true);
682 VX001->CastSpell(VX001, SPELL_EMERGENCY_MODE, true);
683 ACU->CastSpell(ACU, SPELL_EMERGENCY_MODE, true);
684 }
686 }
687 break;
688 case EVENT_FINISH:
689 {
690 Creature* LMK2 = GetLMK2();
691 Creature* VX001 = GetVX001();
692 Creature* ACU = GetACU();
693
694 if (!VX001 || !LMK2 || !ACU)
695 return;
696
697 LMK2->GetMotionMaster()->Clear();
698 LMK2->StopMoving();
699 LMK2->InterruptNonMeleeSpells(false);
700 LMK2->AttackStop();
701 LMK2->AI()->SetData(1, 0);
702 LMK2->DespawnOrUnsummon(7s);
704 VX001->InterruptNonMeleeSpells(false);
705 VX001->AttackStop();
706 VX001->AI()->SetData(1, 0);
707 VX001->DespawnOrUnsummon(7s);
709 ACU->InterruptNonMeleeSpells(false);
710 ACU->AttackStop();
711 ACU->AI()->SetData(1, 0);
712 ACU->DespawnOrUnsummon(7s);
714
715 Position exitPos = me->GetPosition();
716 me->_ExitVehicle(&exitPos);
717 me->AttackStop();
719 summons.DoAction(1337); // despawn summons of summons
721 summons.DespawnEntry(33576);
722
724
725 float angle = VX001->GetOrientation();
726 float v_x = me->GetPositionX() + cos(angle) * 10.0f;
727 float v_y = me->GetPositionY() + std::sin(angle) * 10.0f;
728 me->GetMotionMaster()->MoveJump(v_x, v_y, 364.32f, 7.0f, 7.0f);
729
731
733
734 if (_hardmode)
735 if (Creature* computer = me->SummonCreature(NPC_COMPUTER, 2746.7f, 2569.44f, 410.39f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 1000))
736 computer->AI()->Talk(TALK_COMPUTER_TERMINATED);
737
738 events.Reset();
739 events.ScheduleEvent(EVENT_STAND_UP_FRIENDLY, 6s);
740 }
741 break;
746 events.ScheduleEvent(EVENT_SAY_VOLTRON_DEAD, 4s);
747 break;
752 // spawn chest
754 {
755 if (GameObject* go = me->SummonGameObject(chestId, 2744.65f, 2569.46f, 364.397f, 0, 0, 0, 0, 0, 0))
756 {
757 go->ReplaceAllGameObjectFlags((GameObjectFlags)0);
758 go->SetLootRecipient(me->GetMap());
759 }
760 }
761 events.ScheduleEvent(EVENT_DISAPPEAR, 9s);
762 break;
763 case EVENT_DISAPPEAR:
766 break;
767 }
768 }
static First const & RAND(First const &first, Second const &second, Rest const &... rest)
Definition CreatureAIImpl.h:25
@ ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE
Definition DBCEnums.h:122
std::uint8_t uint8
Definition Define.h:109
@ TEMPSUMMON_MANUAL_DESPAWN
Definition Object.h:56
uint32 urand(uint32 min, uint32 max)
Definition Random.cpp:44
double rand_norm()
Definition Random.cpp:85
@ EMOTE_ONESHOT_CUSTOM_SPELL_02
Definition SharedDefines.h:2004
@ EMOTE_ONESHOT_EMERGE
Definition SharedDefines.h:2049
@ EMOTE_STATE_DROWNED
Definition SharedDefines.h:1984
@ EMOTE_STATE_CUSTOM_SPELL_01
Definition SharedDefines.h:2016
@ EMOTE_ONESHOT_TALK
Definition SharedDefines.h:1901
GameObjectFlags
Definition SharedDefines.h:1608
@ FACTION_FRIENDLY
Definition SharedDefines.h:189
@ REACT_PASSIVE
Definition Unit.h:566
@ UNIT_NPC_EMOTESTATE
Definition UpdateFields.h:140
@ EVENT_ELEVATOR_INTERVAL_2
Definition boss_mimiron.cpp:151
@ EVENT_ELEVATOR_INTERVAL_1
Definition boss_mimiron.cpp:150
@ EVENT_ENTER_VX001
Definition boss_mimiron.cpp:153
@ EVENT_SPAWN_FLAMES_INITIAL
Definition boss_mimiron.cpp:204
@ EVENT_VX001_EMOTE_JUMP
Definition boss_mimiron.cpp:165
@ EVENT_SIT_LMK2_INTERVAL
Definition boss_mimiron.cpp:148
@ EVENT_SAY_VX001_DEAD
Definition boss_mimiron.cpp:158
@ EVENT_SITTING_ON_VX001
Definition boss_mimiron.cpp:152
@ EVENT_SAY_ACU_ACTIVATE
Definition boss_mimiron.cpp:160
@ EVENT_SAY_VOLTRON_DEAD
Definition boss_mimiron.cpp:172
@ EVENT_EMOTE_VX001
Definition boss_mimiron.cpp:154
@ EVENT_ACU_START_ATTACK
Definition boss_mimiron.cpp:161
@ EVENT_GET_OUT_VX001
Definition boss_mimiron.cpp:157
@ EVENT_STAND_UP_FRIENDLY
Definition boss_mimiron.cpp:171
@ EVENT_VX001_START_FIGHT
Definition boss_mimiron.cpp:155
@ EVENT_LEVIATHAN_COME_CLOSER
Definition boss_mimiron.cpp:164
@ EVENT_DISAPPEAR
Definition boss_mimiron.cpp:173
@ EVENT_ELEVATOR_INTERVAL_0
Definition boss_mimiron.cpp:156
@ EVENT_ENTER_ACU
Definition boss_mimiron.cpp:159
@ EVENT_START_PHASE4
Definition boss_mimiron.cpp:169
@ EVENT_JOIN_TOGETHER
Definition boss_mimiron.cpp:167
@ EVENT_BERSERK_2
Definition boss_mimiron.cpp:175
@ EVENT_LEVIATHAN_RIDE_MIDDLE
Definition boss_mimiron.cpp:166
Position const ACUSummonPos
Definition boss_mimiron.cpp:263
@ NPC_LEVIATHAN_MKII
Definition boss_mimiron.cpp:91
@ NPC_VX001
Definition boss_mimiron.cpp:93
@ NPC_AERIAL_COMMAND_UNIT
Definition boss_mimiron.cpp:94
@ SPELL_ENTER_VEHICLE_1
Definition boss_mimiron.cpp:139
@ NPC_FLAMES_INITIAL
Definition boss_mimiron.cpp:119
@ SPELL_ENTER_VEHICLE_2
Definition boss_mimiron.cpp:140
@ SPELL_EMERGENCY_MODE
Definition boss_mimiron.cpp:115
@ SPELL_ENTER_VEHICLE_0
Definition boss_mimiron.cpp:138
@ SPELL_SUMMON_FLAMES_INITIAL
Definition boss_mimiron.cpp:118
@ SPELL_ENTER_VEHICLE_4
Definition boss_mimiron.cpp:141
@ SPELL_SLEEP_VISUAL_2
Definition boss_mimiron.cpp:85
@ SPELL_BERSERK
Definition boss_mimiron.cpp:36
@ SPELL_SLEEP_VISUAL_1
Definition boss_mimiron.cpp:84
@ SAY_AERIAL_ACTIVATE
Definition boss_mimiron.cpp:231
@ SAY_VX001_ACTIVATE
Definition boss_mimiron.cpp:228
@ SAY_V07TRON_ACTIVATE
Definition boss_mimiron.cpp:234
@ SAY_AERIAL_DEATH
Definition boss_mimiron.cpp:233
@ SAY_VX001_DEATH
Definition boss_mimiron.cpp:230
@ SAY_MKII_DEATH
Definition boss_mimiron.cpp:227
@ SAY_HARDMODE_ON
Definition boss_mimiron.cpp:224
@ SAY_V07TRON_DEATH
Definition boss_mimiron.cpp:236
@ TALK_COMPUTER_TERMINATED
Definition boss_mimiron.cpp:244
@ SAY_BERSERK
Definition boss_mimiron.cpp:237
void SetInCombatWithZone()
Set in combat all units in the dungeon/raid. Affect only units with IsAIEnabled.
Definition Creature.cpp:2789
void GetHomePosition(float &x, float &y, float &z, float &ori) const
Definition Creature.h:347
void SetReactState(ReactStates state)
A creature can have 3 ReactStates : Agressive, Passive, Neutral.
Definition Creature.h:99
CreatureAI * AI() const
Definition Creature.h:143
void DoUpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1=0, uint32 miscValue2=0, Unit *unit=nullptr)
Definition InstanceScript.cpp:661
Definition LinkedList.h:139
Definition MapRefMgr.h:26
iterator begin()
Definition MapRefMgr.h:36
iterator end()
Definition MapRefMgr.h:37
PlayerList const & GetPlayers() const
Definition Map.h:326
void MoveCharge(float x, float y, float z, float speed=SPEED_CHARGE, uint32 id=EVENT_CHARGE, const Movement::PointsArray *path=nullptr, bool generatePath=false, float orientation=0.0f, ObjectGuid targetGUID=ObjectGuid::Empty)
The unit will charge the target. Doesn't work with UNIT_FLAG_DISABLE_MOVE.
Definition MotionMaster.cpp:731
void MoveJump(Position const &pos, float speedXY, float speedZ, uint32 id=0)
Definition MotionMaster.h:256
void Clear(bool reset=true)
Definition MotionMaster.h:193
Definition Player.h:1084
void DespawnEntry(uint32 entry)
Definition ScriptedCreature.cpp:55
void DespawnAll(Milliseconds delay=0ms)
Definition ScriptedCreature.cpp:72
virtual void SetData(uint32, uint32)
Definition UnitAI.h:219
SpellCastResult DoCastSelf(uint32 spellId, bool triggered=false)
Definition UnitAI.h:394
Definition Unit.h:664
void SetFacingTo(float ori)
Definition Unit.cpp:16411
void SetFaction(uint32 faction)
Definition Unit.cpp:7056
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true, bool bySelf=false)
Definition Unit.cpp:4302
MotionMaster * GetMotionMaster()
Definition Unit.h:1758
void StopMoving()
Definition Unit.cpp:12997
void _ExitVehicle(Position const *exitPosition=nullptr)
Definition Unit.cpp:15711
SpellCastResult CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=nullptr, AuraEffect const *triggeredByAura=nullptr, ObjectGuid originalCaster=ObjectGuid::Empty)
Definition Unit.cpp:1350
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Definition Unit.cpp:5157
void SetDisableGravity(bool disable)
Definition Unit.cpp:16462
void SetUInt32Value(uint16 index, uint32 value)
Definition Unit.cpp:17323
void SendMeleeAttackStop(Unit *victim=nullptr)
Send to the client SMSG_ATTACKSTOP but doesn't clear UNIT_STATE_MELEE_ATTACKING on server side or int...
Definition Unit.cpp:3236
void HandleEmoteCommand(uint32 emoteId)
Definition Unit.cpp:2172
Vehicle * GetVehicleKit() const
Definition Unit.h:1925
bool AttackStop()
Force the unit to stop attacking. This will clear UNIT_STATE_MELEE_ATTACKING, Interrupt current spell...
Definition Unit.cpp:7436
bool IsInCombat() const
Definition Unit.h:935
Definition Vehicle.h:28
Map * GetMap() const
Definition Object.h:625
bool IsWithinLOS(float x, float y, float z, VMAP::ModelIgnoreFlags ignoreFlags=VMAP::ModelIgnoreFlags::Nothing, LineOfSightChecks checks=LINEOFSIGHT_ALL_CHECKS) const
Definition Object.cpp:1382
GameObject * SummonGameObject(uint32 entry, float x, float y, float z, float ang, float rotation0, float rotation1, float rotation2, float rotation3, uint32 respawnTime, bool checkTransport=true, GOSummonType summonType=GO_SUMMON_TIMED_OR_CORPSE_DESPAWN)
Definition Object.cpp:2408
Seconds GetGameTime()
Definition GameTime.cpp:38
Definition Position.h:27
float GetExactDist(float x, float y, float z) const
Definition Position.h:182
float GetOrientation() const
Definition Position.h:124
float GetPositionX() const
Definition Position.h:121
void GetPosition(float &x, float &y) const
Definition Position.h:126
float GetPositionY() const
Definition Position.h:122
float GetAngle(const Position *pos) const
Definition Position.cpp:85
const T & RAID_MODE(const T &normal10, const T &normal25) const
Definition ScriptedCreature.h:408
Player * SelectTargetFromPlayerList(float maxdist, uint32 excludeAura=0, bool mustBeInLOS=false) const
Definition ScriptedCreature.cpp:591
@ GO_MIMIRON_CHEST
Definition ulduar.h:234
@ GO_MIMIRON_CHEST_HARD
Definition ulduar.h:235
@ GO_MIMIRON_CHEST_HERO
Definition ulduar.h:236
@ GO_MIMIRON_CHEST_HERO_HARD
Definition ulduar.h:237

References _allowedFlameSpreadTime, _berserk, _changeAllowedFlameSpreadTime, Unit::_ExitVehicle(), _hardmode, _minutesTalkNum, _outOfCombatTimer, ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE, ACUSummonPos, Creature::AI(), Unit::AttackStop(), MapRefMgr::begin(), BOSS_MIMIRON, Unit::CastSpell(), MotionMaster::Clear(), SummonList::DespawnAll(), SummonList::DespawnEntry(), Creature::DespawnOrUnsummon(), SummonList::DoAction(), UnitAI::DoCastSelf(), DONE, InstanceScript::DoUpdateAchievementCriteria(), EMOTE_ONESHOT_CUSTOM_SPELL_02, EMOTE_ONESHOT_EMERGE, EMOTE_ONESHOT_TALK, EMOTE_STATE_CUSTOM_SPELL_01, EMOTE_STATE_DROWNED, MapRefMgr::end(), EnterEvadeMode(), Unit::EnterVehicle(), CreatureAI::EVADE_REASON_OTHER, EVENT_ACU_START_ATTACK, EVENT_BERSERK, EVENT_BERSERK_2, EVENT_COMPUTER_SAY_MINUTES, EVENT_DISAPPEAR, EVENT_ELEVATOR_INTERVAL_0, EVENT_ELEVATOR_INTERVAL_1, EVENT_ELEVATOR_INTERVAL_2, EVENT_EMOTE_VX001, EVENT_ENTER_ACU, EVENT_ENTER_VX001, EVENT_FINISH, EVENT_GET_OUT_VX001, EVENT_JOIN_TOGETHER, EVENT_LEVIATHAN_COME_CLOSER, EVENT_LEVIATHAN_RIDE_MIDDLE, EVENT_LMK2_RETREAT_INTERVAL, EVENT_MIMIRON_SAY_HARDMODE, EVENT_SAY_ACU_ACTIVATE, EVENT_SAY_ACU_DEAD, EVENT_SAY_VOLTRON_DEAD, EVENT_SAY_VX001_DEAD, EVENT_SIT_LMK2, EVENT_SIT_LMK2_INTERVAL, EVENT_SITTING_ON_VX001, EVENT_SPAWN_FLAMES_INITIAL, EVENT_STAND_UP_FRIENDLY, EVENT_START_PHASE4, EVENT_VX001_EMOTE_JUMP, EVENT_VX001_EMOTESTATE_DEATH, EVENT_VX001_START_FIGHT, FACTION_FRIENDLY, WorldObject::FindNearestGameObject(), GetACU, Position::GetAngle(), Position::GetExactDist(), GameTime::GetGameTime(), Creature::GetHomePosition(), GetLMK2, WorldObject::GetMap(), Unit::GetMotionMaster(), Position::GetOrientation(), Map::GetPlayers(), Position::GetPosition(), Position::GetPositionX(), Position::GetPositionY(), GetVX001, GO_MIMIRON_CHEST, GO_MIMIRON_CHEST_HARD, GO_MIMIRON_CHEST_HERO, GO_MIMIRON_CHEST_HERO_HARD, GO_MIMIRON_ELEVATOR, GO_READY, Unit::HandleEmoteCommand(), BossAI::instance, Unit::InterruptNonMeleeSpells(), Unit::IsInCombat(), WorldObject::IsWithinLOS(), ScriptedAI::me, MotionMaster::MoveCharge(), MotionMaster::MoveJump(), NPC_AERIAL_COMMAND_UNIT, NPC_COMPUTER, NPC_FLAMES_INITIAL, NPC_LEVIATHAN_MKII, NPC_VX001, ScriptedAI::RAID_MODE(), RAND(), rand_norm(), REACT_PASSIVE, Unit::RemoveAurasDueToSpell(), Unit::RemoveUnitFlag(), SAY_AERIAL_ACTIVATE, SAY_AERIAL_DEATH, SAY_BERSERK, SAY_HARDMODE_ON, SAY_MKII_DEATH, SAY_V07TRON_ACTIVATE, SAY_V07TRON_DEATH, SAY_VX001_ACTIVATE, SAY_VX001_DEATH, ScriptedAI::SelectTargetFromPlayerList(), Unit::SendMeleeAttackStop(), InstanceScript::SetBossState(), UnitAI::SetData(), Unit::SetDisableGravity(), Unit::SetFaction(), Creature::SetInCombatWithZone(), Creature::SetReactState(), Unit::SetUInt32Value(), SPELL_BERSERK, SPELL_EMERGENCY_MODE, SPELL_ENTER_VEHICLE_0, SPELL_ENTER_VEHICLE_1, SPELL_ENTER_VEHICLE_2, SPELL_ENTER_VEHICLE_4, SPELL_SELF_REPAIR, SPELL_SLEEP_VISUAL_1, SPELL_SLEEP_VISUAL_2, SPELL_SUMMON_FLAMES_INITIAL, SPELL_TELEPORT, Unit::StopMoving(), WorldObject::SummonCreature(), WorldObject::SummonGameObject(), BossAI::summons, TALK_COMPUTER_TERMINATED, TEMPSUMMON_MANUAL_DESPAWN, TEMPSUMMON_TIMED_DESPAWN, UNIT_FLAG_NOT_SELECTABLE, UNIT_NPC_EMOTESTATE, and urand().

Member Data Documentation

◆ _achievBombBot

bool boss_mimiron::_achievBombBot
private

Referenced by GetData(), Reset(), and SetData().

◆ _achievProximityMine

bool boss_mimiron::_achievProximityMine
private

Referenced by GetData(), Reset(), and SetData().

◆ _achievRocketStrike

bool boss_mimiron::_achievRocketStrike
private

Referenced by GetData(), Reset(), and SetData().

◆ _allowedFlameSpreadTime

uint32 boss_mimiron::_allowedFlameSpreadTime
private

Referenced by GetData(), Reset(), and UpdateAI().

◆ _berserk

bool boss_mimiron::_berserk
private

Referenced by GetData(), Reset(), and UpdateAI().

◆ _changeAllowedFlameSpreadTime

bool boss_mimiron::_changeAllowedFlameSpreadTime
private

Referenced by Reset(), and UpdateAI().

◆ _hardmode

bool boss_mimiron::_hardmode
private

◆ _isEvading

bool boss_mimiron::_isEvading
private

Referenced by boss_mimiron(), and EnterEvadeMode().

◆ _minutesTalkNum

uint8 boss_mimiron::_minutesTalkNum
private

Referenced by JustEngagedWith(), and UpdateAI().

◆ _outOfCombatTimer

uint32 boss_mimiron::_outOfCombatTimer
private

Referenced by Reset(), and UpdateAI().


The documentation for this struct was generated from the following file: