18#ifndef TRINITY_SMARTAI_H
19#define TRINITY_SMARTAI_H
52 bool IsAIControlled()
const;
55 void StartPath(
uint32 pathId = 0,
bool repeat =
false,
Unit* invoker =
nullptr,
uint32 nodeId = 0,
58 void PausePath(
uint32 delay,
bool forced =
false);
60 void StopPath(
uint32 DespawnTime = 0,
uint32 quest = 0,
bool fail =
false);
61 void EndPath(
bool fail =
false);
65 return (_escortState & escortState) != 0;
69 _escortState |= escortState;
73 _escortState &= ~escortState;
75 void SetCombatMove(
bool on,
bool stopMoving =
false);
78 return _canCombatMove;
80 void SetFollow(
Unit* target,
float dist = 0.0f,
float angle = 0.0f,
uint32 credit = 0,
uint32 end = 0,
uint32 creditType = 0);
81 void StopFollow(
bool complete);
82 bool IsEscortInvokerInRange();
200 void SetRun(
bool run =
true);
202 void SetEvadeDisabled(
bool disable =
true);
206 _invincibilityHPLevel = level;
219 _despawnState = t ? 1 : 0;
230 _waypointPauseTimer = time;
240 _escortQuestId = questID;
244 bool AssistPlayerInCombatAgainst(
Unit* who);
245 void ReturnToLastOOCPos();
246 void CheckConditions(
uint32 diff);
247 void UpdatePath(
uint32 diff);
248 void UpdateFollow(
uint32 diff);
249 void UpdateDespawn(
uint32 diff);
298 void Reset()
override;
313 bool OnReportUse(
Player* player)
override;
319 void OnLootStateChanged(
uint32 state,
Unit* unit)
override;
320 void EventInform(
uint32 eventId)
override;
348 void OnInitialize()
override;
349 void OnUpdate(
uint32 diff)
override;
350 void OnUnitEnter(
Unit* unit)
override;
static float constexpr SMART_MAX_AID_DIST
void AddSC_SmartScripts()
Registers scripts required by the SAI scripting system.
static float constexpr SMART_ESCORT_MAX_PLAYER_DIST
AreaTriggerAI(AreaTrigger *a, uint32 scriptId={}) noexcept
virtual bool OnGossipHello(Player *)
virtual void WaypointPathEnded(uint32, uint32)
virtual void WaypointReached(uint32, uint32)
virtual void MoveInLineOfSight(Unit *)
virtual void JustEngagedWith(Unit *)
virtual void JustSummoned(Creature *)
virtual void OnAuraApplied(AuraApplication const *)
virtual void OnAuraRemoved(AuraApplication const *)
virtual void OnSpellClick(Unit *, bool)
virtual void OnSpellStart(SpellInfo const *)
virtual bool OnGossipSelectCode(Player *, uint32, uint32, char const *)
virtual void SpellHitTarget(WorldObject *, SpellInfo const *)
virtual void JustReachedHome()
virtual void JustDied(Unit *)
virtual void SpellHit(WorldObject *, SpellInfo const *)
virtual void OnQuestReward(Player *, Quest const *, LootItemType, uint32)
virtual void EnterEvadeMode(EvadeReason why=EvadeReason::Other)
virtual void OnSpellFailed(SpellInfo const *)
virtual void OnSpellCast(SpellInfo const *)
virtual void SummonedCreatureDies(Creature *, Unit *)
virtual void MovementInform(uint32, uint32)
virtual void KilledUnit(Unit *)
virtual bool OnGossipSelect(Player *, uint32, uint32)
virtual void ReceiveEmote(Player *, uint32)
void OnCharmed(bool isNew) override
virtual void JustAppeared()
virtual void PassengerBoarded(Unit *, int8, bool)
== Fields =======================================
virtual void SummonedCreatureDespawn(Creature *)
virtual void CorpseRemoved(uint32 &)
== State checks =================================
virtual void OnQuestAccept(Player *, Quest const *)
virtual void IsSummonedBy(WorldObject *)
void AttackStart(Unit *victim) override
== Triggered Actions Requested ==================
void AddEscortState(uint32 escortState)
void SetEscortQuest(uint32 questID)
bool HasEscortState(uint32 escortState) const
uint32 _followArrivedEntry
uint32 _vehicleConditionsTimer
uint32 _escortInvokerCheckTimer
uint32 _currentWaypointNodeId
void SetDespawnTime(uint32 t)
bool CanCombatMove() const
void SetWPPauseTimer(uint32 time)
void RemoveEscortState(uint32 escortState)
bool _waypointPauseForced
uint32 _followArrivedTimer
void SetGossipReturn(bool val)
uint32 _waypointPauseTimer
static int32 Permissible(Creature const *)
SmartScript * GetScript()
void SetInvincibilityHpLevel(uint32 level)
void SetData(uint32 id, uint32 value) override
uint32 _invincibilityHPLevel
SmartScript * GetScript()
SmartGameObjectAI(GameObject *go, uint32 scriptId={})
static int32 Permissible(GameObject const *)
SmartScript * GetScript()
void SetData(uint32 id, uint32 value) override
void SetGossipReturn(bool val)
virtual void HealReceived(Unit *, uint32 &)
virtual void SetGUID(ObjectGuid const &guid, int32 id)
virtual void InitializeAI()
virtual void DoAction(int32 param)
virtual void DamageTaken(Unit *, uint32 &, DamageEffectType, SpellInfo const *)
virtual void OnGameEvent(bool, uint16)
virtual ObjectGuid GetGUID(int32 id) const
virtual void UpdateAI(uint32 diff)=0
virtual uint32 GetData(uint32 id) const