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

Public Member Functions

 npc_highlord_darion_mograine (Creature *creature)
 
void sGossipHello (Player *player) override
 
void sGossipSelect (Player *player, uint32, uint32 gossipListId) override
 
void DoAction (int32 param) override
 
uint32 GetData (uint32 type) const override
 
void SendUpdateWorldState (uint32 id, uint32 state)
 
void SendInitialWorldStates ()
 
void JustSummoned (Creature *cr) override
 
void SummonedCreatureDies (Creature *creature, Unit *) override
 
void JustDied (Unit *) override
 
void FinishFight ()
 
void JustEngagedWith (Unit *) override
 Called for reaction when initially engaged - this happens after JustEnteredCombat.
 
void EnterEvadeMode (EvadeReason why) override
 
void Reset () override
 
void JustRespawned () override
 
Creature * GetEntryFromSummons (uint32 entry)
 
Creature * SummonSingle (uint8 group)
 
void ChargeToOutroPoint (Creature *unit, LightOfDawnOutroPoints point)
 
Position GetReplacementPosition (Creature const *dead)
 
void SummonReplacement (uint32 entry, Position const &pos)
 
void MovementInform (uint32 type, uint32 point) override
 
void UpdateAI (uint32 diff) override
 Use to start attacking a target. Called just before JustEngagedWith()
 
- 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 (Position const *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)
 
Unit * DoSelectLowestHpFriendly (float range, uint32 minHPDiff=1)
 
std::list< Creature * > DoFindFriendlyCC (float range)
 
std::list< Creature * > DoFindFriendlyMissingBuff (float range, uint32 spellId)
 
Player * GetPlayerAtMinimumRange (float minRange)
 
Creature * DoSpawnCreature (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 >
T const & DUNGEON_MODE (T const &normal5, T const &heroic10) const
 
template<class T >
T const & RAID_MODE (T const &normal10, T const &normal25) const
 
template<class T >
T const & RAID_MODE (T const &normal10, T const &normal25, T const &heroic10, T const &heroic25) const
 
Player * SelectTargetFromPlayerList (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)
 
WorldObject * GetSummoner () 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
 
virtual bool CanRespawn ()
 
virtual bool IsEscortNPC (bool=true) 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 SummonedCreatureDespawnAll ()
 
virtual void SummonedCreatureEvade (Creature *)
 
virtual void OnSpellStart (SpellInfo const *)
 
virtual void OnSpellCast (SpellInfo const *)
 
virtual void OnSpellFailed (SpellInfo const *)
 
virtual void OnChannelFinished (SpellInfo const *)
 
virtual void AttackedBy (Unit *)
 
virtual bool IsEscorted ()
 
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.
 
virtual void JustReachedHome ()
 
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 SetData (uint32, uint32)
 
virtual void SetGUID (ObjectGuid const &, int32=0)
 
virtual ObjectGuid GetGUID (int32=0) const
 
Unit * SelectTarget (SelectTargetMethod targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
 
template<class PREDICATE >
Unit * SelectTarget (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 OnDespawn ()
 Called when the unit is about to be removed from the world (despawn, grid unload, corpse disappearing, player logging out etc.)
 
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, int32 aura=0)
 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 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
 

Public Attributes

EventMap events
 
SummonList summons
 
uint32 startTimeRemaining
 
uint32 defendersRemaining
 
uint32 scourgeRemaining
 
uint8 battleStarted
 
bool resetExecuted
 
bool armyReleased
 
- Public Attributes inherited from ScriptedAI
Creature * me
 

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 ()
 
- Static Public Attributes inherited from UnitAI
static AISpellInfoType * AISpellInfo
 
- Protected Member Functions inherited from CreatureAI
bool UpdateVictim ()
 
bool UpdateVictimWithGaze ()
 
void SetGazeOn (Unit *target)
 
Creature * DoSummon (uint32 entry, Position const &pos, uint32 despawnTime=30000, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
 
Creature * DoSummon (uint32 entry, WorldObject *obj, float radius=5.0f, uint32 despawnTime=30000, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
 
Creature * DoSummonFlyer (uint32 entry, WorldObject *obj, float flightZ, float radius=5.0f, uint32 despawnTime=30000, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
 
virtual void MoveInLineOfSight (Unit *)
 
bool _EnterEvadeMode (EvadeReason why=EVADE_REASON_OTHER)
 
- 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

Constructor & Destructor Documentation

◆ npc_highlord_darion_mograine()

npc_highlord_darion_mograine::npc_highlord_darion_mograine ( Creature *  creature)
inline
1721 : ScriptedAI(creature), summons(me)
1722 {
1724 me->SetCorpseDelay(3 * 60);
1725 me->SetRespawnTime(3 * 60);
1726 resetExecuted = false;
1727 armyReleased = false;
1728 }
void SetRespawnTime(uint32 respawn)
Definition Creature.cpp:3897
void SetCorpseDelay(uint32 delay)
Definition Creature.h:73
Definition ScriptedCreature.h:202
Creature * me
Definition ScriptedCreature.h:292
bool armyReleased
Definition zone_the_scarlet_enclave.cpp:1737
SummonList summons
Definition zone_the_scarlet_enclave.cpp:1731
bool resetExecuted
Definition zone_the_scarlet_enclave.cpp:1736
uint8 battleStarted
Definition zone_the_scarlet_enclave.cpp:1735
@ ENCOUNTER_STATE_NONE
Definition zone_the_scarlet_enclave.cpp:1470

References armyReleased, battleStarted, ENCOUNTER_STATE_NONE, ScriptedAI::me, resetExecuted, Creature::SetCorpseDelay(), and Creature::SetRespawnTime().

Member Function Documentation

◆ ChargeToOutroPoint()

void npc_highlord_darion_mograine::ChargeToOutroPoint ( Creature *  unit,
LightOfDawnOutroPoints  point 
)
inline
1986 {
1987 Position const& pos = LightOfDawnOutroPos[point];
1988 unit->GetMotionMaster()->MoveCharge(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), 4.0f, 2);
1989 }
void MoveCharge(float x, float y, float z, float speed=SPEED_CHARGE, uint32 id=EVENT_CHARGE, Movement::PointsArray const *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:825
MotionMaster * GetMotionMaster()
Definition Unit.h:1774
Definition Position.h:27
float GetPositionZ() const
Definition Position.h:123
float GetPositionX() const
Definition Position.h:121
float GetPositionY() const
Definition Position.h:122
const Position LightOfDawnOutroPos[]
Definition zone_the_scarlet_enclave.cpp:1611

References Unit::GetMotionMaster(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), LightOfDawnOutroPos, and MotionMaster::MoveCharge().

Referenced by UpdateAI().

◆ DoAction()

void npc_highlord_darion_mograine::DoAction ( int32  param)
inlineoverridevirtual

Reimplemented from UnitAI.

1763 {
1764 if (param == ACTION_START_EVENT && !startTimeRemaining && events.Empty())
1765 {
1767
1771
1773
1774 events.Reset();
1775 events.ScheduleEvent(EVENT_START_COUNTDOWN_1, 60s);
1776 events.ScheduleEvent(EVENT_START_COUNTDOWN_2, 120s);
1777 events.ScheduleEvent(EVENT_START_COUNTDOWN_3, 180s);
1778 events.ScheduleEvent(EVENT_START_COUNTDOWN_4, 240s);
1779 events.ScheduleEvent(EVENT_START_COUNTDOWN_5, 300s);
1780 events.ScheduleEvent(EVENT_START_COUNTDOWN_6, 308s);
1781 events.ScheduleEvent(EVENT_START_COUNTDOWN_7, 312s);
1782 events.ScheduleEvent(EVENT_START_COUNTDOWN_8, 316s);
1783 events.ScheduleEvent(EVENT_START_COUNTDOWN_9, 320s);
1784 events.ScheduleEvent(EVENT_START_COUNTDOWN_10, 324s);
1785 events.ScheduleEvent(EVENT_START_COUNTDOWN_11, 332s);
1786 events.ScheduleEvent(EVENT_START_COUNTDOWN_12, 335s);
1787 events.ScheduleEvent(EVENT_MARCH_BEHEMOTHS_KOLTIRA, 335s + 500ms);
1788 events.ScheduleEvent(EVENT_START_COUNTDOWN_13, 337s + 600ms);
1789 events.ScheduleEvent(EVENT_MARCH_DARION, 338s + 400ms);
1790 events.ScheduleEvent(EVENT_MARCH_ORBAZ_THASSARIAN, 339s + 600ms);
1791 events.ScheduleEvent(EVENT_START_COUNTDOWN_14, 345s);
1792 }
1793 }
events
Definition boss_sartura.cpp:43
Talk
Definition hyjal.cpp:82
uint32 scourgeRemaining
Definition zone_the_scarlet_enclave.cpp:1734
void SendInitialWorldStates()
Definition zone_the_scarlet_enclave.cpp:1825
uint32 defendersRemaining
Definition zone_the_scarlet_enclave.cpp:1733
uint32 startTimeRemaining
Definition zone_the_scarlet_enclave.cpp:1732
@ EVENT_START_COUNTDOWN_3
Definition zone_the_scarlet_enclave.cpp:1370
@ EVENT_START_COUNTDOWN_2
Definition zone_the_scarlet_enclave.cpp:1369
@ EVENT_START_COUNTDOWN_7
Definition zone_the_scarlet_enclave.cpp:1374
@ EVENT_START_COUNTDOWN_6
Definition zone_the_scarlet_enclave.cpp:1373
@ ACTION_START_EVENT
Definition zone_the_scarlet_enclave.cpp:1460
@ EVENT_START_COUNTDOWN_5
Definition zone_the_scarlet_enclave.cpp:1372
@ EVENT_START_COUNTDOWN_10
Definition zone_the_scarlet_enclave.cpp:1377
@ ENCOUNTER_TOTAL_SCOURGE
Definition zone_the_scarlet_enclave.cpp:1468
@ EVENT_START_COUNTDOWN_13
Definition zone_the_scarlet_enclave.cpp:1380
@ EVENT_MARCH_DARION
Definition zone_the_scarlet_enclave.cpp:1383
@ EVENT_START_COUNTDOWN_4
Definition zone_the_scarlet_enclave.cpp:1371
@ EVENT_MARCH_BEHEMOTHS_KOLTIRA
Definition zone_the_scarlet_enclave.cpp:1382
@ EVENT_MARCH_ORBAZ_THASSARIAN
Definition zone_the_scarlet_enclave.cpp:1384
@ EVENT_START_COUNTDOWN_8
Definition zone_the_scarlet_enclave.cpp:1375
@ EVENT_START_COUNTDOWN_12
Definition zone_the_scarlet_enclave.cpp:1379
@ EVENT_START_COUNTDOWN_11
Definition zone_the_scarlet_enclave.cpp:1378
@ EVENT_START_COUNTDOWN_14
Definition zone_the_scarlet_enclave.cpp:1381
@ EVENT_START_COUNTDOWN_1
Definition zone_the_scarlet_enclave.cpp:1368
@ ENCOUNTER_TOTAL_DEFENDERS
Definition zone_the_scarlet_enclave.cpp:1467
@ EVENT_START_COUNTDOWN_9
Definition zone_the_scarlet_enclave.cpp:1376
@ ENCOUNTER_START_TIME
Definition zone_the_scarlet_enclave.cpp:1466
@ SAY_LIGHT_OF_DAWN01
Definition zone_the_scarlet_enclave.cpp:1291

References ACTION_START_EVENT, defendersRemaining, ENCOUNTER_START_TIME, ENCOUNTER_TOTAL_DEFENDERS, ENCOUNTER_TOTAL_SCOURGE, EVENT_MARCH_BEHEMOTHS_KOLTIRA, EVENT_MARCH_DARION, EVENT_MARCH_ORBAZ_THASSARIAN, EVENT_START_COUNTDOWN_1, EVENT_START_COUNTDOWN_10, EVENT_START_COUNTDOWN_11, EVENT_START_COUNTDOWN_12, EVENT_START_COUNTDOWN_13, EVENT_START_COUNTDOWN_14, EVENT_START_COUNTDOWN_2, EVENT_START_COUNTDOWN_3, EVENT_START_COUNTDOWN_4, EVENT_START_COUNTDOWN_5, EVENT_START_COUNTDOWN_6, EVENT_START_COUNTDOWN_7, EVENT_START_COUNTDOWN_8, EVENT_START_COUNTDOWN_9, SAY_LIGHT_OF_DAWN01, scourgeRemaining, SendInitialWorldStates(), and startTimeRemaining.

Referenced by sGossipSelect().

◆ EnterEvadeMode()

void npc_highlord_darion_mograine::EnterEvadeMode ( EvadeReason  why)
inlineoverridevirtual

Reimplemented from CreatureAI.

1928 {
1929 // Evading walks Darion back home and leaves him idle in the middle of the battle
1931 return;
1932
1934 }
virtual void EnterEvadeMode(EvadeReason why=EVADE_REASON_OTHER)
Definition CreatureAI.cpp:235
@ ENCOUNTER_STATE_FIGHT
Definition zone_the_scarlet_enclave.cpp:1471

References armyReleased, battleStarted, ENCOUNTER_STATE_FIGHT, and CreatureAI::EnterEvadeMode().

◆ FinishFight()

void npc_highlord_darion_mograine::FinishFight ( )
inline
1892 {
1893 armyReleased = false;
1894
1896 {
1897 tirion->LoadEquipment(0, true);
1898 tirion->AI()->Talk(SAY_LIGHT_OF_DAWN25, 4s);
1899
1900 tirion->m_Events.AddEventAtOffset([&, tirion] {
1901 tirion->GetMotionMaster()->MoveWaypoint(NPC_HIGHLORD_TIRION_FORDRING * 10, false);
1902 }, 14s);
1903
1904 events.Reset();
1905 events.ScheduleEvent(EVENT_FINISH_FIGHT_1, 10s);
1906 events.ScheduleEvent(EVENT_FINISH_FIGHT_2, 20s);
1907 events.ScheduleEvent(EVENT_FINISH_FIGHT_3, 22s);
1908 events.ScheduleEvent(EVENT_FINISH_FIGHT_4, 23s);
1909 events.ScheduleEvent(EVENT_FINISH_FIGHT_5, 24s);
1910
1911 tirion->SummonGameObjectGroup(SUMMON_GROUP_HOLY_LIGHTNING);
1912 }
1913 }
Definition Creature.h:47
Creature * SummonSingle(uint8 group)
Definition zone_the_scarlet_enclave.cpp:1978
@ EVENT_FINISH_FIGHT_2
Definition zone_the_scarlet_enclave.cpp:1393
@ EVENT_FINISH_FIGHT_4
Definition zone_the_scarlet_enclave.cpp:1395
@ EVENT_FINISH_FIGHT_5
Definition zone_the_scarlet_enclave.cpp:1396
@ EVENT_FINISH_FIGHT_3
Definition zone_the_scarlet_enclave.cpp:1394
@ EVENT_FINISH_FIGHT_1
Definition zone_the_scarlet_enclave.cpp:1392
@ SAY_LIGHT_OF_DAWN25
Definition zone_the_scarlet_enclave.cpp:1300
@ NPC_HIGHLORD_TIRION_FORDRING
Definition zone_the_scarlet_enclave.cpp:1539
@ SUMMON_GROUP_TIRION
Definition zone_the_scarlet_enclave.cpp:1483
@ SUMMON_GROUP_HOLY_LIGHTNING
Definition zone_the_scarlet_enclave.cpp:1489

References armyReleased, EVENT_FINISH_FIGHT_1, EVENT_FINISH_FIGHT_2, EVENT_FINISH_FIGHT_3, EVENT_FINISH_FIGHT_4, EVENT_FINISH_FIGHT_5, NPC_HIGHLORD_TIRION_FORDRING, SAY_LIGHT_OF_DAWN25, SUMMON_GROUP_HOLY_LIGHTNING, SUMMON_GROUP_TIRION, and SummonSingle().

Referenced by SummonedCreatureDies().

◆ GetData()

uint32 npc_highlord_darion_mograine::GetData ( uint32  type) const
inlineoverridevirtual

Reimplemented from UnitAI.

1796 {
1797 switch (type)
1798 {
1800 return defendersRemaining;
1802 return scourgeRemaining;
1804 return me->IsAlive() && (startTimeRemaining || battleStarted);
1806 return me->IsAlive() && startTimeRemaining;
1808 return startTimeRemaining;
1810 return me->IsAlive() && !startTimeRemaining && battleStarted;
1811 }
1812 return 0;
1813 }
@ WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_SOLDIERS_ENABLE
Definition WorldStateDefines.h:517
@ WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_EVENT_BEGIN_ENABLE
Definition WorldStateDefines.h:520
@ WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_DEFENDERS_COUNT
Definition WorldStateDefines.h:515
@ WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_COUNTDOWN_TIME
Definition WorldStateDefines.h:519
@ WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_COUNTDOWN_ENABLE
Definition WorldStateDefines.h:518
@ WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_SCOURGE_COUNT
Definition WorldStateDefines.h:516
bool IsAlive() const
Definition Unit.h:1812

References battleStarted, defendersRemaining, Unit::IsAlive(), ScriptedAI::me, scourgeRemaining, startTimeRemaining, WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_COUNTDOWN_ENABLE, WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_COUNTDOWN_TIME, WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_DEFENDERS_COUNT, WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_EVENT_BEGIN_ENABLE, WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_SCOURGE_COUNT, and WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_SOLDIERS_ENABLE.

Referenced by SendInitialWorldStates(), sGossipHello(), and SummonedCreatureDies().

◆ GetEntryFromSummons()

Creature * npc_highlord_darion_mograine::GetEntryFromSummons ( uint32  entry)
inline
1969 {
1970 for (SummonList::const_iterator itr = summons.begin(); itr != summons.end(); ++itr)
1971 if (Creature* summon = ObjectAccessor::GetCreature(*me, *itr))
1972 if (summon->GetEntry() == entry)
1973 return summon;
1974 return nullptr;
1975 }
iterator begin()
Definition ScriptedCreature.h:48
StorageType::const_iterator const_iterator
Definition ScriptedCreature.h:37
iterator end()
Definition ScriptedCreature.h:58
Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
Definition ObjectAccessor.cpp:234

References SummonList::begin(), SummonList::end(), ObjectAccessor::GetCreature(), ScriptedAI::me, and summons.

Referenced by UpdateAI().

◆ GetReplacementPosition()

Position npc_highlord_darion_mograine::GetReplacementPosition ( Creature const *  dead)
inline
1992 {
1993 // Sniffed points per entry. The Scourge leaders have none and come back on their staging area position
1995 {
1996 std::vector<TempSummonData> const* data =
1997 sObjectMgr->GetSummonGroup(me->GetEntry(), SUMMONER_TYPE_CREATURE, group);
1998 if (!data)
1999 continue;
2000
2001 std::vector<Position> positions;
2002 for (TempSummonData const& slot : *data)
2003 if (slot.entry == dead->GetEntry())
2004 positions.push_back(slot.pos);
2005
2006 if (!positions.empty())
2008 }
2009
2010 return dead->GetPosition();
2011 }
std::uint8_t uint8
Definition Define.h:109
#define sObjectMgr
Definition ObjectMgr.h:1731
@ SUMMONER_TYPE_CREATURE
Definition TemporarySummon.h:26
const Position positions[MAX_SUMMONS]
Definition boss_lurker_below.cpp:57
uint32 GetEntry() const
Definition Object.h:123
auto SelectRandomContainerElement(C const &container) -> typename std::add_const< decltype(*std::begin(container))>::type &
Definition Containers.h:133
Stores data for temp summons.
Definition TemporarySummon.h:33
@ SUMMON_GROUP_REPLACEMENTS
Definition zone_the_scarlet_enclave.cpp:1481
@ SUMMON_GROUP_SCOURGE_LEADERS
Definition zone_the_scarlet_enclave.cpp:1480

References Object::GetEntry(), Position::GetPosition(), ScriptedAI::me, positions, Acore::Containers::SelectRandomContainerElement(), sObjectMgr, SUMMON_GROUP_REPLACEMENTS, SUMMON_GROUP_SCOURGE_LEADERS, and SUMMONER_TYPE_CREATURE.

Referenced by SummonedCreatureDies().

◆ JustDied()

void npc_highlord_darion_mograine::JustDied ( Unit *  )
inlineoverridevirtual

Reimplemented from CreatureAI.

1885 {
1887 me->SetCorpseDelay(3 * 60);
1888 me->SetRespawnTime(3 * 60);
1889 }
void DespawnAll(Milliseconds delay=0ms)
Definition ScriptedCreature.cpp:72

References SummonList::DespawnAll(), ScriptedAI::me, Creature::SetCorpseDelay(), Creature::SetRespawnTime(), and summons.

◆ JustEngagedWith()

void npc_highlord_darion_mograine::JustEngagedWith ( Unit *  )
inlineoverridevirtual

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

Reimplemented from CreatureAI.

1916 {
1918 return;
1919
1920 events.RescheduleEvent(EVENT_SPELL_ANTI_MAGIC_ZONE, 15s);
1921 events.RescheduleEvent(EVENT_SPELL_DEATH_STRIKE, 8s);
1922 events.RescheduleEvent(EVENT_SPELL_DEATH_EMBRACE, 5s);
1923 events.RescheduleEvent(EVENT_SPELL_UNHOLY_BLIGHT, 10s);
1924 events.RescheduleEvent(EVENT_SPELL_DARION_MOD_DAMAGE, 500ms);
1925 }
@ EVENT_SPELL_ANTI_MAGIC_ZONE
Definition zone_the_scarlet_enclave.cpp:1386
@ EVENT_SPELL_UNHOLY_BLIGHT
Definition zone_the_scarlet_enclave.cpp:1389
@ EVENT_SPELL_DEATH_STRIKE
Definition zone_the_scarlet_enclave.cpp:1387
@ EVENT_SPELL_DEATH_EMBRACE
Definition zone_the_scarlet_enclave.cpp:1388
@ EVENT_SPELL_DARION_MOD_DAMAGE
Definition zone_the_scarlet_enclave.cpp:1390

References battleStarted, ENCOUNTER_STATE_FIGHT, EVENT_SPELL_ANTI_MAGIC_ZONE, EVENT_SPELL_DARION_MOD_DAMAGE, EVENT_SPELL_DEATH_EMBRACE, EVENT_SPELL_DEATH_STRIKE, and EVENT_SPELL_UNHOLY_BLIGHT.

◆ JustRespawned()

void npc_highlord_darion_mograine::JustRespawned ( )
inlineoverridevirtual

Reimplemented from CreatureAI.

1946 {
1947 events.Reset();
1949
1950 me->SetImmuneToAll(true);
1951 me->LoadEquipment(1, true);
1954 me->SetVisible(true);
1955 me->setActive(true);
1956 me->SetWalk(false);
1957
1959 armyReleased = false;
1962 scourgeRemaining = 0;
1963
1966 }
@ UNIT_STAND_STATE_STAND
Definition UnitDefines.h:35
@ UNIT_NPC_FLAG_GOSSIP
Definition UnitDefines.h:322
@ UNIT_NPC_FLAG_QUESTGIVER
Definition UnitDefines.h:323
void LoadEquipment(int8 id=1, bool force=false)
Definition Creature.cpp:1807
bool SetWalk(bool enable) override
Enable or disable the creature's walk mode by removing: MOVEMENTFLAG_WALKING. Infom also the client.
Definition Creature.cpp:3416
void SetVisible(bool x)
Definition Unit.cpp:10916
void ReplaceAllNpcFlags(NPCFlags flags)
Definition Unit.h:772
void SetStandState(uint8 state)
Definition Unit.cpp:12801
void SetImmuneToAll(bool apply, bool keepCombat=false)
Definition Unit.h:938
void setActive(bool isActiveObject)
Definition Object.cpp:1091
void SummonCreatureGroup(uint8 group, std::list< TempSummon * > *list=nullptr)
Definition Object.cpp:2537

References armyReleased, battleStarted, defendersRemaining, SummonList::DespawnAll(), ENCOUNTER_STATE_NONE, Creature::LoadEquipment(), ScriptedAI::me, Unit::ReplaceAllNpcFlags(), scourgeRemaining, SendInitialWorldStates(), WorldObject::setActive(), Unit::SetImmuneToAll(), Unit::SetStandState(), Unit::SetVisible(), Creature::SetWalk(), startTimeRemaining, SUMMON_GROUP_SCOURGE_LEADERS, WorldObject::SummonCreatureGroup(), summons, UNIT_NPC_FLAG_GOSSIP, UNIT_NPC_FLAG_QUESTGIVER, and UNIT_STAND_STATE_STAND.

Referenced by Reset().

◆ JustSummoned()

void npc_highlord_darion_mograine::JustSummoned ( Creature *  cr)
inlineoverridevirtual

Reimplemented from CreatureAI.

1836 {
1837 summons.Summon(cr);
1838
1841 {
1842 Position pos = LightOfDawnFightPos[urand(0, 9)];
1843 if (Unit* target = cr->SelectNearbyTarget(nullptr, 10.0f))
1844 if (target->IsCreature())
1845 target->GetMotionMaster()->MoveCharge(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), me->GetSpeed(MOVE_RUN));
1847 }
1848
1850 {
1852 cr->SetImmuneToAll(true);
1855 }
1856 }
uint32 urand(uint32 min, uint32 max)
Definition Random.cpp:44
@ EMOTE_STATE_READY1H
Definition SharedDefines.h:1970
@ MOVE_RUN
Definition UnitDefines.h:357
@ REACT_PASSIVE
Definition Unit.h:574
@ UNIT_NPC_EMOTESTATE
Definition UpdateFields.h:140
void SetReactState(ReactStates state)
A creature can have 3 ReactStates : Agressive, Passive, Neutral.
Definition Creature.h:99
void Summon(Creature const *summon)
Definition ScriptedCreature.h:88
Definition Unit.h:670
float GetSpeed(UnitMoveType mtype) const
Definition Unit.cpp:11109
Unit * SelectNearbyTarget(Unit *exclude=nullptr, float dist=NOMINAL_MELEE_RANGE) const
Definition Unit.cpp:13060
void SetUInt32Value(uint16 index, uint32 value)
Definition Unit.cpp:17078
void HandleEmoteCommand(uint32 emoteId)
Definition Unit.cpp:2202
bool IsInCombat() const
Definition Unit.h:949
const Position LightOfDawnFightPos[]
Definition zone_the_scarlet_enclave.cpp:1583
@ ENCOUNTER_STATE_OUTRO
Definition zone_the_scarlet_enclave.cpp:1472
@ NPC_RAMPAGING_ABOMINATION
Definition zone_the_scarlet_enclave.cpp:1528
@ NPC_DEFENDER_OF_THE_LIGHT
Definition zone_the_scarlet_enclave.cpp:1518

References battleStarted, EMOTE_STATE_READY1H, ENCOUNTER_STATE_FIGHT, ENCOUNTER_STATE_OUTRO, Object::GetEntry(), Unit::GetMotionMaster(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), Unit::GetSpeed(), Unit::HandleEmoteCommand(), Unit::IsInCombat(), LightOfDawnFightPos, ScriptedAI::me, MOVE_RUN, MotionMaster::MoveCharge(), NPC_DEFENDER_OF_THE_LIGHT, NPC_HIGHLORD_TIRION_FORDRING, NPC_RAMPAGING_ABOMINATION, REACT_PASSIVE, Unit::SelectNearbyTarget(), Unit::SetImmuneToAll(), Creature::SetReactState(), Unit::SetUInt32Value(), SummonList::Summon(), summons, UNIT_NPC_EMOTESTATE, and urand().

◆ MovementInform()

void npc_highlord_darion_mograine::MovementInform ( uint32  type,
uint32  point 
)
inlineoverridevirtual

Reimplemented from CreatureAI.

2045 {
2046 if (type == POINT_MOTION_TYPE && point == 2)
2047 {
2050 events.Reset();
2051
2052 events.ScheduleEvent(EVENT_OUTRO_SCENE_1, 2s);
2053 events.ScheduleEvent(EVENT_OUTRO_SCENE_2, 19s);
2054 events.ScheduleEvent(EVENT_OUTRO_SCENE_3, 38s);
2055 events.ScheduleEvent(EVENT_OUTRO_SCENE_4, 50s);
2056 events.ScheduleEvent(EVENT_OUTRO_SCENE_5, 62s);
2057 events.ScheduleEvent(EVENT_OUTRO_SCENE_6, 68s);
2058 events.ScheduleEvent(EVENT_OUTRO_SCENE_7, 71s);
2059 events.ScheduleEvent(EVENT_OUTRO_SCENE_8, 72s);
2060 events.ScheduleEvent(EVENT_OUTRO_SCENE_9, 74s);
2061 events.ScheduleEvent(EVENT_OUTRO_SCENE_10, 77s);
2062 events.ScheduleEvent(EVENT_OUTRO_SCENE_11, 79s);
2063 events.ScheduleEvent(EVENT_OUTRO_SCENE_12, 82s);
2064 events.ScheduleEvent(EVENT_OUTRO_SCENE_13, 85s);
2065 events.ScheduleEvent(EVENT_OUTRO_SCENE_14, 92s);
2066 events.ScheduleEvent(EVENT_OUTRO_SCENE_15, 98s);
2067 events.ScheduleEvent(EVENT_OUTRO_SCENE_16, 105s);
2068 events.ScheduleEvent(EVENT_OUTRO_SCENE_17, 120s);
2069 events.ScheduleEvent(EVENT_OUTRO_SCENE_18, 131s);
2070 events.ScheduleEvent(EVENT_OUTRO_SCENE_19, 158s);
2071 }
2072 }
@ POINT_MOTION_TYPE
Definition MotionMaster.h:48
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Definition Unit.cpp:4969
@ SPELL_THE_LIGHT_OF_DAWN
Definition zone_the_scarlet_enclave.cpp:1567
@ EVENT_OUTRO_SCENE_19
Definition zone_the_scarlet_enclave.cpp:1416
@ EVENT_OUTRO_SCENE_5
Definition zone_the_scarlet_enclave.cpp:1402
@ EVENT_OUTRO_SCENE_7
Definition zone_the_scarlet_enclave.cpp:1404
@ EVENT_OUTRO_SCENE_15
Definition zone_the_scarlet_enclave.cpp:1412
@ EVENT_OUTRO_SCENE_18
Definition zone_the_scarlet_enclave.cpp:1415
@ EVENT_OUTRO_SCENE_1
Definition zone_the_scarlet_enclave.cpp:1398
@ EVENT_OUTRO_SCENE_3
Definition zone_the_scarlet_enclave.cpp:1400
@ EVENT_OUTRO_SCENE_13
Definition zone_the_scarlet_enclave.cpp:1410
@ EVENT_OUTRO_SCENE_11
Definition zone_the_scarlet_enclave.cpp:1408
@ EVENT_OUTRO_SCENE_8
Definition zone_the_scarlet_enclave.cpp:1405
@ EVENT_OUTRO_SCENE_12
Definition zone_the_scarlet_enclave.cpp:1409
@ EVENT_OUTRO_SCENE_14
Definition zone_the_scarlet_enclave.cpp:1411
@ EVENT_OUTRO_SCENE_2
Definition zone_the_scarlet_enclave.cpp:1399
@ EVENT_OUTRO_SCENE_17
Definition zone_the_scarlet_enclave.cpp:1414
@ EVENT_OUTRO_SCENE_6
Definition zone_the_scarlet_enclave.cpp:1403
@ EVENT_OUTRO_SCENE_10
Definition zone_the_scarlet_enclave.cpp:1407
@ EVENT_OUTRO_SCENE_4
Definition zone_the_scarlet_enclave.cpp:1401
@ EVENT_OUTRO_SCENE_9
Definition zone_the_scarlet_enclave.cpp:1406
@ EVENT_OUTRO_SCENE_16
Definition zone_the_scarlet_enclave.cpp:1413
@ EMOTE_LIGHT_OF_DAWN05
Definition zone_the_scarlet_enclave.cpp:1349

References EMOTE_LIGHT_OF_DAWN05, EVENT_OUTRO_SCENE_1, EVENT_OUTRO_SCENE_10, EVENT_OUTRO_SCENE_11, EVENT_OUTRO_SCENE_12, EVENT_OUTRO_SCENE_13, EVENT_OUTRO_SCENE_14, EVENT_OUTRO_SCENE_15, EVENT_OUTRO_SCENE_16, EVENT_OUTRO_SCENE_17, EVENT_OUTRO_SCENE_18, EVENT_OUTRO_SCENE_19, EVENT_OUTRO_SCENE_2, EVENT_OUTRO_SCENE_3, EVENT_OUTRO_SCENE_4, EVENT_OUTRO_SCENE_5, EVENT_OUTRO_SCENE_6, EVENT_OUTRO_SCENE_7, EVENT_OUTRO_SCENE_8, EVENT_OUTRO_SCENE_9, ScriptedAI::me, POINT_MOTION_TYPE, Unit::RemoveAurasDueToSpell(), and SPELL_THE_LIGHT_OF_DAWN.

◆ Reset()

void npc_highlord_darion_mograine::Reset ( )
inlineoverridevirtual

Reimplemented from UnitAI.

1937 {
1938 if (resetExecuted)
1939 return;
1940
1941 resetExecuted = true;
1942 JustRespawned();
1943 }
void JustRespawned() override
Definition zone_the_scarlet_enclave.cpp:1945

References JustRespawned(), and resetExecuted.

◆ SendInitialWorldStates()

void npc_highlord_darion_mograine::SendInitialWorldStates ( )
inline

References GetData(), SendUpdateWorldState(), WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_COUNTDOWN_ENABLE, WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_COUNTDOWN_TIME, WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_DEFENDERS_COUNT, WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_EVENT_BEGIN_ENABLE, WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_SCOURGE_COUNT, and WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_SOLDIERS_ENABLE.

Referenced by DoAction(), and JustRespawned().

◆ SendUpdateWorldState()

void npc_highlord_darion_mograine::SendUpdateWorldState ( uint32  id,
uint32  state 
)
inline
1816 {
1817 Map::PlayerList const& players = me->GetMap()->GetPlayers();
1818 if (!players.IsEmpty())
1819 for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
1820 if (Player* player = itr->GetSource())
1821 if (player->GetPhaseMask() & 128) // Xinef: client skips players without chapter 5 aura anyway, speedup
1822 player->SendUpdateWorldState(id, state);
1823 }
Definition LinkedList.h:139
bool IsEmpty() const
Definition LinkedList.h:97
Definition MapRefMgr.h:26
iterator begin()
Definition MapRefMgr.h:36
iterator end()
Definition MapRefMgr.h:37
PlayerList const & GetPlayers() const
Definition Map.h:335
Definition Player.h:1086
Map * GetMap() const
Definition Object.h:637

References MapRefMgr::begin(), MapRefMgr::end(), WorldObject::GetMap(), Map::GetPlayers(), LinkedListHead::IsEmpty(), and ScriptedAI::me.

Referenced by SendInitialWorldStates(), SummonedCreatureDies(), and UpdateAI().

◆ sGossipHello()

void npc_highlord_darion_mograine::sGossipHello ( Player *  player)
inlineoverridevirtual

Reimplemented from UnitAI.

1740 {
1741 ClearGossipMenuFor(player);
1742
1743 if (me->IsQuestGiver())
1744 player->PrepareQuestMenu(me->GetGUID());
1745
1748
1749 SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID());
1750 }
@ QUEST_STATUS_INCOMPLETE
Definition QuestDef.h:103
void AddGossipItemFor(Player *player, uint32 icon, std::string const &text, uint32 sender, uint32 action)
Definition ScriptedGossip.cpp:28
void SendGossipMenuFor(Player *player, uint32 npcTextID, ObjectGuid const &guid)
Definition ScriptedGossip.cpp:45
void ClearGossipMenuFor(Player *player)
Definition ScriptedGossip.cpp:22
@ GOSSIP_SENDER_MAIN
Definition ScriptedGossip.h:70
@ GOSSIP_ACTION_INFO_DEF
Definition ScriptedGossip.h:68
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:120
void PrepareQuestMenu(ObjectGuid guid)
Definition PlayerQuest.cpp:40
QuestStatus GetQuestStatus(uint32 quest_id) const
Definition PlayerQuest.cpp:1504
uint32 GetGossipTextId(uint32 menuId, WorldObject *source)
Definition PlayerGossip.cpp:409
bool IsQuestGiver() const
Definition Unit.h:811

References AddGossipItemFor(), ClearGossipMenuFor(), GetData(), Player::GetGossipTextId(), Object::GetGUID(), Player::GetQuestStatus(), GOSSIP_ACTION_INFO_DEF, GOSSIP_SENDER_MAIN, Unit::IsQuestGiver(), ScriptedAI::me, Player::PrepareQuestMenu(), QUEST_STATUS_INCOMPLETE, SendGossipMenuFor(), and WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_SOLDIERS_ENABLE.

◆ sGossipSelect()

void npc_highlord_darion_mograine::sGossipSelect ( Player *  player,
uint32  ,
uint32  gossipListId 
)
inlineoverridevirtual

Reimplemented from UnitAI.

1753 {
1754 if (player->PlayerTalkClass->GetGossipOptionAction(gossipListId) == GOSSIP_ACTION_INFO_DEF + 1)
1755 {
1756 ClearGossipMenuFor(player);
1757 CloseGossipMenuFor(player);
1759 }
1760 }
void CloseGossipMenuFor(Player *player)
Definition ScriptedGossip.cpp:56
uint32 GetGossipOptionAction(uint32 selection) const
Definition GossipDef.h:271
PlayerMenu * PlayerTalkClass
Definition Player.h:2287
void DoAction(int32 param) override
Definition zone_the_scarlet_enclave.cpp:1762

References ACTION_START_EVENT, ClearGossipMenuFor(), CloseGossipMenuFor(), DoAction(), PlayerMenu::GetGossipOptionAction(), GOSSIP_ACTION_INFO_DEF, and Player::PlayerTalkClass.

◆ SummonedCreatureDies()

void npc_highlord_darion_mograine::SummonedCreatureDies ( Creature *  creature,
Unit *   
)
inlineoverridevirtual

Reimplemented from CreatureAI.

1859 {
1860 // Refill Armies and update counters
1862 return;
1863
1864 uint32 entry = creature->GetEntry();
1865 Position pos = GetReplacementPosition(creature);
1866 me->m_Events.AddEventAtOffset([this, entry, pos] {
1867 SummonReplacement(entry, pos);
1868 }, 3s);
1869 if (creature->GetEntry() >= NPC_RAMPAGING_ABOMINATION)
1870 {
1873 }
1874 else
1875 {
1878
1879 if (defendersRemaining == 200)
1880 FinishFight();
1881 }
1882 }
std::uint32_t uint32
Definition Define.h:107
void AddEventAtOffset(BasicEvent *event, Milliseconds offset, uint8 eventGroup=0)
Definition EventProcessor.h:108
EventProcessor m_Events
Definition Object.h:749
void FinishFight()
Definition zone_the_scarlet_enclave.cpp:1891
Position GetReplacementPosition(Creature const *dead)
Definition zone_the_scarlet_enclave.cpp:1991
void SummonReplacement(uint32 entry, Position const &pos)
Definition zone_the_scarlet_enclave.cpp:2013

References EventProcessor::AddEventAtOffset(), battleStarted, defendersRemaining, ENCOUNTER_STATE_FIGHT, FinishFight(), GetData(), Object::GetEntry(), GetReplacementPosition(), WorldObject::m_Events, ScriptedAI::me, NPC_RAMPAGING_ABOMINATION, scourgeRemaining, SendUpdateWorldState(), SummonReplacement(), WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_DEFENDERS_COUNT, and WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_SCOURGE_COUNT.

◆ SummonReplacement()

void npc_highlord_darion_mograine::SummonReplacement ( uint32  entry,
Position const &  pos 
)
inline
2014 {
2017 return;
2018
2019 switch (entry)
2020 {
2021 case NPC_ACHERUS_GHOUL:
2023 // Sniffs show them not attackable while they cast Birth (3.5s)
2025 cr->CastSpell(cr, SPELL_BIRTH, false);
2026 cr->m_Events.AddEventAtOffset([cr] {
2028 }, 3500ms);
2029 break;
2030 case NPC_FLESH_BEHEMOTH:
2031 // Runs to the middle of the battle
2033 break;
2035 case NPC_THASSARIAN:
2038 break;
2039 default:
2040 break;
2041 }
2042 }
@ TEMPSUMMON_CORPSE_TIMED_DESPAWN
Definition Object.h:55
@ UNIT_FLAG_NON_ATTACKABLE
Definition UnitDefines.h:258
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:1378
void SetUnitFlag(UnitFlags flags)
UnitFlags available in UnitDefines.h.
Definition Unit.h:754
void RemoveUnitFlag(UnitFlags flags)
UnitFlags available in UnitDefines.h.
Definition Unit.h:755
TempSummon * SummonCreature(uint32 id, Position const &pos, TempSummonType spwtype=TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime=0, uint32 vehId=0, SummonPropertiesEntry const *properties=nullptr, bool visibleBySummonerOnly=false) const
Definition Object.cpp:2460
const Position LightOfDawnChargePos[]
Definition zone_the_scarlet_enclave.cpp:1598
@ SPELL_BIRTH
Definition zone_the_scarlet_enclave.cpp:1556
static void LightOfDawnMarchTo(Creature *unit, Position const &dest, bool viaCorridor)
Definition zone_the_scarlet_enclave.cpp:1658
@ NPC_FLESH_BEHEMOTH
Definition zone_the_scarlet_enclave.cpp:1531
@ NPC_ORBAZ_BLOODBANE
Definition zone_the_scarlet_enclave.cpp:1535
@ NPC_ACHERUS_GHOUL
Definition zone_the_scarlet_enclave.cpp:1529
@ NPC_WARRIOR_OF_THE_FROZEN_WASTES
Definition zone_the_scarlet_enclave.cpp:1530
@ NPC_THASSARIAN
Definition zone_the_scarlet_enclave.cpp:1536
@ NPC_KOLTIRA_DEATHWEAVER
Definition zone_the_scarlet_enclave.cpp:1534

References EventProcessor::AddEventAtOffset(), armyReleased, battleStarted, Unit::CastSpell(), ENCOUNTER_STATE_FIGHT, LightOfDawnChargePos, LightOfDawnFightPos, LightOfDawnMarchTo(), WorldObject::m_Events, ScriptedAI::me, NPC_ACHERUS_GHOUL, NPC_FLESH_BEHEMOTH, NPC_KOLTIRA_DEATHWEAVER, NPC_ORBAZ_BLOODBANE, NPC_THASSARIAN, NPC_WARRIOR_OF_THE_FROZEN_WASTES, Unit::RemoveUnitFlag(), Acore::Containers::SelectRandomContainerElement(), Unit::SetUnitFlag(), SPELL_BIRTH, WorldObject::SummonCreature(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, and UNIT_FLAG_NON_ATTACKABLE.

Referenced by SummonedCreatureDies().

◆ SummonSingle()

Creature * npc_highlord_darion_mograine::SummonSingle ( uint8  group)
inline
1979 {
1980 std::list<TempSummon*> summoned;
1981 me->SummonCreatureGroup(group, &summoned);
1982 return summoned.empty() ? nullptr : summoned.front();
1983 }

References ScriptedAI::me, and WorldObject::SummonCreatureGroup().

Referenced by FinishFight(), and UpdateAI().

◆ UpdateAI()

void npc_highlord_darion_mograine::UpdateAI ( uint32  )
inlineoverridevirtual

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

Implements UnitAI.

2075 {
2076 events.Update(diff);
2077 uint32 eventId = events.ExecuteEvent();
2078
2079 switch (eventId)
2080 {
2083 break;
2086 break;
2089 break;
2093 break;
2097 Talk(SAY_LIGHT_OF_DAWN04); // Wrong order in DB!
2101 break;
2107 if (eventId == EVENT_START_COUNTDOWN_6)
2108 {
2111 }
2112 else
2115 break;
2118 break;
2121 break;
2123 armyReleased = true;
2124 for (SummonList::const_iterator itr = summons.begin(); itr != summons.end(); ++itr)
2125 if (Creature* summon = ObjectAccessor::GetCreature(*me, *itr))
2126 if (summon->IsAlive() && summon->GetEntry() == NPC_FLESH_BEHEMOTH)
2128
2130 if (koltira->IsAlive())
2131 LightOfDawnMarchTo(koltira,
2133 break;
2135 for (SummonList::const_iterator itr = summons.begin(); itr != summons.end(); ++itr)
2136 if (Creature* summon = ObjectAccessor::GetCreature(*me, *itr))
2137 if (summon->IsAlive() && (summon->GetEntry() == NPC_ACHERUS_GHOUL ||
2138 summon->GetEntry() == NPC_WARRIOR_OF_THE_FROZEN_WASTES))
2139 LightOfDawnScheduleMarch(summon, 1200ms);
2140 break;
2141 case EVENT_MARCH_DARION:
2142 {
2145 if (WaypointPath const* march = sWaypointMgr->GetPath(PATH_DARION_MARCH))
2146 for (WaypointNode const& node : march->Nodes)
2147 path.emplace_back(node.X, node.Y, node.Z);
2148
2149 if (path.size() > 1)
2152 break;
2153 }
2155 for (uint32 entry : { NPC_ORBAZ_BLOODBANE, NPC_THASSARIAN })
2156 if (Creature* leader = GetEntryFromSummons(entry))
2157 if (leader->IsAlive())
2158 LightOfDawnScheduleMarch(leader, 400ms);
2159 break;
2161 me->SetImmuneToAll(false);
2163 return;
2167 break;
2169 {
2175
2177 {
2178 orbaz->SetReactState(REACT_PASSIVE);
2179 orbaz->AI()->Talk(EMOTE_LIGHT_OF_DAWN04);
2180 orbaz->GetMotionMaster()->MovePoint(2, LightOfDawnOutroPos[OUTRO_POINT_ORBAZ_FLEE],
2181 FORCED_MOVEMENT_NONE, 0.f, true, true);
2182 orbaz->DespawnOrUnsummon(7s);
2183 }
2184
2185 for (SummonList::const_iterator itr = summons.begin(); itr != summons.end(); ++itr)
2186 if (Creature* summon = ObjectAccessor::GetCreature(*me, *itr))
2187 {
2188 summon->CombatStop(true);
2189 summon->GetThreatMgr().ClearAllThreat();
2190 summon->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
2191 summon->SetImmuneToAll(true);
2192 summon->SetReactState(REACT_PASSIVE);
2193 summon->GetMotionMaster()->Clear(false);
2194 }
2195 me->CombatStop(true);
2197 me->SetImmuneToAll(true);
2199 me->GetMotionMaster()->Clear(false);
2200
2201 // Position main stars
2203
2205 break;
2206 }
2209 {
2210 koltira->SetWalk(true);
2211 koltira->SetHomePosition(*koltira);
2212 koltira->CastSpell(koltira, SPELL_THE_LIGHT_OF_DAWN, false);
2214 }
2215 break;
2218 {
2219 thassarin->SetWalk(true);
2220 thassarin->SetHomePosition(*thassarin);
2221 thassarin->CastSpell(thassarin, SPELL_THE_LIGHT_OF_DAWN, false);
2223 }
2224 break;
2226 me->SetWalk(true);
2228 me->RemoveAllAuras();
2231
2233 tirion->AI()->Talk(SAY_LIGHT_OF_DAWN26);
2234 break;
2237 me->SetFacingTo(4.8f);
2239 break;
2242 tirion->AI()->Talk(SAY_LIGHT_OF_DAWN28);
2243 break;
2246 tirion->AI()->Talk(SAY_LIGHT_OF_DAWN29);
2247 break;
2250 tirion->AI()->Talk(SAY_LIGHT_OF_DAWN30);
2251 break;
2255 break;
2258 {
2259 alex->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
2260 alex->GetMotionMaster()->MovePoint(0, LightOfDawnOutroPos[OUTRO_POINT_ALEXANDROS]);
2261 alex->CastSpell(alex, SPELL_ALEXANDROS_MOGRAINE_SPAWN, true);
2262 //alex->AI()->Talk(EMOTE_LIGHT_OF_DAWN06);
2263 }
2264 break;
2267 {
2268 alex->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
2269 alex->AI()->Talk(SAY_LIGHT_OF_DAWN32);
2270 me->SetFacingToObject(alex);
2271 }
2272 break;
2275 break;
2279 break;
2282 {
2283 darion->AI()->Talk(SAY_LIGHT_OF_DAWN35);
2284 darion->SetWalk(false);
2285 }
2286 break;
2289 {
2290 //darion->AI()->Talk(EMOTE_LIGHT_OF_DAWN07);
2291 darion->GetMotionMaster()->MovePoint(0, LightOfDawnOutroPos[OUTRO_POINT_DARION_GHOST]);
2292 }
2293 break;
2296 darion->AI()->Talk(EMOTE_LIGHT_OF_DAWN08);
2297 break;
2300 darion->AI()->Talk(SAY_LIGHT_OF_DAWN36);
2301 break;
2304 alex->AI()->Talk(SAY_LIGHT_OF_DAWN37);
2305 break;
2308 darion->AI()->Talk(SAY_LIGHT_OF_DAWN38);
2309 break;
2312 alex->AI()->Talk(SAY_LIGHT_OF_DAWN39);
2313
2315 tirion->GetMotionMaster()->MovePoint(0, LightOfDawnOutroPos[OUTRO_POINT_TIRION_1]);
2316 break;
2319 darion->AI()->Talk(SAY_LIGHT_OF_DAWN40);
2320 break;
2323 alex->AI()->Talk(SAY_LIGHT_OF_DAWN41);
2324
2326 darion->DespawnOrUnsummon(3s);
2327 break;
2330 alex->AI()->Talk(SAY_LIGHT_OF_DAWN42);
2331
2332 events.Reset();
2333 events.ScheduleEvent(EVENT_OUTRO_SCENE_20, 4s);
2334 events.ScheduleEvent(EVENT_OUTRO_SCENE_21, 4s + 500ms);
2335 events.ScheduleEvent(EVENT_OUTRO_SCENE_22, 7s);
2336 events.ScheduleEvent(EVENT_OUTRO_SCENE_23, 9s);
2337 events.ScheduleEvent(EVENT_OUTRO_SCENE_24, 14s);
2338 events.ScheduleEvent(EVENT_OUTRO_SCENE_25, 21s + 200ms);
2339 events.ScheduleEvent(EVENT_OUTRO_SCENE_26, 22s + 500ms);
2340 events.ScheduleEvent(EVENT_OUTRO_SCENE_27, 24s);
2341 events.ScheduleEvent(EVENT_OUTRO_SCENE_28, 28s);
2342 events.ScheduleEvent(EVENT_OUTRO_SCENE_29, 34s);
2343 events.ScheduleEvent(EVENT_OUTRO_SCENE_30, 36s);
2344 events.ScheduleEvent(EVENT_OUTRO_SCENE_31, 51s);
2345 events.ScheduleEvent(EVENT_OUTRO_SCENE_32, 68s);
2346 events.ScheduleEvent(EVENT_OUTRO_SCENE_33, 73s);
2347 events.ScheduleEvent(EVENT_OUTRO_SCENE_34, 76s);
2348 events.ScheduleEvent(EVENT_OUTRO_SCENE_35, 77s);
2349 events.ScheduleEvent(EVENT_OUTRO_SCENE_36, 81s);
2350 break;
2353 lk->AI()->Talk(SAY_LIGHT_OF_DAWN43);
2354 break;
2357 lk->CastSpell(lk, SPELL_ICEBOUND_VISAGE, true);
2358 break;
2361 {
2362 lk->AI()->Talk(SAY_LIGHT_OF_DAWN45);
2364 {
2365 alex->RemoveAllAuras();
2366 lk->CastSpell(alex, SPELL_SOUL_FEAST_ALEX, false);
2367 }
2368 }
2369 break;
2372 {
2373 alex->DespawnOrUnsummon(5s);
2374 alex->SetVisible(false);
2375 }
2376 break;
2380 break;
2383 lk->GetMotionMaster()->MovePoint(0, LightOfDawnOutroPos[OUTRO_POINT_LICH_KING]);
2384 break;
2387 break;
2390 {
2391 lk->AI()->Talk(SAY_LIGHT_OF_DAWN46);
2392 // Mograine's charge puts him inside the Lich King's collision, so we need to teleport him out
2393 // Otherwise, Rebuke will kick him the wrong direction
2394 me->NearTeleportTo(2279.7493f, -5258.1f, 80.065f, 4.3419204f);
2395 lk->m_Events.AddEventAtOffset([&, lk] {
2396 lk->CastSpell(me, SPELL_REBUKE, false);
2397 }, 1s);
2398 }
2399 break;
2403 {
2404 tirion->AI()->Talk(SAY_LIGHT_OF_DAWN47);
2406 tirion->SetFacingToObject(lk);
2407 }
2408 break;
2411 {
2412 lk->HandleEmoteCommand(EMOTE_ONESHOT_LAUGH);
2413 lk->PlayDirectSound(14820);
2414 }
2415 break;
2418 lk->AI()->Talk(SAY_LIGHT_OF_DAWN48);
2419 break;
2422 lk->AI()->Talk(SAY_LIGHT_OF_DAWN49);
2423 break;
2426 {
2428 {
2429 lk->CastSpell(lk, SPELL_SOUL_FEAST_TIRION, false);
2430 tirion->AI()->Talk(EMOTE_LIGHT_OF_DAWN12);
2431 }
2432
2433 for (SummonList::const_iterator itr = summons.begin(); itr != summons.end(); ++itr)
2434 if (Creature* summon = ObjectAccessor::GetCreature(*me, *itr))
2435 if (summon->GetEntry() <= NPC_RIMBLAT_EARTHSHATTER && summon->GetEntry() != NPC_HIGHLORD_TIRION_FORDRING)
2436 {
2437 float o = lk->GetAngle(summon);
2438 summon->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
2439 summon->GetMotionMaster()->MovePoint(3, lk->GetPositionX() + 2.0f * cos(o), lk->GetPositionY() + 2.0f * std::sin(o), lk->GetPositionZ());
2440 summon->ToTempSummon()->SetTempSummonType(TEMPSUMMON_MANUAL_DESPAWN);
2441 }
2442 }
2443 break;
2446 {
2447 lk->AI()->Talk(SAY_LIGHT_OF_DAWN51);
2448 lk->CastSpell(lk, SPELL_APOCALYPSE, true);
2449 }
2450 break;
2452 for (SummonList::const_iterator itr = summons.begin(); itr != summons.end(); ++itr)
2453 if (Creature* summon = ObjectAccessor::GetCreature(*me, *itr))
2454 if (summon->GetEntry() <= NPC_RIMBLAT_EARTHSHATTER && summon->GetEntry() != NPC_HIGHLORD_TIRION_FORDRING)
2455 Unit::Kill(summon, summon);
2456 break;
2459 break;
2464 me->SetFacingToObject(tirion);
2465
2466 events.Reset();
2467 events.ScheduleEvent(EVENT_OUTRO_SCENE_37, 1s);
2468 events.ScheduleEvent(EVENT_OUTRO_SCENE_38, 5s);
2469 events.ScheduleEvent(EVENT_OUTRO_SCENE_39, 7s);
2470 events.ScheduleEvent(EVENT_OUTRO_SCENE_40, 9s);
2471 events.ScheduleEvent(EVENT_OUTRO_SCENE_41, 13s);
2472 events.ScheduleEvent(EVENT_OUTRO_SCENE_42, 16s);
2473 events.ScheduleEvent(EVENT_OUTRO_SCENE_43, 17s);
2474 events.ScheduleEvent(EVENT_OUTRO_SCENE_44, 19s);
2475 events.ScheduleEvent(EVENT_OUTRO_SCENE_45, 25s);
2476 events.ScheduleEvent(EVENT_OUTRO_SCENE_46, 32s);
2477 events.ScheduleEvent(EVENT_OUTRO_SCENE_47, 42s);
2478 events.ScheduleEvent(EVENT_OUTRO_SCENE_48, 52s);
2479 events.ScheduleEvent(EVENT_OUTRO_SCENE_49, 54s);
2480 events.ScheduleEvent(EVENT_OUTRO_SCENE_50, 58s);
2481 events.ScheduleEvent(EVENT_OUTRO_SCENE_51, 65s);
2482 events.ScheduleEvent(EVENT_OUTRO_SCENE_52, 70s);
2483 events.ScheduleEvent(EVENT_OUTRO_SCENE_53, 84s);
2484 break;
2488 break;
2491 {
2492 tirion->RemoveAllAuras();
2493 tirion->CastSpell(me, SPELL_REBIRTH_OF_THE_ASHBRINGER, true);
2494 tirion->SummonGameObject(GO_LIGHT_OF_DAWN, tirion->GetPositionX(), tirion->GetPositionY(), tirion->GetPositionZ(), tirion->GetOrientation(), 0, 0, 0, 0, 180);
2495 tirion->LoadEquipment(1, true);
2496 }
2498 break;
2501 {
2502 tirion->RemoveAllAuras();
2503 tirion->HandleEmoteCommand(EMOTE_ONESHOT_ROAR);
2504 }
2505 break;
2508 tirion->AI()->Talk(SAY_LIGHT_OF_DAWN54);
2509 break;
2512 lk->AI()->Talk(SAY_LIGHT_OF_DAWN55);
2513 break;
2516 tirion->AI()->Talk(SAY_LIGHT_OF_DAWN56);
2517 break;
2520 {
2521 tirion->CastSpell(tirion, SPELL_TIRION_CHARGE, true);
2522 tirion->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
2523 tirion->SetImmuneToAll(true);
2524 }
2525 break;
2528 lk->AI()->Talk(SAY_LIGHT_OF_DAWN57);
2529 break;
2532 lk->AI()->Talk(SAY_LIGHT_OF_DAWN58);
2533 break;
2536 lk->AI()->Talk(SAY_LIGHT_OF_DAWN59);
2537 break;
2540 {
2541 lk->CastSpell(lk, SPELL_EXIT_TELEPORT_VISUAL, true);
2542 lk->DespawnOrUnsummon(1500ms);
2543 }
2544
2546 {
2547 float o = me->GetAngle(tirion);
2548 tirion->GetMotionMaster()->MovePoint(4, me->GetPositionX() + 2.0f * cos(o), me->GetPositionY() + 2.0f * std::sin(o), me->GetPositionZ(), FORCED_MOVEMENT_NONE, 0.f, 0.f, false);
2549 tirion->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
2550 tirion->SetFaction(FACTION_FRIENDLY);
2551 }
2552 break;
2555 tirion->CastSpell(me, SPELL_LAY_ON_HANDS, false);
2557 break;
2560 {
2561 tirion->AI()->Talk(SAY_LIGHT_OF_DAWN60);
2562 tirion->SetWalk(true);
2563 }
2564 break;
2567 tirion->GetMotionMaster()->MovePoint(4, LightOfDawnOutroPos[OUTRO_POINT_TIRION_2]);
2568 break;
2571 tirion->GetMotionMaster()->MovePoint(4, LightOfDawnOutroPos[OUTRO_POINT_TIRION_3]);
2572 break;
2575 {
2576 tirion->SetFacingToObject(me);
2577 tirion->AI()->Talk(SAY_LIGHT_OF_DAWN61);
2578 }
2579 break;
2582 tirion->AI()->Talk(SAY_LIGHT_OF_DAWN62);
2583
2584 events.Reset();
2585 events.ScheduleEvent(EVENT_OUTRO_SCENE_54, 6s);
2586 events.ScheduleEvent(EVENT_OUTRO_SCENE_55, 14s);
2587 events.ScheduleEvent(EVENT_OUTRO_SCENE_56, 27s);
2588 events.ScheduleEvent(EVENT_OUTRO_SCENE_57, 37s);
2589 events.ScheduleEvent(EVENT_OUTRO_SCENE_58, 44s);
2590 events.ScheduleEvent(EVENT_OUTRO_SCENE_59, 50s);
2591 events.ScheduleEvent(EVENT_OUTRO_SCENE_60, 63s);
2592 events.ScheduleEvent(EVENT_OUTRO_SCENE_61, 150s);
2593 break;
2596 tirion->AI()->Talk(SAY_LIGHT_OF_DAWN63);
2597 break;
2600 tirion->AI()->Talk(SAY_LIGHT_OF_DAWN64);
2601 break;
2604 tirion->AI()->Talk(SAY_LIGHT_OF_DAWN65);
2605 break;
2608 tirion->AI()->Talk(SAY_LIGHT_OF_DAWN66);
2609 break;
2612 tirion->AI()->Talk(SAY_LIGHT_OF_DAWN67);
2613 break;
2617 break;
2619 {
2620 Map::PlayerList const& PlayerList = me->GetMap()->GetPlayers();
2621 if (!PlayerList.IsEmpty())
2622 {
2623 for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
2624 if (i->GetSource()->IsAlive() && me->IsWithinDistInMap(i->GetSource(), 100))
2625 i->GetSource()->CastSpell(i->GetSource(), SPELL_THE_LIGHT_OF_DAWN_Q, false);
2626 }
2628 break;
2629 }
2632 me->DespawnOrUnsummon(1ms);
2633 events.Reset();
2634 return;
2635 }
2636
2638 return;
2639
2640 // Darion is a boss mob: the core only lets him attack within the leash radius of his home position,
2641 // and he never returns home during the battle
2642 if (armyReleased)
2644
2645 if (!UpdateVictim())
2646 {
2647 // The event is already consumed and only JustEngagedWith schedules it, so retry it
2648 switch (eventId)
2649 {
2655 events.RescheduleEvent(eventId, 1s);
2656 break;
2657 default:
2658 break;
2659 }
2660 return;
2661 }
2662
2663 switch (eventId)
2664 {
2667 events.RescheduleEvent(eventId, 30s, 45s);
2668 break;
2671 events.RescheduleEvent(eventId, 5s, 35s);
2672 break;
2675 events.RescheduleEvent(eventId, 45s, 60s);
2676 break;
2679 events.RescheduleEvent(eventId, 60s);
2680 break;
2684 events.RescheduleEvent(eventId, 15s, 25s);
2685 break;
2686 }
2687
2689 }
@ EQUIP_UNEQUIP
Definition CreatureAI.h:65
@ FORCED_MOVEMENT_NONE
Definition MotionMaster.h:86
@ TEMPSUMMON_MANUAL_DESPAWN
Definition Object.h:57
@ EMOTE_ONESHOT_LAUGH
Definition SharedDefines.h:1907
@ EMOTE_ONESHOT_ROAR
Definition SharedDefines.h:1911
@ EMOTE_STATE_READY2H
Definition SharedDefines.h:1974
@ EMOTE_ONESHOT_NONE
Definition SharedDefines.h:1898
@ FACTION_FRIENDLY
Definition SharedDefines.h:189
@ UNIT_STAND_STATE_DEAD
Definition UnitDefines.h:42
@ UNIT_STAND_STATE_KNEEL
Definition UnitDefines.h:43
@ UNIT_NPC_FLAG_NONE
Definition UnitDefines.h:321
@ UNIT_FLAG_NOT_SELECTABLE
Definition UnitDefines.h:282
@ UNIT_VIRTUAL_ITEM_SLOT_ID
Definition UpdateFields.h:116
#define sWaypointMgr
Definition WaypointMgr.h:54
bool UpdateVictim()
Definition CreatureAI.cpp:350
void SetHomePosition(float x, float y, float z, float o)
Definition Creature.h:347
void DespawnOrUnsummon(Milliseconds msTimeToDespawn=0ms, Seconds forcedRespawnTimer=0s)
Definition Creature.cpp:2221
void Clear(bool reset=true)
Definition MotionMaster.h:194
void DespawnEntry(uint32 entry)
Definition ScriptedCreature.cpp:55
void DoAction(int32 info, uint16 max=0)
Definition ScriptedCreature.h:113
void ClearAllThreat()
Definition ThreatManager.cpp:617
void DoMeleeAttackIfReady()
Definition UnitAI.cpp:41
SpellCastResult DoCastVictim(uint32 spellId, bool triggered=false)
Definition UnitAI.cpp:274
SpellCastResult DoCastSelf(uint32 spellId, bool triggered=false)
Definition UnitAI.h:399
SpellCastResult DoCast(uint32 spellId)
Definition UnitAI.cpp:175
void SetFacingToObject(WorldObject *object, Milliseconds timed=0ms)
Definition Unit.cpp:16167
void SetFacingTo(float ori)
Definition Unit.cpp:16157
static void Kill(Unit *killer, Unit *victim, bool durabilityLoss=true, WeaponAttackType attackType=BASE_ATTACK, SpellInfo const *spellProto=nullptr, Spell const *spell=nullptr)
Definition Unit.cpp:13651
void CombatStop(bool includingCast=false, bool mutualPvP=true, bool keepPvPForOthers=false)
Definition Unit.cpp:7303
ThreatManager & GetThreatMgr()
Definition Unit.h:965
void RemoveAllAuras()
Definition Unit.cpp:5393
void NearTeleportTo(Position &pos, bool casting=false, bool vehicleTeleport=false, bool withPet=false, bool removeTransport=false)
Definition Unit.cpp:15650
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true, bool incOwnRadius=true, bool incTargetRadius=true) const
Definition Object.cpp:1386
std::vector< Vector3 > PointsArray
Definition MoveSplineInitArgs.h:28
float GetAngle(Position const *pos) const
Definition Position.cpp:85
void GetPosition(float &x, float &y) const
Definition Position.h:126
Definition WaypointDefines.h:37
Definition WaypointDefines.h:60
Creature * GetEntryFromSummons(uint32 entry)
Definition zone_the_scarlet_enclave.cpp:1968
void ChargeToOutroPoint(Creature *unit, LightOfDawnOutroPoints point)
Definition zone_the_scarlet_enclave.cpp:1985
@ GO_LIGHT_OF_DAWN
Definition zone_the_scarlet_enclave.cpp:1547
@ SPELL_TIRION_CHARGE
Definition zone_the_scarlet_enclave.cpp:1577
@ SPELL_DEATH_EMBRACE
Definition zone_the_scarlet_enclave.cpp:1561
@ SPELL_MOGRAINE_CHARGE
Definition zone_the_scarlet_enclave.cpp:1571
@ SPELL_DEATH_STRIKE
Definition zone_the_scarlet_enclave.cpp:1560
@ SPELL_THE_MIGHT_OF_MOGRAINE
Definition zone_the_scarlet_enclave.cpp:1555
@ SPELL_DARION_MOD_DAMAGE
Definition zone_the_scarlet_enclave.cpp:1564
@ SPELL_SOUL_FEAST_TIRION
Definition zone_the_scarlet_enclave.cpp:1573
@ SPELL_UNHOLY_BLIGHT
Definition zone_the_scarlet_enclave.cpp:1563
@ SPELL_ICEBOUND_VISAGE
Definition zone_the_scarlet_enclave.cpp:1569
@ SPELL_EXIT_TELEPORT_VISUAL
Definition zone_the_scarlet_enclave.cpp:1578
@ SPELL_CAMERA_SHAKE_INIT
Definition zone_the_scarlet_enclave.cpp:1553
@ SPELL_APOCALYPSE
Definition zone_the_scarlet_enclave.cpp:1574
@ SPELL_ANTI_MAGIC_ZONE1
Definition zone_the_scarlet_enclave.cpp:1559
@ SPELL_CAMERA_SHAKE
Definition zone_the_scarlet_enclave.cpp:1554
@ SPELL_LAY_ON_HANDS
Definition zone_the_scarlet_enclave.cpp:1579
@ SPELL_THROW_ASHBRINGER
Definition zone_the_scarlet_enclave.cpp:1575
@ SPELL_SOUL_FEAST_ALEX
Definition zone_the_scarlet_enclave.cpp:1570
@ SPELL_REBIRTH_OF_THE_ASHBRINGER
Definition zone_the_scarlet_enclave.cpp:1576
@ SPELL_THE_LIGHT_OF_DAWN_Q
Definition zone_the_scarlet_enclave.cpp:1580
@ SPELL_ALEXANDROS_MOGRAINE_SPAWN
Definition zone_the_scarlet_enclave.cpp:1568
@ SPELL_REBUKE
Definition zone_the_scarlet_enclave.cpp:1572
@ OUTRO_POINT_TIRION_2
Definition zone_the_scarlet_enclave.cpp:1511
@ OUTRO_POINT_ORBAZ_FLEE
Definition zone_the_scarlet_enclave.cpp:1503
@ OUTRO_POINT_ALEXANDROS
Definition zone_the_scarlet_enclave.cpp:1507
@ OUTRO_POINT_TIRION_3
Definition zone_the_scarlet_enclave.cpp:1512
@ OUTRO_POINT_KOLTIRA
Definition zone_the_scarlet_enclave.cpp:1504
@ OUTRO_POINT_DARION
Definition zone_the_scarlet_enclave.cpp:1506
@ OUTRO_POINT_LICH_KING
Definition zone_the_scarlet_enclave.cpp:1510
@ OUTRO_POINT_DARION_GHOST
Definition zone_the_scarlet_enclave.cpp:1508
@ OUTRO_POINT_TIRION_1
Definition zone_the_scarlet_enclave.cpp:1509
@ OUTRO_POINT_THASSARIAN
Definition zone_the_scarlet_enclave.cpp:1505
static void LightOfDawnAppendNode(Movement::PointsArray &path, Position const &node)
Definition zone_the_scarlet_enclave.cpp:1625
@ EVENT_OUTRO_SCENE_38
Definition zone_the_scarlet_enclave.cpp:1435
@ EVENT_OUTRO_SCENE_23
Definition zone_the_scarlet_enclave.cpp:1420
@ EVENT_OUTRO_SCENE_25
Definition zone_the_scarlet_enclave.cpp:1422
@ EVENT_OUTRO_SCENE_30
Definition zone_the_scarlet_enclave.cpp:1427
@ EVENT_OUTRO_SCENE_32
Definition zone_the_scarlet_enclave.cpp:1429
@ EVENT_OUTRO_SCENE_60
Definition zone_the_scarlet_enclave.cpp:1457
@ EVENT_OUTRO_SCENE_35
Definition zone_the_scarlet_enclave.cpp:1432
@ EVENT_OUTRO_SCENE_55
Definition zone_the_scarlet_enclave.cpp:1452
@ EVENT_OUTRO_SCENE_24
Definition zone_the_scarlet_enclave.cpp:1421
@ EVENT_OUTRO_SCENE_61
Definition zone_the_scarlet_enclave.cpp:1458
@ EVENT_OUTRO_SCENE_59
Definition zone_the_scarlet_enclave.cpp:1456
@ EVENT_OUTRO_SCENE_40
Definition zone_the_scarlet_enclave.cpp:1437
@ EVENT_OUTRO_SCENE_51
Definition zone_the_scarlet_enclave.cpp:1448
@ EVENT_OUTRO_SCENE_36
Definition zone_the_scarlet_enclave.cpp:1433
@ EVENT_OUTRO_SCENE_21
Definition zone_the_scarlet_enclave.cpp:1418
@ EVENT_OUTRO_SCENE_48
Definition zone_the_scarlet_enclave.cpp:1445
@ EVENT_OUTRO_SCENE_34
Definition zone_the_scarlet_enclave.cpp:1431
@ EVENT_OUTRO_SCENE_29
Definition zone_the_scarlet_enclave.cpp:1426
@ EVENT_OUTRO_SCENE_33
Definition zone_the_scarlet_enclave.cpp:1430
@ EVENT_OUTRO_SCENE_57
Definition zone_the_scarlet_enclave.cpp:1454
@ EVENT_OUTRO_SCENE_43
Definition zone_the_scarlet_enclave.cpp:1440
@ ACTION_POSITION_NPCS
Definition zone_the_scarlet_enclave.cpp:1462
@ EVENT_OUTRO_SCENE_47
Definition zone_the_scarlet_enclave.cpp:1444
@ EVENT_OUTRO_SCENE_31
Definition zone_the_scarlet_enclave.cpp:1428
@ EVENT_OUTRO_SCENE_58
Definition zone_the_scarlet_enclave.cpp:1455
@ EVENT_OUTRO_SCENE_46
Definition zone_the_scarlet_enclave.cpp:1443
@ EVENT_OUTRO_SCENE_52
Definition zone_the_scarlet_enclave.cpp:1449
@ EVENT_OUTRO_SCENE_20
Definition zone_the_scarlet_enclave.cpp:1417
@ EVENT_OUTRO_SCENE_26
Definition zone_the_scarlet_enclave.cpp:1423
@ ACTION_PLAY_EMOTE
Definition zone_the_scarlet_enclave.cpp:1461
@ EVENT_OUTRO_SCENE_22
Definition zone_the_scarlet_enclave.cpp:1419
@ EVENT_OUTRO_SCENE_37
Definition zone_the_scarlet_enclave.cpp:1434
@ EVENT_OUTRO_SCENE_56
Definition zone_the_scarlet_enclave.cpp:1453
@ EVENT_OUTRO_SCENE_45
Definition zone_the_scarlet_enclave.cpp:1442
@ EVENT_OUTRO_SCENE_54
Definition zone_the_scarlet_enclave.cpp:1451
@ EVENT_OUTRO_SCENE_44
Definition zone_the_scarlet_enclave.cpp:1441
@ EVENT_OUTRO_SCENE_49
Definition zone_the_scarlet_enclave.cpp:1446
@ EVENT_OUTRO_SCENE_53
Definition zone_the_scarlet_enclave.cpp:1450
@ EVENT_OUTRO_SCENE_27
Definition zone_the_scarlet_enclave.cpp:1424
@ EVENT_OUTRO_SCENE_28
Definition zone_the_scarlet_enclave.cpp:1425
@ EVENT_OUTRO_SCENE_42
Definition zone_the_scarlet_enclave.cpp:1439
@ EVENT_OUTRO_SCENE_41
Definition zone_the_scarlet_enclave.cpp:1438
@ EVENT_OUTRO_SCENE_39
Definition zone_the_scarlet_enclave.cpp:1436
@ EVENT_OUTRO_SCENE_50
Definition zone_the_scarlet_enclave.cpp:1447
@ SAY_LIGHT_OF_DAWN27
Definition zone_the_scarlet_enclave.cpp:1302
@ SAY_LIGHT_OF_DAWN59
Definition zone_the_scarlet_enclave.cpp:1334
@ SAY_LIGHT_OF_DAWN53
Definition zone_the_scarlet_enclave.cpp:1328
@ SAY_LIGHT_OF_DAWN38
Definition zone_the_scarlet_enclave.cpp:1313
@ SAY_LIGHT_OF_DAWN49
Definition zone_the_scarlet_enclave.cpp:1324
@ SAY_LIGHT_OF_DAWN32
Definition zone_the_scarlet_enclave.cpp:1307
@ SAY_LIGHT_OF_DAWN52
Definition zone_the_scarlet_enclave.cpp:1327
@ SAY_LIGHT_OF_DAWN37
Definition zone_the_scarlet_enclave.cpp:1312
@ SAY_LIGHT_OF_DAWN09
Definition zone_the_scarlet_enclave.cpp:1299
@ SAY_LIGHT_OF_DAWN42
Definition zone_the_scarlet_enclave.cpp:1317
@ SAY_LIGHT_OF_DAWN02
Definition zone_the_scarlet_enclave.cpp:1292
@ SAY_LIGHT_OF_DAWN04
Definition zone_the_scarlet_enclave.cpp:1294
@ SAY_LIGHT_OF_DAWN67
Definition zone_the_scarlet_enclave.cpp:1342
@ EMOTE_LIGHT_OF_DAWN08
Definition zone_the_scarlet_enclave.cpp:1352
@ SAY_LIGHT_OF_DAWN29
Definition zone_the_scarlet_enclave.cpp:1304
@ SAY_LIGHT_OF_DAWN56
Definition zone_the_scarlet_enclave.cpp:1331
@ SAY_LIGHT_OF_DAWN61
Definition zone_the_scarlet_enclave.cpp:1336
@ SAY_LIGHT_OF_DAWN47
Definition zone_the_scarlet_enclave.cpp:1322
@ SAY_LIGHT_OF_DAWN54
Definition zone_the_scarlet_enclave.cpp:1329
@ SAY_LIGHT_OF_DAWN26
Definition zone_the_scarlet_enclave.cpp:1301
@ SAY_LIGHT_OF_DAWN06
Definition zone_the_scarlet_enclave.cpp:1296
@ SAY_LIGHT_OF_DAWN41
Definition zone_the_scarlet_enclave.cpp:1316
@ SAY_LIGHT_OF_DAWN68
Definition zone_the_scarlet_enclave.cpp:1343
@ SAY_LIGHT_OF_DAWN31
Definition zone_the_scarlet_enclave.cpp:1306
@ SAY_LIGHT_OF_DAWN64
Definition zone_the_scarlet_enclave.cpp:1339
@ SAY_LIGHT_OF_DAWN58
Definition zone_the_scarlet_enclave.cpp:1333
@ SAY_LIGHT_OF_DAWN44
Definition zone_the_scarlet_enclave.cpp:1319
@ SAY_LIGHT_OF_DAWN46
Definition zone_the_scarlet_enclave.cpp:1321
@ EMOTE_LIGHT_OF_DAWN04
Definition zone_the_scarlet_enclave.cpp:1348
@ SAY_LIGHT_OF_DAWN35
Definition zone_the_scarlet_enclave.cpp:1310
@ SAY_LIGHT_OF_DAWN62
Definition zone_the_scarlet_enclave.cpp:1337
@ SAY_LIGHT_OF_DAWN65
Definition zone_the_scarlet_enclave.cpp:1340
@ SAY_LIGHT_OF_DAWN28
Definition zone_the_scarlet_enclave.cpp:1303
@ SAY_LIGHT_OF_DAWN34
Definition zone_the_scarlet_enclave.cpp:1309
@ SAY_LIGHT_OF_DAWN33
Definition zone_the_scarlet_enclave.cpp:1308
@ SAY_LIGHT_OF_DAWN40
Definition zone_the_scarlet_enclave.cpp:1315
@ SAY_LIGHT_OF_DAWN55
Definition zone_the_scarlet_enclave.cpp:1330
@ SAY_LIGHT_OF_DAWN30
Definition zone_the_scarlet_enclave.cpp:1305
@ SAY_LIGHT_OF_DAWN45
Definition zone_the_scarlet_enclave.cpp:1320
@ SAY_LIGHT_OF_DAWN57
Definition zone_the_scarlet_enclave.cpp:1332
@ SAY_LIGHT_OF_DAWN43
Definition zone_the_scarlet_enclave.cpp:1318
@ SAY_LIGHT_OF_DAWN36
Definition zone_the_scarlet_enclave.cpp:1311
@ SAY_LIGHT_OF_DAWN48
Definition zone_the_scarlet_enclave.cpp:1323
@ EMOTE_LIGHT_OF_DAWN12
Definition zone_the_scarlet_enclave.cpp:1356
@ SAY_LIGHT_OF_DAWN60
Definition zone_the_scarlet_enclave.cpp:1335
@ SAY_LIGHT_OF_DAWN39
Definition zone_the_scarlet_enclave.cpp:1314
@ SAY_LIGHT_OF_DAWN51
Definition zone_the_scarlet_enclave.cpp:1326
@ SAY_LIGHT_OF_DAWN05
Definition zone_the_scarlet_enclave.cpp:1295
@ SAY_LIGHT_OF_DAWN66
Definition zone_the_scarlet_enclave.cpp:1341
@ SAY_LIGHT_OF_DAWN63
Definition zone_the_scarlet_enclave.cpp:1338
static void LightOfDawnStartMarch(Creature *unit, Movement::PointsArray &path)
Definition zone_the_scarlet_enclave.cpp:1631
@ PATH_DARION_MARCH
Definition zone_the_scarlet_enclave.cpp:1494
@ NPC_THE_LICH_KING
Definition zone_the_scarlet_enclave.cpp:1542
@ NPC_DARION_MOGRAINE
Definition zone_the_scarlet_enclave.cpp:1541
@ NPC_RIMBLAT_EARTHSHATTER
Definition zone_the_scarlet_enclave.cpp:1525
@ NPC_HIGHLORD_ALEXANDROS_MOGRAINE
Definition zone_the_scarlet_enclave.cpp:1540
static void LightOfDawnScheduleMarch(Creature *unit, Milliseconds maxDelay)
Definition zone_the_scarlet_enclave.cpp:1683
@ SUMMON_GROUP_LICH_KING
Definition zone_the_scarlet_enclave.cpp:1486
@ SUMMON_GROUP_DEFENDERS
Definition zone_the_scarlet_enclave.cpp:1479
@ SUMMON_GROUP_DARION_GHOST
Definition zone_the_scarlet_enclave.cpp:1485
@ SUMMON_GROUP_SCOURGE_WAVE_1
Definition zone_the_scarlet_enclave.cpp:1477
@ SUMMON_GROUP_OUTRO_DEFENDERS
Definition zone_the_scarlet_enclave.cpp:1482
@ SUMMON_GROUP_ALEXANDROS
Definition zone_the_scarlet_enclave.cpp:1484
static void LightOfDawnMarchBehemoth(Creature *behemoth)
Definition zone_the_scarlet_enclave.cpp:1692

References ACTION_PLAY_EMOTE, ACTION_POSITION_NPCS, armyReleased, battleStarted, SummonList::begin(), MapRefMgr::begin(), Unit::CastSpell(), ChargeToOutroPoint(), MotionMaster::Clear(), ThreatManager::ClearAllThreat(), Unit::CombatStop(), SummonList::DespawnAll(), SummonList::DespawnEntry(), Creature::DespawnOrUnsummon(), SummonList::DoAction(), UnitAI::DoCast(), UnitAI::DoCastSelf(), UnitAI::DoCastVictim(), UnitAI::DoMeleeAttackIfReady(), EMOTE_LIGHT_OF_DAWN04, EMOTE_LIGHT_OF_DAWN08, EMOTE_LIGHT_OF_DAWN12, EMOTE_ONESHOT_LAUGH, EMOTE_ONESHOT_NONE, EMOTE_ONESHOT_ROAR, EMOTE_STATE_READY2H, ENCOUNTER_STATE_FIGHT, ENCOUNTER_STATE_OUTRO, SummonList::end(), MapRefMgr::end(), EQUIP_UNEQUIP, EVENT_FINISH_FIGHT_1, EVENT_FINISH_FIGHT_2, EVENT_FINISH_FIGHT_3, EVENT_FINISH_FIGHT_4, EVENT_FINISH_FIGHT_5, EVENT_MARCH_BEHEMOTHS_KOLTIRA, EVENT_MARCH_DARION, EVENT_MARCH_ORBAZ_THASSARIAN, EVENT_OUTRO_SCENE_1, EVENT_OUTRO_SCENE_10, EVENT_OUTRO_SCENE_11, EVENT_OUTRO_SCENE_12, EVENT_OUTRO_SCENE_13, EVENT_OUTRO_SCENE_14, EVENT_OUTRO_SCENE_15, EVENT_OUTRO_SCENE_16, EVENT_OUTRO_SCENE_17, EVENT_OUTRO_SCENE_18, EVENT_OUTRO_SCENE_19, EVENT_OUTRO_SCENE_2, EVENT_OUTRO_SCENE_20, EVENT_OUTRO_SCENE_21, EVENT_OUTRO_SCENE_22, EVENT_OUTRO_SCENE_23, EVENT_OUTRO_SCENE_24, EVENT_OUTRO_SCENE_25, EVENT_OUTRO_SCENE_26, EVENT_OUTRO_SCENE_27, EVENT_OUTRO_SCENE_28, EVENT_OUTRO_SCENE_29, EVENT_OUTRO_SCENE_3, EVENT_OUTRO_SCENE_30, EVENT_OUTRO_SCENE_31, EVENT_OUTRO_SCENE_32, EVENT_OUTRO_SCENE_33, EVENT_OUTRO_SCENE_34, EVENT_OUTRO_SCENE_35, EVENT_OUTRO_SCENE_36, EVENT_OUTRO_SCENE_37, EVENT_OUTRO_SCENE_38, EVENT_OUTRO_SCENE_39, EVENT_OUTRO_SCENE_4, EVENT_OUTRO_SCENE_40, EVENT_OUTRO_SCENE_41, EVENT_OUTRO_SCENE_42, EVENT_OUTRO_SCENE_43, EVENT_OUTRO_SCENE_44, EVENT_OUTRO_SCENE_45, EVENT_OUTRO_SCENE_46, EVENT_OUTRO_SCENE_47, EVENT_OUTRO_SCENE_48, EVENT_OUTRO_SCENE_49, EVENT_OUTRO_SCENE_5, EVENT_OUTRO_SCENE_50, EVENT_OUTRO_SCENE_51, EVENT_OUTRO_SCENE_52, EVENT_OUTRO_SCENE_53, EVENT_OUTRO_SCENE_54, EVENT_OUTRO_SCENE_55, EVENT_OUTRO_SCENE_56, EVENT_OUTRO_SCENE_57, EVENT_OUTRO_SCENE_58, EVENT_OUTRO_SCENE_59, EVENT_OUTRO_SCENE_6, EVENT_OUTRO_SCENE_60, EVENT_OUTRO_SCENE_61, EVENT_OUTRO_SCENE_7, EVENT_OUTRO_SCENE_8, EVENT_OUTRO_SCENE_9, EVENT_SPELL_ANTI_MAGIC_ZONE, EVENT_SPELL_DARION_MOD_DAMAGE, EVENT_SPELL_DEATH_EMBRACE, EVENT_SPELL_DEATH_STRIKE, EVENT_SPELL_UNHOLY_BLIGHT, EVENT_START_COUNTDOWN_1, EVENT_START_COUNTDOWN_10, EVENT_START_COUNTDOWN_11, EVENT_START_COUNTDOWN_12, EVENT_START_COUNTDOWN_13, EVENT_START_COUNTDOWN_14, EVENT_START_COUNTDOWN_2, EVENT_START_COUNTDOWN_3, EVENT_START_COUNTDOWN_4, EVENT_START_COUNTDOWN_5, EVENT_START_COUNTDOWN_6, EVENT_START_COUNTDOWN_7, EVENT_START_COUNTDOWN_8, EVENT_START_COUNTDOWN_9, FACTION_FRIENDLY, FORCED_MOVEMENT_NONE, Position::GetAngle(), ObjectAccessor::GetCreature(), GetEntryFromSummons(), WorldObject::GetMap(), Unit::GetMotionMaster(), Map::GetPlayers(), Position::GetPosition(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), Unit::GetThreatMgr(), GO_LIGHT_OF_DAWN, LinkedListHead::IsEmpty(), WorldObject::IsWithinDistInMap(), Unit::Kill(), LightOfDawnAppendNode(), LightOfDawnChargePos, LightOfDawnMarchBehemoth(), LightOfDawnMarchTo(), LightOfDawnOutroPos, LightOfDawnScheduleMarch(), LightOfDawnStartMarch(), ScriptedAI::me, Unit::NearTeleportTo(), NPC_ACHERUS_GHOUL, NPC_DARION_MOGRAINE, NPC_DEFENDER_OF_THE_LIGHT, NPC_FLESH_BEHEMOTH, NPC_HIGHLORD_ALEXANDROS_MOGRAINE, NPC_HIGHLORD_TIRION_FORDRING, NPC_KOLTIRA_DEATHWEAVER, NPC_ORBAZ_BLOODBANE, NPC_RAMPAGING_ABOMINATION, NPC_RIMBLAT_EARTHSHATTER, NPC_THASSARIAN, NPC_THE_LICH_KING, NPC_WARRIOR_OF_THE_FROZEN_WASTES, OUTRO_POINT_ALEXANDROS, OUTRO_POINT_DARION, OUTRO_POINT_DARION_GHOST, OUTRO_POINT_KOLTIRA, OUTRO_POINT_LICH_KING, OUTRO_POINT_ORBAZ_FLEE, OUTRO_POINT_THASSARIAN, OUTRO_POINT_TIRION_1, OUTRO_POINT_TIRION_2, OUTRO_POINT_TIRION_3, PATH_DARION_MARCH, REACT_PASSIVE, Unit::RemoveAllAuras(), Unit::ReplaceAllNpcFlags(), SAY_LIGHT_OF_DAWN02, SAY_LIGHT_OF_DAWN04, SAY_LIGHT_OF_DAWN05, SAY_LIGHT_OF_DAWN06, SAY_LIGHT_OF_DAWN09, SAY_LIGHT_OF_DAWN26, SAY_LIGHT_OF_DAWN27, SAY_LIGHT_OF_DAWN28, SAY_LIGHT_OF_DAWN29, SAY_LIGHT_OF_DAWN30, SAY_LIGHT_OF_DAWN31, SAY_LIGHT_OF_DAWN32, SAY_LIGHT_OF_DAWN33, SAY_LIGHT_OF_DAWN34, SAY_LIGHT_OF_DAWN35, SAY_LIGHT_OF_DAWN36, SAY_LIGHT_OF_DAWN37, SAY_LIGHT_OF_DAWN38, SAY_LIGHT_OF_DAWN39, SAY_LIGHT_OF_DAWN40, SAY_LIGHT_OF_DAWN41, SAY_LIGHT_OF_DAWN42, SAY_LIGHT_OF_DAWN43, SAY_LIGHT_OF_DAWN44, SAY_LIGHT_OF_DAWN45, SAY_LIGHT_OF_DAWN46, SAY_LIGHT_OF_DAWN47, SAY_LIGHT_OF_DAWN48, SAY_LIGHT_OF_DAWN49, SAY_LIGHT_OF_DAWN51, SAY_LIGHT_OF_DAWN52, SAY_LIGHT_OF_DAWN53, SAY_LIGHT_OF_DAWN54, SAY_LIGHT_OF_DAWN55, SAY_LIGHT_OF_DAWN56, SAY_LIGHT_OF_DAWN57, SAY_LIGHT_OF_DAWN58, SAY_LIGHT_OF_DAWN59, SAY_LIGHT_OF_DAWN60, SAY_LIGHT_OF_DAWN61, SAY_LIGHT_OF_DAWN62, SAY_LIGHT_OF_DAWN63, SAY_LIGHT_OF_DAWN64, SAY_LIGHT_OF_DAWN65, SAY_LIGHT_OF_DAWN66, SAY_LIGHT_OF_DAWN67, SAY_LIGHT_OF_DAWN68, Acore::Containers::SelectRandomContainerElement(), SendUpdateWorldState(), Unit::SetFacingTo(), Unit::SetFacingToObject(), Creature::SetHomePosition(), Unit::SetImmuneToAll(), Creature::SetReactState(), Unit::SetStandState(), Unit::SetUInt32Value(), Creature::SetWalk(), SPELL_ALEXANDROS_MOGRAINE_SPAWN, SPELL_ANTI_MAGIC_ZONE1, SPELL_APOCALYPSE, SPELL_CAMERA_SHAKE, SPELL_CAMERA_SHAKE_INIT, SPELL_DARION_MOD_DAMAGE, SPELL_DEATH_EMBRACE, SPELL_DEATH_STRIKE, SPELL_EXIT_TELEPORT_VISUAL, SPELL_ICEBOUND_VISAGE, SPELL_LAY_ON_HANDS, SPELL_MOGRAINE_CHARGE, SPELL_REBIRTH_OF_THE_ASHBRINGER, SPELL_REBUKE, SPELL_SOUL_FEAST_ALEX, SPELL_SOUL_FEAST_TIRION, SPELL_THE_LIGHT_OF_DAWN, SPELL_THE_LIGHT_OF_DAWN_Q, SPELL_THE_MIGHT_OF_MOGRAINE, SPELL_THROW_ASHBRINGER, SPELL_TIRION_CHARGE, SPELL_UNHOLY_BLIGHT, SUMMON_GROUP_ALEXANDROS, SUMMON_GROUP_DARION_GHOST, SUMMON_GROUP_DEFENDERS, SUMMON_GROUP_LICH_KING, SUMMON_GROUP_OUTRO_DEFENDERS, SUMMON_GROUP_SCOURGE_WAVE_1, WorldObject::SummonCreatureGroup(), summons, SummonSingle(), sWaypointMgr, TEMPSUMMON_MANUAL_DESPAWN, UNIT_FLAG_NON_ATTACKABLE, UNIT_FLAG_NOT_SELECTABLE, UNIT_NPC_EMOTESTATE, UNIT_NPC_FLAG_GOSSIP, UNIT_NPC_FLAG_NONE, UNIT_NPC_FLAG_QUESTGIVER, UNIT_STAND_STATE_DEAD, UNIT_STAND_STATE_KNEEL, UNIT_STAND_STATE_STAND, UNIT_VIRTUAL_ITEM_SLOT_ID, CreatureAI::UpdateVictim(), WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_COUNTDOWN_ENABLE, WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_COUNTDOWN_TIME, and WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_EVENT_BEGIN_ENABLE.

Member Data Documentation

◆ armyReleased

bool npc_highlord_darion_mograine::armyReleased

◆ battleStarted

◆ defendersRemaining

uint32 npc_highlord_darion_mograine::defendersRemaining

◆ events

EventMap npc_highlord_darion_mograine::events

◆ resetExecuted

bool npc_highlord_darion_mograine::resetExecuted

◆ scourgeRemaining

uint32 npc_highlord_darion_mograine::scourgeRemaining

◆ startTimeRemaining

uint32 npc_highlord_darion_mograine::startTimeRemaining

Referenced by DoAction(), GetData(), and JustRespawned().

◆ summons

SummonList npc_highlord_darion_mograine::summons

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