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

Public Member Functions

 npc_arthasAI (Creature *creature)
 
CreatureGetEventNpc (uint32 entry)
 
void ScheduleNextEvent (uint32 currentEvent, Milliseconds time)
 
void SummonNextWave ()
 
void ReorderInstance (uint32 data)
 
void JustEngagedWith (Unit *) override
 Called for reaction when initially engaged - this happens after JustEnteredCombat.
 
void SendNextWave (uint32 entry)
 
void SpawnTimeRift ()
 
void JustDied (Unit *) override
 
void JustSummoned (Creature *cr) override
 
void SummonedCreatureDespawn (Creature *cr) override
 
void SummonedCreatureDies (Creature *cr, Unit *) override
 
void DoAction (int32 param) override
 
void Reset () override
 
void WaypointReached (uint32 uiPointId) override
 
void UpdateAI (uint32 diff) override
 Use to start attacking a target. Called just before JustEngagedWith()
 
virtual void WaypointReached (uint32, uint32)
 
- Public Member Functions inherited from npc_escortAI
 npc_escortAI (Creature *creature)
 
 ~npc_escortAI () override
 
void AttackStart (Unit *who) override
 
void MoveInLineOfSight (Unit *who) override
 
void JustDied (Unit *) override
 
void JustRespawned () override
 
bool IsEscortNPC (bool=true) const override
 
void ReturnToLastPoint ()
 
void EnterEvadeMode (EvadeReason=EVADE_REASON_OTHER) override
 
void JustExitedCombat () override
 Called when the unit leaves combat.
 
void UpdateAI (uint32 diff) override
 Use to start attacking a target. Called just before JustEngagedWith()
 
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 GetWaypointPosition (uint32 pointId, float &x, float &y, float &z)
 
void GenerateWaypointArray (Movement::PointsArray *points)
 
virtual void WaypointStart (uint32)
 
void Start (bool isActiveAttacker=true, ObjectGuid playerGUID=ObjectGuid::Empty, Quest const *quest=nullptr, bool instantRespawn=false, bool canLoopPath=false, bool resetWaypoints=true)
 
void SetEscortPaused (bool on)
 
bool HasEscortState (uint32 escortState)
 
bool IsEscorted () override
 
void SetMaxPlayerDistance (float newMax)
 
float GetMaxPlayerDistance ()
 
void SetDespawnAtEnd (bool despawn)
 
void SetDespawnAtFar (bool despawn)
 
bool GetAttack ()
 
void SetCanAttack (bool attack)
 
ObjectGuid GetEventStarterGUID ()
 
void AddEscortState (uint32 escortState)
 
void RemoveEscortState (uint32 escortState)
 
virtual void WaypointReached (uint32, uint32)
 
- 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)
 
UnitDoSelectLowestHpFriendly (float range, uint32 minHPDiff=1)
 
std::list< Creature * > DoFindFriendlyCC (float range)
 
std::list< Creature * > DoFindFriendlyMissingBuff (float range, uint32 spellId)
 
PlayerGetPlayerAtMinimumRange (float minRange)
 
CreatureDoSpawnCreature (uint32 entry, float offsetX, float offsetY, float offsetZ, float angle, uint32 type, uint32 despawntime)
 
bool IsUniqueTimedEventDone (uint32 id) const
 
void SetUniqueTimedEventDone (uint32 id)
 
void ResetUniqueTimedEvent (uint32 id)
 
void ClearUniqueTimedEventsDone ()
 
void ScheduleTimedEvent (Milliseconds timerMin, Milliseconds timerMax, std::function< void()> exec, Milliseconds repeatMin, Milliseconds repeatMax=0ms, uint32 uniqueId=0)
 
void ScheduleTimedEvent (Milliseconds timerMax, std::function< void()> exec, Milliseconds repeatMin, Milliseconds repeatMax=0ms, uint32 uniqueId=0)
 
void ScheduleUniqueTimedEvent (Milliseconds timer, std::function< void()> exec, uint32 uniqueId)
 
bool HealthBelowPct (uint32 pct) const
 
bool HealthAbovePct (uint32 pct) const
 
SpellInfo const * SelectSpell (Unit *target, uint32 school, uint32 mechanic, SelectTargetType targets, uint32 powerCostMin, uint32 powerCostMax, float rangeMin, float rangeMax, SelectEffect effect)
 
void SetEquipmentSlots (bool loadDefault, int32 mainHand=EQUIP_NO_CHANGE, int32 offHand=EQUIP_NO_CHANGE, int32 ranged=EQUIP_NO_CHANGE)
 
virtual bool CheckEvadeIfOutOfCombatArea () const
 
bool IsHeroic () const
 
Difficulty GetDifficulty () const
 
bool Is25ManRaid () const
 
template<class T >
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
 
PlayerSelectTargetFromPlayerList (float maxdist, uint32 excludeAura=0, bool mustBeInLOS=false) const
 
void SetInvincibility (bool apply)
 
bool IsInvincible () const
 
void SetAutoAttackAllowed (bool allow)
 
bool IsAutoAttackAllowed () const
 
- Public Member Functions inherited from CreatureAI
void Talk (uint8 id, WorldObject const *whisperTarget=nullptr, Milliseconds delay=0ms)
 Causes the creature to talk/say the text assigned to their entry in the creature_text database table.
 
void Talk (uint8 id, Milliseconds delay)
 
WorldObjectGetSummoner () const
 Returns the summoner creature/object, if the creature is a temporary summon.
 
 CreatureAI (Creature *creature)
 
 ~CreatureAI () override
 
bool IsEngaged () const
 Check if creature is currently engaged in combat.
 
void MoveCircleChecks ()
 
void MoveBackwardsChecks ()
 
void MoveInLineOfSight_Safe (Unit *who)
 == Reactions At =================================
 
void TriggerAlert (Unit const *who) const
 
virtual bool CanRespawn ()
 
void JustEnteredCombat (Unit *who) override
 Called when the unit enters combat.
 
virtual void JustStartedThreateningMe (Unit *who)
 
void EngagementStart (Unit *who)
 
void EngagementOver ()
 
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 void PathEndReached (uint32)
 
virtual void WaypointPathStarted (uint32)
 == Waypoints system =============================
 
virtual void WaypointStarted (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 uint32 GetData (uint32) const
 
virtual void SetData (uint32, uint32)
 
virtual void SetGUID (ObjectGuid const &, int32=0)
 
virtual ObjectGuid GetGUID (int32=0) const
 
UnitSelectTarget (SelectTargetMethod targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
 
template<class PREDICATE >
UnitSelectTarget (SelectTargetMethod targetType, uint32 position, PREDICATE const &predicate)
 
void SelectTargetList (std::list< Unit * > &targetList, uint32 num, SelectTargetMethod targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
 Select the best (up to) <num> targets (in <targetType> order) from the threat list that fulfill the following:
 
template<class PREDICATE >
void SelectTargetList (std::list< Unit * > &targetList, uint32 num, SelectTargetMethod targetType, uint32 position, PREDICATE const &predicate)
 
virtual void EvadeTimerExpired ()
 Called when evade timer expires (target unreachable for too long)
 
virtual void DamageDealt (Unit *, uint32 &, DamageEffectType, SpellSchoolMask)
 Called at any Damage to any victim (before damage apply)
 
virtual void HealReceived (Unit *, uint32 &)
 Called when the creature receives heal.
 
virtual void OnPowerUpdate (Powers, int32, int32, uint32)
 Called when the creature power updates.
 
virtual void HealDone (Unit *, uint32 &)
 Called when the unit heals.
 
virtual void OnCalculateMeleeDamageReceived (uint32 &, Unit *)
 Called during damage calculations.
 
virtual void OnCalculateSpellDamageReceived (int32 &, Unit *)
 
virtual void OnCalculatePeriodicTickReceived (uint32 &, Unit *)
 Called during calculation when receiving periodic healing or damage (DoT or HoT)
 
void AttackStartCaster (Unit *victim, float dist)
 
SpellCastResult DoAddAuraToAllHostilePlayers (uint32 spellid)
 
SpellCastResult DoCast (uint32 spellId)
 
SpellCastResult DoCast (Unit *victim, uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastSelf (uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastToAllHostilePlayers (uint32 spellid, bool triggered=false)
 To specify the caster as target if the spell is self-cast.
 
SpellCastResult DoCastVictim (uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastAOE (uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastRandomTarget (uint32 spellId, uint32 threatTablePosition=0, float dist=0.0f, bool playerOnly=true, bool triggered=false, bool withTank=true, 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 sGossipHello (Player *)
 
virtual void sGossipSelect (Player *, uint32, uint32)
 
virtual void sGossipSelectCode (Player *, uint32, uint32, char const *)
 
virtual void sQuestAccept (Player *, Quest const *)
 
virtual void sQuestSelect (Player *, Quest const *)
 
virtual void sQuestComplete (Player *, Quest const *)
 
virtual void sQuestReward (Player *, Quest const *, uint32)
 
virtual void sOnGameEvent (bool, uint16)
 
virtual std::string GetDebugInfo () const
 

Public Attributes

InstanceScriptpInstance
 
SummonList summons
 
bool eventInRun
 
EventMap actionEvents
 
EventMap combatEvents
 
uint8 waveGroupId
 
uint8 waveKillCount
 
uint8 timeRiftId
 
- Public Attributes inherited from ScriptedAI
Creatureme
 

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 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 _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_arthasAI()

npc_arthas::npc_arthasAI::npc_arthasAI ( Creature creature)
inline
389 : npc_escortAI(creature), summons(me)
390 {
391 pInstance = creature->GetInstanceScript();
392 }
InstanceScript * GetInstanceScript() const
Definition Object.cpp:1242
Creature * me
Definition ScriptedCreature.h:281
InstanceScript * pInstance
Definition culling_of_stratholme.cpp:394
SummonList summons
Definition culling_of_stratholme.cpp:395
Definition ScriptedEscortAI.h:53

References WorldObject::GetInstanceScript(), and pInstance.

Member Function Documentation

◆ DoAction()

void npc_arthas::npc_arthasAI::DoAction ( int32  param)
inlineoverridevirtual

Reimplemented from UnitAI.

433 {
434 if (param == ACTION_START_EVENT)
435 {
436 // Event
437 eventInRun = true;
439 }
440 else if (param == ACTION_START_CITY)
441 {
444 me->SetWalk(true);
445 eventInRun = true;
446
449 }
450 else if (param == ACTION_KILLED_SALRAMM)
451 {
452 waveGroupId = 10;
453 eventInRun = true;
454 me->SetWalk(false);
456 }
457 else if (param == ACTION_START_TOWN_HALL)
458 {
460 SetEscortPaused(false);
461 me->SetWalk(true);
462
464 {
465 cr->AI()->DoAction(ACTION_FORCE_CHANGE_LOCK);
466 }
468 {
469 cr->AI()->DoAction(ACTION_FORCE_CHANGE_LOCK);
470 }
472 {
473 cr->AI()->DoAction(ACTION_FORCE_CHANGE_LOCK);
474 }
475 }
476 else if (param == ACTION_START_SECRET_PASSAGE)
477 {
479 SetEscortPaused(false);
480 me->SetWalk(true);
481 }
482 else if (param == ACTION_START_LAST_CITY)
483 {
485 SetEscortPaused(false);
486 me->SetWalk(false);
487 }
488 else if (param == ACTION_START_MALGANIS)
489 {
492 {
493 summons.Despawn(cr);
494 summons.Summon(cr);
495 cr->SetImmuneToAll(true);
496 cr->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
497 }
499 SetEscortPaused(false);
500 me->SetWalk(false);
501 }
502 else if (param == ACTION_KILLED_MALGANIS)
503 {
505 eventInRun = true;
507 me->SetFacingTo(1.84f);
508
509 if (!me->GetMap()->GetPlayers().IsEmpty())
510 if (Player* player = me->GetMap()->GetPlayers().getFirst()->GetSource())
511 player->RewardPlayerAndGroupAtEvent(31006, player); // Malganis quest entry required
512 }
513 }
@ UNIT_FLAG_NON_ATTACKABLE
Definition UnitDefines.h:258
@ ACTION_START_EVENT
Definition boss_apothecary_hummel.cpp:65
Definition Creature.h:47
bool SetWalk(bool enable) override
Enable or disable the creature's walk mode by removing: MOVEMENTFLAG_WALKING. Infom also the client.
Definition Creature.cpp:3343
void ScheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
Definition EventMap.cpp:48
bool IsEmpty() const
Definition LinkedList.h:97
MapReference * getFirst()
Definition MapRefMgr.h:31
PlayerList const & GetPlayers() const
Definition Map.h:335
Definition Player.h:1086
FROM * GetSource() const
Definition Reference.h:97
void Despawn(Creature const *summon)
Definition ScriptedCreature.h:89
void Summon(Creature const *summon)
Definition ScriptedCreature.h:88
void DespawnAll(Milliseconds delay=0ms)
Definition ScriptedCreature.cpp:72
void SetFacingTo(float ori)
Definition Unit.cpp:16454
Map * GetMap() const
Definition Object.h:631
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:2448
@ SAY_PHASE201
Definition culling_of_stratholme.cpp:45
@ SAY_PHASE501
Definition culling_of_stratholme.cpp:76
@ SAY_PHASE401
Definition culling_of_stratholme.cpp:67
@ SAY_PHASE404
Definition culling_of_stratholme.cpp:70
@ SAY_PHASE301
Definition culling_of_stratholme.cpp:53
@ ACTION_FORCE_CHANGE_LOCK
Definition culling_of_stratholme.cpp:176
@ NPC_CITY_MAN
Definition culling_of_stratholme.cpp:135
@ NPC_CITY_MAN2
Definition culling_of_stratholme.cpp:136
@ NPC_CITY_MAN4
Definition culling_of_stratholme.cpp:138
@ NPC_CITY_MAN3
Definition culling_of_stratholme.cpp:137
@ EVENT_ACTION_PHASE2
Definition culling_of_stratholme.cpp:202
@ EVENT_ACTION_PHASE5
Definition culling_of_stratholme.cpp:204
@ EVENT_ACTION_PHASE1
Definition culling_of_stratholme.cpp:201
@ ACTION_START_CITY
Definition culling_of_stratholme.h:135
@ ACTION_START_LAST_CITY
Definition culling_of_stratholme.h:139
@ ACTION_START_TOWN_HALL
Definition culling_of_stratholme.h:137
@ ACTION_KILLED_SALRAMM
Definition culling_of_stratholme.h:136
@ ACTION_KILLED_MALGANIS
Definition culling_of_stratholme.h:142
@ ACTION_START_SECRET_PASSAGE
Definition culling_of_stratholme.h:138
@ ACTION_START_MALGANIS
Definition culling_of_stratholme.h:141
@ NPC_MAL_GANIS
Definition culling_of_stratholme.h:54
@ EVENT_SRC_HALL_CITYMAN1
Definition culling_of_stratholme.h:107
@ EVENT_SRC_HALL_CITYMAN2
Definition culling_of_stratholme.h:108
@ EVENT_SRC_TOWN_CITYMAN1
Definition culling_of_stratholme.h:101
@ EVENT_SRC_HALL_CITYMAN3
Definition culling_of_stratholme.h:109
@ EVENT_SRC_MALGANIS_FINAL
Definition culling_of_stratholme.h:113
@ EVENT_SRC_TOWN_CITYMAN2
Definition culling_of_stratholme.h:102
const Position EventPos[]
Definition culling_of_stratholme.h:153
Talk
Definition hyjal.cpp:82
uint8 waveGroupId
Definition culling_of_stratholme.cpp:399
EventMap actionEvents
Definition culling_of_stratholme.cpp:397
bool eventInRun
Definition culling_of_stratholme.cpp:396
void EnterEvadeMode(EvadeReason=EVADE_REASON_OTHER) override
Definition ScriptedEscortAI.cpp:201
void SetEscortPaused(bool on)
Definition ScriptedEscortAI.cpp:495

References ACTION_FORCE_CHANGE_LOCK, ACTION_KILLED_MALGANIS, ACTION_KILLED_SALRAMM, ACTION_START_CITY, ACTION_START_EVENT, ACTION_START_LAST_CITY, ACTION_START_MALGANIS, ACTION_START_SECRET_PASSAGE, ACTION_START_TOWN_HALL, actionEvents, SummonList::Despawn(), SummonList::DespawnAll(), npc_escortAI::EnterEvadeMode(), EVENT_ACTION_PHASE1, EVENT_ACTION_PHASE2, EVENT_ACTION_PHASE5, EVENT_SRC_HALL_CITYMAN1, EVENT_SRC_HALL_CITYMAN2, EVENT_SRC_HALL_CITYMAN3, EVENT_SRC_MALGANIS_FINAL, EVENT_SRC_TOWN_CITYMAN1, EVENT_SRC_TOWN_CITYMAN2, eventInRun, EventPos, MapRefMgr::getFirst(), WorldObject::GetMap(), Map::GetPlayers(), Reference< TO, FROM >::GetSource(), LinkedListHead::IsEmpty(), ScriptedAI::me, NPC_CITY_MAN, NPC_CITY_MAN2, NPC_CITY_MAN3, NPC_CITY_MAN4, NPC_MAL_GANIS, SAY_PHASE201, SAY_PHASE301, SAY_PHASE401, SAY_PHASE404, SAY_PHASE501, EventMap::ScheduleEvent(), npc_escortAI::SetEscortPaused(), Unit::SetFacingTo(), Creature::SetWalk(), SummonList::Summon(), WorldObject::SummonCreature(), summons, UNIT_FLAG_NON_ATTACKABLE, and waveGroupId.

◆ GetEventNpc()

Creature * npc_arthas::npc_arthasAI::GetEventNpc ( uint32  entry)
1215{
1216 for (SummonList::iterator i = summons.begin(); i != summons.end();)
1217 {
1218 Creature* summon = ObjectAccessor::GetCreature(*me, *i);
1219 if (!summon)
1220 summons.erase(i++);
1221 else if (summon->GetEntry() == entry)
1222 return summon;
1223 else
1224 ++i;
1225 }
1226
1227 return nullptr;
1228}
uint32 GetEntry() const
Definition Object.h:117
iterator erase(iterator i)
Definition ScriptedCreature.h:68
iterator begin()
Definition ScriptedCreature.h:48
iterator end()
Definition ScriptedCreature.h:58
StorageType::iterator iterator
Definition ScriptedCreature.h:36
Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
Definition ObjectAccessor.cpp:234

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

Referenced by UpdateAI(), and WaypointReached().

◆ JustDied()

void npc_arthas::npc_arthasAI::JustDied ( Unit )
inlineoverridevirtual

Reimplemented from CreatureAI.

412 {
415 if (pInstance)
417 }
@ STATE_ESCORT_ESCORTING
Definition ScriptedEscortAI.h:47
virtual void SetData(uint32, uint32)
Definition ZoneScript.h:52
@ DATA_ARTHAS_REPOSITION
Definition culling_of_stratholme.h:36
void RemoveEscortState(uint32 escortState)
Definition ScriptedEscortAI.h:115

References DATA_ARTHAS_REPOSITION, SummonList::DespawnAll(), pInstance, npc_escortAI::RemoveEscortState(), ZoneScript::SetData(), STATE_ESCORT_ESCORTING, and summons.

◆ JustEngagedWith()

void npc_arthas::npc_arthasAI::JustEngagedWith ( Unit )
overridevirtual

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

Reimplemented from CreatureAI.

1252{
1254
1255 // Fight
1258}
void RescheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
Definition EventMap.cpp:70
SpellCastResult DoCast(uint32 spellId)
Definition UnitAI.cpp:179
@ SPELL_ARTHAS_AURA
Definition culling_of_stratholme.cpp:144
@ EVENT_COMBAT_HEALTH_CHECK
Definition culling_of_stratholme.cpp:200
@ EVENT_COMBAT_EXORCISM
Definition culling_of_stratholme.cpp:199
EventMap combatEvents
Definition culling_of_stratholme.cpp:398

References EVENT_COMBAT_EXORCISM, EVENT_COMBAT_HEALTH_CHECK, and SPELL_ARTHAS_AURA.

◆ JustSummoned()

void npc_arthas::npc_arthasAI::JustSummoned ( Creature cr)
inlineoverridevirtual

Reimplemented from CreatureAI.

420 {
421 summons.Summon(cr);
422 }

References SummonList::Summon(), and summons.

◆ ReorderInstance()

void npc_arthas::npc_arthasAI::ReorderInstance ( uint32  data)
1261{
1262 me->SetWalk(false);
1263 Start(true);
1264 SetEscortPaused(true);
1265 SetDespawnAtEnd(false);
1266
1267 switch (data)
1268 {
1270 SetNextWaypoint(9, false);
1272 break;
1276 SetNextWaypoint(12, false);
1278
1280 {
1281 eventInRun = true;
1283 }
1284 else if (data == COS_PROGRESS_KILLED_MEATHOOK)
1285 {
1286 waveGroupId = 4;
1288 }
1289 else // if (data == COS_PROGRESS_KILLED_SALRAMM)
1290 {
1291 if (pInstance)
1294 }
1295 break;
1297 SetNextWaypoint(21, false);
1299 break;
1301 SetNextWaypoint(32, false);
1303 break;
1305 SetNextWaypoint(46, false);
1307 break;
1309 SetNextWaypoint(55, false);
1311 break;
1312 }
1313
1314 if (data >= COS_PROGRESS_KILLED_EPOCH)
1315 if (pInstance)
1317 pGate->SetGoState(GO_STATE_ACTIVE);
1318
1320}
@ GO_STATE_ACTIVE
Definition GameObjectData.h:708
@ UNIT_NPC_FLAG_GOSSIP
Definition UnitDefines.h:322
@ REACT_DEFENSIVE
Definition Unit.h:568
@ WORLD_STATE_CULLING_OF_STRATHOLME_WAVE_COUNT
Definition WorldStateDefines.h:557
void SetReactState(ReactStates state)
A creature can have 3 ReactStates : Agressive, Passive, Neutral.
Definition Creature.h:100
Definition GameObject.h:120
ObjectGuid GetGuidData(uint32 type) const override
Definition InstanceScript.cpp:115
Map * instance
Definition InstanceScript.h:149
void DoUpdateWorldState(uint32 worldstateId, uint32 worldstateValue)
Definition InstanceScript.cpp:639
GameObject * GetGameObject(ObjectGuid const &guid)
Definition Map.cpp:2419
void SetNpcFlag(NPCFlags flags)
Definition Unit.h:765
@ NPC_MEATHOOK
Definition culling_of_stratholme.h:51
@ DATA_SHKAF_GATE
Definition culling_of_stratholme.h:45
@ COS_PROGRESS_REACHED_TOWN_HALL
Definition culling_of_stratholme.h:125
@ COS_PROGRESS_KILLED_EPOCH
Definition culling_of_stratholme.h:126
@ COS_PROGRESS_LAST_CITY
Definition culling_of_stratholme.h:127
@ COS_PROGRESS_KILLED_MEATHOOK
Definition culling_of_stratholme.h:123
@ COS_PROGRESS_FINISHED_CITY_INTRO
Definition culling_of_stratholme.h:122
@ COS_PROGRESS_FINISHED_INTRO
Definition culling_of_stratholme.h:121
@ COS_PROGRESS_KILLED_SALRAMM
Definition culling_of_stratholme.h:124
@ COS_PROGRESS_BEFORE_MALGANIS
Definition culling_of_stratholme.h:128
@ DATA_SHOW_INFINITE_TIMER
Definition culling_of_stratholme.h:35
void DoAction(int32 param) override
Definition culling_of_stratholme.cpp:432
void SendNextWave(uint32 entry)
Definition culling_of_stratholme.cpp:1322
void Start(bool isActiveAttacker=true, ObjectGuid playerGUID=ObjectGuid::Empty, Quest const *quest=nullptr, bool instantRespawn=false, bool canLoopPath=false, bool resetWaypoints=true)
Definition ScriptedEscortAI.cpp:428
void SetDespawnAtEnd(bool despawn)
Definition ScriptedEscortAI.h:108
bool SetNextWaypoint(uint32 pointId, float x, float y, float z, float orientation)
Definition ScriptedEscortAI.cpp:506

References ACTION_KILLED_SALRAMM, COS_PROGRESS_BEFORE_MALGANIS, COS_PROGRESS_FINISHED_CITY_INTRO, COS_PROGRESS_FINISHED_INTRO, COS_PROGRESS_KILLED_EPOCH, COS_PROGRESS_KILLED_MEATHOOK, COS_PROGRESS_KILLED_SALRAMM, COS_PROGRESS_LAST_CITY, COS_PROGRESS_REACHED_TOWN_HALL, DATA_SHKAF_GATE, DATA_SHOW_INFINITE_TIMER, EVENT_ACTION_PHASE2, GO_STATE_ACTIVE, NPC_MEATHOOK, REACT_DEFENSIVE, UNIT_NPC_FLAG_GOSSIP, and WORLD_STATE_CULLING_OF_STRATHOLME_WAVE_COUNT.

Referenced by Reset().

◆ Reset()

void npc_arthas::npc_arthasAI::Reset ( )
inlineoverridevirtual

Reimplemented from UnitAI.

516 {
520 eventInRun = false;
521 waveGroupId = 0;
522 waveKillCount = 0;
523 timeRiftId = 0;
524
526
527 if (pInstance)
528 {
531 if (data >= COS_PROGRESS_FINISHED_INTRO)
532 ReorderInstance(data);
533 }
534 }
std::uint32_t uint32
Definition Define.h:107
void Reset()
Definition EventMap.cpp:21
void RemoveNpcFlag(NPCFlags flags)
Definition Unit.h:766
virtual uint32 GetData(uint32) const
Definition ZoneScript.h:51
@ DATA_ARTHAS_EVENT
Definition culling_of_stratholme.h:28
uint8 waveKillCount
Definition culling_of_stratholme.cpp:400
uint8 timeRiftId
Definition culling_of_stratholme.cpp:401
void ReorderInstance(uint32 data)
Definition culling_of_stratholme.cpp:1260

References actionEvents, combatEvents, COS_PROGRESS_FINISHED_INTRO, DATA_ARTHAS_EVENT, DATA_ARTHAS_REPOSITION, SummonList::DespawnAll(), eventInRun, ZoneScript::GetData(), ScriptedAI::me, pInstance, Unit::RemoveNpcFlag(), ReorderInstance(), EventMap::Reset(), ZoneScript::SetData(), summons, timeRiftId, UNIT_NPC_FLAG_GOSSIP, waveGroupId, and waveKillCount.

◆ ScheduleNextEvent()

void npc_arthas::npc_arthasAI::ScheduleNextEvent ( uint32  currentEvent,
Milliseconds  time 
)
1231{
1232 actionEvents.ScheduleEvent(currentEvent + 1, time);
1233}

Referenced by UpdateAI().

◆ SendNextWave()

void npc_arthas::npc_arthasAI::SendNextWave ( uint32  entry)
1323{
1324 if (!pInstance)
1325 return;
1326
1327 if (entry == NPC_MEATHOOK)
1328 {
1329 waveKillCount = 4;
1331 }
1332 else if (entry == NPC_SALRAMM)
1333 {
1335 return;
1336 }
1337
1338 // Group is killed
1339 if (++waveKillCount >= 4)
1340 {
1341 waveGroupId++;
1342 if (waveGroupId == 4) // Meathook
1344 else if (waveGroupId == 9) // Salramm
1346 else
1348
1350 }
1351}
@ NPC_SALRAMM
Definition culling_of_stratholme.h:52
@ EVENT_SRC_SALRAMM
Definition culling_of_stratholme.h:106
@ EVENT_SRC_MEATHOOK
Definition culling_of_stratholme.h:105
void SummonNextWave()
Definition culling_of_stratholme.cpp:1235

References COS_PROGRESS_KILLED_MEATHOOK, COS_PROGRESS_KILLED_SALRAMM, DATA_ARTHAS_EVENT, EVENT_SRC_MEATHOOK, EVENT_SRC_SALRAMM, EventPos, NPC_MEATHOOK, NPC_SALRAMM, and WORLD_STATE_CULLING_OF_STRATHOLME_WAVE_COUNT.

Referenced by SummonedCreatureDies().

◆ SpawnTimeRift()

void npc_arthas::npc_arthasAI::SpawnTimeRift ( )
1354{
1355 if (timeRiftId >= 5)
1356 return;
1357
1359 {
1360 // Spawn everyone at time rift pos
1362 {
1363 if (cr->GetEntry() == NPC_TIME_RIFT)
1364 cr->DespawnOrUnsummon(10s);
1365 else // x, y, z (0 is entry)
1366 {
1367 // first infinite
1368 if (i == 1)
1369 AttackStart(cr);
1370
1371 cr->SetInCombatWithZone();
1372 cr->AddThreat(me, 0.0f);
1373 cr->SetReactState(REACT_AGGRESSIVE);
1375 }
1376 }
1377 }
1378
1379 timeRiftId++;
1380}
std::uint8_t uint8
Definition Define.h:109
@ REACT_AGGRESSIVE
Definition Unit.h:569
@ POINT_CHRONOS
Definition culling_of_stratholme.cpp:178
@ ENCOUNTER_CHRONO_MAX_SPAWNS_FIRST
Definition culling_of_stratholme.cpp:172
@ ENCOUNTER_CHRONO_MAX_SPAWNS_SECOND
Definition culling_of_stratholme.cpp:173
float RiftAndSpawnsLocations[ENCOUNTER_CHRONO_NUMBER][ENCOUNTER_CHRONO_MAX_SPAWNS_FIRST][5]
Definition culling_of_stratholme.cpp:261
@ NPC_TIME_RIFT
Definition culling_of_stratholme.h:61
void AttackStart(Unit *who) override
Definition ScriptedEscortAI.cpp:44

References ENCOUNTER_CHRONO_MAX_SPAWNS_FIRST, ENCOUNTER_CHRONO_MAX_SPAWNS_SECOND, NPC_TIME_RIFT, POINT_CHRONOS, REACT_AGGRESSIVE, RiftAndSpawnsLocations, and WorldObject::SummonCreature().

Referenced by WaypointReached().

◆ SummonedCreatureDespawn()

void npc_arthas::npc_arthasAI::SummonedCreatureDespawn ( Creature cr)
inlineoverridevirtual

Reimplemented from CreatureAI.

424{ summons.Despawn(cr); }

References SummonList::Despawn(), and summons.

◆ SummonedCreatureDies()

◆ SummonNextWave()

void npc_arthas::npc_arthasAI::SummonNextWave ( )
1236{
1237 Map::PlayerList const& PlayerList = me->GetMap()->GetPlayers();
1238 if (!PlayerList.IsEmpty())
1239 for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
1240 i->GetSource()->PlayerTalkClass->SendPointOfInterest(1000 + waveGroupId);
1241
1242 waveKillCount = 0; // this is forced condition!
1243 uint32 tableId = waveGroupId;
1244 if (tableId > 4)
1245 tableId--;
1246
1247 for (uint32 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i)
1248 me->SummonCreature(/*entry*/(uint32)WavesLocations[tableId][i][0], WavesLocations[tableId][i][1], WavesLocations[tableId][i][2], WavesLocations[tableId][i][3], WavesLocations[tableId][i][4]);
1249}
Definition LinkedList.h:139
Definition MapRefMgr.h:26
iterator begin()
Definition MapRefMgr.h:36
iterator end()
Definition MapRefMgr.h:37
@ ENCOUNTER_WAVES_MAX_SPAWNS
Definition culling_of_stratholme.cpp:168
float WavesLocations[ENCOUNTER_WAVES_NUMBER][ENCOUNTER_WAVES_MAX_SPAWNS][5]
Definition culling_of_stratholme.cpp:208

References MapRefMgr::begin(), ENCOUNTER_WAVES_MAX_SPAWNS, MapRefMgr::end(), LinkedListHead::IsEmpty(), and WavesLocations.

Referenced by UpdateAI().

◆ UpdateAI()

void npc_arthas::npc_arthasAI::UpdateAI ( uint32  )
inlineoverridevirtual

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

Implements UnitAI.

686 {
688
689 if (eventInRun)
690 {
691 actionEvents.Update(diff);
692 switch (uint32 currentEvent = actionEvents.ExecuteEvent())
693 {
695 me->SetWalk(true);
698 {
700 uther->SetTarget(me->GetGUID());
701 me->SetTarget(uther->GetGUID());
702 }
703 for (int i = 0; i < 3; ++i)
705 horse->GetMotionMaster()->MovePoint(0, EventPos[EVENT_DST_HORSE1 + i], FORCED_MOVEMENT_NONE, 0.f, false);
706
707 ScheduleNextEvent(currentEvent, 4s);
708 break;
709 case EVENT_ACTION_PHASE1+1:
710 // Start Event
711 me->SetWalk(true);
712 Start(true);
713 SetDespawnAtEnd(false);
714 SetDespawnAtFar(false);
715
716 ScheduleNextEvent(currentEvent, 9s);
717 break;
718 // After waypoint 0
719 case EVENT_ACTION_PHASE1+2:
721 ScheduleNextEvent(currentEvent, 2s);
722 break;
723 case EVENT_ACTION_PHASE1+3:
724 if (Creature* uther = GetEventNpc(NPC_UTHER))
725 uther->AI()->Talk(SAY_PHASE102);
726
727 ScheduleNextEvent(currentEvent, 8s);
728 break;
729 case EVENT_ACTION_PHASE1+4:
730 SetEscortPaused(false);
731 eventInRun = false;
733 ScheduleNextEvent(currentEvent, 2s);
734 break;
735 // After waypoint 1
736 case EVENT_ACTION_PHASE1+5:
737 if (Creature* jaina = GetEventNpc(NPC_JAINA))
738 jaina->SetTarget(me->GetGUID());
739
741 ScheduleNextEvent(currentEvent, 10s);
742 break;
743 case EVENT_ACTION_PHASE1+6:
744 if (Creature* uther = GetEventNpc(NPC_UTHER))
745 uther->AI()->Talk(SAY_PHASE105);
746
747 ScheduleNextEvent(currentEvent, 1s);
748 break;
749 case EVENT_ACTION_PHASE1+7:
751 ScheduleNextEvent(currentEvent, 4s);
752 break;
753 case EVENT_ACTION_PHASE1+8:
754 if (Creature* uther = GetEventNpc(NPC_UTHER))
755 uther->AI()->Talk(SAY_PHASE107);
756
757 ScheduleNextEvent(currentEvent, 6s);
758 break;
759 case EVENT_ACTION_PHASE1+9:
761 ScheduleNextEvent(currentEvent, 4s);
762 break;
763 case EVENT_ACTION_PHASE1+10:
764 if (Creature* uther = GetEventNpc(NPC_UTHER))
765 uther->AI()->Talk(SAY_PHASE109);
766
767 ScheduleNextEvent(currentEvent, 8s);
768 break;
769 case EVENT_ACTION_PHASE1+11:
771 ScheduleNextEvent(currentEvent, 4s);
772 break;
773 case EVENT_ACTION_PHASE1+12:
774 if (Creature* uther = GetEventNpc(NPC_UTHER))
775 uther->AI()->Talk(SAY_PHASE111);
776
777 ScheduleNextEvent(currentEvent, 4s);
778 break;
779 case EVENT_ACTION_PHASE1+13:
781 ScheduleNextEvent(currentEvent, 11s);
782 break;
783 case EVENT_ACTION_PHASE1+14:
784 if (Creature* jaina = GetEventNpc(NPC_JAINA))
785 jaina->AI()->Talk(SAY_PHASE113);
786
787 ScheduleNextEvent(currentEvent, 2500ms);
788 break;
789 case EVENT_ACTION_PHASE1+15:
791 ScheduleNextEvent(currentEvent, 9s);
792 break;
793 case EVENT_ACTION_PHASE1+16:
794 if (Creature* uther = GetEventNpc(NPC_UTHER))
795 uther->AI()->Talk(SAY_PHASE115);
796
797 ScheduleNextEvent(currentEvent, 4s);
798 break;
799 case EVENT_ACTION_PHASE1+17:
800 for (SummonList::const_iterator i = summons.begin(); i != summons.end(); ++i)
801 {
803 if (summon && summon->GetEntry() == NPC_HORSE_ESCORT)
805 }
806
807 ScheduleNextEvent(currentEvent, 1s);
808 break;
809 case EVENT_ACTION_PHASE1+18:
810 if (Creature* uther = GetEventNpc(NPC_UTHER))
811 {
812 uther->SetTarget();
813 uther->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
814 uther->GetMotionMaster()->MovePoint(0, EventPos[EVENT_POS_RETREAT], FORCED_MOVEMENT_NONE, 0.f, false);
815 }
816 ScheduleNextEvent(currentEvent, 1s);
817 break;
818 case EVENT_ACTION_PHASE1+19:
819 if (Creature* jaina = GetEventNpc(NPC_JAINA))
820 {
821 jaina->SetTarget();
822 jaina->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
823 jaina->GetMotionMaster()->MovePoint(0, EventPos[EVENT_POS_RETREAT], FORCED_MOVEMENT_NONE, 0.f, false);
824 }
826 ScheduleNextEvent(currentEvent, 2s);
827 break;
828 case EVENT_ACTION_PHASE1+20:
829 if (Creature* jaina = GetEventNpc(NPC_JAINA))
830 {
831 jaina->GetMotionMaster()->MoveIdle();
832 jaina->AI()->Talk(SAY_PHASE117);
833 }
834
835 ScheduleNextEvent(currentEvent, 2s);
836 break;
837 case EVENT_ACTION_PHASE1+21:
838 if (Creature* jaina = GetEventNpc(NPC_JAINA))
839 {
840 jaina->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
841 jaina->GetMotionMaster()->MovePoint(0, EventPos[EVENT_POS_RETREAT], FORCED_MOVEMENT_NONE, 0.f, false);
842 }
844 ScheduleNextEvent(currentEvent, 4s);
845 break;
846 case EVENT_ACTION_PHASE1+22:
847 SetEscortPaused(false);
848 eventInRun = false;
849 me->SetTarget();
850 // dont schedule next, do it in gossip select!
851 break;
852 //After Gossip 1 (waypoint 8)
854 summons.DespawnEntry(NPC_INVIS_TARGET); // remove trigger
855 me->SetTarget();
856 SetEscortPaused(false);
857 eventInRun = false;
858 ScheduleNextEvent(currentEvent, 1s);
859 break;
860 // After waypoint 9
861 case EVENT_ACTION_PHASE2+1:
862 if (Creature* cityman = GetEventNpc(NPC_CITY_MAN))
863 {
864 cityman->AI()->Talk(SAY_PHASE202);
865 cityman->SetTarget(me->GetGUID());
866 cityman->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
867 cityman->GetMotionMaster()->MovePoint(0, EventPos[EVENT_DST_CITYMAN]);
868 }
869
870 ScheduleNextEvent(currentEvent, 9s);
871 break;
872 case EVENT_ACTION_PHASE2+2:
874 SetEscortPaused(false);
875 eventInRun = false;
876 ScheduleNextEvent(currentEvent, 1500ms);
877 break;
878 // After waypoint 11
879 case EVENT_ACTION_PHASE2+3:
880 if (Creature* stalker = me->SummonCreature(NPC_INVIS_TARGET, 2081.447f, 1287.770f, 141.3241f, 1.37f, TEMPSUMMON_TIMED_DESPAWN, 10000))
881 {
882 me->SetFacingToObject(stalker);
883 stalker->DespawnOrUnsummon(500ms);
884 }
886 ScheduleNextEvent(currentEvent, 4s);
887 break;
888 case EVENT_ACTION_PHASE2+4:
890 {
891 malganis->CastSpell(malganis, SPELL_MALGANIS_APPEAR, true);
892 malganis->AI()->Talk(SAY_PHASE206);
893 malganis->SetTarget(me->GetGUID());
894 me->SetTarget(malganis->GetGUID());
895 malganis->SetReactState(REACT_PASSIVE);
896
897 std::list<Creature*> unitList;
898 malganis->GetCreaturesWithEntryInRange(unitList, 20.0f, NPC_CITY_MAN);
899 malganis->GetCreaturesWithEntryInRange(unitList, 20.0f, NPC_CITY_MAN2);
900
901 for (std::list<Creature*>::const_iterator itr = unitList.begin(); itr != unitList.end(); ++itr)
902 if ((*itr)->ToCreature())
903 {
904 (*itr)->ToCreature()->AI()->DoAction(ACTION_INFECT_CITIZIEN);
905 (*itr)->GetMotionMaster()->MoveFleeing(malganis, 2000);
906 }
907
908 unitList.clear();
909 }
910
911 ScheduleNextEvent(currentEvent, 12s);
912 break;
913 case EVENT_ACTION_PHASE2+5:
914 if (Creature* malganis = GetEventNpc(NPC_MAL_GANIS))
915 malganis->AI()->Talk(SAY_PHASE207);
916
917 ScheduleNextEvent(currentEvent, 15s);
918 break;
919 case EVENT_ACTION_PHASE2+6:
920 if (Creature* malganis = GetEventNpc(NPC_MAL_GANIS))
921 {
922 me->SetTarget();
923 me->SetFacingToObject(malganis);
924 malganis->SetVisible(false);
925 }
926
928 ScheduleNextEvent(currentEvent, 11s);
929 break;
930 case EVENT_ACTION_PHASE2+7:
936 ScheduleNextEvent(currentEvent, 20s);
937 if (pInstance)
939 break;
940 case EVENT_ACTION_PHASE2+8:
941 if (pInstance)
943
945 break;
946 case EVENT_ACTION_PHASE2+9:
947 if (pInstance)
949
951 eventInRun = false;
952 SetEscortPaused(false);
953 break;
954 // After waypoint 22
958 cr->SetTarget(me->GetGUID());
960 cr->SetTarget(me->GetGUID());
962 cr->SetTarget(me->GetGUID());
963 ScheduleNextEvent(currentEvent, 1s);
964 break;
965 case EVENT_ACTION_PHASE3+1:
968 cr->AI()->Talk(SAY_PHASE302);
969
970 ScheduleNextEvent(currentEvent, 7s);
971 break;
972 case EVENT_ACTION_PHASE3+2:
974 SetEscortPaused(false);
975 eventInRun = false;
976 ScheduleNextEvent(currentEvent, 0ms);
977 break;
978 // After waypoint 23
979 case EVENT_ACTION_PHASE3+3:
980 me->SetWalk(false);
983 ScheduleNextEvent(currentEvent, 2s);
984 break;
985 case EVENT_ACTION_PHASE3+4:
987 ScheduleNextEvent(currentEvent, 2s);
988 break;
989 case EVENT_ACTION_PHASE3+5:
991 cr->AI()->Talk(SAY_PHASE305);
992 ScheduleNextEvent(currentEvent, 1s);
993 break;
994 // Trio citizen transformation right as we enter Town Hall
995 case EVENT_ACTION_PHASE3+6:
997 {
998 cr->UpdateEntry(NPC_INFINITE_HUNTER, nullptr, false);
999 cr->SetFullHealth();
1000 cr->SetImmuneToAll(true);
1001 cr->SetReactState(REACT_PASSIVE);
1002 }
1003 ScheduleNextEvent(currentEvent, 2s);
1004 break;
1005 case EVENT_ACTION_PHASE3+7:
1007 {
1008 cr->UpdateEntry(NPC_INFINITE_AGENT, nullptr, false);
1009 cr->SetFullHealth();
1010 cr->SetImmuneToAll(true);
1011 cr->SetReactState(REACT_PASSIVE);
1012 }
1013 ScheduleNextEvent(currentEvent, 2s);
1014 break;
1015 case EVENT_ACTION_PHASE3+8:
1017 {
1018 cr->UpdateEntry(NPC_INFINITE_ADVERSARY, nullptr, false);
1019 cr->SetFullHealth();
1020 cr->SetReactState(REACT_AGGRESSIVE);
1021 cr->SetInCombatWithZone();
1022 cr->AddThreat(me, 0.0f);
1023 }
1025 {
1026 cr->SetImmuneToAll(false);
1027 cr->SetReactState(REACT_AGGRESSIVE);
1028 cr->SetInCombatWithZone();
1029 cr->AddThreat(me, 0.0f);
1030 }
1032 {
1033 cr->SetImmuneToAll(false);
1034 cr->SetReactState(REACT_AGGRESSIVE);
1035 cr->SetInCombatWithZone();
1036 cr->AddThreat(me, 0.0f);
1037 }
1038 ScheduleNextEvent(currentEvent, 2s);
1039 break;
1040 case EVENT_ACTION_PHASE3+9:
1041 // Arthas is fighting infinites in town hall
1042 if (me->IsInCombat())
1043 {
1044 actionEvents.Repeat(1s);
1045 return;
1046 }
1047
1050 me->SetFacingTo(0.0f);
1051 ScheduleNextEvent(currentEvent, 5s);
1052 break;
1053 case EVENT_ACTION_PHASE3+10:
1055 ScheduleNextEvent(currentEvent, 5s);
1056 break;
1057 case EVENT_ACTION_PHASE3+11:
1058 SetEscortPaused(false);
1059 eventInRun = false;
1060 ScheduleNextEvent(currentEvent, 1s);
1061 break;
1062 case EVENT_ACTION_PHASE3+12:
1063 // Arthas is fighting first chronos
1064 if (me->IsInCombat())
1065 {
1066 actionEvents.Repeat(1s);
1067 return;
1068 }
1069
1070 eventInRun = false;
1071 SetEscortPaused(false);
1073 me->SetFacingTo(M_PI);
1074 ScheduleNextEvent(currentEvent, 0ms);
1075 break;
1076 case EVENT_ACTION_PHASE3+13:
1077 // Arthas is fighting second chronos
1078 if (me->IsInCombat())
1079 {
1080 actionEvents.Repeat(1s);
1081 return;
1082 }
1083
1084 eventInRun = false;
1085 SetEscortPaused(false);
1087 me->SetFacingTo(M_PI * 3 / 2);
1088 ScheduleNextEvent(currentEvent, 0ms);
1089 break;
1090 case EVENT_ACTION_PHASE3+14:
1091 // Arthas is fighting third chronos
1092 if (me->IsInCombat())
1093 {
1094 actionEvents.Repeat(1s);
1095 return;
1096 }
1097
1098 me->SetFacingTo(M_PI / 2);
1099 ScheduleNextEvent(currentEvent, 8s);
1100 break;
1101 case EVENT_ACTION_PHASE3+15:
1105 {
1106 cr->SetImmuneToAll(true);
1107 cr->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
1108 me->SetTarget(cr->GetGUID());
1109 cr->GetMotionMaster()->MovePoint(0, EventPos[EVENT_DST_EPOCH]);
1110 }
1111
1112 ScheduleNextEvent(currentEvent, 3s);
1113 break;
1114 case EVENT_ACTION_PHASE3+16:
1115 if (Creature* cr = GetEventNpc(NPC_EPOCH))
1116 cr->AI()->Talk(SAY_PHASE314);
1117
1118 ScheduleNextEvent(currentEvent, 14s);
1119 break;
1120 case EVENT_ACTION_PHASE3+17:
1122 ScheduleNextEvent(currentEvent, 7s);
1123 break;
1124 case EVENT_ACTION_PHASE3+18:
1125 if (Creature* cr = GetEventNpc(NPC_EPOCH))
1126 {
1127 cr->SetImmuneToAll(false);
1128 cr->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
1129 cr->SetReactState(REACT_AGGRESSIVE);
1130 cr->AddThreat(me, 0.0f);
1131 cr->SetInCombatWithZone();
1132 }
1133 ScheduleNextEvent(currentEvent, 1s);
1134 break;
1135 case EVENT_ACTION_PHASE3+19:
1136 // Arthas is fighting epoch chronos
1137 if (me->IsInCombat())
1138 {
1139 actionEvents.Repeat(1s);
1140 return;
1141 }
1142
1143 if (pInstance)
1145
1147 eventInRun = false;
1148 break;
1151 {
1152 cr->SetImmuneToAll(false);
1153 cr->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
1154 cr->SetInCombatWithZone();
1155 cr->AddThreat(me, 0.0f);
1156 AttackStart(cr);
1157 }
1158 eventInRun = false;
1159 SetEscortPaused(true);
1160 break;
1161 case EVENT_ACTION_PHASE5+1:
1163 SetEscortPaused(false);
1164 eventInRun = false;
1165 ScheduleNextEvent(currentEvent, 5s);
1166 break;
1167 case EVENT_ACTION_PHASE5+2:
1168 me->SetFacingTo(5.28f);
1170 if (pInstance)
1171 {
1174 go->SetGoState(GO_STATE_ACTIVE);
1175 }
1176 ScheduleNextEvent(currentEvent, 10s);
1177 break;
1178 case EVENT_ACTION_PHASE5+3:
1179 eventInRun = false;
1180 me->SetVisible(false);
1181 break;
1182 }
1183 }
1184
1185 //Battling skills
1186 if (!me->GetVictim())
1187 return;
1188
1189 combatEvents.Update(diff);
1191 return;
1192
1193 switch (combatEvents.ExecuteEvent())
1194 {
1197 me->CastSpell(target, SPELL_ARTHAS_EXORCISM, false);
1198
1199 combatEvents.Repeat(7s, 14s);
1200 break;
1202 if (HealthBelowPct(40))
1204
1205 combatEvents.Repeat(1s);
1206 break;
1207 }
1208
1210 }
@ FORCED_MOVEMENT_NONE
Definition MotionMaster.h:86
@ TEMPSUMMON_DEAD_DESPAWN
Definition Object.h:55
@ TEMPSUMMON_TIMED_DESPAWN
Definition Object.h:51
@ MOVEMENTFLAG_WALKING
Definition UnitDefines.h:380
@ UNIT_STATE_CASTING
Definition UnitDefines.h:188
@ REACT_PASSIVE
Definition Unit.h:567
void SetTarget(ObjectGuid guid=ObjectGuid::Empty) override
Definition Creature.cpp:3560
void Update(uint32 time)
Definition EventMap.h:67
void Repeat(Milliseconds time)
Definition EventMap.cpp:76
EventId ExecuteEvent()
Definition EventMap.cpp:86
void MovePoint(uint32 id, Position const &pos, ForcedMovement forcedMovement=FORCED_MOVEMENT_NONE, float speed=0.f, bool generatePath=true, bool forceDestination=true, std::optional< AnimTier > animTier=std::nullopt)
Definition MotionMaster.h:240
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:114
StorageType::const_iterator const_iterator
Definition ScriptedCreature.h:37
void DespawnEntry(uint32 entry)
Definition ScriptedCreature.cpp:55
void DoMeleeAttackIfReady()
Definition UnitAI.cpp:41
Unit * SelectTarget(SelectTargetMethod targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
Definition UnitAI.cpp:112
Definition Unit.h:665
void SetVisible(bool x)
Definition Unit.cpp:11106
void SetFacingToObject(WorldObject *object, Milliseconds timed=0ms)
Definition Unit.cpp:16464
MotionMaster * GetMotionMaster()
Definition Unit.h:1758
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:1361
Unit * GetVictim() const
Definition Unit.h:904
bool HasUnitState(const uint32 f) const
Definition Unit.h:737
void SetImmuneToAll(bool apply, bool keepCombat=false)
Definition Unit.h:925
bool IsInCombat() const
Definition Unit.h:936
@ SAY_PHASE210
Definition culling_of_stratholme.cpp:50
@ SAY_PHASE203
Definition culling_of_stratholme.cpp:46
@ SAY_PHASE302
Definition culling_of_stratholme.cpp:108
@ SAY_PHASE105
Definition culling_of_stratholme.cpp:90
@ SAY_PHASE116
Definition culling_of_stratholme.cpp:41
@ SAY_PHASE202
Definition culling_of_stratholme.cpp:101
@ SAY_PHASE109
Definition culling_of_stratholme.cpp:92
@ SAY_PHASE305_1
Definition culling_of_stratholme.cpp:110
@ SAY_PHASE103
Definition culling_of_stratholme.cpp:34
@ SAY_PHASE205
Definition culling_of_stratholme.cpp:47
@ SAY_PHASE111
Definition culling_of_stratholme.cpp:93
@ SAY_PHASE308
Definition culling_of_stratholme.cpp:58
@ SAY_PHASE306
Definition culling_of_stratholme.cpp:56
@ SAY_PHASE315
Definition culling_of_stratholme.cpp:64
@ SAY_PHASE114
Definition culling_of_stratholme.cpp:40
@ SAY_PHASE303
Definition culling_of_stratholme.cpp:54
@ SAY_PHASE311
Definition culling_of_stratholme.cpp:61
@ SAY_PHASE207
Definition culling_of_stratholme.cpp:83
@ SAY_PHASE113
Definition culling_of_stratholme.cpp:97
@ SAY_PHASE209
Definition culling_of_stratholme.cpp:49
@ SAY_PHASE503
Definition culling_of_stratholme.cpp:78
@ SAY_PHASE206
Definition culling_of_stratholme.cpp:82
@ SAY_PHASE112
Definition culling_of_stratholme.cpp:39
@ SAY_PHASE108
Definition culling_of_stratholme.cpp:37
@ SAY_PHASE104
Definition culling_of_stratholme.cpp:35
@ SAY_PHASE117
Definition culling_of_stratholme.cpp:98
@ SAY_PHASE107
Definition culling_of_stratholme.cpp:91
@ SAY_PHASE504
Definition culling_of_stratholme.cpp:79
@ SAY_PHASE101
Definition culling_of_stratholme.cpp:33
@ SAY_PHASE314
Definition culling_of_stratholme.cpp:86
@ SAY_PHASE208
Definition culling_of_stratholme.cpp:48
@ SAY_PHASE102
Definition culling_of_stratholme.cpp:89
@ SAY_PHASE304
Definition culling_of_stratholme.cpp:55
@ SAY_PHASE313
Definition culling_of_stratholme.cpp:63
@ SAY_PHASE110
Definition culling_of_stratholme.cpp:38
@ SAY_PHASE305
Definition culling_of_stratholme.cpp:109
@ SAY_PHASE115
Definition culling_of_stratholme.cpp:94
@ SAY_PHASE106
Definition culling_of_stratholme.cpp:36
@ ACTION_INFECT_CITIZIEN
Definition culling_of_stratholme.cpp:175
@ SPELL_MALGANIS_APPEAR
Definition culling_of_stratholme.cpp:149
@ SPELL_ARTHAS_CRUSADER_STRIKE
Definition culling_of_stratholme.cpp:151
@ SPELL_ARTHAS_EXORCISM
Definition culling_of_stratholme.cpp:145
@ SPELL_ARTHAS_HOLY_LIGHT
Definition culling_of_stratholme.cpp:146
@ NPC_INVIS_TARGET
Definition culling_of_stratholme.cpp:131
@ NPC_INFINITE_ADVERSARY
Definition culling_of_stratholme.cpp:126
@ NPC_HORSE_ESCORT
Definition culling_of_stratholme.cpp:133
@ NPC_INFINITE_AGENT
Definition culling_of_stratholme.cpp:128
@ NPC_INFINITE_HUNTER
Definition culling_of_stratholme.cpp:127
@ EVENT_ACTION_PHASE3
Definition culling_of_stratholme.cpp:203
@ NPC_EPOCH
Definition culling_of_stratholme.h:53
@ NPC_UTHER
Definition culling_of_stratholme.h:58
@ DATA_EXIT_GATE
Definition culling_of_stratholme.h:46
@ COS_PROGRESS_FINISHED
Definition culling_of_stratholme.h:129
@ EVENT_POS_RETREAT
Definition culling_of_stratholme.h:100
@ EVENT_SRC_UTHER
Definition culling_of_stratholme.h:91
@ EVENT_DST_HORSE1
Definition culling_of_stratholme.h:97
@ EVENT_DST_CITYMAN
Definition culling_of_stratholme.h:103
@ EVENT_SRC_EPOCH
Definition culling_of_stratholme.h:110
@ EVENT_DST_UTHER
Definition culling_of_stratholme.h:96
@ EVENT_SRC_MALGANIS
Definition culling_of_stratholme.h:104
@ EVENT_DST_EPOCH
Definition culling_of_stratholme.h:111
@ EVENT_SRC_HORSE1
Definition culling_of_stratholme.h:93
@ EVENT_SRC_JAINA
Definition culling_of_stratholme.h:92
@ DATA_START_WAVES
Definition culling_of_stratholme.h:34
bool HealthBelowPct(uint32 pct) const
Definition ScriptedCreature.h:368
Creature * GetEventNpc(uint32 entry)
Definition culling_of_stratholme.cpp:1214
void ScheduleNextEvent(uint32 currentEvent, Milliseconds time)
Definition culling_of_stratholme.cpp:1230
void SetDespawnAtFar(bool despawn)
Definition ScriptedEscortAI.h:109
void UpdateAI(uint32 diff) override
Use to start attacking a target. Called just before JustEngagedWith()
Definition ScriptedEscortAI.cpp:240
@ NPC_JAINA
Definition zone_undercity.cpp:353

References ACTION_INFECT_CITIZIEN, actionEvents, npc_escortAI::AttackStart(), SummonList::begin(), Unit::CastSpell(), combatEvents, COS_PROGRESS_FINISHED, COS_PROGRESS_FINISHED_CITY_INTRO, COS_PROGRESS_KILLED_EPOCH, DATA_ARTHAS_EVENT, DATA_EXIT_GATE, DATA_START_WAVES, SummonList::DespawnAll(), SummonList::DespawnEntry(), UnitAI::DoMeleeAttackIfReady(), InstanceScript::DoUpdateWorldState(), SummonList::end(), EVENT_ACTION_PHASE1, EVENT_ACTION_PHASE2, EVENT_ACTION_PHASE3, EVENT_ACTION_PHASE5, EVENT_COMBAT_EXORCISM, EVENT_COMBAT_HEALTH_CHECK, EVENT_DST_CITYMAN, EVENT_DST_EPOCH, EVENT_DST_HORSE1, EVENT_DST_UTHER, EVENT_POS_RETREAT, EVENT_SRC_EPOCH, EVENT_SRC_HORSE1, EVENT_SRC_JAINA, EVENT_SRC_MALGANIS, EVENT_SRC_UTHER, eventInRun, EventPos, EventMap::ExecuteEvent(), FORCED_MOVEMENT_NONE, ObjectAccessor::GetCreature(), Object::GetEntry(), GetEventNpc(), Map::GetGameObject(), Object::GetGUID(), InstanceScript::GetGuidData(), Unit::GetMotionMaster(), Unit::GetVictim(), GO_STATE_ACTIVE, Unit::HasUnitState(), ScriptedAI::HealthBelowPct(), InstanceScript::instance, Unit::IsInCombat(), ScriptedAI::me, MOVEMENTFLAG_WALKING, MotionMaster::MovePoint(), NPC_CITY_MAN, NPC_CITY_MAN2, NPC_CITY_MAN3, NPC_CITY_MAN4, NPC_EPOCH, NPC_HORSE_ESCORT, NPC_INFINITE_ADVERSARY, NPC_INFINITE_AGENT, NPC_INFINITE_HUNTER, NPC_INVIS_TARGET, NPC_JAINA, NPC_MAL_GANIS, NPC_TIME_RIFT, NPC_UTHER, pInstance, Random, REACT_AGGRESSIVE, REACT_DEFENSIVE, REACT_PASSIVE, EventMap::Repeat(), SAY_PHASE101, SAY_PHASE102, SAY_PHASE103, SAY_PHASE104, SAY_PHASE105, SAY_PHASE106, SAY_PHASE107, SAY_PHASE108, SAY_PHASE109, SAY_PHASE110, SAY_PHASE111, SAY_PHASE112, SAY_PHASE113, SAY_PHASE114, SAY_PHASE115, SAY_PHASE116, SAY_PHASE117, SAY_PHASE202, SAY_PHASE203, SAY_PHASE205, SAY_PHASE206, SAY_PHASE207, SAY_PHASE208, SAY_PHASE209, SAY_PHASE210, SAY_PHASE302, SAY_PHASE303, SAY_PHASE304, SAY_PHASE305, SAY_PHASE305_1, SAY_PHASE306, SAY_PHASE308, SAY_PHASE311, SAY_PHASE313, SAY_PHASE314, SAY_PHASE315, SAY_PHASE503, SAY_PHASE504, ScheduleNextEvent(), UnitAI::SelectTarget(), ZoneScript::SetData(), npc_escortAI::SetDespawnAtEnd(), npc_escortAI::SetDespawnAtFar(), npc_escortAI::SetEscortPaused(), Unit::SetFacingTo(), Unit::SetFacingToObject(), Unit::SetImmuneToAll(), Unit::SetNpcFlag(), Creature::SetReactState(), Creature::SetTarget(), Unit::SetVisible(), Creature::SetWalk(), SPELL_ARTHAS_CRUSADER_STRIKE, SPELL_ARTHAS_EXORCISM, SPELL_ARTHAS_HOLY_LIGHT, SPELL_MALGANIS_APPEAR, npc_escortAI::Start(), WorldObject::SummonCreature(), SummonNextWave(), summons, TEMPSUMMON_DEAD_DESPAWN, TEMPSUMMON_TIMED_DESPAWN, UNIT_FLAG_NON_ATTACKABLE, UNIT_NPC_FLAG_GOSSIP, UNIT_STATE_CASTING, EventMap::Update(), npc_escortAI::UpdateAI(), and WORLD_STATE_CULLING_OF_STRATHOLME_WAVE_COUNT.

◆ WaypointReached() [1/2]

void npc_arthas::npc_arthasAI::WaypointReached ( uint32  uiPointId)
inlineoverridevirtual

Implements npc_escortAI.

538 {
539 switch (uiPointId)
540 {
541 // Starting waypoint, After reaching uther and jaina
542 case 0:
543 // On the mountain with uther and jaina
544 case 1:
545 // Reaching city man in city
546 case 9:
547 // Reaching city man in town hall
548 case 23:
549 SetEscortPaused(true);
550 eventInRun = true;
551 break;
552 // After intro, in front of bridge
553 case 3:
554 me->SetWalk(false);
556 summons.DespawnAll(); // uther, jaina and horses
557 break;
558 // Reached City
559 case 8:
561 SetEscortPaused(true);
562 if (pInstance)
564
565 if (Creature* stalker = me->SummonCreature(NPC_INVIS_TARGET, 2026.469f, 1287.088f, 143.596f, 1.37f, TEMPSUMMON_TIMED_DESPAWN, 14000))
566 {
567 me->SetFacingToObject(stalker);
568 stalker->DespawnOrUnsummon(500ms);
569 }
570 break;
571 // Reached first cityman
572 case 10:
573 if (Creature* cityman = GetEventNpc(NPC_CITY_MAN))
574 {
575 cityman->AI()->Talk(SAY_PHASE204);
577 }
578 break;
579 // Reached second cityman
580 case 11:
581 if (Creature* cityman = GetEventNpc(NPC_CITY_MAN2))
582 {
583 cityman->AI()->Talk(SAY_PHASE204_1);
585 }
587 SetEscortPaused(true);
588 eventInRun = true;
589 break;
590 // Reached Town Hall
591 case 20:
592 if (pInstance)
595 me->SetWalk(true);
596 SetEscortPaused(true);
597 break;
598 // Inside Town Hall first scene pos
599 case 22:
601 eventInRun = true;
602 SetEscortPaused(true);
603 break;
604 // Town Hall, upper floor first fight
605 case 26:
606 SetEscortPaused(true);
607 eventInRun = true;
610 break;
611 // Town Hall, upper floor second fight
612 case 29:
616 SetEscortPaused(true);
617 eventInRun = true;
618 break;
619 // Town Hall, upper floor third fight
620 case 31:
621 me->SetWalk(true);
625 SetEscortPaused(true);
626 eventInRun = true;
627 break;
628 // Book Shelf
629 case 34:
631 break;
632 case 35:
634 break;
635 // Reached book shelf
636 case 36:
637 me->SetWalk(false);
638 if (pInstance)
640 pGate->SetGoState(GO_STATE_ACTIVE);
641 break;
642 // Behind secred passage
643 case 45:
644 me->SetWalk(false);
646 SetEscortPaused(true);
647 if (pInstance)
649 break;
650 // Some walk talk
651 case 47:
652 me->SetWalk(true);
654 break;
655 case 48:
656 me->SetWalk(false);
658 break;
659 case 53:
661 break;
662 // Before Malganis event
663 case 54:
664 if (pInstance)
666
668 SetEscortPaused(true);
669 break;
670 // Infront of malganis
671 case 55:
674 SetEscortPaused(true);
675 eventInRun = true;
676 break;
677 // After malganis defeat
678 case 56:
679 SetEscortPaused(true);
680 eventInRun = true;
681 break;
682 }
683 }
@ SAY_PHASE307
Definition culling_of_stratholme.cpp:57
@ SAY_PHASE405
Definition culling_of_stratholme.cpp:71
@ SAY_PHASE312
Definition culling_of_stratholme.cpp:62
@ SAY_PHASE406
Definition culling_of_stratholme.cpp:72
@ SAY_PHASE407
Definition culling_of_stratholme.cpp:73
@ SAY_PHASE502
Definition culling_of_stratholme.cpp:77
@ SAY_PHASE309
Definition culling_of_stratholme.cpp:59
@ SAY_PHASE204_1
Definition culling_of_stratholme.cpp:102
@ SAY_PHASE402
Definition culling_of_stratholme.cpp:68
@ SAY_PHASE118
Definition culling_of_stratholme.cpp:42
@ SAY_PHASE204
Definition culling_of_stratholme.cpp:105
@ SAY_PHASE403
Definition culling_of_stratholme.cpp:69
void SpawnTimeRift()
Definition culling_of_stratholme.cpp:1353

References actionEvents, Unit::CastSpell(), COS_PROGRESS_BEFORE_MALGANIS, COS_PROGRESS_FINISHED_INTRO, COS_PROGRESS_LAST_CITY, COS_PROGRESS_REACHED_TOWN_HALL, DATA_ARTHAS_EVENT, DATA_SHKAF_GATE, SummonList::DespawnAll(), EVENT_ACTION_PHASE3, EVENT_ACTION_PHASE5, eventInRun, GetEventNpc(), Map::GetGameObject(), InstanceScript::GetGuidData(), GO_STATE_ACTIVE, InstanceScript::instance, ScriptedAI::me, NPC_CITY_MAN, NPC_CITY_MAN2, NPC_INVIS_TARGET, pInstance, REACT_DEFENSIVE, SAY_PHASE118, SAY_PHASE204, SAY_PHASE204_1, SAY_PHASE307, SAY_PHASE309, SAY_PHASE312, SAY_PHASE402, SAY_PHASE403, SAY_PHASE405, SAY_PHASE406, SAY_PHASE407, SAY_PHASE502, EventMap::ScheduleEvent(), ZoneScript::SetData(), npc_escortAI::SetEscortPaused(), Unit::SetFacingToObject(), Unit::SetNpcFlag(), Creature::SetReactState(), Creature::SetWalk(), SpawnTimeRift(), SPELL_ARTHAS_CRUSADER_STRIKE, WorldObject::SummonCreature(), summons, TEMPSUMMON_TIMED_DESPAWN, and UNIT_NPC_FLAG_GOSSIP.

◆ WaypointReached() [2/2]

virtual void CreatureAI::WaypointReached ( uint32  ,
uint32   
)
inlinevirtual

Reimplemented from CreatureAI.

196{ }

Member Data Documentation

◆ actionEvents

EventMap npc_arthas::npc_arthasAI::actionEvents

◆ combatEvents

EventMap npc_arthas::npc_arthasAI::combatEvents

Referenced by Reset(), and UpdateAI().

◆ eventInRun

bool npc_arthas::npc_arthasAI::eventInRun

◆ pInstance

InstanceScript* npc_arthas::npc_arthasAI::pInstance

◆ summons

◆ timeRiftId

uint8 npc_arthas::npc_arthasAI::timeRiftId

Referenced by Reset().

◆ waveGroupId

uint8 npc_arthas::npc_arthasAI::waveGroupId

Referenced by DoAction(), and Reset().

◆ waveKillCount

uint8 npc_arthas::npc_arthasAI::waveKillCount

Referenced by Reset().


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