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

Public Member Functions

 npc_thrall_old_hillsbradAI (Creature *creature)
 
void DoAction (int32 param) override
 
void WaypointStart (uint32 waypointId) override
 
void WaypointReached (uint32 waypointId) override
 
void MountSelf ()
 
void UnMountSelf ()
 
void MovementInform (uint32 type, uint32 point) override
 
void JustEngagedWith (Unit *) override
 Called for reaction when initially engaged - this happens after JustEnteredCombat.
 
void Reset () override
 
void JustReachedHome () override
 
void KilledUnit (Unit *) override
 
void JustSummoned (Creature *summon) override
 
void SummonedCreatureDespawn (Creature *summon) override
 
void SummonedCreatureDies (Creature *summon, Unit *) override
 
void JustDied (Unit *killer) override
 
void UpdateAI (uint32 diff) override
 Use to start attacking a target. Called just before JustEngagedWith()
 
void UpdateEscortAI (uint32 diff) override
 
void ReorderInstance (uint32 data)
 
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 JustRespawned () override
 
void ReturnToLastPoint ()
 
void EnterEvadeMode (EvadeReason=EVADE_REASON_OTHER) 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)
 
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)
 
- Public Member Functions inherited from ScriptedAI
 ScriptedAI (Creature *creature)
 
 ~ScriptedAI () override
 
void AttackStartNoMove (Unit *target)
 
void DamageTaken (Unit *, uint32 &, DamageEffectType, SpellSchoolMask) override
 Called at any Damage from any attacker (before damage apply)
 
void UpdateAI (uint32 diff) override
 Use to start attacking a target. Called just before JustEngagedWith()
 
void JustDied (Unit *) override
 
void KilledUnit (Unit *) override
 
void JustSummoned (Creature *) override
 
void SummonedCreatureDespawn (Creature *) override
 
void SpellHit (Unit *, SpellInfo const *) override
 
void SpellHitTarget (Unit *, SpellInfo const *) override
 
void MovementInform (uint32, uint32) override
 
void OnPossess (bool)
 
bool IsInRoom (const Position *pos, Axis axis, bool above)
 
void Reset () override
 
void JustEngagedWith (Unit *) override
 Called for reaction when initially engaged - this happens after JustEnteredCombat.
 
void AttackStart (Unit *) override
 
void DoStartMovement (Unit *target, float distance=0.0f, float angle=0.0f)
 
void DoStartNoMovement (Unit *target)
 
void DoStopAttack ()
 
void DoRewardPlayersInArea ()
 
void DoCastSpell (Unit *target, SpellInfo const *spellInfo, bool triggered=false)
 
void DoPlaySoundToSet (WorldObject *source, uint32 soundId)
 
void DoPlayMusic (uint32 soundId, bool zone)
 
void DoAddThreat (Unit *unit, float amount)
 
void DoModifyThreatByPercent (Unit *unit, int32 pct)
 
void DoResetThreat (Unit *unit)
 
void DoResetThreatList ()
 
float DoGetThreat (Unit *unit)
 
void DoTeleportPlayer (Unit *unit, float x, float y, float z, float o)
 
void DoTeleportPlayer (Unit *unit, Position pos)
 
void DoTeleportAll (float x, float y, float z, float o)
 
UnitDoSelectLowestHpFriendly (float range, uint32 minHPDiff=1)
 
std::list< Creature * > DoFindFriendlyCC (float range)
 
std::list< Creature * > DoFindFriendlyMissingBuff (float range, uint32 spellId)
 
PlayerGetPlayerAtMinimumRange (float minRange)
 
CreatureDoSpawnCreature (uint32 entry, float offsetX, float offsetY, float offsetZ, float angle, uint32 type, uint32 despawntime)
 
bool IsUniqueTimedEventDone (uint32 id) const
 
void SetUniqueTimedEventDone (uint32 id)
 
void ResetUniqueTimedEvent (uint32 id)
 
void ClearUniqueTimedEventsDone ()
 
void ScheduleTimedEvent (Milliseconds timerMin, Milliseconds timerMax, std::function< void()> exec, Milliseconds repeatMin, Milliseconds repeatMax=0ms, uint32 uniqueId=0)
 
void ScheduleTimedEvent (Milliseconds timerMax, std::function< void()> exec, Milliseconds repeatMin, Milliseconds repeatMax=0ms, uint32 uniqueId=0)
 
void ScheduleUniqueTimedEvent (Milliseconds timer, std::function< void()> exec, uint32 uniqueId)
 
bool HealthBelowPct (uint32 pct) const
 
bool HealthAbovePct (uint32 pct) const
 
SpellInfo const * SelectSpell (Unit *target, uint32 school, uint32 mechanic, SelectTargetType targets, uint32 powerCostMin, uint32 powerCostMax, float rangeMin, float rangeMax, SelectEffect effect)
 
void SetEquipmentSlots (bool loadDefault, int32 mainHand=EQUIP_NO_CHANGE, int32 offHand=EQUIP_NO_CHANGE, int32 ranged=EQUIP_NO_CHANGE)
 
virtual bool CheckEvadeIfOutOfCombatArea () const
 
bool IsHeroic () const
 
Difficulty GetDifficulty () const
 
bool Is25ManRaid () const
 
template<class T >
const T & DUNGEON_MODE (const T &normal5, const T &heroic10) const
 
template<class T >
const T & RAID_MODE (const T &normal10, const T &normal25) const
 
template<class T >
const T & RAID_MODE (const T &normal10, const T &normal25, const T &heroic10, const T &heroic25) const
 
PlayerSelectTargetFromPlayerList (float maxdist, uint32 excludeAura=0, bool mustBeInLOS=false) const
 
void SetInvincibility (bool apply)
 
bool IsInvincible () const
 
void SetAutoAttackAllowed (bool allow)
 
bool IsAutoAttackAllowed () const
 
- Public Member Functions inherited from CreatureAI
void Talk (uint8 id, WorldObject const *whisperTarget=nullptr, Milliseconds delay=0ms)
 Causes the creature to talk/say the text assigned to their entry in the creature_text database table.
 
void Talk (uint8 id, Milliseconds delay)
 
WorldObjectGetSummoner () const
 Returns the summoner creature/object, if the creature is a temporary summon.
 
 CreatureAI (Creature *creature)
 
 ~CreatureAI () override
 
bool IsEngaged () const
 Check if creature is currently engaged in combat.
 
void MoveCircleChecks ()
 
void MoveBackwardsChecks ()
 
void MoveInLineOfSight_Safe (Unit *who)
 == Reactions At =================================
 
void TriggerAlert (Unit const *who) const
 
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 ()
 
void JustExitedCombat () override
 Called when the unit leaves combat.
 
virtual void IsSummonedBy (WorldObject *)
 
virtual void SummonedCreatureDespawnAll ()
 
virtual void SummonedCreatureEvade (Creature *)
 
virtual void OnSpellStart (SpellInfo const *)
 
virtual void OnSpellCast (SpellInfo const *)
 
virtual void OnSpellFailed (SpellInfo const *)
 
virtual void OnChannelFinished (SpellInfo const *)
 
virtual void AttackedBy (Unit *)
 
virtual 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.
 
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)
 Cast the spell on a random unit from the threat list.
 
SpellCastResult DoCastMaxThreat (uint32 spellId, uint32 threatTablePosition=0, float dist=0.0f, bool playerOnly=true, bool triggered=false)
 Cast spell on the top threat target, which may not be the current victim.
 
float DoGetSpellMaxRange (uint32 spellId, bool positive=false)
 
void DoMeleeAttackIfReady ()
 
bool DoSpellAttackIfReady (uint32 spell)
 
void DoSpellAttackToRandomTargetIfReady (uint32 spell, uint32 threatTablePosition=0, float dist=0.f, bool playerOnly=true)
 
virtual void SummonMovementInform (Creature *, uint32, uint32)
 Called when a summon reaches a waypoint or point movement finished.
 
virtual void sGossipHello (Player *)
 
virtual void sGossipSelect (Player *, uint32, uint32)
 
virtual void sGossipSelectCode (Player *, uint32, uint32, char const *)
 
virtual void sQuestAccept (Player *, Quest const *)
 
virtual void sQuestSelect (Player *, Quest const *)
 
virtual void sQuestComplete (Player *, Quest const *)
 
virtual void sQuestReward (Player *, Quest const *, uint32)
 
virtual void sOnGameEvent (bool, uint16)
 
virtual std::string GetDebugInfo () const
 

Private Attributes

InstanceScriptinstance
 
EventMap events
 
EventMap combatEvents
 
SummonList summons
 
bool _mounted
 
bool _barnWave
 
bool _churchWave
 

Additional Inherited Members

- Public Types inherited from ScriptedAI
enum class  Axis {
  AXIS_X ,
  AXIS_Y
}
 
- Public Types inherited from CreatureAI
enum  EvadeReason {
  EVADE_REASON_NO_HOSTILES ,
  EVADE_REASON_BOUNDARY ,
  EVADE_REASON_SEQUENCE_BREAK ,
  EVADE_REASON_NO_PATH ,
  EVADE_REASON_OTHER
}
 
- Static Public Member Functions inherited from CreatureAI
static bool IsInBounds (CreatureBoundary const &boundary, Position const *who)
 
- Static Public Member Functions inherited from UnitAI
static void FillAISpellInfo ()
 
- Public Attributes inherited from ScriptedAI
Creatureme
 
- 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_thrall_old_hillsbradAI()

npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::npc_thrall_old_hillsbradAI ( Creature creature)
inline
249 : npc_escortAI(creature), summons(me)
250 {
251 instance = creature->GetInstanceScript();
252 _barnWave = false;
253 _churchWave = false;
254 }
InstanceScript * GetInstanceScript() const
Definition Object.cpp:1238
Creature * me
Definition ScriptedCreature.h:281
Definition ScriptedEscortAI.h:53
bool _barnWave
Definition old_hillsbrad.cpp:981
bool _churchWave
Definition old_hillsbrad.cpp:982
SummonList summons
Definition old_hillsbrad.cpp:978
InstanceScript * instance
Definition old_hillsbrad.cpp:975

References _barnWave, _churchWave, WorldObject::GetInstanceScript(), and instance.

Member Function Documentation

◆ DoAction()

void npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::DoAction ( int32  param)
inlineoverridevirtual

Reimplemented from UnitAI.

257 {
258 switch (param)
259 {
261 events.ScheduleEvent(EVENT_OPEN_DOORS, 0ms);
262 events.ScheduleEvent(EVENT_START_WP, 3s);
263 break;
268 SetEscortPaused(false);
269 break;
271 events.ScheduleEvent(EVENT_SUMMON_CHRONO, 0ms);
272 events.ScheduleEvent(EVENT_THRALL_TALK_2, 6s);
273 events.ScheduleEvent(EVENT_TARETHA_FALL, 11s);
274 events.ScheduleEvent(EVENT_THRALL_TALK_3, 15s);
275 events.ScheduleEvent(EVENT_THRALL_MOVE_DOWN, 17s);
276 break;
277 case NPC_TARETHA:
278 events.ScheduleEvent(EVENT_THRALL_FACE_TARETHA, 0ms);
279 events.ScheduleEvent(EVENT_THRALL_TALK_4, 4s);
280 events.ScheduleEvent(EVENT_TARETHA_TALK_1, 13s);
281 events.ScheduleEvent(EVENT_THRALL_TALK_5, 17s);
282 events.ScheduleEvent(EVENT_SUMMON_EROZION, 17500ms);
283 events.ScheduleEvent(EVENT_EROZION_TALK_1, 18s);
284 events.ScheduleEvent(EVENT_EROZION_ACTION_1, 24s);
285 events.ScheduleEvent(EVENT_EROZION_TALK_2, 29s);
286 events.ScheduleEvent(EVENT_EROZION_TALK_3, 40s);
287 events.ScheduleEvent(EVENT_EROZION_ACTION_2, 46s);
288 events.ScheduleEvent(EVENT_THRALL_TALK_6, 48s);
289 events.ScheduleEvent(EVENT_THRALL_RUN_AWAY, 51s);
290 events.ScheduleEvent(EVENT_TARETHA_TALK_2, 53s);
291 events.ScheduleEvent(EVENT_EROZION_FLAGS, 56s);
292 break;
293 }
294 }
events
Definition boss_sartura.cpp:43
@ EVENT_THRALL_FACE_TARETHA
Definition old_hillsbrad.cpp:187
@ EVENT_EROZION_ACTION_2
Definition old_hillsbrad.cpp:195
@ EVENT_TARETHA_TALK_1
Definition old_hillsbrad.cpp:189
@ EVENT_THRALL_TALK_3
Definition old_hillsbrad.cpp:175
@ EVENT_THRALL_TALK_6
Definition old_hillsbrad.cpp:197
@ EVENT_START_WP
Definition old_hillsbrad.cpp:139
@ EVENT_THRALL_TALK_2
Definition old_hillsbrad.cpp:173
@ EVENT_TARETHA_FALL
Definition old_hillsbrad.cpp:174
@ EVENT_THRALL_TALK_5
Definition old_hillsbrad.cpp:190
@ EVENT_EROZION_TALK_1
Definition old_hillsbrad.cpp:192
@ EVENT_EROZION_TALK_2
Definition old_hillsbrad.cpp:194
@ EVENT_EROZION_TALK_3
Definition old_hillsbrad.cpp:196
@ EVENT_EROZION_FLAGS
Definition old_hillsbrad.cpp:200
@ EVENT_THRALL_MOVE_DOWN
Definition old_hillsbrad.cpp:176
@ EVENT_SUMMON_CHRONO
Definition old_hillsbrad.cpp:172
@ EVENT_TARETHA_TALK_2
Definition old_hillsbrad.cpp:199
@ EVENT_SUMMON_EROZION
Definition old_hillsbrad.cpp:191
@ EVENT_THRALL_RUN_AWAY
Definition old_hillsbrad.cpp:198
@ EVENT_OPEN_DOORS
Definition old_hillsbrad.cpp:138
@ EVENT_EROZION_ACTION_1
Definition old_hillsbrad.cpp:193
@ EVENT_THRALL_TALK_4
Definition old_hillsbrad.cpp:188
@ ENCOUNTER_PROGRESS_AMBUSHES_1
Definition old_hillsbrad.h:78
@ ENCOUNTER_PROGRESS_THRALL_ARMORED
Definition old_hillsbrad.h:77
@ ENCOUNTER_PROGRESS_BARRELS
Definition old_hillsbrad.h:75
@ ENCOUNTER_PROGRESS_TARETHA_MEET
Definition old_hillsbrad.h:81
@ ENCOUNTER_PROGRESS_SKARLOC_KILLED
Definition old_hillsbrad.h:79
@ ENCOUNTER_PROGRESS_TARREN_MILL
Definition old_hillsbrad.h:80
@ NPC_TARETHA
Definition old_hillsbrad.h:46
void SetEscortPaused(bool on)
Definition ScriptedEscortAI.cpp:486

References ENCOUNTER_PROGRESS_AMBUSHES_1, ENCOUNTER_PROGRESS_BARRELS, ENCOUNTER_PROGRESS_SKARLOC_KILLED, ENCOUNTER_PROGRESS_TARETHA_MEET, ENCOUNTER_PROGRESS_TARREN_MILL, ENCOUNTER_PROGRESS_THRALL_ARMORED, EVENT_EROZION_ACTION_1, EVENT_EROZION_ACTION_2, EVENT_EROZION_FLAGS, EVENT_EROZION_TALK_1, EVENT_EROZION_TALK_2, EVENT_EROZION_TALK_3, EVENT_OPEN_DOORS, EVENT_START_WP, EVENT_SUMMON_CHRONO, EVENT_SUMMON_EROZION, EVENT_TARETHA_FALL, EVENT_TARETHA_TALK_1, EVENT_TARETHA_TALK_2, EVENT_THRALL_FACE_TARETHA, EVENT_THRALL_MOVE_DOWN, EVENT_THRALL_RUN_AWAY, EVENT_THRALL_TALK_2, EVENT_THRALL_TALK_3, EVENT_THRALL_TALK_4, EVENT_THRALL_TALK_5, EVENT_THRALL_TALK_6, NPC_TARETHA, and npc_escortAI::SetEscortPaused().

◆ JustDied()

void npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::JustDied ( Unit killer)
inlineoverridevirtual

Reimplemented from npc_escortAI.

537 {
538 if (killer && killer == me)
539 return;
540
547 else
549 }
constexpr auto DAY
Definition Common.h:49
@ STATE_ESCORT_ESCORTING
Definition ScriptedEscortAI.h:47
void SetRespawnTime(uint32 respawn)
Definition Creature.cpp:3730
void DespawnAll(Milliseconds delay=0ms)
Definition ScriptedCreature.cpp:72
SpellCastResult CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=nullptr, AuraEffect const *triggeredByAura=nullptr, ObjectGuid originalCaster=ObjectGuid::Empty)
Definition Unit.cpp:1350
virtual uint32 GetData(uint32) const
Definition ZoneScript.h:51
virtual void SetData(uint32, uint32)
Definition ZoneScript.h:52
Talk
Definition hyjal.cpp:82
@ SAY_RANDOM_DIE
Definition old_hillsbrad.cpp:48
@ SPELL_SUMMON_EROZION_IMAGE
Definition old_hillsbrad.cpp:86
@ DATA_THRALL_REPOSITION
Definition old_hillsbrad.h:35
@ DATA_ATTEMPTS_COUNT
Definition old_hillsbrad.h:39
void RemoveEscortState(uint32 escortState)
Definition ScriptedEscortAI.h:111

References Unit::CastSpell(), DATA_ATTEMPTS_COUNT, DATA_THRALL_REPOSITION, DAY, SummonList::DespawnAll(), ZoneScript::GetData(), instance, ScriptedAI::me, npc_escortAI::RemoveEscortState(), SAY_RANDOM_DIE, ZoneScript::SetData(), Creature::SetRespawnTime(), SPELL_SUMMON_EROZION_IMAGE, STATE_ESCORT_ESCORTING, and summons.

◆ JustEngagedWith()

void npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::JustEngagedWith ( Unit )
inlineoverridevirtual

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

Reimplemented from CreatureAI.

475 {
480
481 if (roll_chance_i(50))
483
484 if (me->IsMounted())
485 {
486 _mounted = true;
487 UnMountSelf();
488 }
489 }
bool roll_chance_i(int chance)
Definition Random.h:63
void ScheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
Definition EventMap.cpp:48
void Reset()
Definition EventMap.cpp:21
bool IsMounted() const
Definition Unit.h:1886
@ SAY_RANDOM_AGGRO
Definition old_hillsbrad.cpp:49
@ EVENT_CHECK_HEALTH
Definition old_hillsbrad.cpp:134
@ EVENT_SPELL_SHIELD_BLOCK
Definition old_hillsbrad.cpp:136
@ EVENT_SPELL_STRIKE
Definition old_hillsbrad.cpp:135
bool _mounted
Definition old_hillsbrad.cpp:980
void UnMountSelf()
Definition old_hillsbrad.cpp:456
EventMap combatEvents
Definition old_hillsbrad.cpp:977

References _mounted, combatEvents, EVENT_CHECK_HEALTH, EVENT_SPELL_SHIELD_BLOCK, EVENT_SPELL_STRIKE, Unit::IsMounted(), ScriptedAI::me, EventMap::Reset(), roll_chance_i(), SAY_RANDOM_AGGRO, EventMap::ScheduleEvent(), and UnMountSelf().

◆ JustReachedHome()

void npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::JustReachedHome ( )
inlineoverridevirtual

Reimplemented from CreatureAI.

507 {
508 if (_barnWave)
509 {
510 _barnWave = false;
511 Talk(SAY_LEAD);
512 }
513 else if (_churchWave)
514 {
515 _churchWave = false;
517 }
518 }
@ SAY_LEAD
Definition old_hillsbrad.cpp:59
@ SAY_CHURCH_END
Definition old_hillsbrad.cpp:42

References _barnWave, _churchWave, SAY_CHURCH_END, and SAY_LEAD.

◆ JustSummoned()

void npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::JustSummoned ( Creature summon)
inlineoverridevirtual

Reimplemented from CreatureAI.

526 {
527 if (summon->GetEntry() == NPC_INFINITE_SLAYER || summon->GetEntry() == NPC_INFINITE_SABOTEUR || summon->GetEntry() == NPC_INFINITE_DEFILER)
528 summon->GetMotionMaster()->MovePoint(10, 2634.25f, 672.01f, 54.445f);
529
530 summons.Summon(summon);
531 }
void MovePoint(uint32 id, const Position &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
uint32 GetEntry() const
Definition Object.h:117
void Summon(Creature const *summon)
Definition ScriptedCreature.h:88
MotionMaster * GetMotionMaster()
Definition Unit.h:1758
@ NPC_INFINITE_DEFILER
Definition old_hillsbrad.cpp:109
@ NPC_INFINITE_SABOTEUR
Definition old_hillsbrad.cpp:110
@ NPC_INFINITE_SLAYER
Definition old_hillsbrad.cpp:111

References Object::GetEntry(), Unit::GetMotionMaster(), MotionMaster::MovePoint(), NPC_INFINITE_DEFILER, NPC_INFINITE_SABOTEUR, NPC_INFINITE_SLAYER, SummonList::Summon(), and summons.

◆ KilledUnit()

void npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::KilledUnit ( Unit )
inlineoverridevirtual

Reimplemented from CreatureAI.

521 {
523 }
@ SAY_RANDOM_KILL
Definition old_hillsbrad.cpp:50

References SAY_RANDOM_KILL.

◆ MountSelf()

void npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::MountSelf ( )
inline
451 {
454 }
@ MOVE_RUN
Definition UnitDefines.h:357
void Mount(uint32 mount, uint32 vehicleId=0, uint32 creatureEntry=0)
Definition Unit.cpp:10479
void SetSpeed(UnitMoveType mtype, float rate, bool forced=false)
Definition Unit.cpp:11270
#define SPEED_MOUNTED
Definition old_hillsbrad.cpp:129
@ SKARLOC_MOUNT_MODEL
Definition old_hillsbrad.h:72

References ScriptedAI::me, Unit::Mount(), MOVE_RUN, Unit::SetSpeed(), SKARLOC_MOUNT_MODEL, and SPEED_MOUNTED.

Referenced by MovementInform(), and UpdateAI().

◆ MovementInform()

void npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::MovementInform ( uint32  type,
uint32  point 
)
inlineoverridevirtual

Reimplemented from npc_escortAI.

463 {
464 npc_escortAI::MovementInform(type, point);
465 if (type == POINT_MOTION_TYPE && point == 0xFFFFFF /*POINT_LAST_POINT*/)
466 {
467 if (roll_chance_i(30))
469 if (_mounted)
470 MountSelf();
471 }
472 }
@ POINT_MOTION_TYPE
Definition MotionMaster.h:48
@ SAY_LEAVE_COMBAT
Definition old_hillsbrad.cpp:51
void MovementInform(uint32, uint32) override
Definition ScriptedEscortAI.cpp:317
void MountSelf()
Definition old_hillsbrad.cpp:450

References _mounted, MountSelf(), npc_escortAI::MovementInform(), POINT_MOTION_TYPE, roll_chance_i(), and SAY_LEAVE_COMBAT.

◆ ReorderInstance()

void npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::ReorderInstance ( uint32  data)
inline
926 {
927 me->SetWalk(false);
928 Start(true);
929 SetEscortPaused(true);
930 SetDespawnAtEnd(false);
931
933
935 {
939 }
940 else
941 {
945 }
946
947 switch (data)
948 {
950 SetNextWaypoint(11, false);
951 break;
953 SetNextWaypoint(27, false);
954 break;
956 if (Creature* mount = me->SummonCreature(NPC_SKARLOC_MOUNT, 2049.12f, 252.31f, 62.855f, me->GetOrientation(), TEMPSUMMON_MANUAL_DESPAWN))
957 {
958 mount->SetImmuneToNPC(true);
959 mount->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
960 }
961 SetNextWaypoint(30, false);
962 break;
964 SetNextWaypoint(61, false);
965 break;
967 SetNextWaypoint(95, false);
969 Taretha->SetStandState(UNIT_STAND_STATE_STAND);
970 break;
971 }
972 }
@ TEMPSUMMON_MANUAL_DESPAWN
Definition Object.h:56
@ UNIT_STAND_STATE_STAND
Definition UnitDefines.h:35
@ UNIT_NPC_FLAG_GOSSIP
Definition UnitDefines.h:322
@ UNIT_NPC_FLAG_QUESTGIVER
Definition UnitDefines.h:323
@ UNIT_FLAG_NOT_SELECTABLE
Definition UnitDefines.h:282
@ UNIT_VIRTUAL_ITEM_SLOT_ID
Definition UpdateFields.h:116
Definition Creature.h:47
void SetDisplayId(uint32 displayId, float displayScale=1.f) override
Definition Creature.cpp:3437
bool SetWalk(bool enable) override
Enable or disable the creature's walk mode by removing: MOVEMENTFLAG_WALKING. Infom also the client.
Definition Creature.cpp:3247
ObjectGuid GetGuidData(uint32 type) const override
Definition InstanceScript.cpp:110
void SetNpcFlag(NPCFlags flags)
Definition Unit.h:764
void SetUInt32Value(uint16 index, uint32 value)
Definition Unit.cpp:17323
TempSummon * SummonCreature(uint32 id, const Position &pos, TempSummonType spwtype=TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime=0, uint32 vehId=0, SummonPropertiesEntry const *properties=nullptr, bool visibleBySummonerOnly=false) const
Definition Object.cpp:2394
Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
Definition ObjectAccessor.cpp:210
@ THRALL_MODEL_UNEQUIPPED
Definition old_hillsbrad.cpp:118
@ THRALL_MODEL_EQUIPPED
Definition old_hillsbrad.cpp:119
@ THRALL_WEAPON_ITEM
Definition old_hillsbrad.cpp:116
@ THRALL_SHIELD_ITEM
Definition old_hillsbrad.cpp:117
@ DATA_TARETHA_GUID
Definition old_hillsbrad.h:38
@ NPC_SKARLOC_MOUNT
Definition old_hillsbrad.h:60
float GetOrientation() const
Definition Position.h:124
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:419
void SetDespawnAtEnd(bool despawn)
Definition ScriptedEscortAI.h:104
bool SetNextWaypoint(uint32 pointId, float x, float y, float z, float orientation)
Definition ScriptedEscortAI.cpp:497

References DATA_TARETHA_GUID, ENCOUNTER_PROGRESS_AMBUSHES_1, ENCOUNTER_PROGRESS_SKARLOC_KILLED, ENCOUNTER_PROGRESS_TARETHA_MEET, ENCOUNTER_PROGRESS_TARREN_MILL, ENCOUNTER_PROGRESS_THRALL_ARMORED, ObjectAccessor::GetCreature(), InstanceScript::GetGuidData(), Position::GetOrientation(), instance, ScriptedAI::me, NPC_SKARLOC_MOUNT, npc_escortAI::SetDespawnAtEnd(), Creature::SetDisplayId(), npc_escortAI::SetEscortPaused(), npc_escortAI::SetNextWaypoint(), Unit::SetNpcFlag(), Unit::SetUInt32Value(), Creature::SetWalk(), npc_escortAI::Start(), WorldObject::SummonCreature(), TEMPSUMMON_MANUAL_DESPAWN, THRALL_MODEL_EQUIPPED, THRALL_MODEL_UNEQUIPPED, THRALL_SHIELD_ITEM, THRALL_WEAPON_ITEM, UNIT_FLAG_NOT_SELECTABLE, UNIT_NPC_FLAG_GOSSIP, UNIT_NPC_FLAG_QUESTGIVER, UNIT_STAND_STATE_STAND, and UNIT_VIRTUAL_ITEM_SLOT_ID.

Referenced by Reset().

◆ Reset()

void npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::Reset ( )
inlineoverridevirtual

◆ SummonedCreatureDespawn()

void npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::SummonedCreatureDespawn ( Creature summon)
inlineoverridevirtual

Reimplemented from CreatureAI.

533{ summons.Despawn(summon); }
void Despawn(Creature const *summon)
Definition ScriptedCreature.h:89

References SummonList::Despawn(), and summons.

◆ SummonedCreatureDies()

void npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::SummonedCreatureDies ( Creature summon,
Unit  
)
inlineoverridevirtual

Reimplemented from CreatureAI.

534{ summons.Despawn(summon); }

References SummonList::Despawn(), and summons.

◆ UnMountSelf()

void npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::UnMountSelf ( )
inline
457 {
458 me->Dismount();
460 }
void Dismount()
Definition Unit.cpp:10539
#define SPEED_RUNNING
Definition old_hillsbrad.cpp:128

References Unit::Dismount(), ScriptedAI::me, MOVE_RUN, Unit::SetSpeed(), and SPEED_RUNNING.

Referenced by JustEngagedWith(), and WaypointReached().

◆ UpdateAI()

void npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::UpdateAI ( uint32  )
inlineoverridevirtual

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

Reimplemented from npc_escortAI.

552 {
554
555 events.Update(diff);
556 switch (events.ExecuteEvent())
557 {
558 case EVENT_OPEN_DOORS:
560 doors->SetGoState(GO_STATE_ACTIVE);
561 me->SummonCreature(NPC_DURNHOLDE_SENTRY, 2142.372f, 174.2907f, 66.30494f, 2.5656f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
562 me->SummonCreature(NPC_DURNHOLDE_SENTRY, 2138.178f, 168.6046f, 66.30494f, 2.4783f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
563 me->SummonCreature(NPC_DURNHOLDE_VETERAN, 2140.1458f, 169.23643f, 66.30494f, 2.4958f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
564 me->SummonCreature(NPC_DURNHOLDE_VETERAN, 2107.9377f, 192.07530f, 66.30494f, 2.5481f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
565 me->SummonCreature(NPC_DURNHOLDE_MAGE, 2142.3633f, 172.42600f, 66.30494f, 2.5481f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
566 me->SummonCreature(NPC_DURNHOLDE_MAGE, 2109.8518f, 195.14030f, 66.30493f, 2.4260f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
567 me->SummonCreature(NPC_DURNHOLDE_MAGE, 2108.4856f, 189.93457f, 66.30494f, 2.6878f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
568 break;
569 case EVENT_START_WP:
570 me->SetWalk(false);
571 Start(true);
572 SetDespawnAtEnd(false);
573 break;
574 case EVENT_SET_FACING:
576 {
577 armorer->GetMotionMaster()->Clear();
578 armorer->GetMotionMaster()->MoveIdle();
579 armorer->SetFacingToObject(me);
580 me->SetFacingToObject(armorer);
581 }
582 break;
585 {
586 armorer->AI()->Talk(SAY_ARMORER_THRALL);
587 }
588 break;
591 break;
595 {
596 DoCast(armorer, SPELL_KNOCKOUT_ARMORER, true);
597 armorer->SetStandState(UNIT_STAND_STATE_DEAD);
598 }
599 break;
602 break;
604 me->SetFacingTo(2.61f);
607 break;
610 break;
613 break;
616 break;
619 break;
623 me->SetFacingTo(5.6897f);
625 if (Creature* sentry = me->SummonCreature(NPC_DURNHOLDE_SENTRY, 2185.916f, 140.38835f, 88.299866f, 5.9238f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS))
626 {
627 sentry->SetWalk(true);
628 sentry->GetMotionMaster()->MovePoint(0, 2191.9712f, 138.11394f, 88.2125f);
629 }
630 if (Creature* warden = me->SummonCreature(NPC_DURNHOLDE_WARDEN, 2188.5586f, 138.88553f, 88.299866f, 1.6031f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS))
631 {
632 warden->SetWalk(true);
633 warden->GetMotionMaster()->MovePoint(0, 2188.5068f, 140.48346f, 88.21251f);
634 }
635 if (Creature* veteran = me->SummonCreature(NPC_DURNHOLDE_VETERAN, 2186.9856f, 142.199f, 88.299866f, 5.9049f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS))
636 {
637 veteran->SetWalk(true);
638 veteran->GetMotionMaster()->MovePoint(0, 2190.48f, 140.81056f, 88.21251f);
639 }
640 if (Creature* mage = me->SummonCreature(NPC_DURNHOLDE_MAGE, 2189.7336f, 140.64551f, 88.299866f, 3.9532f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS))
641 {
642 mage->SetWalk(true);
643 mage->GetMotionMaster()->MovePoint(0, 2187.8035f, 138.61118f, 88.21251f);
644 }
645 break;
647 MountSelf();
648 if (Creature* mount = me->FindNearestCreature(NPC_SKARLOC_MOUNT, 10.0f))
649 {
650 me->SetFacingTo(mount->GetOrientation());
651 mount->DespawnOrUnsummon();
652 }
653 break;
656 break;
657 case EVENT_LOOK_1:
658 me->SetFacingTo(5.0090f);
659 me->SetImmuneToNPC(true);
660 break;
662 me->GetMotionMaster()->MovePoint(0, 2477.146f, 695.041f, 55.801f);
663 break;
664 case EVENT_LOOK_2:
665 me->SetFacingTo(2.0071f);
666 break;
668 me->SetWalk(false);
669 me->SummonCreature(NPC_TM_PROTECTOR, 2501.5708f, 699.38086f, 55.64138f, 3.8571f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
670 me->SummonCreature(NPC_TM_LOOKOUT, 2500.7002f, 698.26746f, 55.618248f, 3.7350f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
671 if (Creature* guardsman = me->SummonCreature(NPC_TM_GUARDSMAN, 2500.0908f, 699.9389f, 55.629555f, 4.2935f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS))
672 {
673 guardsman->CastSpell(guardsman, SPELL_DUMMY_AURA, true);
674 }
675 me->SummonCreature(NPC_TM_GUARDSMAN, 2499.0579f, 698.99725f, 55.611156f, 4.5727f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
677 break;
678 case EVENT_LOOK_3:
679 me->SetFacingTo(0.3490f);
680 break;
683 summon->AI()->Talk(SAY_LOOKOUT_SAW);
684 me->SetFacingTo(0.4363f);
685 break;
686 case EVENT_LOOK_4:
687 me->SetFacingTo(4.7510f);
690 break;
692 me->SetFacingTo(0.4363f);
694 summon->AI()->Talk(SAY_LOOKOUT_GO);
695 me->SetImmuneToNPC(true);
696 break;
698 me->SetImmuneToNPC(false);
700 _barnWave = true;
701 break;
702 case EVENT_LOOK_5:
703 me->SetFacingTo(0.4886f);
705 break;
707 me->SummonCreature(NPC_TM_PROTECTOR, 2630.75f, 664.80f, 54.28f, 4.37f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
708 me->SummonCreature(NPC_TM_LOOKOUT, 2632.20f, 661.98f, 54.30f, 4.37f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
709 me->SummonCreature(NPC_TM_GUARDSMAN, 2630.02f, 662.75f, 54.28f, 4.37f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
710 me->SummonCreature(NPC_TM_GUARDSMAN, 2632.86f, 664.05f, 54.31f, 4.37f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS);
711 _churchWave = true;
712 break;
715 summon->AI()->Talk(SAY_LOOKOUT_CHURCH);
716 break;
720 break;
722 if (Creature* epoch = me->SummonCreature(NPC_EPOCH_HUNTER, 2640.49f, 696.15f, 64.31f, 4.51f, TEMPSUMMON_MANUAL_DESPAWN))
723 {
724 epoch->SetImmuneToAll(true);
725 epoch->AI()->Talk(SAY_EPOCH_ENTER1);
726 }
727 break;
729 me->SetFacingTo(2.60f);
731 break;
734 epoch->AI()->Talk(SAY_EPOCH_ENTER2);
736 {
737 Taretha->CastSpell(Taretha, SPELL_SHADOW_SPIKE);
738 Taretha->SetStandState(UNIT_STAND_STATE_DEAD);
739 }
740 break;
743 {
744 me->SetFacingToObject(Taretha);
745 }
747 break;
749 SetEscortPaused(false);
750 break;
753 {
754 me->SetFacingToObject(epoch);
755 epoch->SetFacingToObject(me);
756 epoch->AI()->Talk(SAY_EPOCH_ENTER3);
757 }
758 break;
760 me->SummonCreature(NPC_EPOCH_LOOKOUT, 2647.57f, 701.17f, 56.215f, 4.3f, TEMPSUMMON_MANUAL_DESPAWN);
761 me->SummonCreature(NPC_EPOCH_GUARDSMAN, 2629.46f, 704.76f, 56.286f, 4.98f, TEMPSUMMON_MANUAL_DESPAWN);
762 me->SummonCreature(NPC_EPOCH_PROTECTOR, 2640.14f, 709.44f, 56.135f, 4.70f, TEMPSUMMON_MANUAL_DESPAWN);
765 break;
766 case EVENT_TRANSFORM:
769 break;
771 events.ScheduleEvent(EVENT_CHECK_WAVE_1, 500ms);
774 break;
776 if (summons.size() == 1)
777 {
778 me->SummonCreature(NPC_INFINITE_SABOTEUR, 2599.57f, 683.72f, 55.975f, 0.05f, TEMPSUMMON_MANUAL_DESPAWN);
779 me->SummonCreature(NPC_INFINITE_SLAYER, 2599.57f, 677.0f, 55.975f, 0.05f, TEMPSUMMON_MANUAL_DESPAWN);
780 me->SummonCreature(NPC_INFINITE_DEFILER, 2592.57f, 680.0f, 55.975f, 0.05f, TEMPSUMMON_MANUAL_DESPAWN);
782 events.ScheduleEvent(EVENT_CHECK_WAVE_2, 500ms);
783 break;
784 }
785 events.ScheduleEvent(EVENT_CHECK_WAVE_1, 500ms);
786 break;
788 if (summons.size() == 1)
789 {
790 me->SummonCreature(NPC_INFINITE_SLAYER, 2642.62f, 701.43f, 55.965f, 4.46f, TEMPSUMMON_MANUAL_DESPAWN);
791 me->SummonCreature(NPC_INFINITE_SLAYER, 2638.62f, 701.43f, 55.965f, 4.46f, TEMPSUMMON_MANUAL_DESPAWN);
792 me->SummonCreature(NPC_INFINITE_SABOTEUR, 2638.62f, 705.43f, 55.965f, 4.46f, TEMPSUMMON_MANUAL_DESPAWN);
793 me->SummonCreature(NPC_INFINITE_DEFILER, 2642.62f, 705.43f, 55.965f, 4.46f, TEMPSUMMON_MANUAL_DESPAWN);
795 events.ScheduleEvent(EVENT_CHECK_WAVE_3, 500ms);
796 break;
797 }
798 events.ScheduleEvent(EVENT_CHECK_WAVE_2, 500ms);
799 break;
801 if (summons.size() == 1)
802 {
803 me->SetHomePosition(2634.79f, 672.964f, 54.8577f, 1.33f);
805 events.ScheduleEvent(EVENT_CALL_EPOCH, 8s);
806 break;
807 }
808 events.ScheduleEvent(EVENT_CHECK_WAVE_3, 500ms);
809 break;
810 case EVENT_CALL_EPOCH:
812 {
813 epoch->SetImmuneToAll(false);
814 epoch->GetMotionMaster()->MovePoint(0, *me, FORCED_MOVEMENT_NONE, 0.f, false, true);
815 }
816 break;
818 {
819 Map::PlayerList const& players = me->GetMap()->GetPlayers();
820 if (!players.IsEmpty())
821 for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
822 if (Player* player = itr->GetSource())
823 player->KilledMonsterCredit(20156);
824
826 {
827 me->SetFacingToObject(Taretha);
828 }
829 me->SetImmuneToNPC(true);
830 break;
831 }
835 break;
839 {
840 Taretha->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
841 Taretha->AI()->Talk(SAY_TARETHA_TALK1);
842 }
843 break;
846 break;
848 if (Creature* erozion = me->SummonCreature(NPC_EROZION, 2646.31f, 680.01f, 55.36f, 3.76f, TEMPSUMMON_MANUAL_DESPAWN))
849 erozion->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE);
850 break;
853 {
854 erozion->CastSpell(erozion, SPELL_TELEPORT, true);
855 erozion->AI()->Talk(SAY_EROZION_1);
856 }
857 break;
860 erozion->CastSpell(erozion, SPELL_MEMORY_WIPE, false);
861 break;
864 erozion->AI()->Talk(SAY_EROZION_2);
865 break;
868 erozion->AI()->Talk(SAY_EROZION_3);
869 break;
872 erozion->CastSpell(erozion, SPELL_MEMORY_WIPE_RESUME, false);
873 break;
876 break;
878 me->SetImmuneToAll(true);
880 SetEscortPaused(false);
881 break;
884 {
885 Taretha->SetFacingToObject(me);
886 Taretha->AI()->Talk(SAY_TARETHA_TALK2);
887 }
888 break;
891 erozion->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
892 break;
893 }
894 }
constexpr auto IN_MILLISECONDS
Definition Common.h:53
@ GO_STATE_ACTIVE
Definition GameObjectData.h:708
@ FORCED_MOVEMENT_NONE
Definition MotionMaster.h:86
@ TEMPSUMMON_CORPSE_TIMED_DESPAWN
Definition Object.h:54
@ EMOTE_ONESHOT_NO
Definition SharedDefines.h:1968
@ EMOTE_ONESHOT_EXCLAMATION
Definition SharedDefines.h:1905
@ EMOTE_STATE_TALK
Definition SharedDefines.h:1979
@ EMOTE_ONESHOT_ATTACK_UNARMED
Definition SharedDefines.h:1931
@ EMOTE_STATE_NONE
Definition SharedDefines.h:1928
@ EMOTE_ONESHOT_TALK
Definition SharedDefines.h:1901
@ UNIT_STAND_STATE_DEAD
Definition UnitDefines.h:42
@ UNIT_STAND_STATE_KNEEL
Definition UnitDefines.h:43
@ UNIT_NPC_FLAG_NONE
Definition UnitDefines.h:321
@ REACT_PASSIVE
Definition Unit.h:566
@ UNIT_NPC_EMOTESTATE
Definition UpdateFields.h:140
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.
Definition CreatureAI.cpp:67
void SetHomePosition(float x, float y, float z, float o)
Definition Creature.h:345
void SetReactState(ReactStates state)
A creature can have 3 ReactStates : Agressive, Passive, Neutral.
Definition Creature.h:99
CreatureAI * AI() const
Definition Creature.h:143
Definition GameObject.h:120
Definition LinkedList.h:139
bool IsEmpty() const
Definition LinkedList.h:97
Definition MapRefMgr.h:26
iterator begin()
Definition MapRefMgr.h:36
iterator end()
Definition MapRefMgr.h:37
PlayerList const & GetPlayers() const
Definition Map.h:326
void MoveTargetedHome(bool walk=false)
The unit will return this initial position (owner for pets and summoned creatures)....
Definition MotionMaster.cpp:261
Definition Player.h:1084
Creature * GetCreatureWithEntry(uint32 entry) const
Definition ScriptedCreature.cpp:133
size_type size() const
Definition ScriptedCreature.h:78
void DoAction(int32 info, uint16 max=0)
Definition ScriptedCreature.h:102
SpellCastResult DoCastSelf(uint32 spellId, bool triggered=false)
Definition UnitAI.h:394
SpellCastResult DoCast(uint32 spellId)
Definition UnitAI.cpp:178
void SetFacingToObject(WorldObject *object, Milliseconds timed=0ms)
Definition Unit.cpp:16421
void SetFacingTo(float ori)
Definition Unit.cpp:16411
void SetImmuneToNPC(bool apply, bool keepCombat=false)
Definition Unit.cpp:10618
void HandleEmoteCommand(uint32 emoteId)
Definition Unit.cpp:2172
void SetStandState(uint8 state)
Definition Unit.cpp:13089
void SetImmuneToAll(bool apply, bool keepCombat=false)
Definition Unit.h:924
Map * GetMap() const
Definition Object.h:625
GameObject * FindNearestGameObject(uint32 entry, float range, bool onlySpawned=false) const
Definition Object.cpp:2508
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
Definition Object.cpp:2499
@ SAY_EROZION_3
Definition old_hillsbrad.cpp:79
@ SAY_KILL_ARMORER
Definition old_hillsbrad.cpp:52
@ SAY_GREET_TARETHA
Definition old_hillsbrad.cpp:55
@ SAY_ENTER_CHURCH
Definition old_hillsbrad.cpp:54
@ SAY_TARETHA_TALK1
Definition old_hillsbrad.cpp:63
@ SAY_GO_ARMORED
Definition old_hillsbrad.cpp:53
@ SAY_LOOKOUT_CHURCH
Definition old_hillsbrad.cpp:70
@ SAY_EPOCH_ENTER2
Definition old_hillsbrad.cpp:74
@ SAY_MOUNTS_UP
Definition old_hillsbrad.cpp:41
@ SAY_EPOCH_ENTER3
Definition old_hillsbrad.cpp:75
@ SAY_EPOCH_KILL_TARETHA
Definition old_hillsbrad.cpp:45
@ SAY_MEET_TARETHA
Definition old_hillsbrad.cpp:43
@ SAY_EPOCH_ENTER1
Definition old_hillsbrad.cpp:73
@ SAY_CHAT_TARETHA1
Definition old_hillsbrad.cpp:56
@ SAY_EROZION_2
Definition old_hillsbrad.cpp:78
@ SAY_TARETHA_TALK2
Definition old_hillsbrad.cpp:64
@ SAY_EROZION_1
Definition old_hillsbrad.cpp:77
@ SAY_EMOTE_HORSE_2
Definition old_hillsbrad.cpp:58
@ SAY_ARMORY
Definition old_hillsbrad.cpp:37
@ SAY_EVENT_COMPLETE
Definition old_hillsbrad.cpp:46
@ SAY_LOOKOUT_SAW
Definition old_hillsbrad.cpp:68
@ SAY_EPOCH_WONDER
Definition old_hillsbrad.cpp:44
@ SAY_LOOKOUT_GO
Definition old_hillsbrad.cpp:69
@ SAY_ARMORER_THRALL
Definition old_hillsbrad.cpp:66
@ NPC_EPOCH_GUARDSMAN
Definition old_hillsbrad.cpp:105
@ NPC_TM_GUARDSMAN
Definition old_hillsbrad.cpp:101
@ NPC_EPOCH_LOOKOUT
Definition old_hillsbrad.cpp:107
@ NPC_TM_PROTECTOR
Definition old_hillsbrad.cpp:102
@ NPC_EPOCH_PROTECTOR
Definition old_hillsbrad.cpp:106
@ NPC_TM_LOOKOUT
Definition old_hillsbrad.cpp:103
@ ACTION_MOVE
Definition old_hillsbrad.cpp:124
@ ACTION_TRANSFORM
Definition old_hillsbrad.cpp:123
@ ACTION_REMOVE_IMMUNE_FLAG
Definition old_hillsbrad.cpp:122
@ ACTION_SET_IMMUNE_FLAG
Definition old_hillsbrad.cpp:121
@ ACTION_START_COMBAT
Definition old_hillsbrad.cpp:125
@ SPELL_SHADOW_SPIKE
Definition old_hillsbrad.cpp:89
@ SPELL_SALVATION
Definition old_hillsbrad.cpp:95
@ SPELL_MEMORY_WIPE
Definition old_hillsbrad.cpp:92
@ SPELL_MEMORY_WIPE_RESUME
Definition old_hillsbrad.cpp:93
@ SPELL_TELEPORT
Definition old_hillsbrad.cpp:91
@ SPELL_DUMMY_AURA
Definition old_hillsbrad.cpp:96
@ SPELL_KNOCKOUT_ARMORER
Definition old_hillsbrad.cpp:94
@ EVENT_LOOK_3
Definition old_hillsbrad.cpp:161
@ EVENT_CHECK_WAVE_2
Definition old_hillsbrad.cpp:183
@ EVENT_SUMMON_TALK1
Definition old_hillsbrad.cpp:162
@ EVENT_CALL_EPOCH
Definition old_hillsbrad.cpp:185
@ EVENT_DRESSING_STAND
Definition old_hillsbrad.cpp:149
@ EVENT_SUMMON_INFINITES
Definition old_hillsbrad.cpp:179
@ EVENT_TALK_START_RIDE
Definition old_hillsbrad.cpp:155
@ EVENT_DRESSING_ARMOR
Definition old_hillsbrad.cpp:148
@ EVENT_THRALL_TALK
Definition old_hillsbrad.cpp:171
@ EVENT_SUMMON_GUARDS_2
Definition old_hillsbrad.cpp:168
@ EVENT_GUARDS_MOVING
Definition old_hillsbrad.cpp:165
@ EVENT_DRESSING_TALK
Definition old_hillsbrad.cpp:152
@ EVENT_SET_FACING
Definition old_hillsbrad.cpp:141
@ EVENT_MOVE_AROUND
Definition old_hillsbrad.cpp:158
@ EVENT_START_WAVE_1
Definition old_hillsbrad.cpp:181
@ EVENT_SUMMON_TALK2
Definition old_hillsbrad.cpp:164
@ EVENT_LOOK_5
Definition old_hillsbrad.cpp:167
@ EVENT_ENTER_MOUNT
Definition old_hillsbrad.cpp:154
@ EVENT_LOOK_2
Definition old_hillsbrad.cpp:159
@ EVENT_EPOCH_INTRO
Definition old_hillsbrad.cpp:178
@ EVENT_TALK_KILL_ARMORER
Definition old_hillsbrad.cpp:145
@ EVENT_DRESSING_AXE
Definition old_hillsbrad.cpp:150
@ EVENT_DRESSING_SHIELD
Definition old_hillsbrad.cpp:151
@ EVENT_CHECK_WAVE_3
Definition old_hillsbrad.cpp:184
@ EVENT_TRANSFORM
Definition old_hillsbrad.cpp:180
@ EVENT_LOOK_1
Definition old_hillsbrad.cpp:157
@ EVENT_LOOK_4
Definition old_hillsbrad.cpp:163
@ EVENT_THRALL_EMOTE
Definition old_hillsbrad.cpp:143
@ EVENT_DRESSING_KNEEL
Definition old_hillsbrad.cpp:147
@ EVENT_KILL_ARMORER
Definition old_hillsbrad.cpp:144
@ EVENT_ARMORER_SAY
Definition old_hillsbrad.cpp:142
@ EVENT_CHECK_WAVE_1
Definition old_hillsbrad.cpp:182
@ EVENT_SUMMON_GUARDS
Definition old_hillsbrad.cpp:160
@ EVENT_SUMMON_TALK3
Definition old_hillsbrad.cpp:169
@ NPC_DURNHOLDE_MAGE
Definition old_hillsbrad.h:56
@ NPC_EPOCH_HUNTER
Definition old_hillsbrad.h:47
@ NPC_EROZION
Definition old_hillsbrad.h:44
@ NPC_DURNHOLDE_ARMORER
Definition old_hillsbrad.h:53
@ NPC_DURNHOLDE_VETERAN
Definition old_hillsbrad.h:55
@ NPC_DURNHOLDE_WARDEN
Definition old_hillsbrad.h:54
@ NPC_DURNHOLDE_SENTRY
Definition old_hillsbrad.h:57
@ GO_PRISON_DOOR
Definition old_hillsbrad.h:67
void UpdateAI(uint32 diff) override
Use to start attacking a target. Called just before JustEngagedWith()
Definition ScriptedEscortAI.cpp:231

References _barnWave, _churchWave, ACTION_MOVE, ACTION_REMOVE_IMMUNE_FLAG, ACTION_SET_IMMUNE_FLAG, ACTION_START_COMBAT, ACTION_TRANSFORM, Creature::AI(), MapRefMgr::begin(), Unit::CastSpell(), DATA_ESCORT_PROGRESS, DATA_TARETHA_GUID, SummonList::DoAction(), UnitAI::DoCast(), UnitAI::DoCastSelf(), EMOTE_ONESHOT_ATTACK_UNARMED, EMOTE_ONESHOT_EXCLAMATION, EMOTE_ONESHOT_NO, EMOTE_ONESHOT_TALK, EMOTE_STATE_NONE, EMOTE_STATE_TALK, ENCOUNTER_PROGRESS_THRALL_ARMORED, MapRefMgr::end(), EVENT_ARMORER_SAY, EVENT_CALL_EPOCH, EVENT_CHECK_WAVE_1, EVENT_CHECK_WAVE_2, EVENT_CHECK_WAVE_3, EVENT_DRESSING_ARMOR, EVENT_DRESSING_AXE, EVENT_DRESSING_KNEEL, EVENT_DRESSING_SHIELD, EVENT_DRESSING_STAND, EVENT_DRESSING_TALK, EVENT_ENTER_MOUNT, EVENT_EPOCH_INTRO, EVENT_EROZION_ACTION_1, EVENT_EROZION_ACTION_2, EVENT_EROZION_FLAGS, EVENT_EROZION_TALK_1, EVENT_EROZION_TALK_2, EVENT_EROZION_TALK_3, EVENT_GUARDS_MOVING, EVENT_KILL_ARMORER, EVENT_LOOK_1, EVENT_LOOK_2, EVENT_LOOK_3, EVENT_LOOK_4, EVENT_LOOK_5, EVENT_MOVE_AROUND, EVENT_OPEN_DOORS, EVENT_SET_FACING, EVENT_START_WAVE_1, EVENT_START_WP, EVENT_SUMMON_CHRONO, EVENT_SUMMON_EROZION, EVENT_SUMMON_GUARDS, EVENT_SUMMON_GUARDS_2, EVENT_SUMMON_INFINITES, EVENT_SUMMON_TALK1, EVENT_SUMMON_TALK2, EVENT_SUMMON_TALK3, EVENT_TALK_KILL_ARMORER, EVENT_TALK_START_RIDE, EVENT_TARETHA_FALL, EVENT_TARETHA_TALK_1, EVENT_TARETHA_TALK_2, EVENT_THRALL_EMOTE, EVENT_THRALL_FACE_TARETHA, EVENT_THRALL_MOVE_DOWN, EVENT_THRALL_RUN_AWAY, EVENT_THRALL_TALK, EVENT_THRALL_TALK_2, EVENT_THRALL_TALK_3, EVENT_THRALL_TALK_4, EVENT_THRALL_TALK_5, EVENT_THRALL_TALK_6, EVENT_TRANSFORM, WorldObject::FindNearestCreature(), WorldObject::FindNearestGameObject(), FORCED_MOVEMENT_NONE, ObjectAccessor::GetCreature(), SummonList::GetCreatureWithEntry(), InstanceScript::GetGuidData(), WorldObject::GetMap(), Unit::GetMotionMaster(), Map::GetPlayers(), GO_PRISON_DOOR, GO_STATE_ACTIVE, Unit::HandleEmoteCommand(), IN_MILLISECONDS, instance, LinkedListHead::IsEmpty(), ScriptedAI::me, MountSelf(), MotionMaster::MovePoint(), MotionMaster::MoveTargetedHome(), NPC_DURNHOLDE_ARMORER, NPC_DURNHOLDE_MAGE, NPC_DURNHOLDE_SENTRY, NPC_DURNHOLDE_VETERAN, NPC_DURNHOLDE_WARDEN, NPC_EPOCH_GUARDSMAN, NPC_EPOCH_HUNTER, NPC_EPOCH_LOOKOUT, NPC_EPOCH_PROTECTOR, NPC_EROZION, NPC_INFINITE_DEFILER, NPC_INFINITE_SABOTEUR, NPC_INFINITE_SLAYER, NPC_SKARLOC_MOUNT, NPC_TM_GUARDSMAN, NPC_TM_LOOKOUT, NPC_TM_PROTECTOR, REACT_PASSIVE, SAY_ARMORER_THRALL, SAY_ARMORY, SAY_CHAT_TARETHA1, SAY_EMOTE_HORSE_2, SAY_ENTER_CHURCH, SAY_EPOCH_ENTER1, SAY_EPOCH_ENTER2, SAY_EPOCH_ENTER3, SAY_EPOCH_KILL_TARETHA, SAY_EPOCH_WONDER, SAY_EROZION_1, SAY_EROZION_2, SAY_EROZION_3, SAY_EVENT_COMPLETE, SAY_GO_ARMORED, SAY_GREET_TARETHA, SAY_KILL_ARMORER, SAY_LOOKOUT_CHURCH, SAY_LOOKOUT_GO, SAY_LOOKOUT_SAW, SAY_MEET_TARETHA, SAY_MOUNTS_UP, SAY_TARETHA_TALK1, SAY_TARETHA_TALK2, ZoneScript::SetData(), npc_escortAI::SetDespawnAtEnd(), Creature::SetDisplayId(), npc_escortAI::SetEscortPaused(), Unit::SetFacingTo(), Unit::SetFacingToObject(), Creature::SetHomePosition(), Unit::SetImmuneToAll(), Unit::SetImmuneToNPC(), Unit::SetNpcFlag(), Creature::SetReactState(), Unit::SetStandState(), Unit::SetUInt32Value(), Creature::SetWalk(), SummonList::size(), SPELL_DUMMY_AURA, SPELL_KNOCKOUT_ARMORER, SPELL_MEMORY_WIPE, SPELL_MEMORY_WIPE_RESUME, SPELL_SALVATION, SPELL_SHADOW_SPIKE, SPELL_TELEPORT, npc_escortAI::Start(), WorldObject::SummonCreature(), summons, CreatureAI::Talk(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, TEMPSUMMON_MANUAL_DESPAWN, THRALL_MODEL_EQUIPPED, THRALL_SHIELD_ITEM, THRALL_WEAPON_ITEM, UNIT_NPC_EMOTESTATE, UNIT_NPC_FLAG_GOSSIP, UNIT_NPC_FLAG_NONE, UNIT_NPC_FLAG_QUESTGIVER, UNIT_STAND_STATE_DEAD, UNIT_STAND_STATE_KNEEL, UNIT_STAND_STATE_STAND, UNIT_VIRTUAL_ITEM_SLOT_ID, and npc_escortAI::UpdateAI().

◆ UpdateEscortAI()

void npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::UpdateEscortAI ( uint32  diff)
inlineoverridevirtual

Reimplemented from npc_escortAI.

897 {
898 if (!UpdateVictim())
899 return;
900
901 combatEvents.Update(diff);
902 switch (combatEvents.ExecuteEvent())
903 {
905 if (me->HealthBelowPct(20))
906 {
908 break;
909 }
910 events.ScheduleEvent(EVENT_CHECK_HEALTH, 500ms);
911 break;
913 me->CastSpell(me->GetVictim(), SPELL_STRIKE, false);
914 events.ScheduleEvent(EVENT_SPELL_STRIKE, 6s);
915 break;
918 events.ScheduleEvent(EVENT_SPELL_SHIELD_BLOCK, 6s);
919 break;
920 }
921
923 }
bool UpdateVictim()
Definition CreatureAI.cpp:353
void Update(uint32 time)
Definition EventMap.h:67
EventId ExecuteEvent()
Definition EventMap.cpp:86
void DoMeleeAttackIfReady()
Definition UnitAI.cpp:40
bool HealthBelowPct(int32 pct) const
Definition Unit.h:1116
Unit * GetVictim() const
Definition Unit.h:903
@ SAY_RANDOM_LOW_HP
Definition old_hillsbrad.cpp:47
@ SPELL_STRIKE
Definition old_hillsbrad.cpp:84
@ SPELL_SHIELD_BLOCK
Definition old_hillsbrad.cpp:85

References Unit::CastSpell(), combatEvents, UnitAI::DoMeleeAttackIfReady(), EVENT_CHECK_HEALTH, EVENT_SPELL_SHIELD_BLOCK, EVENT_SPELL_STRIKE, EventMap::ExecuteEvent(), Unit::GetVictim(), Unit::HealthBelowPct(), ScriptedAI::me, SAY_RANDOM_LOW_HP, SPELL_SHIELD_BLOCK, SPELL_STRIKE, EventMap::Update(), and CreatureAI::UpdateVictim().

◆ WaypointReached() [1/2]

void npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::WaypointReached ( uint32  waypointId)
inlineoverridevirtual

Implements npc_escortAI.

308 {
309 switch (waypointId)
310 {
311 case 0:
313 break;
314 case 8:
315 events.ScheduleEvent(EVENT_SET_FACING, 500ms);
316 events.ScheduleEvent(EVENT_ARMORER_SAY, 700ms);
317 events.ScheduleEvent(EVENT_THRALL_EMOTE, 1300ms);
318 break;
319 case 9:
320 me->SetWalk(true);
321 events.ScheduleEvent(EVENT_KILL_ARMORER, 500ms);
322 events.ScheduleEvent(EVENT_TALK_KILL_ARMORER, 3s);
323 break;
324 case 10:
325 me->SetWalk(false);
326 events.ScheduleEvent(EVENT_DRESSING_KNEEL, 500ms);
327 events.ScheduleEvent(EVENT_DRESSING_ARMOR, 3s);
328 events.ScheduleEvent(EVENT_DRESSING_STAND, 4s);
329 events.ScheduleEvent(EVENT_DRESSING_AXE, 7s);
330 events.ScheduleEvent(EVENT_DRESSING_SHIELD, 9s);
331 events.ScheduleEvent(EVENT_DRESSING_TALK, 12s);
332 break;
333 case 18:
334 if (Creature* warden = me->SummonCreature(NPC_DURNHOLDE_WARDEN, 2149.4634f, 104.97559f, 73.632385f, 1.9065f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS))
335 {
336 warden->SetWalk(true);
337 warden->GetMotionMaster()->MovePoint(0, 2144.9893f, 117.81233f, 75.98518f);
338 }
339 if (Creature* veteran = me->SummonCreature(NPC_DURNHOLDE_VETERAN, 2147.3281f, 106.72353f, 74.34447f, 1.6904f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS))
340 {
341 veteran->SetWalk(true);
342 veteran->GetMotionMaster()->MovePoint(0, 2145.2092f, 124.361f, 76.13655f);
343 }
344 if (Creature* veteran = me->SummonCreature(NPC_DURNHOLDE_VETERAN, 2149.212f, 107.20052f, 74.15676f, 1.9887f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS))
345 {
346 veteran->SetWalk(true);
347 veteran->GetMotionMaster()->MovePoint(0, 2143.7898f, 119.41281f, 75.96626f);
348 }
349 if (Creature* mage = me->SummonCreature(NPC_DURNHOLDE_MAGE, 2147.624f, 104.61046f, 73.909294f, 1.6186f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30 * IN_MILLISECONDS))
350 {
351 mage->SetWalk(true);
352 mage->GetMotionMaster()->MovePoint(0, 2146.975f, 118.05078f, 76.098465f);
353 }
354 break;
355 case 27:
357 break;
358 case 28:
360 break;
361 case 29:
362 SetEscortPaused(true);
364 break;
365 case 30:
366 events.ScheduleEvent(EVENT_ENTER_MOUNT, 3s);
367 events.ScheduleEvent(EVENT_TALK_START_RIDE, 7s);
368 break;
369 case 59:
371 if (Creature* mount = me->SummonCreature(NPC_SKARLOC_MOUNT, 2488.64f, 625.77f, 58.26f, 4.71f, TEMPSUMMON_TIMED_DESPAWN, 7000))
372 {
373 mount->SetImmuneToNPC(true);
374 mount->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
375 }
376 UnMountSelf();
377 _mounted = false;
378 me->SetWalk(true);
379 me->SetFacingTo(6.0388f);
380 break;
381 case 60:
383 if (Creature* horse = me->FindNearestCreature(NPC_SKARLOC_MOUNT, 10.0f))
384 {
385 horse->GetMotionMaster()->MovePoint(0, 2501.15f, 572.14f, 54.13f);
386 horse->DespawnOrUnsummon(30s);
387 }
389 SetEscortPaused(true);
390 me->SetWalk(false);
392 me->SetFacingTo(4.1364f);
393 break;
394 case 64:
395 me->SetWalk(true);
396 break;
397 case 67:
398 events.ScheduleEvent(EVENT_LOOK_1, 1200ms);
399 events.ScheduleEvent(EVENT_MOVE_AROUND, 3500ms);
400 events.ScheduleEvent(EVENT_LOOK_2, 5s);
401 events.ScheduleEvent(EVENT_SUMMON_GUARDS, 5100ms);
402 events.ScheduleEvent(EVENT_LOOK_3, 7s);
403 events.ScheduleEvent(EVENT_SUMMON_TALK1, 12s);
404 events.ScheduleEvent(EVENT_LOOK_4, 17s);
405 events.ScheduleEvent(EVENT_SUMMON_TALK2, 19s);
406 events.ScheduleEvent(EVENT_GUARDS_MOVING, 21s);
407 break;
408 case 82:
409 events.ScheduleEvent(EVENT_LOOK_5, 500ms);
410 events.ScheduleEvent(EVENT_SUMMON_GUARDS_2, 1s);
411 events.ScheduleEvent(EVENT_SUMMON_TALK3, 1500ms);
412 break;
413 case 91:
414 me->SummonCreature(NPC_TM_PROTECTOR, 2652.71f, 660.31f, 61.93f, 1.67f, TEMPSUMMON_MANUAL_DESPAWN);
415 me->SummonCreature(NPC_TM_LOOKOUT, 2648.96f, 662.59f, 61.93f, 0.79f, TEMPSUMMON_MANUAL_DESPAWN);
416 me->SummonCreature(NPC_TM_GUARDSMAN, 2657.36f, 662.34f, 61.93f, 2.68f, TEMPSUMMON_MANUAL_DESPAWN);
417 me->SummonCreature(NPC_TM_GUARDSMAN, 2656.39f, 659.77f, 61.93f, 2.61f, TEMPSUMMON_MANUAL_DESPAWN);
419 summon->AI()->Talk(SAY_LOOKOUT_INN);
420 break;
421 case 92:
422 me->SetWalk(true);
423 break;
424 case 94:
426 SetEscortPaused(true);
427 me->SetWalk(false);
430 {
431 Taretha->HandleEmoteCommand(EMOTE_ONESHOT_CHEER);
432 Taretha->AI()->Talk(SAY_TARETHA_ESCAPED);
433 }
434 events.ScheduleEvent(EVENT_THRALL_TALK, 4s);
435 break;
436 case 101:
437 SetEscortPaused(true);
438 events.ScheduleEvent(EVENT_EPOCH_INTRO, 500ms);
439 events.ScheduleEvent(EVENT_SUMMON_INFINITES, 1500ms);
440 events.ScheduleEvent(EVENT_TRANSFORM, 8s);
441 events.ScheduleEvent(EVENT_START_WAVE_1, 25s);
442 break;
443 case 103:
445 me->SetVisible(false);
446 break;
447 }
448 }
constexpr auto MINUTE
Definition Common.h:47
@ TEMPSUMMON_TIMED_DESPAWN
Definition Object.h:51
@ EMOTE_ONESHOT_CHEER
Definition SharedDefines.h:1904
void SetVisible(bool x)
Definition Unit.cpp:11072
@ SAY_START_EVENT_PART1
Definition old_hillsbrad.cpp:36
@ SAY_EMOTE_HORSE
Definition old_hillsbrad.cpp:57
@ SAY_LOOKOUT_INN
Definition old_hillsbrad.cpp:71
@ SAY_TARETHA_ESCAPED
Definition old_hillsbrad.cpp:62
@ SAY_SKARLOC_MEET
Definition old_hillsbrad.cpp:38
@ ENCOUNTER_PROGRESS_FINISHED
Definition old_hillsbrad.h:83
@ NPC_CAPTAIN_SKARLOC
Definition old_hillsbrad.h:59

References _mounted, Creature::AI(), DATA_ESCORT_PROGRESS, DATA_TARETHA_GUID, SummonList::DespawnAll(), EMOTE_ONESHOT_CHEER, ENCOUNTER_PROGRESS_AMBUSHES_1, ENCOUNTER_PROGRESS_FINISHED, ENCOUNTER_PROGRESS_TARETHA_MEET, ENCOUNTER_PROGRESS_TARREN_MILL, EVENT_ARMORER_SAY, EVENT_DRESSING_ARMOR, EVENT_DRESSING_AXE, EVENT_DRESSING_KNEEL, EVENT_DRESSING_SHIELD, EVENT_DRESSING_STAND, EVENT_DRESSING_TALK, EVENT_ENTER_MOUNT, EVENT_EPOCH_INTRO, EVENT_GUARDS_MOVING, EVENT_KILL_ARMORER, EVENT_LOOK_1, EVENT_LOOK_2, EVENT_LOOK_3, EVENT_LOOK_4, EVENT_LOOK_5, EVENT_MOVE_AROUND, EVENT_SET_FACING, EVENT_START_WAVE_1, EVENT_SUMMON_GUARDS, EVENT_SUMMON_GUARDS_2, EVENT_SUMMON_INFINITES, EVENT_SUMMON_TALK1, EVENT_SUMMON_TALK2, EVENT_SUMMON_TALK3, EVENT_TALK_KILL_ARMORER, EVENT_TALK_START_RIDE, EVENT_THRALL_EMOTE, EVENT_THRALL_TALK, EVENT_TRANSFORM, WorldObject::FindNearestCreature(), ObjectAccessor::GetCreature(), SummonList::GetCreatureWithEntry(), InstanceScript::GetGuidData(), Unit::HandleEmoteCommand(), IN_MILLISECONDS, instance, ScriptedAI::me, MINUTE, NPC_CAPTAIN_SKARLOC, NPC_DURNHOLDE_MAGE, NPC_DURNHOLDE_VETERAN, NPC_DURNHOLDE_WARDEN, NPC_SKARLOC_MOUNT, NPC_TM_GUARDSMAN, NPC_TM_LOOKOUT, NPC_TM_PROTECTOR, SAY_EMOTE_HORSE, SAY_LOOKOUT_INN, SAY_SKARLOC_MEET, SAY_START_EVENT_PART1, SAY_TARETHA_ESCAPED, ZoneScript::SetData(), npc_escortAI::SetEscortPaused(), Unit::SetFacingTo(), Unit::SetNpcFlag(), Unit::SetVisible(), Creature::SetWalk(), WorldObject::SummonCreature(), summons, CreatureAI::Talk(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, TEMPSUMMON_MANUAL_DESPAWN, TEMPSUMMON_TIMED_DESPAWN, UNIT_FLAG_NOT_SELECTABLE, UNIT_NPC_FLAG_GOSSIP, and UnMountSelf().

◆ WaypointReached() [2/2]

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

Reimplemented from npc_escortAI.

193{ }

◆ WaypointStart()

void npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::WaypointStart ( uint32  waypointId)
inlineoverridevirtual

Reimplemented from npc_escortAI.

297 {
298 switch (waypointId)
299 {
300 case 30:
302 break;
303 }
304 }
@ SAY_START_EVENT_PART2
Definition old_hillsbrad.cpp:40

References SAY_START_EVENT_PART2.

Member Data Documentation

◆ _barnWave

bool npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::_barnWave
private

◆ _churchWave

bool npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::_churchWave
private

◆ _mounted

bool npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::_mounted
private

◆ combatEvents

EventMap npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::combatEvents
private

◆ events

EventMap npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::events
private

◆ instance

InstanceScript* npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::instance
private

◆ summons

SummonList npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::summons
private

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