EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
TargetManager.h
Go to the documentation of this file.
1 /*
2  ------------------------------------------------------------------------------------
3  LICENSE:
4  ------------------------------------------------------------------------------------
5  This file is part of EVEmu: EVE Online Server Emulator
6  Copyright 2006 - 2021 The EVEmu Team
7  For the latest information visit https://evemu.dev
8  ------------------------------------------------------------------------------------
9  This program is free software; you can redistribute it and/or modify it under
10  the terms of the GNU Lesser General Public License as published by the Free Software
11  Foundation; either version 2 of the License, or (at your option) any later
12  version.
13 
14  This program is distributed in the hope that it will be useful, but WITHOUT
15  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16  FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
17 
18  You should have received a copy of the GNU Lesser General Public License along with
19  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
20  Place - Suite 330, Boston, MA 02111-1307, USA, or go to
21  http://www.gnu.org/copyleft/lesser.txt.
22  ------------------------------------------------------------------------------------
23  Author: Zhur
24  Updates: Allan
25 */
26 
27 
28 #ifndef __TARGETMANAGER_H_INCL__
29 #define __TARGETMANAGER_H_INCL__
30 
31 #include "inventory/ItemRef.h"
32 
33 namespace TargMgr {
34  namespace State {
35  enum {
36  Idle = 0,
37  Locking = 1,
38  Passive = 2,
39  Locked = 3
40  };
41  }
42  namespace Mode {
43  enum {
44  None = 0,
45  Add = 1,
46  Lost = 2,
47  Clear = 3,
48  OtherAdd = 4,
49  OtherLost = 5,
51  };
52  }
53  namespace Msg {
54  enum {
55  NoMsg = 0,
56  Locked = 1,
57  Docking = 2,
58  Jumping = 3,
59  Cloaked = 4,
62  Destroyed = 7,
63  ClientReq = 8,
65  Deleted = 10,
66  Shutdown = 11
67  };
68  }
69 }
70 
71 
72 class MiningLaser;
73 class ActiveModule;
74 class SystemEntity;
75 class PyRep;
76 class PyTuple;
77 class PyList;
78 
80 public:
82  ~TargetManager() { /* do nothing here */ }
83 
84  /* Common Methods for all objects */
85  bool Process();
86  void Unload(); // called on npcs from sysMgr when unloading system.
87 
88  // iterate thru the map of modules targeting this object and call AbortCycle on each.
89  void ClearModules();
90  void TargetsCleared();
91  void ClearFromTargets();
92  void TargetLost(SystemEntity *tSE);
93  void ClearTarget(SystemEntity *tSE);
94  void TargetAdded(SystemEntity *tSE);
95  void TargetedAdd(SystemEntity *tSE);
96  void TargetedLost(SystemEntity *tSE);
97  void ClearTargets(bool notify=true);
98  void ClearAllTargets(bool notify=true);
99 
100  /* method to remove target without triggering anything else (target destroyed) */
101  void RemoveTarget(SystemEntity* tSE);
102 
103  /*
104  * OnTarget.mode
105  * add - targeting successful
106  * clear - clear all targets
107  * lost - target lost (reason not used)
108  * - Docking
109  * - Cloaked
110  * otheradd - somebody else has targeted you
111  * otherlost - somebody else has stopped targeting you (reason not used)
112  * - WarpingOut
113  * - StoppedTargeting
114  * - Destroyed
115  *
116  * OnTargetClear - immediately removes all target info from ship, including pending targets
117  * - this is done automagically when client jump, dock, or warp. we just clean up our side
118  */
119  //void OnTarget(SystemEntity* tSE, uint8 mode=TargMgr::Mode::None, uint8 msg=TargMgr::Msg::NoMsg);
120  //void ClearTargets(uint8 msg=TargMgr::Msg::NoMsg);
121  // notify targeters this entity is gone
122  //void ClearFromTargets(bool update=true, uint8 msg=TargMgr::Msg::NoMsg);
123 
124 
125  bool StartTargeting(SystemEntity* tSE, ShipItemRef sRef);
126 
127  /* NPC AI Methods */
128  bool IsTargetedBy(SystemEntity *pSE);
129  SystemEntity* GetFirstTarget(bool need_locked=false);
130  SystemEntity* GetTarget(uint32 targetID, bool need_locked=true) const;
131 
132  bool StartTargeting(SystemEntity* who, float lockTime, uint8 maxLockedTargets, double maxTargetLockRange, bool& chase);
133 
134  bool CanAttack() { return m_canAttack; }
135  bool HasNoTargets() const { return m_targets.empty(); }
136 
137  /* PC Module Methods (for module deactivation on target removed) */
138  void Destroyed(); // this does NOT remove target from targeters map
139  void Depleted(MiningLaser* pMod);
140  void AddTargetModule(ActiveModule* pMod);
141  void RemoveTargetModule(ActiveModule* pMod);
142 
143  /* Packet builders: */
144  PyList* GetTargets() const;
145  PyList* GetTargeters() const;
146 
147  void QueueEvent(PyTuple **up) const; //queue an event to all SEs targeting me.
148  void QueueUpdate(PyTuple **up) const; //queue an update to all SEs targeting me.
149 
150  /* debugging methods */
151  void Dump() const;
152  // called by .targlist (player command)
153  std::string TargetList(uint16 &length, uint16 &count);
154 
155 
156 protected:
157 
158  float TimeToLock(ShipItemRef sRef, SystemEntity* tSE) const;
159 
160  static const char* GetModeName(uint8 mode);
161  static const char* GetStateName(uint8 state);
162 
163  //called in reaction to outgoing targeting events in other target managers.
164  void TargetedByLocked(SystemEntity *tSE);
165  void TargetedByLost(SystemEntity *tSE);
166 
167  class TargetEntry {
168  public:
170  : state(TargMgr::State::Idle), timer(0) {}
171 
172  void Dump(SystemEntity* pSE) const;
173 
175 
177  };
178 
180  public:
182  : state(TargMgr::State::Idle) {}
183 
184  void Dump(SystemEntity* pSE) const;
185 
187  };
188 
189 private:
190  SystemEntity* mySE; //we do not own this.
191 
192  std::map<uint32, ActiveModule*> m_modules; // map of modID/Mod* targeting this object
193  std::map<SystemEntity*, TargetEntry*> m_targets; //we own these values, not the keys
194  std::map<SystemEntity*, TargetedByEntry*> m_targetedBy; //we own these values, not the keys
195 
196  bool m_canAttack; // true if npcs can begin attack (to correct attacking before targetlock)
197 };
198 
199 #endif
200 
201 /*{'messageKey': 'TargetByOther', 'dataID': 2040886, 'suppressable': False, 'bodyID': None, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 1612}
202 {'messageKey': 'TargetCantValidate', 'dataID': 17881380, 'suppressable': False, 'bodyID': 258753, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 1613}
203 {'messageKey': 'TargetElectronicsScanStrengthsIncompatible', 'dataID': 17881494, 'suppressable': False, 'bodyID': 258794, 'messageType': 'notify', 'urlAudio': 'wise:/msg_TargetElectronicsScanStrengthsIncompatible_play', 'urlIcon': '', 'titleID': None, 'messageID': 1614}
204 {'messageKey': 'TargetExploding', 'dataID': 17881630, 'suppressable': False, 'bodyID': 258842, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 1615}
205 {'messageKey': 'TargetExploding2', 'dataID': 38244390, 'suppressable': False, 'bodyID': 264194, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 3798}
206 {'messageKey': 'TargetJammedBy', 'dataID': 17881749, 'suppressable': False, 'bodyID': 258883, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 1616}
207 {'messageKey': 'TargetJammedOtherBy', 'dataID': 17881755, 'suppressable': False, 'bodyID': 258885, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 1617}
208 {'messageKey': 'TargetJammedSuccess', 'dataID': 17881752, 'suppressable': False, 'bodyID': 258884, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 1618}
209 {'messageKey': 'TargetJammingFullSuccess', 'dataID': 17881651, 'suppressable': False, 'bodyID': 258850, 'messageType': 'info', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 1619}
210 {'messageKey': 'TargetJammingPartialSuccess', 'dataID': 17881657, 'suppressable': False, 'bodyID': 258852, 'messageType': 'info', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 1620}
211 {'messageKey': 'TargetJammingWithoutTargeters', 'dataID': 17881660, 'suppressable': False, 'bodyID': 258853, 'messageType': 'info', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 1621}
212 u'TargetJammingWithoutTargetersBody'}(u'As nothing is targeting you at this time, your {[item]moduleID.name} failed to jam anything.', None, {u'{[item]moduleID.name}': {'conditionalValues': [], 'variableType': 2, 'propertyName': 'name', 'args': 0, 'kwargs': {}, 'variableName': 'moduleID'}})
213 {'messageKey': 'TargetLocked', 'dataID': 2987151, 'suppressable': False, 'bodyID': None, 'messageType': 'audio', 'urlAudio': 'wise:/msg_TargetLocked_play', 'urlIcon': '', 'titleID': None, 'messageID': 1622}
214 {'messageKey': 'TargetLocking', 'dataID': 2987152, 'suppressable': False, 'bodyID': None, 'messageType': 'audio', 'urlAudio': 'wise:/msg_TargetLocking_play', 'urlIcon': '', 'titleID': None, 'messageID': 1623}
215 {'messageKey': 'TargetLost', 'dataID': 17881497, 'suppressable': False, 'bodyID': 258795, 'messageType': 'notify', 'urlAudio': 'wise:/msg_TargetLost_play', 'urlIcon': '', 'titleID': None, 'messageID': 1624}
216 {'messageKey': 'TargetLostNotWithinRange', 'dataID': 17881663, 'suppressable': False, 'bodyID': 258854, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 1625}
217 u'TargetLostNotWithinRangeBody'}(u'The {[item]targetGroupID.name} is too far away, you need to be within {[numeric]desiredRange} meters of it but are actually {[numeric]actualRange} meters away.', None, {u'{[numeric]desiredRange}': {'conditionalValues': [], 'variableType': 9, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'desiredRange'}, u'{[numeric]actualRange}': {'conditionalValues': [], 'variableType': 9, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'actualRange'}, u'{[item]targetGroupID.name}': {'conditionalValues': [], 'variableType': 2, 'propertyName': 'name', 'args': 0, 'kwargs': {}, 'variableName': 'targetGroupID'}})
218 {'messageKey': 'TargetNoLongerPresent', 'dataID': 17881666, 'suppressable': False, 'bodyID': 258855, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 1626}
219 u'TargetNoLongerPresentBody'}(u'{[item]moduleID.name} deactivates as the {[item]targetID.name} it was targeted at is no longer present.', None, {u'{[item]moduleID.name}': {'conditionalValues': [], 'variableType': 2, 'propertyName': 'name', 'args': 0, 'kwargs': {}, 'variableName': 'moduleID'}, u'{[item]targetID.name}': {'conditionalValues': [], 'variableType': 2, 'propertyName': 'name', 'args': 0, 'kwargs': {}, 'variableName': 'targetID'}})
220 {'messageKey': 'TargetNoLongerPresentGeneric', 'dataID': 17875297, 'suppressable': False, 'bodyID': 256459, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 3742}
221 u'TargetNoLongerPresentGenericBody'}(u'{[item]moduleID.name} deactivates as the item it was targeted at is no longer present.', None, {u'{[item]moduleID.name}': {'conditionalValues': [], 'variableType': 2, 'propertyName': 'name', 'args': 0, 'kwargs': {}, 'variableName': 'moduleID'}})
222 {'messageKey': 'TargetNotLocked', 'dataID': 17881675, 'suppressable': False, 'bodyID': 258858, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 1627}
223 {'messageKey': 'TargetNotLocked2', 'dataID': 38244393, 'suppressable': False, 'bodyID': 264195, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 3799}
224 {'messageKey': 'TargetNotShip', 'dataID': 17881383, 'suppressable': False, 'bodyID': 258754, 'messageType': 'info', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 1628}
225 {'messageKey': 'TargetNotWithinRange', 'dataID': 17881787, 'suppressable': False, 'bodyID': 258896, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 1629}
226 {'messageKey': 'TargetNotWithinRangeGeneric', 'dataID': 17875391, 'suppressable': False, 'bodyID': 256493, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 3744}
227 {'messageKey': 'TargetObscured', 'dataID': 17881678, 'suppressable': False, 'bodyID': 258859, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 1630}
228 {'messageKey': 'TargetOutOfRangeFar', 'dataID': 17881681, 'suppressable': False, 'bodyID': 258860, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 1631}
229 {'messageKey': 'TargetTooFar', 'dataID': 17881689, 'suppressable': False, 'bodyID': 258863, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 1632}
230 {'messageKey': 'Targeting', 'dataID': 17881919, 'suppressable': False, 'bodyID': 258942, 'messageType': 'notify', 'urlAudio': 'wise:/msg_Targeting_play', 'urlIcon': 'res:/ui/icon/misc/targeting.blue', 'titleID': None, 'messageID': 1633}
231 {'messageKey': 'TargetingAptitudeAlreadyFullyUtilized', 'dataID': 17881692, 'suppressable': False, 'bodyID': 258864, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 1634}
232 {'messageKey': 'TargetingMissileToSelf', 'dataID': 17881695, 'suppressable': False, 'bodyID': 258865, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 1635}
233 {'messageKey': 'TargetingSystemsAlreadyFullyUtilized', 'dataID': 17881704, 'suppressable': False, 'bodyID': 258868, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 1636}
234 {'messageKey': 'TargetingSystemsBeingJammed', 'dataID': 17881758, 'suppressable': False, 'bodyID': 258886, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 1637}
235 {'messageKey': 'TargetingSystemsNotInstalled', 'dataID': 17881386, 'suppressable': False, 'bodyID': 258755, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 1638}
236 
237 {'FullPath': u'UI/Messages', 'messageID': 258753, 'label': u'TargetCantValidateBody'}(u'Targeting attempt failed as the designated object is no longer present.', None, None)
238 {'FullPath': u'UI/Messages', 'messageID': 258754, 'label': u'TargetNotShipBody'}(u'The target is not a ship.', None, None)
239 {'FullPath': u'UI/Messages', 'messageID': 258755, 'label': u'TargetingSystemsNotInstalledBody'}(u'The ship you are piloting does not have targeting systems installed.', None, None)
240 {'FullPath': u'UI/Messages', 'messageID': 258794, 'label': u'TargetElectronicsScanStrengthsIncompatibleBody'}(u'Unable to modify the scan strengths of the target because one or more is higher than your own preventing the process.', None, None)
241 {'FullPath': u'UI/Messages', 'messageID': 258795, 'label': u'TargetLostBody'}(u'Target is lost', None, None)
242 {'FullPath': u'UI/Messages', 'messageID': 258850, 'label': u'TargetJammingFullSuccessBody'}(u'Your {[item]moduleID.name} managed to jam all of the objects targeting you: {jammedNames}.', None, {u'{[item]moduleID.name}': {'conditionalValues': [], 'variableType': 2, 'propertyName': 'name', 'args': 0, 'kwargs': {}, 'variableName': 'moduleID'}, u'{jammedNames}': {'conditionalValues': [], 'variableType': 10, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'jammedNames'}})
243 {'FullPath': u'UI/Messages', 'messageID': 258853, 'label': u'TargetJammingWithoutTargetersBody'}(u'As nothing is targeting you at this time, your {[item]moduleID.name} failed to jam anything.', None, {u'{[item]moduleID.name}': {'conditionalValues': [], 'variableType': 2, 'propertyName': 'name', 'args': 0, 'kwargs': {}, 'variableName': 'moduleID'}})
244 {'FullPath': u'UI/Messages', 'messageID': 258854, 'label': u'TargetLostNotWithinRangeBody'}(u'The {[item]targetGroupID.name} is too far away, you need to be within {[numeric]desiredRange} meters of it but are actually {[numeric]actualRange} meters away.', None, {u'{[numeric]desiredRange}': {'conditionalValues': [], 'variableType': 9, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'desiredRange'}, u'{[numeric]actualRange}': {'conditionalValues': [], 'variableType': 9, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'actualRange'}, u'{[item]targetGroupID.name}': {'conditionalValues': [], 'variableType': 2, 'propertyName': 'name', 'args': 0, 'kwargs': {}, 'variableName': 'targetGroupID'}})
245 {'FullPath': u'UI/Messages', 'messageID': 258855, 'label': u'TargetNoLongerPresentBody'}(u'{[item]moduleID.name} deactivates as the {[item]targetID.name} it was targeted at is no longer present.', None, {u'{[item]moduleID.name}': {'conditionalValues': [], 'variableType': 2, 'propertyName': 'name', 'args': 0, 'kwargs': {}, 'variableName': 'moduleID'}, u'{[item]targetID.name}': {'conditionalValues': [], 'variableType': 2, 'propertyName': 'name', 'args': 0, 'kwargs': {}, 'variableName': 'targetID'}})
246 {'FullPath': u'UI/Messages', 'messageID': 258858, 'label': u'TargetNotLockedBody'}(u'{[item]moduleID.name} deactivates because its target, {[item]targetID}, is not locked.', None, {u'{[item]targetID}': {'conditionalValues': [], 'variableType': 2, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'targetID'}, u'{[item]moduleID.name}': {'conditionalValues': [], 'variableType': 2, 'propertyName': 'name', 'args': 0, 'kwargs': {}, 'variableName': 'moduleID'}})
247 {'FullPath': u'UI/Messages', 'messageID': 258859, 'label': u'TargetObscuredBody'}(u'No line of sight to {name}.', None, {u'{name}': {'conditionalValues': [], 'variableType': 10, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'name'}})
248 {'FullPath': u'UI/Messages', 'messageID': 258860, 'label': u'TargetOutOfRangeFarBody'}(u'{targetname} is too far away to target.', None, {u'{targetname}': {'conditionalValues': [], 'variableType': 10, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'targetname'}})
249 {'FullPath': u'UI/Messages', 'messageID': 258864, 'label': u'TargetingAptitudeAlreadyFullyUtilizedBody'}(u'You are already managing {[numeric]limit, decimalPlaces=0} targets, as many as you have skill to.', None, {u'{[numeric]limit, decimalPlaces=0}': {'conditionalValues': [], 'variableType': 9, 'propertyName': None, 'args': 512, 'kwargs': {'decimalPlaces': 0}, 'variableName': 'limit'}})
250 {'FullPath': u'UI/Messages', 'messageID': 258865, 'label': u'TargetingMissileToSelfBody'}(u'It is not a good idea to shoot a missile at yourself. Code {shipID} {targetID}.', None, {u'{shipID}': {'conditionalValues': [], 'variableType': 10, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'shipID'}, u'{targetID}': {'conditionalValues': [], 'variableType': 10, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'targetID'}})
251 {'FullPath': u'UI/Messages', 'messageID': 258868, 'label': u'TargetingSystemsAlreadyFullyUtilizedBody'}(u"You are already managing {[numeric]limit, decimalPlaces=0} targets, as many as your ship's electronics are capable of.", None, {u'{[numeric]limit, decimalPlaces=0}': {'conditionalValues': [], 'variableType': 9, 'propertyName': None, 'args': 512, 'kwargs': {'decimalPlaces': 0}, 'variableName': 'limit'}})
252 {'FullPath': u'UI/Messages', 'messageID': 258883, 'label': u'TargetJammedByBody'}(u'{jammerShipName} has started trying to target jam you.', None, {u'{jammerShipName}': {'conditionalValues': [], 'variableType': 10, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'jammerShipName'}})
253 {'FullPath': u'UI/Messages', 'messageID': 258884, 'label': u'TargetJammedSuccessBody'}(u'You have started trying to target jam {jammedShipName}.', None, {u'{jammedShipName}': {'conditionalValues': [], 'variableType': 10, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'jammedShipName'}})
254 {'FullPath': u'UI/Messages', 'messageID': 258885, 'label': u'TargetJammedOtherByBody'}(u'{jammerShipName} has started trying to target jam {jammedShipName}.', None, {u'{jammedShipName}': {'conditionalValues': [], 'variableType': 10, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'jammedShipName'}, u'{jammerShipName}': {'conditionalValues': [], 'variableType': 10, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'jammerShipName'}})
255 {'FullPath': u'UI/Messages', 'messageID': 258886, 'label': u'TargetingSystemsBeingJammedBody'}(u'Unable to target {targetname} as your targeting systems are currently being jammed.', None, {u'{targetname}': {'conditionalValues': [], 'variableType': 10, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'targetname'}})
256 {'FullPath': u'UI/Messages', 'messageID': 258896, 'label': u'TargetNotWithinRangeBody'}(u'The {targetGroupName} is too far away, you need to be within {[numeric]desiredRange, decimalPlaces=0} meters of it but are actually {[numeric]actualDistance, decimalPlaces=0} meters away.', None, {u'{targetGroupName}': {'conditionalValues': [], 'variableType': 10, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'targetGroupName'}, u'{[numeric]desiredRange, decimalPlaces=0}': {'conditionalValues': [], 'variableType': 9, 'propertyName': None, 'args': 512, 'kwargs': {'decimalPlaces': 0}, 'variableName': 'desiredRange'}, u'{[numeric]actualDistance, decimalPlaces=0}': {'conditionalValues': [], 'variableType': 9, 'propertyName': None, 'args': 512, 'kwargs': {'decimalPlaces': 0}, 'variableName': 'actualDistance'}})
257 {'FullPath': u'UI/Messages', 'messageID': 258942, 'label': u'TargetingBody'}(u'{name} targeted', None, {u'{name}': {'conditionalValues': [], 'variableType': 10, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'name'}})
258 {'FullPath': u'UI/Messages', 'messageID': 264194, 'label': u'TargetExploding2Body'}(u'{[item]moduleTypeID.name} deactivates as {targetName} begins to explode.', None, {u'{[item]moduleTypeID.name}': {'conditionalValues': [], 'variableType': 2, 'propertyName': 'name', 'args': 0, 'kwargs': {}, 'variableName': 'moduleTypeID'}, u'{targetName}': {'conditionalValues': [], 'variableType': 10, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'targetName'}})
259 {'FullPath': u'UI/Messages', 'messageID': 264195, 'label': u'TargetNotLocked2Body'}(u'{[item]moduleID.name} deactivates because its target, {targetName}, is not locked.', None, {u'{[item]moduleID.name}': {'conditionalValues': [], 'variableType': 2, 'propertyName': 'name', 'args': 0, 'kwargs': {}, 'variableName': 'moduleID'}, u'{targetName}': {'conditionalValues': [], 'variableType': 10, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'targetName'}})
260 {'FullPath': u'UI/Messages', 'messageID': 258842, 'label': u'TargetExplodingBody'}(u'{[item]moduleTypeID.name} deactivates as {[item]targetID.name} begins to explode.', None, {u'{[item]targetID.name}': {'conditionalValues': [], 'variableType': 2, 'propertyName': 'name', 'args': 0, 'kwargs': {}, 'variableName': 'targetID'}, u'{[item]moduleTypeID.name}': {'conditionalValues': [], 'variableType': 2, 'propertyName': 'name', 'args': 0, 'kwargs': {}, 'variableName': 'moduleTypeID'}})
261 
262 */
263 
264 /* {'messageKey': 'DeniedDroneTargetForceField', 'dataID': 17877756, 'suppressable': False, 'bodyID': 257373, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 2880}
265  * {'messageKey': 'DeniedInvulnerable', 'dataID': 17883409, 'suppressable': False, 'bodyID': 259494, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 779}
266  * {'messageKey': 'DeniedStationInvulnerableSovereign', 'dataID': 17883713, 'suppressable': False, 'bodyID': 259600, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 780}
267  * {'messageKey': 'DeniedTargetAfterCloak', 'dataID': 17883412, 'suppressable': False, 'bodyID': 259495, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 781}
268  * {'messageKey': 'DeniedTargetEvadesSensors', 'dataID': 17883870, 'suppressable': False, 'bodyID': 259657, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 782}
269  * {'messageKey': 'DeniedTargetForceField', 'dataID': 17883882, 'suppressable': False, 'bodyID': 259661, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 783}
270  * {'messageKey': 'DeniedTargetInvulnerable', 'dataID': 17883415, 'suppressable': False, 'bodyID': 259496, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 784}
271  * {'messageKey': 'DeniedTargetOtherFrozen', 'dataID': 17883876, 'suppressable': False, 'bodyID': 259659, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 785}
272  * {'messageKey': 'DeniedTargetOtherWarping', 'dataID': 17883809, 'suppressable': False, 'bodyID': 259635, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 786}
273  * {'messageKey': 'DeniedTargetReinforcedStructure', 'dataID': 17883888, 'suppressable': False, 'bodyID': 259663, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 787}
274  * {'messageKey': 'DeniedTargetSelf', 'dataID': 17883418, 'suppressable': False, 'bodyID': 259497, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 788}
275  * {'messageKey': 'DeniedTargetSelfFrozen', 'dataID': 17883873, 'suppressable': False, 'bodyID': 259658, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 789}
276  * {'messageKey': 'DeniedTargetSelfWarping', 'dataID': 17883879, 'suppressable': False, 'bodyID': 259660, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 790}
277  * {'messageKey': 'DeniedTargetUntargetable', 'dataID': 17880323, 'suppressable': False, 'bodyID': 258348, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 2170}
278  * {'messageKey': 'DeniedTargetingAttemptFailed', 'dataID': 17883942, 'suppressable': False, 'bodyID': 259683, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 791}
279  * {'messageKey': 'DeniedTargetingCloaked', 'dataID': 17883664, 'suppressable': False, 'bodyID': 259583, 'messageType': 'notify', 'urlAudio': 'wise:/msg_DeniedTargetingCloaked_play', 'urlIcon': '', 'titleID': None, 'messageID': 792}
280  * {'messageKey': 'DeniedTargetingInsideField', 'dataID': 17883885, 'suppressable': False, 'bodyID': 259662, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 793}
281  * {'messageKey': 'DeniedTargetingTargetCloaked', 'dataID': 17883421, 'suppressable': False, 'bodyID': 259498, 'messageType': 'notify', 'urlAudio': '', 'urlIcon': '', 'titleID': None, 'messageID': 794}
282  * {'FullPath': u'UI/Messages', 'messageID': 259494, 'label': u'DeniedInvulnerableBody'}(u'Your ship is realigning its magnetic field, please wait a moment.', None, None)
283  * {'FullPath': u'UI/Messages', 'messageID': 259495, 'label': u'DeniedTargetAfterCloakBody'}(u'You cannot perform that action at this time as your systems are still recalibrating after the use of a cloaking device.', None, None)
284  * {'FullPath': u'UI/Messages', 'messageID': 259496, 'label': u'DeniedTargetInvulnerableBody'}(u'Target is invulnerable.', None, None)
285  * {'FullPath': u'UI/Messages', 'messageID': 259497, 'label': u'DeniedTargetSelfBody'}(u'You cannot target your own ship.', None, None)
286  * {'FullPath': u'UI/Messages', 'messageID': 259498, 'label': u'DeniedTargetingTargetCloakedBody'}(u'You failed to target nothing.', None, None)
287  * {'FullPath': u'UI/Messages', 'messageID': 257373, 'label': u'DeniedDroneTargetForceFieldBody'}(u'Your drones cannot engage {[item]target.name} since it is within the range of a forcefield you are barred from entering.', None, {u'{[item]target.name}': {'conditionalValues': [], 'variableType': 2, 'propertyName': 'name', 'args': 0, 'kwargs': {}, 'variableName': 'target'}})
288  * {'FullPath': u'UI/Messages', 'messageID': 259600, 'label': u'DeniedStationInvulnerableSovereignBody'}(u'{[item]module.name} deactivates as the target {targetname} is invulnerable because its owning alliance holds sovereignty in this solar system.', None, {u'{targetname}': {'conditionalValues': [], 'variableType': 10, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'targetname'}, u'{[item]module.name}': {'conditionalValues': [], 'variableType': 2, 'propertyName': 'name', 'args': 0, 'kwargs': {}, 'variableName': 'module'}})
289  * {'FullPath': u'UI/Messages', 'messageID': 258348, 'label': u'DeniedTargetUntargetableBody'}(u'You are unable to target {targetName} as it has been made untargetable by a GM.', None, {u'{targetName}': {'conditionalValues': [], 'variableType': 10, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'targetName'}})
290  * {'FullPath': u'UI/Messages', 'messageID': 259583, 'label': u'DeniedTargetingCloakedBody'}(u'You cannot target anything while you are cloaked.', None, None)
291  * {'FullPath': u'UI/Messages', 'messageID': 259635, 'label': u'DeniedTargetOtherWarpingBody'}(u"Interference from {targetName}'s warp prevents your sensors from locking the target.", None, {u'{targetName}': {'conditionalValues': [], 'variableType': 10, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'targetName'}})
292  * {'FullPath': u'UI/Messages', 'messageID': 259657, 'label': u'DeniedTargetEvadesSensorsBody'}(u'You are unable to target the {targetName} as your sensors are unable to lock onto it.', None, {u'{targetName}': {'conditionalValues': [], 'variableType': 10, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'targetName'}})
293  * {'FullPath': u'UI/Messages', 'messageID': 259658, 'label': u'DeniedTargetSelfFrozenBody'}(u'You are unable to target {targetName} because you have been frozen by a GM.', None, {u'{targetName}': {'conditionalValues': [], 'variableType': 10, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'targetName'}})
294  * {'FullPath': u'UI/Messages', 'messageID': 259659, 'label': u'DeniedTargetOtherFrozenBody'}(u'You are unable to target {targetName} because they are currently frozen by a GM.', None, {u'{targetName}': {'conditionalValues': [], 'variableType': 10, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'targetName'}})
295  * {'FullPath': u'UI/Messages', 'messageID': 259660, 'label': u'DeniedTargetSelfWarpingBody'}(u'Interference from the warp you are doing is preventing your sensors from getting a target lock on {targetName}.', None, {u'{targetName}': {'conditionalValues': [], 'variableType': 10, 'propertyName': None, 'args': 0, 'kwargs': {}, 'variableName': 'targetName'}})
296  * {'FullPath': u'UI/Messages', 'messageID': 259661, 'label': u'DeniedTargetForceFieldBody'}(u'You failed to target {[item]target.name}, they are within range {[numeric]range.distance} of a {[item]item.name} and with you being outside of it, it is preventing you from holding a lock on them.', None, {u'{[item]target.name}': {'conditionalValues': [], 'variableType': 2, 'propertyName': 'name', 'args': 0, 'kwargs': {}, 'variableName': 'target'}, u'{[item]item.name}': {'conditionalValues': [], 'variableType': 2, 'propertyName': 'name', 'args': 0, 'kwargs': {}, 'variableName': 'item'}, u'{[numeric]range.distance}': {'conditionalValues': [], 'variableType': 9, 'propertyName': 'distance', 'args': 256, 'kwargs': {}, 'variableName': 'range'}})
297  * {'FullPath': u'UI/Messages', 'messageID': 259662, 'label': u'DeniedTargetingInsideFieldBody'}(u'You cannot target the {[item]target.name} while you are inside a force field.', None, {u'{[item]target.name}': {'conditionalValues': [], 'variableType': 2, 'propertyName': 'name', 'args': 0, 'kwargs': {}, 'variableName': 'target'}})
298  * {'FullPath': u'UI/Messages', 'messageID': 259663, 'label': u'DeniedTargetReinforcedStructureBody'}(u'You failed to target {[item]target.name} as it is locked down in reinforced mode.', None, {u'{[item]target.name}': {'conditionalValues': [], 'variableType': 2, 'propertyName': 'name', 'args': 0, 'kwargs': {}, 'variableName': 'target'}})
299  * {'FullPath': u'UI/Messages', 'messageID': 259683, 'label': u'DeniedTargetingAttemptFailedBody'}(u'Your attempt to target {[item]target.name} failed.', None, {u'{[item]target.name}': {'conditionalValues': [], 'variableType': 2, 'propertyName': 'name', 'args': 0, 'kwargs': {}, 'variableName': 'target'}})
300  *
301  */
Base Python wire object.
Definition: PyRep.h:66
PyList * GetTargets() const
unsigned __int8 uint8
Definition: eve-compat.h:46
void QueueUpdate(PyTuple **up) const
void TargetedAdd(SystemEntity *tSE)
void ClearAllTargets(bool notify=true)
void ClearTarget(SystemEntity *tSE)
static const char * GetModeName(uint8 mode)
TargetManager(SystemEntity *self)
void Depleted(MiningLaser *pMod)
void Dump(SystemEntity *pSE) const
void Dump() const
static const char * GetStateName(uint8 state)
void ClearTargets(bool notify=true)
Python tuple.
Definition: PyRep.h:567
void TargetLost(SystemEntity *tSE)
void TargetAdded(SystemEntity *tSE)
PyList * GetTargeters() const
std::map< SystemEntity *, TargetEntry * > m_targets
void TargetedLost(SystemEntity *tSE)
SystemEntity * GetFirstTarget(bool need_locked=false)
void RemoveTarget(SystemEntity *tSE)
void ClearFromTargets()
void RemoveTargetModule(ActiveModule *pMod)
SystemEntity * GetTarget(uint32 targetID, bool need_locked=true) const
std::map< SystemEntity *, TargetedByEntry * > m_targetedBy
float TimeToLock(ShipItemRef sRef, SystemEntity *tSE) const
SystemEntity * mySE
unsigned __int32 uint32
Definition: eve-compat.h:50
std::map< uint32, ActiveModule * > m_modules
std::string TargetList(uint16 &length, uint16 &count)
void TargetedByLost(SystemEntity *tSE)
bool HasNoTargets() const
void QueueEvent(PyTuple **up) const
Definition: timer.h:30
void AddTargetModule(ActiveModule *pMod)
unsigned __int16 uint16
Definition: eve-compat.h:48
entityID heal the character with the entityID note giving you detailed ship status information gives a list of all dynamic entities and players and their destinyState in this bubble shows some current destiny variables save all kick all and halt server immediate command list all items in current location s gives list of cargo contents and volumes in all holds list current session values show current ship DNA show current objects in their destiny state
Mode
Definition: EVE_LSC.h:91
void TargetedByLocked(SystemEntity *tSE)
void Dump(SystemEntity *pSE) const
bool IsTargetedBy(SystemEntity *pSE)
Python list.
Definition: PyRep.h:639
bool StartTargeting(SystemEntity *tSE, ShipItemRef sRef)