TrinityCore
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 = {});
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 = {});
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 = {});
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 = {});
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:44
#define TC_GAME_API
Definition: Define.h:123
int32_t int32
Definition: Define.h:138
uint32_t uint32
Definition: Define.h:142
EvadeReason
Definition: UnitAICommon.h:30
virtual void JustEngagedWith(Unit *)
Definition: CreatureAI.h:99
virtual void JustDied(Unit *)
Definition: CreatureAI.h:105
virtual void IsSummonedBy(WorldObject *)
Definition: CreatureAI.h:112
void AttackStart(Unit *victim) override
== Triggered Actions Requested ==================
Definition: CreatureAI.cpp:328
void EngagementStart(Unit *who)
Definition: CreatureAI.cpp:275
void EngagementOver()
Definition: CreatureAI.cpp:287
TimeTracker _evadeTimer
Definition: PassiveAI.h:83
NullCreatureAI(Creature *creature, uint32 scriptId={})
Definition: PassiveAI.cpp:33
void MoveInLineOfSight(Unit *) override
Definition: PassiveAI.h:59
void JustStartedThreateningMe(Unit *) override
Definition: PassiveAI.h:61
void JustAppeared() override
Definition: PassiveAI.h:64
void EnterEvadeMode(EvadeReason) override
Definition: PassiveAI.h:65
void OnCharmed(bool) override
Definition: PassiveAI.h:66
void AttackStart(Unit *) override
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
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:627