EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Concord.h
Go to the documentation of this file.
1 
10 #ifndef EVE_SYSTEM_CONCORD_H
11 #define EVE_SYSTEM_CONCORD_H
12 
13 #include "eve-server.h"
14 
16 #include "system/SystemEntity.h"
17 
18 /* basic notes for concord actions...
19  *
20  * response is 0.5 - 1.0, heavy in 1.0, light in 0.5, nil < 0.5
21  * 0.1 - 0.4 has guns for gates n stations according to sec status (0.1 = 1, 0.4 = 4)
22  *
23  *
24  */
25 
28 class PyServiceMgr;
29 class DestinyManager;
30 class InventoryItem;
31 class SystemManager;
32 class ServiceDB;
33 class ConcordSpawnMgr;
34 class ConcordAI;
35 
36 class Concord
37 : public DynamicSystemEntity
38 {
39 public:
40  Concord(SystemManager* system, PyServiceMgr& services, InventoryItemRef self, const GPoint& position, ConcordSpawnMgr* spawnMgr);
41 
42  virtual ~Concord();
43 
44  void Orbit(SystemEntity* who);
45 
46  void Process();
47  void EncodeDestiny( Buffer& into ) const;
48 
49  bool ApplyDamage(Damage& d);
50  void MakeDamageState(DoDestinyDamageState& into) const;
51  void Killed(Damage& fatal_blow);
52 
53  void TargetLost(SystemEntity* who);
54  void TargetedAdd(SystemEntity* who);
55  void TargetAdded(SystemEntity* who) {}
56  void TargetedLost(SystemEntity* who) {}
57  void TargetsCleared() {}
58 
59  void UseShieldRecharge();
60  void UseArmorRepairer();
61 
62  float GetThermal() { return m_therDamage; }
63  float GetEM() { return m_emDamage; }
64  float GetKinetic() { return m_kinDamage; }
65  float GetExplosive() { return m_expDamage; }
66 
67  double GetOrbitRange() { return m_orbitRange; }
68 
69  SystemManager* SystemMgr() const { return m_system; }
70  ConcordAI* AI() const { return m_AI; }
71 
72 protected:
73  void _AwardBounty(SystemEntity* who);
75  void DropLoot(uint32 groupID, uint32 owner, uint32 locationID);
76  void _UpdateDamage();
77  void SetResists();
78 
79  SystemManager* const m_system; //we do not own this
80  PyServiceMgr& m_services; //we do not own this
81  ConcordSpawnMgr* m_spawnMgr; //we do not own this, may be NULL
82  ConcordAI* m_AI; //never NULL
83 
84 private:
86 
87  double m_orbitRange = 0;
88  double m_emDamage = 0;
89  double m_expDamage = 0;
90  double m_kinDamage = 0;
91  double m_therDamage = 0;
92  double m_hullDamage = 0;
93  double m_armorDamage = 0;
94  double m_shieldCharge = 0;
95  double m_shieldCapacity = 0;
96 };
97 
98 class ConcordAI
99 {
100 public:
101  ConcordAI(Concord* who);
102  virtual ~ConcordAI() { /* do nothing here */ }
103 
104  void Process();
105 
106  void Target(SystemEntity *by_who);
107  void Targeted(SystemEntity *by_who);
108  void TargetLost(SystemEntity *by_who);
109 
110  void ClearTargets();
111  void ClearAllTargets();
112 
113  void DisableRepTimers();
114 
115 protected:
116  void Attack(SystemEntity* pTarget);
117  void AttackTarget(SystemEntity* pTarget);
118  void SetIdle();
119  void SetChasing(SystemEntity* pTarget);
120  void SetFollowing(SystemEntity* pTarget);
121  void SetEngaged(SystemEntity* pTarget);
122  void SetFleeing(SystemEntity* pTarget);
123  void SetSignaling(SystemEntity* pTarget);
124  void CheckDistance(SystemEntity* pTarget);
125 
126  double GetTargetTime();
127 
128  typedef enum {
129  Idle, // not doing anything....idle.
130  Chasing, // target out of range to attack/follow, but within npc sight range....use mwd/ab if equiped
131  Following, // too close to chase, but to far to engage
132  Engaged, // actively fighting
133  Fleeing, // running away
134  Signaling // calling for help
135  } State;
137 
138 private:
139  //cached to reduce access times. (faster but uses more memory)
140  double m_sigRadius;
148 
153 
155 
157 
159 
167 
168 };
169 
171 {
172 public:
173  ConcordSpawnMgr();
174  virtual ~ConcordSpawnMgr() { /* do nothing here */ }
175 
176 private:
177 
178 };
179 #endif // EVE_SYSTEM_CONCORD_H
virtual ~ConcordSpawnMgr()
Definition: Concord.h:174
uint32 m_targetRange
Definition: Concord.h:154
SystemManager * SystemMgr() const
Definition: Concord.h:69
double m_armorDamage
Definition: Concord.h:93
double m_entityOrbitRange
Definition: Concord.h:143
void SetChasing(SystemEntity *pTarget)
Definition: Concord.cpp:422
void UseShieldRecharge()
Definition: Concord.cpp:207
double GetTargetTime()
Definition: Concord.cpp:663
Concord * m_npc
Definition: Concord.h:156
uint32 m_orbitingID
Definition: Concord.h:85
double m_therDamage
Definition: Concord.h:91
void EncodeDestiny(Buffer &into) const
Definition: Concord.cpp:120
void DisableRepTimers()
Definition: Concord.cpp:684
uint16 m_shieldBoosterDuration
Definition: Concord.h:152
void CheckDistance(SystemEntity *pTarget)
Definition: Concord.cpp:478
float GetEM()
Definition: Concord.h:63
ConcordSpawnMgr * m_spawnMgr
Definition: Concord.h:81
void SetEngaged(SystemEntity *pTarget)
Definition: Concord.cpp:442
void TargetsCleared()
Definition: Concord.h:57
void SetSignaling(SystemEntity *pTarget)
Definition: Concord.cpp:466
void SetIdle()
Definition: Concord.cpp:402
double m_orbitRange
Definition: Concord.h:87
double m_expDamage
Definition: Concord.h:89
void Killed(Damage &fatal_blow)
void Process()
Definition: Concord.cpp:92
float GetKinetic()
Definition: Concord.h:64
SystemManager *const m_system
Definition: Concord.h:79
Timer m_mainAttackTimer
Definition: Concord.h:161
double m_armorRepairChance
Definition: Concord.h:146
double m_sigRadius
Definition: Concord.h:140
void AttackTarget(SystemEntity *pTarget)
Definition: Concord.cpp:641
double m_attackSpeed
Definition: Concord.h:141
PyServiceMgr & m_services
Definition: Concord.h:80
double m_shieldCharge
Definition: Concord.h:94
Timer m_beginFindTarget
Definition: Concord.h:164
void TargetedAdd(SystemEntity *who)
Definition: Concord.cpp:116
Definition: gpoint.h:33
Timer m_shieldBoosterTimer
Definition: Concord.h:162
bool ApplyDamage(Damage &d)
Timer m_webifierTimer
Definition: Concord.h:166
Generic class for buffers.
Definition: Buffer.h:40
void Targeted(SystemEntity *by_who)
Definition: Concord.cpp:540
PyTuple * MakeDamageState()
void ClearTargets()
Definition: Concord.cpp:516
double m_entityChaseRange
Definition: Concord.h:144
void Orbit(SystemEntity *who)
Definition: Concord.cpp:105
Definition: Damage.h:33
void TargetedLost(SystemEntity *who)
Definition: Concord.h:56
void UseArmorRepairer()
Definition: Concord.cpp:221
double GetOrbitRange()
Definition: Concord.h:67
uint16 m_armorRepairDuration
Definition: Concord.h:151
float GetExplosive()
Definition: Concord.h:65
double m_shieldBoosterChance
Definition: Concord.h:147
void Target(SystemEntity *by_who)
Definition: Concord.cpp:526
Timer m_processTimer
Definition: Concord.h:160
uint16 m_chaseSpeed
Definition: Concord.h:149
void ClearAllTargets()
Definition: Concord.cpp:520
double m_entityAttackRange
Definition: Concord.h:145
State m_state
Definition: Concord.h:136
void TargetLost(SystemEntity *who)
Definition: Concord.cpp:112
virtual ~Concord()
Definition: Concord.cpp:88
unsigned __int32 uint32
Definition: eve-compat.h:50
ConcordAI(Concord *who)
Definition: Concord.cpp:266
double m_entityFlyRange
Definition: Concord.h:142
void TargetAdded(SystemEntity *who)
Definition: Concord.h:55
void _UpdateDamage()
Definition: Concord.cpp:234
virtual ~ConcordAI()
Definition: Concord.h:102
void TargetLost(SystemEntity *by_who)
Definition: Concord.cpp:581
double m_kinDamage
Definition: Concord.h:90
void DropLoot(uint32 groupID, uint32 owner, uint32 locationID)
void Attack(SystemEntity *pTarget)
Definition: Concord.cpp:602
ConcordAI * AI() const
Definition: Concord.h:70
Timer m_warpScramblerTimer
Definition: Concord.h:165
Concord(SystemManager *system, PyServiceMgr &services, InventoryItemRef self, const GPoint &position, ConcordSpawnMgr *spawnMgr)
Definition: Concord.cpp:31
double m_shieldCapacity
Definition: Concord.h:95
Definition: timer.h:30
void SetFollowing(SystemEntity *pTarget)
Definition: Concord.cpp:432
TurretFormulas m_formula
Definition: Concord.h:158
double m_emDamage
Definition: Concord.h:88
Timer m_armorRepairTimer
Definition: Concord.h:163
unsigned __int16 uint16
Definition: eve-compat.h:48
float GetThermal()
Definition: Concord.h:62
void _AwardBounty(SystemEntity *who)
void SetFleeing(SystemEntity *pTarget)
Definition: Concord.cpp:455
ConcordAI * m_AI
Definition: Concord.h:82
uint16 m_cruiseSpeed
Definition: Concord.h:150
void Process()
Definition: Concord.cpp:310
void SetResists()
Definition: Concord.cpp:249
double m_hullDamage
Definition: Concord.h:92