TrinityCore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
npc_highlord_darion_mograine::npc_highlord_darion_mograineAI Struct Reference

Public Member Functions

 npc_highlord_darion_mograineAI (Creature *creature)
 
void Reset () override
 
void AttackStart (Unit *who) override
 
void MoveInLineOfSight (Unit *who) override
 
void SetHoldState (bool bOnHold)
 
void WaypointReached (uint32 waypointId) override
 
void EnterEvadeMode (EvadeReason why) override
 
void UpdateAI (uint32 diff) override
 
void JumpToNextStep (uint32 uiTimer)
 
void NPCChangeTarget (ObjectGuid ui_GUID)
 
void SpawnNPC ()
 
void DespawnNPC (ObjectGuid pGUID)
 
- Public Member Functions inherited from npc_escortAI
 npc_escortAI (Creature *creature)
 
 ~npc_escortAI ()
 
void JustDied (Unit *) override
 
void JustRespawned () override
 
void ReturnToLastPoint ()
 
virtual void UpdateEscortAI (uint32 diff)
 
void MovementInform (uint32, uint32) override
 
void AddWaypoint (uint32 id, float x, float y, float z, uint32 waitTime=0)
 
bool SetNextWaypoint (uint32 pointId, float x, float y, float z, float orientation)
 
bool SetNextWaypoint (uint32 pointId, bool setPosition=true, bool resetWaypointsOnFail=true)
 
bool GetWaypointPosition (uint32 pointId, float &x, float &y, float &z)
 
virtual void WaypointStart (uint32)
 
void Start (bool isActiveAttacker=true, bool run=false, ObjectGuid playerGUID=ObjectGuid::Empty, Quest const *quest=NULL, bool instantRespawn=false, bool canLoopPath=false, bool resetWaypoints=true)
 
void SetRun (bool on=true)
 
void SetEscortPaused (bool on)
 
bool HasEscortState (uint32 escortState)
 
virtual bool IsEscorted () const override
 
void SetMaxPlayerDistance (float newMax)
 
float GetMaxPlayerDistance () const
 
void SetDespawnAtEnd (bool despawn)
 
void SetDespawnAtFar (bool despawn)
 
bool GetAttack () const
 
void SetCanAttack (bool attack)
 
ObjectGuid GetEventStarterGUID () const
 
- Public Member Functions inherited from ScriptedAI
 ScriptedAI (Creature *creature)
 
virtual ~ScriptedAI ()
 
void AttackStartNoMove (Unit *target)
 
void DamageTaken (Unit *, uint32 &) 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 OnPossess (bool)
 
void EnterCombat (Unit *) override
 
void DoStartMovement (Unit *target, float distance=0.0f, float angle=0.0f)
 
void DoStartNoMovement (Unit *target)
 
void DoStopAttack ()
 
void DoCastSpell (Unit *target, SpellInfo const *spellInfo, bool triggered=false)
 
void DoPlaySoundToSet (WorldObject *source, uint32 soundId)
 
void DoResetThreat ()
 
float DoGetThreat (Unit *unit)
 
void DoModifyThreatPercent (Unit *unit, int32 pct)
 
void DoTeleportTo (float x, float y, float z, uint32 time=0)
 
void DoTeleportTo (float const pos[4])
 
void DoTeleportPlayer (Unit *unit, float x, float y, float z, float o)
 
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 HealthBelowPct (uint32 pct) const
 
bool HealthAbovePct (uint32 pct) const
 
SpellInfo constSelectSpell (Unit *target, uint32 school, uint32 mechanic, SelectTargetType targets, 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)
 
void SetCombatMovement (bool allowMovement)
 
bool IsCombatMovementAllowed () 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
 
- Public Member Functions inherited from CreatureAI
void Talk (uint8 id, WorldObject const *whisperTarget=nullptr)
 
 CreatureAI (Creature *creature)
 
virtual ~CreatureAI ()
 
void MoveInLineOfSight_Safe (Unit *who)
 == Reactions At ================================= More...
 
void TriggerAlert (Unit const *who) const
 
virtual bool CanRespawn ()
 
virtual void IsSummonedBy (Unit *)
 
virtual void SummonedCreatureDies (Creature *, Unit *)
 
virtual void AttackedBy (Unit *)
 
void OnCharmed (bool apply) override
 
virtual void JustReachedHome ()
 
void DoZoneInCombat (Creature *creature=NULL, float maxRangeToNearestTarget=50.0f)
 
virtual void ReceiveEmote (Player *, uint32)
 
virtual void OwnerAttackedBy (Unit *)
 
virtual void OwnerAttacked (Unit *)
 
virtual void CorpseRemoved (uint32 &)
 == Triggered Actions Requested ================== More...
 
virtual void PassengerBoarded (Unit *, int8, bool)
 == Fields ======================================= More...
 
virtual void OnSpellClick (Unit *, bool &)
 
virtual bool CanSeeAlways (WorldObject const *)
 
int32 VisualizeBoundary (uint32 duration, Unit *owner=nullptr, bool fill=false) const
 
virtual bool CheckInRoom ()
 
CreatureBoundary constGetBoundary () const
 
- 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 uint32 GetData (uint32) const
 
virtual void SetData (uint32, uint32)
 
virtual void SetGUID (ObjectGuid, int32=0)
 
virtual ObjectGuid GetGUID (int32=0) const
 
UnitSelectTarget (SelectAggroTarget targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, int32 aura=0)
 
template<class PREDICATE >
UnitSelectTarget (SelectAggroTarget targetType, uint32 position, PREDICATE const &predicate)
 
void SelectTargetList (std::list< Unit * > &targetList, uint32 num, SelectAggroTarget targetType, float dist=0.0f, bool playerOnly=false, int32 aura=0)
 
template<class PREDICATE >
void SelectTargetList (std::list< Unit * > &targetList, PREDICATE const &predicate, uint32 maxTargets, SelectAggroTarget targetType)
 
virtual void DamageDealt (Unit *, uint32 &, DamageEffectType)
 
virtual void HealReceived (Unit *, uint32 &)
 
virtual void HealDone (Unit *, uint32 &)
 
virtual void SpellInterrupted (uint32, uint32)
 
void AttackStartCaster (Unit *victim, float dist)
 
void DoCast (uint32 spellId)
 
void DoCast (Unit *victim, uint32 spellId, bool triggered=false)
 
void DoCastVictim (uint32 spellId, bool triggered=false)
 
void DoCastAOE (uint32 spellId, bool triggered=false)
 
void DoMeleeAttackIfReady ()
 
bool DoSpellAttackIfReady (uint32 spellId)
 
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 sQuestReward (Player *, Quest const *, uint32)
 
virtual bool sOnDummyEffect (Unit *, uint32, SpellEffIndex)
 
virtual void sOnGameEvent (bool, uint16)
 

Public Attributes

bool bIsBattle
 
uint32 uiStep
 
uint32 uiPhase_timer
 
uint32 uiFight_duration
 
uint32 uiTotal_dawn
 
uint32 uiTotal_scourge
 
uint32 uiSummon_counter
 
uint32 uiAnti_magic_zone
 
uint32 uiDeath_strike
 
uint32 uiDeath_embrace
 
uint32 uiIcy_touch
 
uint32 uiUnholy_blight
 
uint32 uiFight_speech
 
uint32 uiSpawncheck
 
uint32 uiTargetcheck
 
ObjectGuid uiTirionGUID
 
ObjectGuid uiAlexandrosGUID
 
ObjectGuid uiDarionGUID
 
ObjectGuid uiKorfaxGUID
 
ObjectGuid uiMaxwellGUID
 
ObjectGuid uiEligorGUID
 
ObjectGuid uiRayneGUID
 
ObjectGuid uiDefenderGUID [ENCOUNTER_DEFENDER_NUMBER]
 
ObjectGuid uiEarthshatterGUID [ENCOUNTER_EARTHSHATTER_NUMBER]
 
ObjectGuid uiKoltiraGUID
 
ObjectGuid uiOrbazGUID
 
ObjectGuid uiThassarianGUID
 
ObjectGuid uiLichKingGUID
 
ObjectGuid uiAbominationGUID [ENCOUNTER_ABOMINATION_NUMBER]
 
ObjectGuid uiBehemothGUID [ENCOUNTER_BEHEMOTH_NUMBER]
 
ObjectGuid uiGhoulGUID [ENCOUNTER_GHOUL_NUMBER]
 
ObjectGuid uiWarriorGUID [ENCOUNTER_WARRIOR_NUMBER]
 
- Public Attributes inherited from ScriptedAI
bool IsFleeing
 

Additional Inherited Members

- Public Types inherited from CreatureAI
enum  EvadeReason { EVADE_REASON_NO_HOSTILES, EVADE_REASON_BOUNDARY, EVADE_REASON_SEQUENCE_BREAK, EVADE_REASON_OTHER }
 
- Static Public Member Functions inherited from UnitAI
static void FillAISpellInfo ()
 
- Static Public Attributes inherited from UnitAI
static AISpellInfoTypeAISpellInfo
 
- Protected Member Functions inherited from npc_escortAI
PlayerGetPlayerForEscort ()
 
- 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 CheckBoundary (Position const *who=nullptr) const
 
void SetBoundary (CreatureBoundary const *boundary)
 
bool _EnterEvadeMode (EvadeReason why=EVADE_REASON_OTHER)
 
- Protected Attributes inherited from CreatureAI
Creature *const me
 
CreatureBoundary const_boundary
 
- Protected Attributes inherited from UnitAI
Unit *const me
 

Constructor & Destructor Documentation

npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::npc_highlord_darion_mograineAI ( Creature creature)
inline
307  : npc_escortAI(creature)
308  {
309  Reset();
310  }
npc_escortAI(Creature *creature)
Definition: ScriptedEscortAI.cpp:37
void Reset() override
Definition: chapter5.cpp:351

+ Here is the call graph for this function:

Member Function Documentation

void npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::AttackStart ( Unit who)
inlineoverridevirtual

Reimplemented from npc_escortAI.

452  {
453  if (!who)
454  return;
455 
456  if (who == me)
457  return;
458 
459  if (me->Attack(who, true))
460  {
461  me->AddThreat(who, 0.0f);
462  me->SetInCombatWith(who);
463  who->SetInCombatWith(me);
464  DoStartMovement(who);
465  }
466  }
void AddThreat(Unit *victim, float fThreat, SpellSchoolMask schoolMask=SPELL_SCHOOL_MASK_NORMAL, SpellInfo const *threatSpell=NULL)
Definition: Unit.cpp:10691
bool Attack(Unit *victim, bool meleeAttack)
Definition: Unit.cpp:7222
Creature *const me
Definition: CreatureAI.h:71
void DoStartMovement(Unit *target, float distance=0.0f, float angle=0.0f)
Definition: ScriptedCreature.cpp:134
void SetInCombatWith(Unit *enemy)
Definition: Unit.cpp:9840

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::DespawnNPC ( ObjectGuid  pGUID)
inline
1631  {
1632  if (Creature* temp = ObjectAccessor::GetCreature(*me, pGUID))
1633  if (temp->IsAlive())
1634  {
1635  temp->SetVisible(false);
1636  temp->KillSelf();
1637  }
1638  }
Definition: Creature.h:467
Creature *const me
Definition: CreatureAI.h:71
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
Definition: ObjectAccessor.cpp:174

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::EnterEvadeMode ( EvadeReason  why)
inlineoverridevirtual

Reimplemented from npc_escortAI.

600  {
601  if (!bIsBattle)//do not reset self if we are in battle
603  }
void EnterEvadeMode(EvadeReason=EVADE_REASON_OTHER) override
Definition: ScriptedEscortAI.cpp:187

+ Here is the call graph for this function:

void npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::JumpToNextStep ( uint32  uiTimer)
inline
1506  {
1507  uiPhase_timer = uiTimer;
1508  ++uiStep;
1509  }

+ Here is the caller graph for this function:

void npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::MoveInLineOfSight ( Unit who)
inlineoverridevirtual

Reimplemented from npc_escortAI.

470  {
471  if (!who)
472  return;
473 
474  if (me->IsValidAttackTarget(who))
475  if (me->IsWithinDistInMap(who, 20) && me->IsWithinLOSInMap(who))
476  AttackStart(who);
477  }
void AttackStart(Unit *who) override
Definition: chapter5.cpp:451
bool IsWithinLOSInMap(WorldObject const *obj) const
Definition: Object.cpp:1584
bool IsValidAttackTarget(Unit const *target) const
Definition: Unit.cpp:10002
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true) const
Definition: Object.cpp:1663
Creature *const me
Definition: CreatureAI.h:71

+ Here is the call graph for this function:

void npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::NPCChangeTarget ( ObjectGuid  ui_GUID)
inline
1512  {
1513  if (Creature* temp = ObjectAccessor::GetCreature(*me, ui_GUID))
1514  if (temp->IsAlive())
1515  if (Unit* pTarger = SelectTarget(SELECT_TARGET_RANDOM, 0))
1516  if (pTarger->IsAlive())
1517  {
1518  // temp->DeleteThreatList();
1519  temp->AddThreat(pTarger, 0.0f);
1520  temp->AI()->AttackStart(pTarger);
1521  temp->SetInCombatWith(pTarger);
1522  pTarger->SetInCombatWith(temp);
1523  // temp->GetMotionMaster()->MoveChase(pTarger, 20.0f);
1524  }
1525  }
Definition: Creature.h:467
Creature *const me
Definition: CreatureAI.h:71
Definition: UnitAI.h:35
Unit * SelectTarget(SelectAggroTarget targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, int32 aura=0)
Definition: UnitAI.cpp:91
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
Definition: ObjectAccessor.cpp:174
Definition: Unit.h:1305

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::Reset ( )
inlineoverridevirtual

Reimplemented from ScriptedAI.

352  {
354  {
355  bIsBattle = false;
356  uiStep = 0;
357  uiPhase_timer = 3000;
358  uiFight_duration = 300000; // 5 minutes
361  uiSummon_counter = 0;
362 
363  uiAnti_magic_zone = urand(1000, 6000);
364  uiDeath_strike = urand(5000, 10000);
365  uiDeath_embrace = urand(5000, 10000);
366  uiIcy_touch = urand(5000, 10000);
367  uiUnholy_blight = urand(5000, 10000);
368 
369  uiFight_speech = 15000;
370  uiSpawncheck = 1000;
371  uiTargetcheck = 10000;
372 
374  me->Mount(25279);
375  me->SetVisible(true);
376 
378  //UpdateWorldState(me->GetMap(), WORLD_STATE_COUNTDOWN, 0);
380 
382  temp->setDeathState(JUST_DIED);
384  temp->setDeathState(JUST_DIED);
386  temp->setDeathState(JUST_DIED);
388  temp->setDeathState(JUST_DIED);
390  temp->setDeathState(JUST_DIED);
391 
396  uiRayneGUID.Clear();
397 
398  for (uint8 i = 0; i < ENCOUNTER_DEFENDER_NUMBER; ++i)
399  {
401  temp->setDeathState(JUST_DIED);
402  uiDefenderGUID[i].Clear();
403  }
404  for (uint8 i = 0; i < ENCOUNTER_EARTHSHATTER_NUMBER; ++i)
405  {
407  temp->setDeathState(JUST_DIED);
409  }
410 
412  temp->Respawn();
414  temp->Respawn();
416  temp->Respawn();
418  temp->Respawn();
419 
421  uiOrbazGUID.Clear();
424  for (uint8 i = 0; i < ENCOUNTER_ABOMINATION_NUMBER; ++i)
425  {
427  temp->setDeathState(JUST_DIED);
429  }
430  for (uint8 i = 0; i < ENCOUNTER_BEHEMOTH_NUMBER; ++i)
431  {
433  temp->setDeathState(JUST_DIED);
434  uiBehemothGUID[i].Clear();
435  }
436  for (uint8 i = 0; i < ENCOUNTER_GHOUL_NUMBER; ++i)
437  {
439  temp->setDeathState(JUST_DIED);
440  uiGhoulGUID[i].Clear();
441  }
442  for (uint8 i = 0; i < ENCOUNTER_WARRIOR_NUMBER; ++i)
443  {
445  temp->setDeathState(JUST_DIED);
446  uiWarriorGUID[i].Clear();
447  }
448  }
449  }
Definition: Unit.h:207
ObjectGuid uiTirionGUID
Definition: chapter5.cpp:331
Map * GetMap() const
Definition: Object.h:543
ObjectGuid uiBehemothGUID[ENCOUNTER_BEHEMOTH_NUMBER]
Definition: chapter5.cpp:347
Definition: chapter5.cpp:36
Definition: Unit.h:542
Definition: chapter5.cpp:35
ObjectGuid uiRayneGUID
Definition: chapter5.cpp:337
ObjectGuid uiGhoulGUID[ENCOUNTER_GHOUL_NUMBER]
Definition: chapter5.cpp:348
ObjectGuid uiAbominationGUID[ENCOUNTER_ABOMINATION_NUMBER]
Definition: chapter5.cpp:346
ObjectGuid uiKorfaxGUID
Definition: chapter5.cpp:334
ObjectGuid uiKoltiraGUID
Definition: chapter5.cpp:342
Definition: Creature.h:467
Definition: ScriptedEscortAI.h:47
ObjectGuid uiThassarianGUID
Definition: chapter5.cpp:344
ObjectGuid uiWarriorGUID[ENCOUNTER_WARRIOR_NUMBER]
Definition: chapter5.cpp:349
void Mount(uint32 mount, uint32 vehicleId=0, uint32 creatureEntry=0)
Definition: Unit.cpp:9695
Definition: chapter5.cpp:48
Definition: chapter5.cpp:47
Definition: chapter5.cpp:31
Creature *const me
Definition: CreatureAI.h:71
ObjectGuid uiOrbazGUID
Definition: chapter5.cpp:343
ObjectGuid uiDefenderGUID[ENCOUNTER_DEFENDER_NUMBER]
Definition: chapter5.cpp:338
Definition: chapter5.cpp:32
Definition: chapter5.cpp:50
uint32 urand(uint32 min, uint32 max)
Definition: Random.cpp:45
void SetVisible(bool x)
Definition: Unit.cpp:10368
ObjectGuid uiEligorGUID
Definition: chapter5.cpp:336
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
Definition: ObjectAccessor.cpp:174
void Clear()
Definition: ObjectGuid.h:215
ObjectGuid uiEarthshatterGUID[ENCOUNTER_EARTHSHATTER_NUMBER]
Definition: chapter5.cpp:339
ObjectGuid uiMaxwellGUID
Definition: chapter5.cpp:335
void SetStandState(UnitStandStateType state, uint32 animKitID=0)
Definition: Unit.cpp:12772
uint8_t uint8
Definition: Define.h:152
ObjectGuid uiLichKingGUID
Definition: chapter5.cpp:345
Definition: chapter5.cpp:33
void UpdateWorldState(Map *map, uint32 id, uint32 state)
Definition: chapter5.cpp:220
bool HasEscortState(uint32 escortState)
Definition: ScriptedEscortAI.h:96
Definition: chapter5.cpp:52
Definition: chapter5.cpp:34

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::SetHoldState ( bool  bOnHold)
inline
480  {
481  SetEscortPaused(bOnHold);
482  }
void SetEscortPaused(bool on)
Definition: ScriptedEscortAI.cpp:507

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::SpawnNPC ( )
inline
1528  {
1529  Unit* temp = NULL;
1530 
1531  // Death
1532  for (uint8 i = 0; i < ENCOUNTER_GHOUL_NUMBER; ++i)
1533  {
1535  if (!temp)
1536  {
1537  temp = me->SummonCreature(NPC_ACHERUS_GHOUL, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
1538  temp->setFaction(2084);
1539  uiGhoulGUID[i] = temp->GetGUID();
1540  }
1541  }
1542  for (uint8 i = 0; i < ENCOUNTER_ABOMINATION_NUMBER; ++i)
1543  {
1545  if (!temp)
1546  {
1547  temp = me->SummonCreature(NPC_WARRIOR_OF_THE_FROZEN_WASTES, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
1548  temp->setFaction(2084);
1549  uiAbominationGUID[i] = temp->GetGUID();
1550  }
1551  }
1552  for (uint8 i = 0; i < ENCOUNTER_WARRIOR_NUMBER; ++i)
1553  {
1555  if (!temp)
1556  {
1557  temp = me->SummonCreature(NPC_RAMPAGING_ABOMINATION, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
1558  temp->setFaction(2084);
1559  uiWarriorGUID[i] = temp->GetGUID();
1560  }
1561  }
1562  for (uint8 i = 0; i < ENCOUNTER_BEHEMOTH_NUMBER; ++i)
1563  {
1565  if (!temp)
1566  {
1567  temp = me->SummonCreature(NPC_FLESH_BEHEMOTH, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
1568  temp->setFaction(2084);
1569  uiBehemothGUID[i] = temp->GetGUID();
1570  }
1571  }
1572 
1573  // Dawn
1574  for (uint8 i = 0; i < ENCOUNTER_DEFENDER_NUMBER; ++i)
1575  {
1577  if (!temp)
1578  {
1579  temp = me->SummonCreature(NPC_DEFENDER_OF_THE_LIGHT, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
1580  temp->setFaction(2089);
1581  me->AddThreat(temp, 0.0f);
1582  uiDefenderGUID[i] = temp->GetGUID();
1583  }
1584  }
1585  for (uint8 i = 0; i < ENCOUNTER_EARTHSHATTER_NUMBER; ++i)
1586  {
1588  if (!temp)
1589  {
1590  temp = me->SummonCreature(NPC_RIMBLAT_EARTHSHATTER, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
1591  temp->setFaction(2089);
1592  me->AddThreat(temp, 0.0f);
1593  uiEarthshatterGUID[i] = temp->GetGUID();
1594  }
1595  }
1597  if (!temp)
1598  {
1599  temp = me->SummonCreature(NPC_KORFAX_CHAMPION_OF_THE_LIGHT, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 600000);
1600  temp->setFaction(2089);
1601  me->AddThreat(temp, 0.0f);
1602  uiKorfaxGUID = temp->GetGUID();
1603  }
1605  if (!temp)
1606  {
1607  temp = me->SummonCreature(NPC_LORD_MAXWELL_TYROSUS, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 600000);
1608  temp->setFaction(2089);
1609  me->AddThreat(temp, 0.0f);
1610  uiMaxwellGUID = temp->GetGUID();
1611  }
1613  if (!temp)
1614  {
1615  temp = me->SummonCreature(NPC_COMMANDER_ELIGOR_DAWNBRINGER, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 600000);
1616  temp->setFaction(2089);
1617  me->AddThreat(temp, 0.0f);
1618  uiEligorGUID = temp->GetGUID();
1619  }
1621  if (!temp)
1622  {
1623  temp = me->SummonCreature(NPC_RAYNE, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
1624  temp->setFaction(2089);
1625  me->AddThreat(temp, 0.0f);
1626  uiRayneGUID = temp->GetGUID();
1627  }
1628  }
void AddThreat(Unit *victim, float fThreat, SpellSchoolMask schoolMask=SPELL_SCHOOL_MASK_NORMAL, SpellInfo const *threatSpell=NULL)
Definition: Unit.cpp:10691
Definition: chapter5.cpp:174
ObjectGuid uiBehemothGUID[ENCOUNTER_BEHEMOTH_NUMBER]
Definition: chapter5.cpp:347
Definition: chapter5.cpp:36
Definition: chapter5.cpp:35
Definition: chapter5.cpp:177
ObjectGuid uiRayneGUID
Definition: chapter5.cpp:337
ObjectGuid uiGhoulGUID[ENCOUNTER_GHOUL_NUMBER]
Definition: chapter5.cpp:348
ObjectGuid uiAbominationGUID[ENCOUNTER_ABOMINATION_NUMBER]
Definition: chapter5.cpp:346
Definition: chapter5.cpp:196
arena_t NULL
Definition: jemalloc_internal.h:624
ObjectGuid uiKorfaxGUID
Definition: chapter5.cpp:334
Position const LightofDawnLoc[]
Definition: chapter5.cpp:234
ObjectGuid uiWarriorGUID[ENCOUNTER_WARRIOR_NUMBER]
Definition: chapter5.cpp:349
Definition: chapter5.cpp:200
Definition: chapter5.cpp:31
void setFaction(uint32 faction)
Definition: Unit.h:1467
Creature *const me
Definition: CreatureAI.h:71
ObjectGuid uiDefenderGUID[ENCOUNTER_DEFENDER_NUMBER]
Definition: chapter5.cpp:338
Definition: chapter5.cpp:32
ObjectGuid uiEligorGUID
Definition: chapter5.cpp:336
Definition: Object.h:55
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
Definition: ObjectAccessor.cpp:174
Definition: chapter5.cpp:209
ObjectGuid const & GetGUID() const
Definition: Object.h:105
ObjectGuid uiEarthshatterGUID[ENCOUNTER_EARTHSHATTER_NUMBER]
Definition: chapter5.cpp:339
ObjectGuid uiMaxwellGUID
Definition: chapter5.cpp:335
uint32 rand32()
Definition: Random.cpp:64
uint8_t uint8
Definition: Define.h:152
Definition: chapter5.cpp:169
Definition: chapter5.cpp:203
Definition: chapter5.cpp:33
Definition: Unit.h:1305
Definition: chapter5.cpp:192
TempSummon * SummonCreature(uint32 id, Position const &pos, TempSummonType spwtype=TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime=0, uint32 vehId=0) const
Definition: Object.cpp:2346
Definition: chapter5.cpp:164
Definition: chapter5.cpp:34
Definition: chapter5.cpp:215

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::UpdateAI ( uint32  diff)
inlineoverridevirtual

Reimplemented from npc_escortAI.

606  {
608 
609  if (!bIsBattle)
610  {
611  if (uiPhase_timer <= diff)
612  {
613  // ******* Before battle *****************************************************************
614  switch (uiStep)
615  {
616  case 0: // countdown
617  //UpdateWorldState(me->GetMap(), WORLD_STATE_COUNTDOWN, 1);
618  break;
619 
620  case 1: // just delay
621  //UpdateWorldState(me->GetMap(), WORLD_STATE_REMAINS, 1);
625  JumpToNextStep(3000);
626  break;
627 
628  case 2:
631  uiKoltiraGUID = pKoltira->GetGUID();
633  uiOrbazGUID = pOrbaz->GetGUID();
634  if (Creature* pThassarian = GetClosestCreatureWithEntry(me, NPC_THASSARIAN, 50.0f))
635  uiThassarianGUID = pThassarian->GetGUID();
636  JumpToNextStep(10000);
637  break;
638 
639  case 3: // rise
641  JumpToNextStep(3000);
642  break;
643 
644  case 4: // summon ghoul
645  // Dunno whats the summon spell, so workaround
646  DoCast(me, 33271); // shack effect
647  uiPhase_timer = 500;
649  {
650  Unit* temp = me->SummonCreature(NPC_ACHERUS_GHOUL, (me->GetPositionX() - 20) + rand32() % 40, (me->GetPositionY() - 20) + rand32() % 40, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
651  temp->SetWalk(false);
652  temp->setFaction(2084);
655  }
656  else
657  {
658  uiSummon_counter = 0;
659  ++uiStep;
660  }
661  break;
662 
663  case 5: // summon abomination
664  DoCast(me, 33271); // shack effect
665  uiPhase_timer = 500;
667  {
669  temp->SetWalk(false);
670  temp->setFaction(2084);
673  }
674  else
675  {
676  uiSummon_counter = 0;
677  ++uiStep;
678  }
679  break;
680 
681  case 6: // summon warrior
682  DoCast(me, 33271); // shack effect
683  uiPhase_timer = 500;
685  {
687  temp->SetWalk(false);
688  temp->setFaction(2084);
691  }
692  else
693  {
694  uiSummon_counter = 0;
695  ++uiStep;
696  }
697  break;
698 
699  case 7: // summon warrior
700  DoCast(me, 33271); // shack effect
701  uiPhase_timer = 500;
703  {
704  Unit* temp = me->SummonCreature(NPC_FLESH_BEHEMOTH, (me->GetPositionX() - 20) + rand32() % 40, (me->GetPositionY() - 20) + rand32() % 40, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
705  temp->SetWalk(false);
706  temp->setFaction(2084);
709  }
710  else
711  {
712  uiSummon_counter = 0;
713  ++uiStep;
714  }
715  break;
716 
717  case 8: // summon announce
719  JumpToNextStep(5000);
720  break;
721 
722  case 9: // charge begins
723  SetHoldState(false);
725  {
726  temp->SetWalk(false);
727  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }));
728  }
730  {
731  temp->SetWalk(false);
732  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }));
733  }
735  {
736  temp->SetWalk(false);
737  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }));
738  }
739  for (uint8 i = 0; i < ENCOUNTER_ABOMINATION_NUMBER; ++i)
741  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }));
742  for (uint8 i = 0; i < ENCOUNTER_BEHEMOTH_NUMBER; ++i)
744  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }));
745  for (uint8 i = 0; i < ENCOUNTER_GHOUL_NUMBER; ++i)
747  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }));
748  for (uint8 i = 0; i < ENCOUNTER_WARRIOR_NUMBER; ++i)
750  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }));
751  JumpToNextStep(5000);
752  break;
753 
754  // ******* After battle *****************************************************************
755  case 11: // Tirion starts to speak
757  temp->AI()->Talk(SAY_LIGHT_OF_DAWN28);
758  JumpToNextStep(21000);
759  break;
760 
761  case 12:
763  temp->AI()->Talk(SAY_LIGHT_OF_DAWN29);
764  JumpToNextStep(13000);
765  break;
766 
767  case 13:
769  temp->AI()->Talk(SAY_LIGHT_OF_DAWN30);
770  JumpToNextStep(13000);
771  break;
772 
773  case 14:
776  JumpToNextStep(7000);
777  break;
778 
779  case 15: // summon gate
781  {
783  temp->CastSpell(temp, SPELL_ALEXANDROS_MOGRAINE_SPAWN, true);
784  temp->AI()->Talk(EMOTE_LIGHT_OF_DAWN06);
785  uiAlexandrosGUID = temp->GetGUID();
786  }
787  JumpToNextStep(4000);
788  break;
789 
790  case 16: // Alexandros out
792  {
794  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[23]);
795  temp->AI()->Talk(SAY_LIGHT_OF_DAWN32);
796  }
797  SetHoldState(false); // makes darion turns back
798  JumpToNextStep(5000);
799  break;
800 
801  case 17:
804  JumpToNextStep(5000);
805  break;
806 
807  case 18: // Darion's spirit out
809  {
810  temp->AI()->Talk(SAY_LIGHT_OF_DAWN35);
811  temp->SetWalk(false);
812  uiDarionGUID = temp->GetGUID();
813  }
814  JumpToNextStep(4000);
815  break;
816 
817  case 19: // runs to father
819  {
820  temp->AI()->Talk(EMOTE_LIGHT_OF_DAWN07);
821  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[25]);
822  }
823  JumpToNextStep(4000);
824  break;
825 
826  case 20:
828  temp->AI()->Talk(SAY_LIGHT_OF_DAWN36);
829  JumpToNextStep(4000);
830  break;
831 
832  case 21:
834  temp->AI()->Talk(EMOTE_LIGHT_OF_DAWN08);
835  JumpToNextStep(4000);
836  break;
837 
838  case 22:
840  temp->AI()->Talk(SAY_LIGHT_OF_DAWN37);
841  JumpToNextStep(8000);
842  break;
843 
844  case 23:
846  temp->AI()->Talk(SAY_LIGHT_OF_DAWN38);
847  JumpToNextStep(8000);
848  break;
849 
850  case 24:
852  temp->AI()->Talk(SAY_LIGHT_OF_DAWN39);
853 
854  if (Creature* temp = ObjectAccessor::GetCreature(*me, uiTirionGUID)) // Tirion moves forward here
855  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[1]);
856 
857  JumpToNextStep(15000);
858  break;
859 
860  case 25:
862  temp->AI()->Talk(SAY_LIGHT_OF_DAWN40);
863  JumpToNextStep(11000);
864  break;
865 
866  case 26:
868  temp->AI()->Talk(SAY_LIGHT_OF_DAWN41);
869  JumpToNextStep(5000);
870  break;
871 
872  case 27:
874  temp->setDeathState(JUST_DIED);
875  JumpToNextStep(24000);
876  break;
877 
878  case 28:
880  temp->AI()->Talk(SAY_LIGHT_OF_DAWN42);
881  JumpToNextStep(6000);
882  break;
883 
884  case 29: // lich king spawns
886  {
887  temp->AI()->Talk(SAY_LIGHT_OF_DAWN43);
888  uiLichKingGUID = temp->GetGUID();
890  temp->CastSpell(pAlex, SPELL_SOUL_FEAST_ALEX, false);
891  }
892  JumpToNextStep(2000);
893  break;
894 
895  case 30:
896  if (Creature* temp = ObjectAccessor::GetCreature(*me, uiAlexandrosGUID)) // just hide him
897  {
898  temp->AI()->Talk(EMOTE_LIGHT_OF_DAWN09);
899  temp->SetVisible(false);
900  }
902  {
903  temp->InterruptNonMeleeSpells(false);
904  temp->AI()->Talk(SAY_LIGHT_OF_DAWN45);
905  }
906  JumpToNextStep(3000);
907  break;
908 
909  case 31:
913  JumpToNextStep(3000);
914  break;
915 
916  case 32:
918  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[27]);
919  JumpToNextStep(6000);
920  break;
921 
922  case 33: // Darion supports to jump to lich king here
924  DoCast(me, SPELL_MOGRAINE_CHARGE); // jumping charge
925  // doesn't make it looks well, so workarounds, Darion charges, looks better
926  me->SetSpeed(MOVE_RUN, 3.0f);
927  me->SetWalk(false);
928  SetHoldState(false);
929  JumpToNextStep(0);
930  break;
931 
932  case 35: // Lich king counterattacks
934  {
936  temp->AI()->Talk(SAY_LIGHT_OF_DAWN46);
937  }
938  me->SetSpeed(MOVE_RUN, 6.0f);
940  SetHoldState(false); // Darion got kicked by lich king
941  JumpToNextStep(0);
942  break;
943 
944  case 37: // Lich king counterattacks
946  JumpToNextStep(3000);
947  break;
948 
949  case 38:
951  temp->AI()->Talk(SAY_LIGHT_OF_DAWN47);
952  JumpToNextStep(8000);
953  break;
954 
955  case 39:
957  temp->AI()->Talk(SAY_LIGHT_OF_DAWN48);
958  JumpToNextStep(15000);
959  break;
960 
961  case 40:
963  temp->AI()->Talk(SAY_LIGHT_OF_DAWN49);
964  JumpToNextStep(17000);
965  break;
966 
967  case 41: // Lich king - Apocalypse
969  {
970  temp->AI()->Talk(EMOTE_LIGHT_OF_DAWN11);
971  temp->AI()->Talk(SAY_LIGHT_OF_DAWN51);
973  {
974  pTirion->SetStandState(UNIT_STAND_STATE_KNEEL);
975  //temp->CastSpell(pTirion, SPELL_APOCALYPSE, false); // not working
976  temp->CastSpell(pTirion, SPELL_SOUL_FEAST_TIRION, false);
977  pTirion->AI()->Talk(EMOTE_LIGHT_OF_DAWN12);
978  }
979  }
980  JumpToNextStep(2000);
981  break;
982 
983  case 42: // Maxwell yells for attack
984  {
985  float fLichPositionX = 0,
986  fLichPositionY = 0,
987  fLichPositionZ = 0;
989  {
990  fLichPositionX = temp->GetPositionX();
991  fLichPositionY = temp->GetPositionY();
992  fLichPositionZ = temp->GetPositionZ();
993  }
994 
995  if (fLichPositionX && fLichPositionY)
996  {
997  Unit* temp = me->SummonCreature(NPC_DEFENDER_OF_THE_LIGHT, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 10), float(rand32() % 10), 0.0f, 0.0f }), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 10000);
999  temp->SetWalk(false);
1000  temp->SetSpeed(MOVE_RUN, 2.0f);
1001  temp->setFaction(me->getFaction());
1002  temp->GetMotionMaster()->MovePoint(0, fLichPositionX, fLichPositionY, fLichPositionZ);
1003  uiDefenderGUID[0] = temp->GetGUID();
1004 
1005  temp = me->SummonCreature(NPC_RIMBLAT_EARTHSHATTER, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 10), float(rand32() % 10), 0.0f, 0.0f }), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 10000);
1007  temp->SetWalk(false);
1008  temp->SetSpeed(MOVE_RUN, 2.0f);
1009  temp->setFaction(me->getFaction());
1010  temp->GetMotionMaster()->MovePoint(0, fLichPositionX, fLichPositionY, fLichPositionZ);
1011  uiEarthshatterGUID[0] = temp->GetGUID();
1012  }
1014  {
1016  temp->SetWalk(false);
1017  temp->SetSpeed(MOVE_RUN, 2.0f);
1018  temp->GetMotionMaster()->MovePoint(0, fLichPositionX, fLichPositionY, fLichPositionZ);
1019  temp->AI()->Talk(SAY_LIGHT_OF_DAWN50);
1020  }
1022  {
1024  temp->SetWalk(false);
1025  temp->SetSpeed(MOVE_RUN, 2.0f);
1027  temp->GetMotionMaster()->MovePoint(0, fLichPositionX, fLichPositionY, fLichPositionZ);
1028  }
1030  {
1032  temp->SetWalk(false);
1033  temp->SetSpeed(MOVE_RUN, 2.0f);
1034  temp->GetMotionMaster()->MovePoint(0, fLichPositionX, fLichPositionY, fLichPositionZ);
1035  }
1036  }
1037  JumpToNextStep(4500);
1038  break;
1039 
1040  case 43: // They all got kicked
1042  temp->AI()->Talk(EMOTE_LIGHT_OF_DAWN13);
1043 
1045  {
1047  temp->SetSpeed(MOVE_RUN, 6.0f);
1049  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[14]);
1050  }
1052  {
1054  temp->SetSpeed(MOVE_RUN, 6.0f);
1056  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[11]);
1057  }
1059  {
1061  temp->SetSpeed(MOVE_RUN, 6.0f);
1063  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[17]);
1064  }
1066  {
1067  temp->SetSpeed(MOVE_RUN, 6.0f);
1069  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 10), float(rand32() % 10), 0.0f, 0.0f }));
1070  }
1072  {
1073  temp->SetSpeed(MOVE_RUN, 6.0f);
1075  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 10), float(rand32() % 10), 0.0f, 0.0f }));
1076  }
1077  JumpToNextStep(3000);
1078  break;
1079 
1080  case 44: // make them stand up
1087  JumpToNextStep(1000);
1088  break;
1089 
1090  case 45:
1092  JumpToNextStep(5000);
1093  break;
1094 
1095  case 46: // Darion stand up, "not today"
1096  me->SetSpeed(MOVE_RUN, 1.0f);
1097  me->SetWalk(true);
1100  SetHoldState(false); // Darion throws sword
1101  JumpToNextStep(7000);
1102  break;
1103 
1104  case 47: // Ashbringer rebirth
1108  {
1111  temp->CastSpell(temp, SPELL_REBIRTH_OF_THE_ASHBRINGER, false);
1112  }
1113  JumpToNextStep(1000);
1114  break;
1115 
1116  case 48: // Show the cleansing effect (dawn of light)
1117  //if (GameObject* go = me->GetMap()->GetGameObject(uiDawnofLightGUID))
1118  // go->SetPhaseMask(128, true);
1119  me->SummonGameObject(GO_LIGHT_OF_DAWN, 2283.896f, -5287.914f, 83.066f, 0, 0, 0, 0, 0, 30);
1121  {
1124  temp->CastSpell(temp, 41542, false); // workarounds, light expoded, makes it cool
1126  }
1128  temp->InterruptNonMeleeSpells(false);
1129  JumpToNextStep(2500);
1130  break;
1131 
1132  case 49:
1134  temp->AI()->Talk(SAY_LIGHT_OF_DAWN54);
1135  JumpToNextStep(4000);
1136  break;
1137 
1138  case 50:
1140  temp->AI()->Talk(SAY_LIGHT_OF_DAWN55);
1141  JumpToNextStep(5000);
1142  break;
1143 
1144  case 51:
1146  temp->AI()->Talk(SAY_LIGHT_OF_DAWN56);
1147  JumpToNextStep(1000);
1148  break;
1149 
1150  case 52: // Tiron charges
1152  {
1153  temp->AI()->Talk(EMOTE_LIGHT_OF_DAWN16);
1154  temp->CastSpell(temp, SPELL_TIRION_CHARGE, false); // jumping charge
1156  temp->SetSpeed(MOVE_RUN, 3.0f); // workarounds, make Tirion still running
1157  temp->SetWalk(false);
1158  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[2]);
1160  lktemp->Relocate(LightofDawnLoc[28]); // workarounds, he should kick back by Tirion, but here we relocate him
1161  }
1162  JumpToNextStep(1500);
1163  break;
1164 
1165  case 53:
1167  temp->AI()->Talk(SAY_LIGHT_OF_DAWN57);
1168  JumpToNextStep(1000);
1169  break;
1170 
1171  case 54:
1173  {
1174  temp->SetSpeed(MOVE_RUN, 1.0f);
1175  me->SetWalk(true);
1176  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[29]); // 26
1177  }
1178  JumpToNextStep(4000);
1179  break;
1180 
1181  case 55:
1184  JumpToNextStep(2000);
1185  break;
1186 
1187  case 56:
1190  JumpToNextStep(1500);
1191  break;
1192 
1193  case 57:
1195  temp->AI()->Talk(SAY_LIGHT_OF_DAWN58);
1196  JumpToNextStep(10000);
1197  break;
1198 
1199  case 58:
1201  temp->AI()->Talk(SAY_LIGHT_OF_DAWN59);
1202  JumpToNextStep(10000);
1203  break;
1204 
1205  case 59:
1207  temp->CastSpell(temp, SPELL_TELEPORT_VISUAL, false);
1208  if (Creature* temp = ObjectAccessor::GetCreature(*me, uiTirionGUID)) // Tirion runs to Darion
1209  {
1211  temp->SetSpeed(MOVE_RUN, 1.0f);
1212  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[6]);
1213  }
1214  JumpToNextStep(2500);
1215  break;
1216 
1217  case 60:
1218  if (Creature* temp = ObjectAccessor::GetCreature(*me, uiLichKingGUID)) // Lich king disappears here
1219  {
1220  temp->AI()->Talk(EMOTE_LIGHT_OF_DAWN17);
1221  temp->KillSelf();
1222  }
1223  JumpToNextStep(10000);
1224  break;
1225 
1226  case 61:
1228  temp->AI()->Talk(SAY_LIGHT_OF_DAWN60);
1229  JumpToNextStep(3000);
1230  break;
1231 
1232  case 62:
1234  {
1235  temp->SetWalk(true);
1236  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[7]);
1237  }
1238  JumpToNextStep(5500);
1239  break;
1240 
1241  case 63:
1243  {
1244  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[8]);
1245  temp->AI()->Talk(SAY_LIGHT_OF_DAWN61);
1246  }
1247  JumpToNextStep(15000);
1248  break;
1249 
1250  case 64:
1252  temp->AI()->Talk(SAY_LIGHT_OF_DAWN62);
1253  JumpToNextStep(7000);
1254  break;
1255 
1256  case 65:
1258  temp->AI()->Talk(SAY_LIGHT_OF_DAWN63);
1259  JumpToNextStep(10000);
1260  break;
1261 
1262  case 66:
1264  temp->AI()->Talk(SAY_LIGHT_OF_DAWN64);
1265  JumpToNextStep(11000);
1266  break;
1267 
1268  case 67:
1270  temp->AI()->Talk(SAY_LIGHT_OF_DAWN65);
1271  JumpToNextStep(10000);
1272  break;
1273 
1274  case 68:
1276  temp->AI()->Talk(SAY_LIGHT_OF_DAWN66);
1277  JumpToNextStep(8000);
1278  break;
1279 
1280  case 69:
1282  temp->AI()->Talk(SAY_LIGHT_OF_DAWN67);
1283  JumpToNextStep(10000);
1284  break;
1285 
1286  case 70:
1289  JumpToNextStep(10000);
1290  break;
1291 
1292  case 71:
1293  //if (GameObject* go = me->GetMap()->GetGameObject(uiDawnofLightGUID)) // Turn off dawn of light
1294  // go->SetPhaseMask(0, true);
1295  {
1296  // search players with in 50 yards for quest credit
1297  Map::PlayerList const &PlayerList = me->GetMap()->GetPlayers();
1298  if (!PlayerList.isEmpty())
1299  {
1300  for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
1301  if (i->GetSource()->IsAlive() && me->IsWithinDistInMap(i->GetSource(), 50))
1302  i->GetSource()->CastSpell(i->GetSource(), SPELL_THE_LIGHT_OF_DAWN_Q, false);
1303  }
1304  }
1305  me->SetVisible(false); // respawns another Darion for quest turn in
1307  JumpToNextStep(1000);
1308  break;
1309 
1310  case 72:
1311  SetHoldState(false); // Escort ends
1312  JumpToNextStep(25000);
1313  break;
1314 
1315  case 73:
1317  temp->DespawnOrUnsummon();
1319  temp->DespawnOrUnsummon();
1321  temp->DespawnOrUnsummon();
1323  temp->DespawnOrUnsummon();
1324  me->DespawnOrUnsummon();
1325  break;
1326  }
1327 
1328  } else uiPhase_timer -= diff;
1329  }
1330 
1331  // ******* During battle *****************************************************************
1332  else
1333  {
1334  if (uiAnti_magic_zone <= diff)
1335  {
1337  uiAnti_magic_zone = urand(25000, 30000);
1338  } else uiAnti_magic_zone -= diff;
1339 
1340  if (uiDeath_strike <= diff)
1341  {
1343  uiDeath_strike = urand(5000, 10000);
1344  } else uiDeath_strike -= diff;
1345 
1346  if (uiDeath_embrace <= diff)
1347  {
1349  uiDeath_embrace = urand(5000, 10000);
1350  } else uiDeath_embrace -= diff;
1351 
1352  if (uiIcy_touch <= diff)
1353  {
1355  uiIcy_touch = urand(5000, 10000);
1356  } else uiIcy_touch -= diff;
1357 
1358  if (uiUnholy_blight <= diff)
1359  {
1361  uiUnholy_blight = urand(5000, 10000);
1362  } else uiUnholy_blight -= diff;
1363 
1364  if (uiFight_speech <= diff)
1365  {
1367  uiFight_speech = urand(15000, 20000);
1368  } else uiFight_speech -= diff;
1369 
1370  // Check spawns
1371  if (uiSpawncheck <= diff)
1372  {
1373  SpawnNPC();
1374  uiSpawncheck = 1000;
1375  } else uiSpawncheck -= diff;
1376 
1377  // Check targets
1378  if (uiTargetcheck <= diff)
1379  {
1380  for (uint8 i = 0; i < ENCOUNTER_GHOUL_NUMBER; ++i)
1382  for (uint8 i = 0; i < ENCOUNTER_WARRIOR_NUMBER; ++i)
1384  for (uint8 i = 0; i < ENCOUNTER_ABOMINATION_NUMBER; ++i)
1386  for (uint8 i = 0; i < ENCOUNTER_BEHEMOTH_NUMBER; ++i)
1391 
1392  uiTargetcheck = 10000;
1393  } else uiTargetcheck -= diff;
1394 
1395  // Battle end
1396  if (uiFight_duration <= diff + 5000)
1397  {
1398  if (!uiTirionGUID)
1400  {
1401  temp->setFaction(me->getFaction());
1402  temp->SetVirtualItem(0, uint32(EQUIP_UNEQUIP));
1403  temp->AI()->Talk(SAY_LIGHT_OF_DAWN25);
1404  uiTirionGUID = temp->GetGUID();
1405  }
1406  }
1407  if (uiFight_duration <= diff)
1408  {
1409  bIsBattle = false;
1410  uiFight_duration = 300000;
1411 
1414  me->RemoveAllAuras();
1415  me->DeleteThreatList();
1416  me->CombatStop(true);
1417  me->InterruptNonMeleeSpells(false);
1418  me->SetWalk(false);
1419 
1420  for (uint8 i = 0; i < ENCOUNTER_DEFENDER_NUMBER; ++i)
1422  for (uint8 i = 0; i < ENCOUNTER_EARTHSHATTER_NUMBER; ++i)
1424  for (uint8 i = 0; i < ENCOUNTER_ABOMINATION_NUMBER; ++i)
1426  for (uint8 i = 0; i < ENCOUNTER_BEHEMOTH_NUMBER; ++i)
1428  for (uint8 i = 0; i < ENCOUNTER_GHOUL_NUMBER; ++i)
1429  DespawnNPC(uiGhoulGUID[i]);
1430  for (uint8 i = 0; i < ENCOUNTER_WARRIOR_NUMBER; ++i)
1432 
1434  {
1435  temp->RemoveAllAuras();
1436  temp->DeleteThreatList();
1437  temp->CombatStop(true);
1438  temp->AttackStop();
1439  temp->setFaction(me->getFaction());
1440  temp->SetWalk(false);
1441  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[9]);
1442  }
1443 
1445  {
1446  temp->RemoveAllAuras();
1447  temp->DeleteThreatList();
1448  temp->CombatStop(true);
1449  temp->AttackStop();
1450  temp->setFaction(me->getFaction());
1451  temp->SetWalk(false);
1452  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[12]);
1453  }
1454 
1456  {
1457  temp->RemoveAllAuras();
1458  temp->DeleteThreatList();
1459  temp->CombatStop(true);
1460  temp->AttackStop();
1461  temp->setFaction(me->getFaction());
1462  temp->SetWalk(false);
1463  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[15]);
1464  }
1466 
1468  {
1469  temp->RemoveAllAuras();
1470  temp->DeleteThreatList();
1471  temp->CombatStop(true);
1472  temp->AttackStop();
1473  temp->setFaction(me->getFaction());
1474  temp->SetWalk(false);
1475  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[18]);
1476  temp->CastSpell(temp, SPELL_THE_LIGHT_OF_DAWN, false);
1477  }
1478 
1480  temp->AI()->Talk(EMOTE_LIGHT_OF_DAWN04);
1481 
1483  {
1484  temp->RemoveAllAuras();
1485  temp->DeleteThreatList();
1486  temp->CombatStop(true);
1487  temp->AttackStop();
1488  temp->setFaction(me->getFaction());
1489  temp->SetWalk(false);
1490  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[20]);
1491  temp->CastSpell(temp, SPELL_THE_LIGHT_OF_DAWN, false);
1492  }
1493 
1495  temp->AI()->Talk(SAY_LIGHT_OF_DAWN26);
1496 
1497  SetHoldState(false);
1498 
1499  } else uiFight_duration -= diff;
1500 
1502  }
1503  }
Definition: SharedDefines.h:2488
bool AttackStop()
Definition: Unit.cpp:7337
Definition: chapter5.cpp:59
Definition: chapter5.cpp:106
Position GetPositionWithOffset(Position const &offset) const
Definition: Position.cpp:56
Definition: chapter5.cpp:127
Definition: Unit.h:214
Definition: Unit.h:207
Definition: chapter5.cpp:97
void DespawnOrUnsummon(uint32 msTimeToDespawn=0)
Definition: Creature.cpp:1774
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
Definition: Unit.cpp:4240
void RemoveAllAuras()
Definition: Unit.cpp:3920
Definition: chapter5.cpp:105
GameObject * SummonGameObject(uint32 entry, float x, float y, float z, float ang, float rotation0, float rotation1, float rotation2, float rotation3, uint32 respawnTime)
Definition: Object.cpp:2372
Definition: chapter5.cpp:72
Definition: chapter5.cpp:63
Definition: chapter5.cpp:133
Definition: Unit.h:735
Definition: chapter5.cpp:91
Definition: UpdateFields.h:136
void SetVirtualItem(uint32 slot, uint32 itemId, uint16 appearanceModId=0)
Definition: Unit.cpp:16427
Definition: Unit.h:215
Definition: chapter5.cpp:174
ObjectGuid uiAlexandrosGUID
Definition: chapter5.cpp:332
Definition: chapter5.cpp:62
void KillSelf(bool durabilityLoss=true)
Definition: Unit.h:1515
ObjectGuid uiTirionGUID
Definition: chapter5.cpp:331
Definition: chapter5.cpp:184
Definition: chapter5.cpp:66
Map * GetMap() const
Definition: Object.h:543
ObjectGuid uiBehemothGUID[ENCOUNTER_BEHEMOTH_NUMBER]
Definition: chapter5.cpp:347
Definition: chapter5.cpp:76
Definition: chapter5.cpp:87
uint32 getFaction() const
Definition: Unit.h:1466
Definition: chapter5.cpp:81
Definition: chapter5.cpp:36
Definition: chapter5.cpp:136
TC_GAME_API Creature * GetClosestCreatureWithEntry(WorldObject *source, uint32 entry, float maxSearchRange, bool alive)
Definition: ScriptedCreature.cpp:611
void NPCChangeTarget(ObjectGuid ui_GUID)
Definition: chapter5.cpp:1511
Definition: chapter5.cpp:141
Definition: Unit.h:542
Definition: chapter5.cpp:35
Definition: chapter5.cpp:177
ObjectGuid uiRayneGUID
Definition: chapter5.cpp:337
Definition: chapter5.cpp:134
ObjectGuid uiGhoulGUID[ENCOUNTER_GHOUL_NUMBER]
Definition: chapter5.cpp:348
Definition: chapter5.cpp:100
Definition: chapter5.cpp:67
Definition: chapter5.cpp:155
Definition: chapter5.cpp:69
MotionMaster * GetMotionMaster()
Definition: Unit.h:2101
ObjectGuid uiAbominationGUID[ENCOUNTER_ABOMINATION_NUMBER]
Definition: chapter5.cpp:346
Definition: chapter5.cpp:101
Definition: chapter5.cpp:104
void SetHoldState(bool bOnHold)
Definition: chapter5.cpp:479
void SetUInt32Value(uint16 index, uint32 value)
Definition: Object.cpp:996
Definition: chapter5.cpp:78
Definition: chapter5.cpp:77
Definition: chapter5.cpp:68
ObjectGuid uiKorfaxGUID
Definition: chapter5.cpp:334
Position const LightofDawnLoc[]
Definition: chapter5.cpp:234
Definition: chapter5.cpp:145
ObjectGuid uiKoltiraGUID
Definition: chapter5.cpp:342
Definition: Creature.h:467
Definition: chapter5.cpp:111
Definition: chapter5.cpp:103
virtual void Talk(std::string const &text, ChatMsg msgType, Language language, float textRange, WorldObject const *target)
Definition: Unit.cpp:16385
Definition: chapter5.cpp:99
ObjectGuid uiThassarianGUID
Definition: chapter5.cpp:344
ObjectGuid uiWarriorGUID[ENCOUNTER_WARRIOR_NUMBER]
Definition: chapter5.cpp:349
void SetFlag(uint16 index, uint32 newFlag)
Definition: Object.cpp:1199
iterator begin()
Definition: MapRefManager.h:37
Definition: chapter5.cpp:180
Definition: chapter5.cpp:83
Definition: chapter5.cpp:82
Definition: chapter5.cpp:93
Definition: chapter5.cpp:89
Definition: SharedDefines.h:2456
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true) const
Definition: Object.cpp:1663
Definition: chapter5.cpp:90
ObjectGuid uiDarionGUID
Definition: chapter5.cpp:333
Definition: chapter5.cpp:88
Definition: chapter5.cpp:74
Definition: chapter5.cpp:31
Definition: chapter5.cpp:118
void setFaction(uint32 faction)
Definition: Unit.h:1467
Definition: chapter5.cpp:188
Definition: chapter5.cpp:124
Creature *const me
Definition: CreatureAI.h:71
ObjectGuid uiOrbazGUID
Definition: chapter5.cpp:343
void MovePoint(uint32 id, Position const &pos, bool generatePath=true)
Definition: MotionMaster.h:172
Definition: chapter5.cpp:84
ObjectGuid uiDefenderGUID[ENCOUNTER_DEFENDER_NUMBER]
Definition: chapter5.cpp:338
Definition: chapter5.cpp:137
Definition: SharedDefines.h:2550
Definition: chapter5.cpp:132
Definition: chapter5.cpp:32
Definition: chapter5.cpp:115
void UpdateAI(uint32 diff) override
Definition: ScriptedEscortAI.cpp:227
float GetPositionY() const
Definition: Position.h:105
Definition: chapter5.cpp:138
uint32 urand(uint32 min, uint32 max)
Definition: Random.cpp:45
Definition: chapter5.cpp:86
Definition: chapter5.cpp:128
Definition: chapter5.cpp:158
void SetVisible(bool x)
Definition: Unit.cpp:10368
float GetPositionZ() const
Definition: Position.h:106
Definition: chapter5.cpp:159
Definition: chapter5.cpp:95
Definition: chapter5.cpp:79
Definition: chapter5.cpp:122
Definition: LinkedList.h:141
void DoCast(uint32 spellId)
Definition: UnitAI.cpp:101
void JumpToNextStep(uint32 uiTimer)
Definition: chapter5.cpp:1505
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
Definition: CreatureAI.cpp:42
bool isEmpty() const
Definition: LinkedList.h:102
void DespawnNPC(ObjectGuid pGUID)
Definition: chapter5.cpp:1630
ObjectGuid uiEligorGUID
Definition: chapter5.cpp:336
Definition: Object.h:55
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
Definition: ObjectAccessor.cpp:174
Definition: chapter5.cpp:185
Definition: chapter5.cpp:209
Definition: chapter5.cpp:140
Definition: chapter5.cpp:51
void RemoveFlag(uint16 index, uint32 oldFlag)
Definition: Object.cpp:1214
PlayerList const & GetPlayers() const
Definition: Map.h:433
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Definition: Unit.cpp:3586
Definition: chapter5.cpp:80
Definition: chapter5.cpp:73
Definition: chapter5.cpp:58
ObjectGuid const & GetGUID() const
Definition: Object.h:105
Definition: Unit.h:600
Definition: SharedDefines.h:2425
Definition: MapRefManager.h:26
virtual void setDeathState(DeathState s)
Definition: Unit.cpp:10593
void DeleteThreatList()
Definition: Unit.cpp:10700
Definition: UpdateFields.h:109
Definition: chapter5.cpp:64
Definition: chapter5.cpp:179
Definition: chapter5.cpp:146
Definition: chapter5.cpp:123
ObjectGuid uiEarthshatterGUID[ENCOUNTER_EARTHSHATTER_NUMBER]
Definition: chapter5.cpp:339
Definition: chapter5.cpp:75
ObjectGuid uiMaxwellGUID
Definition: chapter5.cpp:335
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true)
Definition: Unit.cpp:2916
Definition: chapter5.cpp:187
Definition: chapter5.cpp:96
Definition: chapter5.cpp:113
bool SetWalk(bool enable)
Definition: Unit.cpp:15800
uint32 rand32()
Definition: Random.cpp:64
void DoMeleeAttackIfReady()
Definition: UnitAI.cpp:49
void SetStandState(UnitStandStateType state, uint32 animKitID=0)
Definition: Unit.cpp:12772
uint8_t uint8
Definition: Define.h:152
Definition: chapter5.cpp:119
ObjectGuid uiLichKingGUID
Definition: chapter5.cpp:345
Definition: chapter5.cpp:114
void HandleEmoteCommand(uint32 anim_id)
Definition: Unit.cpp:1444
Definition: UpdateFields.h:135
void SetSpeed(UnitMoveType mtype, float rate, bool forced=false)
Definition: Unit.cpp:10531
void DoCastVictim(uint32 spellId, bool triggered=false)
Definition: UnitAI.cpp:159
Definition: chapter5.cpp:102
Definition: chapter5.cpp:57
Definition: chapter5.cpp:169
Definition: chapter5.cpp:33
uint32_t uint32
Definition: g3dmath.h:168
Definition: chapter5.cpp:117
float GetPositionX() const
Definition: Position.h:104
Definition: chapter5.cpp:157
Definition: chapter5.cpp:116
void UpdateWorldState(Map *map, uint32 id, uint32 state)
Definition: chapter5.cpp:220
void CombatStop(bool includingCast=false)
Definition: Unit.cpp:7371
Definition: Unit.h:1305
void CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=NULL, AuraEffect const *triggeredByAura=NULL, ObjectGuid originalCaster=ObjectGuid::Empty)
Definition: Unit.cpp:869
Definition: chapter5.cpp:98
Definition: SharedDefines.h:2412
Definition: chapter5.cpp:85
Definition: chapter5.cpp:135
Definition: Unit.h:698
Definition: chapter5.cpp:92
Definition: chapter5.cpp:70
Definition: chapter5.cpp:147
iterator end()
Definition: MapRefManager.h:38
TempSummon * SummonCreature(uint32 id, Position const &pos, TempSummonType spwtype=TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime=0, uint32 vehId=0) const
Definition: Object.cpp:2346
Definition: chapter5.cpp:52
Definition: chapter5.cpp:164
Definition: chapter5.cpp:34
Definition: chapter5.cpp:139
Definition: chapter5.cpp:215
Definition: chapter5.cpp:120
Definition: CreatureAI.h:64
Definition: chapter5.cpp:94

+ Here is the call graph for this function:

void npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::WaypointReached ( uint32  waypointId)
inlineoverridevirtual

Implements npc_escortAI.

485  {
486  switch (waypointId)
487  {
488  case 0:
489  me->SetWalk(false);
490  SetHoldState(true);
491  break;
492  case 1:
493  SetHoldState(true);
494  SpawnNPC();
496  temp->AI()->Talk(SAY_LIGHT_OF_DAWN07);
498  temp->AI()->Talk(SAY_LIGHT_OF_DAWN08);
499 
500  for (uint8 i = 0; i < ENCOUNTER_GHOUL_NUMBER; ++i)
502  for (uint8 i = 0; i < ENCOUNTER_WARRIOR_NUMBER; ++i)
504  for (uint8 i = 0; i < ENCOUNTER_ABOMINATION_NUMBER; ++i)
506  for (uint8 i = 0; i < ENCOUNTER_BEHEMOTH_NUMBER; ++i)
511 
512  me->Dismount();
513  me->CastSpell(me, SPELL_THE_MIGHT_OF_MOGRAINE, true); // need to fix, on player only
514 
516  temp->Dismount();
518  temp->Dismount();
519 
520  bIsBattle = true;
521  break;
522  case 2:
523  me->SetWalk(true);
525  break;
526  case 3:
527  {
528  //Unit* pTirion = ObjectAccessor::GetCreature(*me, uiTirionGUID);
529 
534  {
535  if (temp->HasAura(SPELL_THE_LIGHT_OF_DAWN))
536  temp->RemoveAurasDueToSpell(SPELL_THE_LIGHT_OF_DAWN);
537  temp->SetWalk(true);
538  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[19]);
539  }
541  {
542  if (temp->HasAura(SPELL_THE_LIGHT_OF_DAWN))
543  temp->RemoveAurasDueToSpell(SPELL_THE_LIGHT_OF_DAWN);
544  temp->SetWalk(true);
545  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[21]);
546  }
548  {
549  temp->SetWalk(true);
550  temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
551  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[10]);
552  }
554  {
555  temp->SetWalk(true);
556  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[13]);
557  }
559  {
560  temp->SetWalk(true);
561  temp->GetMotionMaster()->MovePoint(0, LightofDawnLoc[16]);
562  }
563  JumpToNextStep(10000);
564  }
565  break;
566  case 4:
569 
571  temp->SetStandState(UNIT_STAND_STATE_KNEEL);
573  temp->SetStandState(UNIT_STAND_STATE_KNEEL);
574  SetHoldState(true);
575  break;
576  case 5:
578  SetHoldState(true);
579  break;
580  case 6:
581  SetHoldState(true);
583  JumpToNextStep(1000);
584  break;
585  case 7:
586  SetHoldState(true);
587  JumpToNextStep(2000);
588  break;
589  case 8:
592  me->CastSpell(temp, SPELL_ASHBRINGER, true);
594  SetHoldState(true);
595  break;
596  }
597  }
Definition: SharedDefines.h:2488
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
Definition: Unit.cpp:4240
Definition: UpdateFields.h:136
void SetVirtualItem(uint32 slot, uint32 itemId, uint16 appearanceModId=0)
Definition: Unit.cpp:16427
Definition: Unit.h:215
Definition: chapter5.cpp:71
ObjectGuid uiTirionGUID
Definition: chapter5.cpp:331
ObjectGuid uiBehemothGUID[ENCOUNTER_BEHEMOTH_NUMBER]
Definition: chapter5.cpp:347
Definition: chapter5.cpp:36
void NPCChangeTarget(ObjectGuid ui_GUID)
Definition: chapter5.cpp:1511
Definition: chapter5.cpp:35
ObjectGuid uiGhoulGUID[ENCOUNTER_GHOUL_NUMBER]
Definition: chapter5.cpp:348
void Dismount()
Definition: Unit.cpp:9734
ObjectGuid uiAbominationGUID[ENCOUNTER_ABOMINATION_NUMBER]
Definition: chapter5.cpp:346
void SetHoldState(bool bOnHold)
Definition: chapter5.cpp:479
ObjectGuid uiKorfaxGUID
Definition: chapter5.cpp:334
Position const LightofDawnLoc[]
Definition: chapter5.cpp:234
ObjectGuid uiKoltiraGUID
Definition: chapter5.cpp:342
Definition: Creature.h:467
Definition: SharedDefines.h:2455
ObjectGuid uiThassarianGUID
Definition: chapter5.cpp:344
ObjectGuid uiWarriorGUID[ENCOUNTER_WARRIOR_NUMBER]
Definition: chapter5.cpp:349
Definition: chapter5.cpp:61
Creature *const me
Definition: CreatureAI.h:71
ObjectGuid uiOrbazGUID
Definition: chapter5.cpp:343
Definition: chapter5.cpp:137
Definition: chapter5.cpp:60
Definition: chapter5.cpp:138
Definition: chapter5.cpp:112
void DoCast(uint32 spellId)
Definition: UnitAI.cpp:101
void JumpToNextStep(uint32 uiTimer)
Definition: chapter5.cpp:1505
Definition: chapter5.cpp:142
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
Definition: CreatureAI.cpp:42
Definition: chapter5.cpp:65
ObjectGuid uiEligorGUID
Definition: chapter5.cpp:336
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
Definition: ObjectAccessor.cpp:174
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Definition: Unit.cpp:3586
ObjectGuid uiMaxwellGUID
Definition: chapter5.cpp:335
bool SetWalk(bool enable)
Definition: Unit.cpp:15800
Definition: chapter5.cpp:121
void SetStandState(UnitStandStateType state, uint32 animKitID=0)
Definition: Unit.cpp:12772
uint8_t uint8
Definition: Define.h:152
void HandleEmoteCommand(uint32 anim_id)
Definition: Unit.cpp:1444
Definition: chapter5.cpp:33
uint32_t uint32
Definition: g3dmath.h:168
void CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=NULL, AuraEffect const *triggeredByAura=NULL, ObjectGuid originalCaster=ObjectGuid::Empty)
Definition: Unit.cpp:869
Definition: chapter5.cpp:34
Definition: CreatureAI.h:64

+ Here is the call graph for this function:

Member Data Documentation

bool npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::bIsBattle
ObjectGuid npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiAbominationGUID[ENCOUNTER_ABOMINATION_NUMBER]
ObjectGuid npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiAlexandrosGUID
uint32 npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiAnti_magic_zone
ObjectGuid npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiBehemothGUID[ENCOUNTER_BEHEMOTH_NUMBER]
ObjectGuid npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiDarionGUID
uint32 npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiDeath_embrace
uint32 npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiDeath_strike
ObjectGuid npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiDefenderGUID[ENCOUNTER_DEFENDER_NUMBER]
ObjectGuid npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiEarthshatterGUID[ENCOUNTER_EARTHSHATTER_NUMBER]
ObjectGuid npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiEligorGUID
uint32 npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiFight_duration
uint32 npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiFight_speech
ObjectGuid npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiGhoulGUID[ENCOUNTER_GHOUL_NUMBER]
uint32 npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiIcy_touch
ObjectGuid npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiKoltiraGUID
ObjectGuid npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiKorfaxGUID
ObjectGuid npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiLichKingGUID
ObjectGuid npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiMaxwellGUID
ObjectGuid npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiOrbazGUID
uint32 npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiPhase_timer
ObjectGuid npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiRayneGUID
uint32 npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiSpawncheck
uint32 npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiStep
uint32 npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiSummon_counter
uint32 npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiTargetcheck
ObjectGuid npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiThassarianGUID
ObjectGuid npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiTirionGUID
uint32 npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiTotal_dawn
uint32 npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiTotal_scourge
uint32 npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiUnholy_blight
ObjectGuid npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::uiWarriorGUID[ENCOUNTER_WARRIOR_NUMBER]

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