TrinityCore
Loading...
Searching...
No Matches
CombatAI.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_COMBATAI_H
19#define TRINITY_COMBATAI_H
20
21#include "CreatureAI.h"
22
23class Creature;
24
26{
27 public:
28 explicit AggressorAI(Creature* creature) : CreatureAI(creature) { }
29
30 void UpdateAI(uint32) override;
31 static int32 Permissible(Creature const* creature);
32};
33
34typedef std::vector<uint32> SpellVector;
35
37{
38 public:
39 explicit CombatAI(Creature* creature) : CreatureAI(creature) { }
40
41 void InitializeAI() override;
42 void Reset() override;
43 void JustEngagedWith(Unit* who) override;
44 void JustDied(Unit* killer) override;
45 void UpdateAI(uint32 diff) override;
46 void SpellInterrupted(uint32 spellId, uint32 unTimeMs) override;
47
48 static int Permissible(Creature const* /*creature*/) { return PERMIT_BASE_NO; }
49
50 protected:
53};
54
56{
57 public:
58 explicit CasterAI(Creature* creature) : CombatAI(creature) { _attackDistance = MELEE_RANGE; }
59 void InitializeAI() override;
60 void AttackStart(Unit* victim) override { AttackStartCaster(victim, _attackDistance); }
61 void UpdateAI(uint32 diff) override;
62 void JustEngagedWith(Unit* /*who*/) override;
63 private:
65};
66
68{
69 public:
70 explicit ArcherAI(Creature* creature);
71 void AttackStart(Unit* who) override;
72 void UpdateAI(uint32 diff) override;
73
74 static int32 Permissible(Creature const* /*creature*/) { return PERMIT_BASE_NO; }
75
76 protected:
78};
79
81{
82 public:
83 explicit TurretAI(Creature* creature);
84 bool CanAIAttack(Unit const* who) const override;
85 void AttackStart(Unit* who) override;
86 void UpdateAI(uint32 diff) override;
87
88 static int32 Permissible(Creature const* /*creature*/) { return PERMIT_BASE_NO; }
89
90 protected:
92};
93
94#define VEHICLE_CONDITION_CHECK_TIME 1000
95#define VEHICLE_DISMISS_TIME 5000
96
98{
99 public:
100 explicit VehicleAI(Creature* creature);
101
102 void UpdateAI(uint32 diff) override;
103 void MoveInLineOfSight(Unit*) override { }
104 void AttackStart(Unit*) override { }
105 void OnCharmed(bool isNew) override;
106
107 static int32 Permissible(Creature const* creature);
108
109 private:
110 void LoadConditions();
111 void CheckConditions(uint32 diff);
112
117};
118
119#endif
std::vector< uint32 > SpellVector
Definition CombatAI.h:34
@ PERMIT_BASE_NO
Definition CreatureAI.h:43
#define TC_GAME_API
Definition Define.h:114
int32_t int32
Definition Define.h:129
uint32_t uint32
Definition Define.h:133
#define MELEE_RANGE
AggressorAI(Creature *creature)
Definition CombatAI.h:28
void AttackStart(Unit *victim) override
Definition CombatAI.h:60
CasterAI(Creature *creature)
Definition CombatAI.h:58
float _attackDistance
Definition CombatAI.h:64
SpellVector _spells
Definition CombatAI.h:52
EventMap _events
Definition CombatAI.h:51
CombatAI(Creature *creature)
Definition CombatAI.h:39
static int Permissible(Creature const *)
Definition CombatAI.h:48
virtual void JustEngagedWith(Unit *)
Definition CreatureAI.h:127
virtual void JustDied(Unit *)
Definition CreatureAI.h:130
void OnCharmed(bool isNew) override
void AttackStartCaster(Unit *victim, float dist)
Definition UnitAI.cpp:48
virtual void SpellInterrupted(uint32, uint32)
Definition UnitAI.h:235
virtual void Reset()
Definition UnitAI.h:145
virtual bool CanAIAttack(Unit const *) const
Definition UnitAI.h:139
virtual void InitializeAI()
Definition UnitAI.cpp:36
virtual void UpdateAI(uint32 diff)=0
virtual void AttackStart(Unit *)
Definition UnitAI.cpp:30
Definition Unit.h:769
static int32 Permissible(Creature const *)
Definition CombatAI.h:74
float _minimumRange
Definition CombatAI.h:77
float _minimumRange
Definition CombatAI.h:91
static int32 Permissible(Creature const *)
Definition CombatAI.h:88
bool _hasConditions
Definition CombatAI.h:113
void MoveInLineOfSight(Unit *) override
Definition CombatAI.h:103
bool _dismiss
Definition CombatAI.h:115
void AttackStart(Unit *) override
Definition CombatAI.h:104
uint32 _dismissTimer
Definition CombatAI.h:116
uint32 _conditionsTimer
Definition CombatAI.h:114