TrinityCore
Loading...
Searching...
No Matches
PassiveAI.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef TRINITY_PASSIVEAI_H
19#define TRINITY_PASSIVEAI_H
20
21#include "CreatureAI.h"
22#include "Timer.h"
23
25{
26 public:
27 explicit PassiveAI(Creature* creature, uint32 scriptId = {}) noexcept;
28
29 void MoveInLineOfSight(Unit*) override { }
30 void AttackStart(Unit*) override { }
31 void UpdateAI(uint32) override;
32
33 static int32 Permissible(Creature const* /*creature*/) { return PERMIT_BASE_NO; }
34};
35
37{
38 public:
39 explicit PossessedAI(Creature* creature, uint32 scriptId = {}) noexcept;
40
41 void MoveInLineOfSight(Unit*) override { }
42 void AttackStart(Unit* target) override;
43 void JustEnteredCombat(Unit* who) override { EngagementStart(who); }
44 void JustExitedCombat() override { EngagementOver(); }
45 void JustStartedThreateningMe(Unit*) override { }
46 void UpdateAI(uint32) override;
47 void EnterEvadeMode(EvadeReason /*why*/) override { }
48
49 void JustDied(Unit*) override;
50
51 static int32 Permissible(Creature const* /*creature*/) { return PERMIT_BASE_NO; }
52};
53
55{
56 public:
57 explicit NullCreatureAI(Creature* creature, uint32 scriptId = {}) noexcept;
58
59 void MoveInLineOfSight(Unit*) override { }
60 void AttackStart(Unit*) override { }
61 void JustStartedThreateningMe(Unit*) override { }
62 void JustEnteredCombat(Unit*) override { }
63 void UpdateAI(uint32) override { }
64 void JustAppeared() override { }
65 void EnterEvadeMode(EvadeReason /*why*/) override { }
66 void OnCharmed(bool /*isNew*/) override { }
67
68 static int32 Permissible(Creature const* creature);
69};
70
72{
73 public:
74 explicit CritterAI(Creature* creature, uint32 scriptId = {}) noexcept;
75
76 void JustEngagedWith(Unit* /*who*/) override;
77
78 void UpdateAI(uint32 diff) override;
79
80 static int32 Permissible(Creature const* creature);
81
82 private:
84};
85
87{
88 public:
90
91 void IsSummonedBy(WorldObject* summoner) override;
92
93 static int32 Permissible(Creature const* creature);
94};
95
96#endif
@ PERMIT_BASE_NO
Definition CreatureAI.h:46
#define TC_GAME_API
Definition Define.h:129
int32_t int32
Definition Define.h:150
uint32_t uint32
Definition Define.h:154
EvadeReason
virtual void JustEngagedWith(Unit *)
Definition CreatureAI.h:101
virtual void JustDied(Unit *)
Definition CreatureAI.h:107
virtual void IsSummonedBy(WorldObject *)
Definition CreatureAI.h:114
void AttackStart(Unit *victim) override
== Triggered Actions Requested ==================
void EngagementStart(Unit *who)
void EngagementOver()
TimeTracker _evadeTimer
Definition PassiveAI.h:83
void MoveInLineOfSight(Unit *) override
Definition PassiveAI.h:59
void JustStartedThreateningMe(Unit *) override
Definition PassiveAI.h:61
void JustAppeared() override
Definition PassiveAI.h:64
NullCreatureAI(Creature *creature, uint32 scriptId={}) noexcept
Definition PassiveAI.cpp:33
void EnterEvadeMode(EvadeReason) override
Definition PassiveAI.h:65
void OnCharmed(bool) override
Definition PassiveAI.h:66
void AttackStart(Unit *) override
== Triggered Actions Requested ==================
Definition PassiveAI.h:60
void UpdateAI(uint32) override
Definition PassiveAI.h:63
void JustEnteredCombat(Unit *) override
Definition PassiveAI.h:62
static int32 Permissible(Creature const *)
Definition PassiveAI.h:33
void MoveInLineOfSight(Unit *) override
Definition PassiveAI.h:29
void AttackStart(Unit *) override
== Triggered Actions Requested ==================
Definition PassiveAI.h:30
void JustEnteredCombat(Unit *who) override
Definition PassiveAI.h:43
void JustExitedCombat() override
Definition PassiveAI.h:44
void JustStartedThreateningMe(Unit *) override
Definition PassiveAI.h:45
void MoveInLineOfSight(Unit *) override
Definition PassiveAI.h:41
static int32 Permissible(Creature const *)
Definition PassiveAI.h:51
void EnterEvadeMode(EvadeReason) override
Definition PassiveAI.h:47
virtual void UpdateAI(uint32 diff)=0
Definition Unit.h:635