Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
CombatAI.h
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#ifndef SKYFIRE_COMBATAI_H
7#define SKYFIRE_COMBATAI_H
8
9#include "ConditionMgr.h"
10#include "CreatureAI.h"
11#include "CreatureAIImpl.h"
12
13class Creature;
14
15class AggressorAI : public CreatureAI
16{
17public:
18 explicit AggressorAI(Creature* c) : CreatureAI(c) { }
19
21 static int Permissible(const Creature*);
22};
23
24typedef std::vector<uint32> SpellVct;
25
26class CombatAI : public CreatureAI
27{
28public:
29 explicit CombatAI(Creature* c) : CreatureAI(c) { }
30
32 void Reset() OVERRIDE;
33 void EnterCombat(Unit* who) OVERRIDE;
34 void JustDied(Unit* killer) OVERRIDE;
35 void UpdateAI(uint32 diff) OVERRIDE;
36 void SpellInterrupted(uint32 spellId, uint32 unTimeMs) OVERRIDE;
37 static int Permissible(const Creature*);
38protected:
41};
42
43class CasterAI : public CombatAI
44{
45public:
49 void UpdateAI(uint32 diff) OVERRIDE;
50 void EnterCombat(Unit* /*who*/) OVERRIDE;
51private:
53};
54
55struct ArcherAI : public CreatureAI
56{
57public:
58 explicit ArcherAI(Creature* c);
59 void AttackStart(Unit* who) OVERRIDE;
60 void UpdateAI(uint32 diff) OVERRIDE;
61
62 static int Permissible(const Creature*);
63protected:
65};
66
67struct TurretAI : public CreatureAI
68{
69public:
70 explicit TurretAI(Creature* c);
71 bool CanAIAttack(const Unit* who) const;
72 void AttackStart(Unit* who) OVERRIDE;
73 void UpdateAI(uint32 diff) OVERRIDE;
74
75 static int Permissible(const Creature*);
76protected:
78};
79
80#define VEHICLE_CONDITION_CHECK_TIME 1000
81#define VEHICLE_DISMISS_TIME 5000
82struct VehicleAI : public CreatureAI
83{
84public:
85 explicit VehicleAI(Creature* c);
86
87 void UpdateAI(uint32 diff) OVERRIDE;
88 static int Permissible(const Creature*);
89 void Reset() OVERRIDE;
92 void OnCharmed(bool apply) OVERRIDE;
93
94private:
96 void LoadConditions();
97 void CheckConditions(const uint32 diff);
102};
103
104#endif
std::vector< uint32 > SpellVct
Definition CombatAI.h:24
std::list< Condition * > ConditionList
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
#define MELEE_RANGE
Definition Object.h:33
static int Permissible(const Creature *)
Definition CombatAI.cpp:13
AggressorAI(Creature *c)
Definition CombatAI.h:18
void UpdateAI(uint32) OVERRIDE
== Triggered Actions Requested ==================
Definition CombatAI.cpp:22
void AttackStart(Unit *victim) OVERRIDE
Definition CombatAI.h:48
float m_attackDist
Definition CombatAI.h:52
CasterAI(Creature *c)
Definition CombatAI.h:46
void JustDied(Unit *killer) OVERRIDE
Definition CombatAI.cpp:65
CombatAI(Creature *c)
Definition CombatAI.h:29
void EnterCombat(Unit *who) OVERRIDE
Definition CombatAI.cpp:72
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition CombatAI.cpp:83
void SpellInterrupted(uint32 spellId, uint32 unTimeMs) OVERRIDE
Definition CombatAI.cpp:102
void InitializeAI() OVERRIDE
Definition CombatAI.cpp:51
void Reset() OVERRIDE
Definition CombatAI.cpp:60
SpellVct spells
Definition CombatAI.h:40
EventMap events
Definition CombatAI.h:39
CreatureAI(Creature *creature)
Definition CreatureAI.h:69
void AttackStartCaster(Unit *victim, float dist)
Definition UnitAI.cpp:22
Definition Unit.h:1367
ArcherAI(Creature *c)
Definition CombatAI.cpp:175
void AttackStart(Unit *who) OVERRIDE
Definition CombatAI.cpp:189
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition CombatAI.cpp:209
float m_minRange
Definition CombatAI.h:64
static int Permissible(const Creature *)
Definition CombatAI.cpp:36
TurretAI(Creature *c)
Definition CombatAI.cpp:224
float m_minRange
Definition CombatAI.h:77
void AttackStart(Unit *who) OVERRIDE
Definition CombatAI.cpp:244
bool CanAIAttack(const Unit *who) const
Definition CombatAI.cpp:235
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition CombatAI.cpp:250
static int Permissible(const Creature *)
Definition CombatAI.cpp:41
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition CombatAI.cpp:270
void LoadConditions()
Definition CombatAI.cpp:307
uint32 m_DismissTimer
Definition CombatAI.h:101
bool m_IsVehicleInUse
Definition CombatAI.h:95
uint32 m_ConditionsTimer
Definition CombatAI.h:99
void CheckConditions(const uint32 diff)
Definition CombatAI.cpp:314
VehicleAI(Creature *c)
Definition CombatAI.cpp:262
static int Permissible(const Creature *)
Definition CombatAI.cpp:46
bool m_DoDismiss
Definition CombatAI.h:100
void Reset() OVERRIDE
Definition CombatAI.cpp:287
void AttackStart(Unit *) OVERRIDE
Definition CombatAI.h:91
void MoveInLineOfSight(Unit *) OVERRIDE
Definition CombatAI.h:90
ConditionList conditions
Definition CombatAI.h:98