18#ifndef TRINITY_SMARTAI_H
19#define TRINITY_SMARTAI_H
49 bool IsAIControlled()
const;
52 void StartPath(
uint32 pathId = 0,
bool repeat =
false,
Unit* invoker =
nullptr,
uint32 nodeId = 0);
54 void PausePath(
uint32 delay,
bool forced =
false);
56 void StopPath(
uint32 DespawnTime = 0,
uint32 quest = 0,
bool fail =
false);
57 void EndPath(
bool fail =
false);
61 return (_escortState & escortState) != 0;
65 _escortState |= escortState;
69 _escortState &= ~escortState;
71 void SetCombatMove(
bool on,
bool stopMoving =
false);
74 return _canCombatMove;
76 void SetFollow(
Unit* target,
float dist = 0.0f,
float angle = 0.0f,
uint32 credit = 0,
uint32 end = 0,
uint32 creditType = 0);
77 void StopFollow(
bool complete);
78 bool IsEscortInvokerInRange();
190 void SetRun(
bool run =
true);
192 void SetDisableGravity(
bool disable =
true);
194 void SetEvadeDisabled(
bool disable =
true);
198 _invincibilityHPLevel = level;
211 _despawnState = t ? 1 : 0;
222 _waypointPauseTimer = time;
232 _escortQuestId = questID;
236 bool AssistPlayerInCombatAgainst(
Unit* who);
237 void ReturnToLastOOCPos();
238 void CheckConditions(
uint32 diff);
239 void UpdatePath(
uint32 diff);
240 void UpdateFollow(
uint32 diff);
241 void UpdateDespawn(
uint32 diff);
290 void Reset()
override;
305 bool OnReportUse(
Player* player)
override;
311 void OnLootStateChanged(
uint32 state,
Unit* unit)
override;
312 void EventInform(
uint32 eventId)
override;
340 void OnInitialize()
override;
341 void OnUpdate(
uint32 diff)
override;
342 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={})
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 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 SetData(uint32, uint32)
virtual void DoAction(int32)
virtual void InitializeAI()
virtual uint32 GetData(uint32) const
virtual ObjectGuid GetGUID(int32=0) const
virtual void DamageTaken(Unit *, uint32 &, DamageEffectType, SpellInfo const *)
virtual void OnGameEvent(bool, uint16)
virtual void DamageDealt(Unit *, uint32 &, DamageEffectType)
virtual void UpdateAI(uint32 diff)=0
virtual void SetGUID(ObjectGuid const &, int32=0)