EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Ship.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: Bloody.Rabbit
24  Updates: Allan
25 */
26 
27 #ifndef __SHIP__H__INCL__
28 #define __SHIP__H__INCL__
29 
30 #include "EVEServerConfig.h"
31 #include "StaticDataMgr.h"
32 #include "effects/EffectsData.h"
33 #include "fleet/FleetData.h"
34 #include "inventory/ItemType.h"
36 #include "ship/ShipDB.h"
38 #include "system/SystemEntity.h"
39 
43 class Client;
44 class GenericModule;
45 
46 class ShipItem
47 : public InventoryItem
48 {
49  friend class InventoryItem; // to let it construct us
50 
51 protected:
52  ShipItem(uint32 shipID, const ItemType &type, const ItemData &data);
53  ~ShipItem() noexcept;
54 
55 public:
56  /* class type pointer querys. */
57  virtual ShipItem* GetShipItem() { return this; }
58  /* class type tests. */
59  virtual bool IsShipItem() { return true; }
60 
61  void Init();
62  void InitPod();
63  void InitAttribs();
64  void LogOut();
65  // adds cargo mass to ship's mass
66  void UpdateMass(); // will reset ship mass to default, then loop thru cargo
67  static ShipItemRef Load( uint32 shipID);
68  static ShipItemRef Spawn( ItemData &data);
69 
70  virtual void SetPlayer(Client* pClient);
71  virtual bool HasPilot() { return (m_pilot != nullptr); }
72  virtual Client* GetPilot() { return m_pilot; }
73 
74  // add item to our inventory and set singleton where applicable
75  virtual void AddItem(InventoryItemRef iRef);
76  // remove item from our inventory and call Remove() on module/charge
77  virtual void RemoveItem(InventoryItemRef iRef);
78 
79  bool HasModuleManager() { return (m_ModuleManager != nullptr); }
81 
82  virtual void Delete();
83 
85  // this checks destination flag vs item type/group/category for proper placement
86  void VerifyHoldType(EVEItemFlags flag, InventoryItemRef iRef, Client* pClient=nullptr); // this will throw on error.
88 
89  bool IsPopped() { return m_isPopped; }
90  void SetPopped(bool set=false) { m_isPopped = set; }
91  std::string GetShipDNA();
92 
93  /*
94  * Primary public packet builders:
95  */
100 
102  void SaveShip();
103  void RepairShip(float fraction);
104 
105  /* Inform Ship that a state change is taking place */
106  void Dock();
107  void Heal();
108  void Jump();
109  void Warp();
110  void Eject();
111  void Undock(); // reset effects, online mods in list, recharge shield and cap (if session change complete)
112  void AddModuleToOnlineVec(uint32 modID);
113 
114  /* begin new module manager interface */
115  void ProcessModules();
116  //this can throw
117  void Online(uint32 modID);
118  //this can throw
119  void Offline(uint32 modID);
120  void OnlineAll();
121  void OfflineAll();
122  void Activate(int32 itemID, std::string effectName, int32 targetID, int32 repeat);
123  void Deactivate(int32 itemID, std::string effectName) { m_ModuleManager->Deactivate(itemID, effectName); }
127  void RemoveRig(InventoryItemRef iRef);
128  void UpdateModules(); // called when undocking to online modules in OnlineModuleList sent from client
133  // this will test for active modules and throw where applicable
134  void MoveModuleSlot(EVEItemFlags slot1, EVEItemFlags slot2);
135  void StripFitting();
136  // this will remove all items from all ship cargo holds
137  void EmptyCargo();
138 
139  // loop thru modules that 'get' things and deactivate them
140  void CargoFull();
141 
142  void RepairModules(std::vector<InventoryItemRef>& itemRefVec, float fraction);
143 
145 
147  bool IsActive() { return m_isActive; }
148  bool IsDocking() { return m_isDocking; }
149  bool IsUndocking() { return m_isUndocking; }
150  void SetDocked() { m_isDocking = false; }
151  void SetUndocking(bool set=false) { m_isUndocking = set; }
154  // this is for repairing modules with nanite paste
157 
158  // OL and Heat damage shit
159  void ProcessHeat();
160  // heat generated per tic by ship's active modules (passive *may not* generate heat yet.)
161  float GenerateHeat(uint16 attrID);
162  // heat dissipated per tic by ship's design and pilots skills
163  float DissipateHeat(uint16 attrID, float heat);
164  // this method does just that....checks for heat-induced damage from overheated modules
165  void HeatDamageCheck(GenericModule* pMod);
166  void DamageModule(uint32 modID, float amt=1) { m_ModuleManager->DamageModule(modID, amt); }
168 
169  // get list of fitted modules
170  void GetModuleRefVec(std::vector<InventoryItemRef>& iRefVec); // for active ships
171  // get list of fitted modules
172  void GetModuleItemVec(std::vector<InventoryItemRef>& iRefVec); // for inactive ships
176 
177  // this also checks for fit-by-type and rig restrictions
178  void TryModuleLimitChecks(EVEItemFlags flag, InventoryItemRef iRef); // this must throw on error
180  // make sure this does NOT throw.
181  // must return integer
182  // will remove item from previous container
183  uint32 AddItemByFlag( EVEItemFlags flag, InventoryItemRef iRef, Client* pClient=nullptr);
184  // this can throw. returns nothing
186  // this can throw. returns nothing
187  void LoadChargesToBank(EVEItemFlags flag, std::vector<int32>& chargeIDs);
188  // called by client for subLocation (charge) removal
189  void RemoveCharge(EVEItemFlags fromFlag);
190  /* end new module manager interface */
191 
192  // Tactical Interface:
193  void SetShipShield(float fraction);
194  void SetShipArmor(float fraction);
195  void SetShipHull(float fraction);
196  void SetShipCapacitorLevel(float fraction);
209 
210  // template loading system
211  using InventoryItem::_Load;
212  virtual bool _Load();
213 protected:
214  // Template loader:
215  template<class _Ty>
216  static RefPtr<_Ty> _LoadItem( uint32 shipID, const ItemType &type, const ItemData &data) {
218  return ShipItemRef( new ShipItem(shipID, type, data ));
219 
220  _log(ITEM__ERROR, "Trying to load %s as Ship.", sDataMgr.GetCategoryName(type.categoryID()));
221  if (sConfig.debug.StackTrace)
222  EvE::traceStack();
223  return RefPtr<_Ty>();
224  }
225 
226  //bool LoadAttributes();
227  bool m_loaded;
228 
229  static uint32 CreateItemID( ItemData &data);
230 
231 public:
232  /* new effects system */
233  // only called by ResetEffects
234  void ClearModuleModifiers(); // this calls OfflineAll() then ClearModifiers() on all modules and their charges
235  // only called by Undock
236  void ResetEffects(); // this clears all modifiers, resets all attributes, then calls ProcessEffects()
237  // called by AggressionManager::GetCriminalTimeStamps
238  void PrepForUndock(); // called by AggresMgr to try saving a bit of runtime by clearing beforehand
239  void ProcessEffects(bool add=false, bool update=false);
241 
242  /* linking weapons methods */
245  bool HasLinkedWeapons() { return (!m_linkedWeapons.empty()); }
246  void LinkAllWeapons();
247  void LinkWeapon(uint32 masterID, uint32 slaveID); // this should not throw
248  void PeelAndLink(uint32 masterID, uint32 slaveID); // this should not throw
249  void MergeModuleGroups(uint32 masterID, uint32 slaveID); // this should not throw
250  uint32 UnlinkWeapon(uint32 moduleID);
251  void UnlinkGroup(uint32 memberID, bool update=false);
252  void UnlinkAllWeapons();
254  void OfflineGroup(GenericModule* pMod);
255  void DamageGroup(GenericModule* pMod);
256  // to load with ammo
257  void LoadLinkedWeapons(GenericModule* pMod, std::vector<int32>& chargeIDs);
258  void GetLinkedWeaponMods(EVEItemFlags flag, std::vector<GenericModule*> &modules);
259 
260 protected:
261  /* linking weapons methods */
262  void LinkWeapon(GenericModule* pMaster, GenericModule* pSlave);
263  void UnlinkWeapon(uint32 masterID, uint32 slaveID);
264  // to load saved linked weapons
265  void LoadWeaponGroups();
266  // to save linked weapons
267  void SaveWeaponGroups();
268  // this single iteration loop will link same type weapons, then remove the weapon from the list.
269  // non-linked weapons are kept in list to be checked upon return to caller.
270  void LinkWeaponLoop(std::list< GenericModule* >& moduleVec);
271 
272 private:
274 
275  //the ship's module manager. We own this
277 
278  InventoryItemRef m_targetRef; // this is only used for module effects that require a target. is here because of the ease of aquiring/sending (common code)
279 
280  std::vector<uint32> m_onlineModuleVec; // for onlining modules when undocking
281  std::map<GenericModule*, std::list<GenericModule*>> m_linkedWeapons; // masterID/data (slaveIDs)
282 
283  void ProcessShipEffects(bool update=false);
284 
285  bool m_isActive :1;
286  bool m_isPopped :1;
287  bool m_isDocking :1;
288  bool m_isUndocking :1;
289 };
290 
294 class PyServiceMgr;
295 class InventoryItem;
296 class DestinyManager;
297 class Missile;
298 class SystemManager;
299 class ServiceDB;
300 
301 class ShipSE
302 : public DynamicSystemEntity
303 {
304 public:
305  ShipSE(InventoryItemRef self, PyServiceMgr& services, SystemManager* pSystem, const FactionData& data);
306  virtual ~ShipSE() { /* do nothing here */ }
307 
308  /* class type pointer querys. */
309  virtual ShipSE* GetShipSE() { return this; }
310  /* class type tests. */
311  virtual bool IsShipSE() { return true; }
312 
313  /* SystemEntity interface */
314  virtual void Process();
315  virtual void EncodeDestiny( Buffer& into );
316  virtual void MakeDamageState(DoDestinyDamageState &into);
317  virtual PyDict *MakeSlimItem();
318 
319  /* virtual functions default to base class and overridden as needed */
320  virtual void Killed(Damage &fatal_blow); /* This method is defined in Damage.cpp */
321 
322  /* virtual functions to be overridden in derived classes */
323  virtual void MissileLaunched(Missile* pMissile) { /* Do nothing here */ }
324  virtual bool IsInvul();
325  virtual bool IsFrozen() { return false; }
326  virtual bool IsLogin();
327 
328  /* virtual functions in base to allow common interface calls specific to ship entities */
329  virtual void SetPilot(Client* pClient);
330  virtual bool HasPilot() { return ((m_shipRef.get() == nullptr) ? false : m_shipRef->HasPilot()); }
331  virtual Client* GetPilot() { return ((m_shipRef.get() == nullptr) ? nullptr : m_shipRef->GetPilot()); }
332 
333  /* specific functions handled here. */
334  void Dock();
335  void Jump(bool showCloak=true); // this sets ship cloak
336  void Warp();
337  void RemoveTarget(SystemEntity* pSE);
338  void SetPassword(std::string pass) { m_towerPass = pass; }
339  // fleet
340  void ClearBoostData();
341  bool IsBoosted() { return m_boosted; }
342  void SetBoost(bool set=false) { m_boosted = set; }
343  void RemoveBoost();
344  void ApplyBoost(BoostData& bData);
346 
347  // misc
348  void PayInsurance();
349  void DamageModule(uint32 modID) { m_shipRef->DamageModule(modID); }
350  void DamageRandModule(float chance);
351  void ResetShipSystemMgr(SystemManager* pSystem); // this is to reset system manager for jumps, etc.
352  void SaveShip() { m_shipRef->SaveShip(); }
353  void UpdateDrones(std::map<int16, int8> &attribs); // used to update drone settings
354 
355  //cancel all active modules
357 
358  // this is the itemID of the ship that ejected the pod, for setting in slimItemUpdate (launcherID)
359  void SetLauncherID(uint32 shipID) { m_podShipID = shipID; }
361 
363 
364  float CalculateRechargeRate(float Capacity, float RechargeTimeMS, float Current);
365 
366  void AbandonDrones();
367  bool LaunchDrone(InventoryItemRef dRef);
368  void ScoopDrone(SystemEntity* pSE);
369  // returns current count of drones in space for this ship
370  uint8 DroneCount() { return m_drones.size(); }
371 
373  void SetFleetSMBUsage(bool set=false) { m_allowFleetSMBUsage = set; }
374 
375 protected:
377 
379 
380 private:
382 
384 
386 
388 
389  /* boost data */
391  bool m_boosted;
397 
398  /* for POS field */
399  std::string m_towerPass;
400 
401  /* launched drones */
402  std::map<uint32, InventoryItem*> m_drones;
403 
404 };
405 
406 #endif /* !__SHIP__H__INCL__ */
virtual bool IsFrozen()
Definition: Ship.h:325
void ProcessHeat()
Definition: Ship.cpp:1130
Base Python wire object.
Definition: PyRep.h:66
#define sConfig
A macro for easier access to the singleton.
void UpdateMass()
Definition: Ship.cpp:389
void AbortCycle()
Definition: Ship.h:146
unsigned __int8 uint8
Definition: eve-compat.h:46
uint32 m_podShipID
Definition: Ship.h:385
PyRep * ModuleRepair(uint32 modID)
Definition: Ship.h:155
void StopModuleRepair(uint32 modID)
Definition: Ship.h:156
EvilNumber GetShipArmorPercent()
Definition: Ship.h:206
bool ValidateItemSpecifics(InventoryItemRef iRef)
Definition: Ship.cpp:2316
static ShipItemRef Spawn(ItemData &data)
Definition: Ship.cpp:51
~ShipItem() noexcept
Definition: Ship.cpp:40
void UnloadModule(uint32 itemID)
Definition: Ship.h:130
void HeatDamageCheck(GenericModule *pMod)
Definition: Ship.cpp:1272
virtual ShipSE * GetShipSE()
Definition: Ship.h:309
void DeOverload(uint32 itemID)
void DamageModule(uint32 modID, float amt=1)
Definition: Ship.h:166
#define _log(type, fmt,...)
Definition: logsys.h:124
void ScoopDrone(SystemEntity *pSE)
Definition: Ship.cpp:2835
void InitAttribs()
Definition: Ship.cpp:191
void Deactivate(int32 itemID, std::string effectName)
Definition: Ship.h:123
void ProcessModules()
Definition: Ship.cpp:343
void GetModuleItemVec(std::vector< InventoryItemRef > &iRefVec)
Definition: Ship.cpp:568
Python's dictionary.
Definition: PyRep.h:719
void Online(uint32 modID)
Definition: Ship.cpp:999
virtual void AddItem(InventoryItemRef iRef)
Definition: Ship.cpp:468
BoostData m_boost
Definition: Ship.h:390
ModuleManager * GetModuleManager()
Definition: Ship.h:80
uint8 GetLoadedLinkedCount(GenericModule *pMod)
Definition: Ship.cpp:1676
void VerifyHoldType(EVEItemFlags flag, InventoryItemRef iRef, Client *pClient=nullptr)
Definition: Ship.cpp:1972
virtual ~ShipSE()
Definition: Ship.h:306
void PayInsurance()
Definition: Ship.cpp:2502
void CargoFull()
Definition: Ship.cpp:1335
bool HasLinkedWeapons()
Definition: Ship.h:245
EVEItemFlags
Definition: EVE_Flags.h:13
virtual void Process()
Definition: Ship.cpp:2440
ShipItemRef GetShipItemRef()
Definition: Ship.h:362
void OfflineAll()
Definition: Ship.cpp:1055
InventoryItemRef GetTargetRef()
Definition: Ship.h:152
void Init()
Definition: Ship.cpp:150
void UnloadModule(uint32 itemID)
virtual bool HasPilot()
Definition: Ship.h:71
virtual bool IsLogin()
Definition: Ship.cpp:2536
uint32 UnlinkWeapon(uint32 moduleID)
Definition: Ship.cpp:1522
std::vector< uint32 > m_onlineModuleVec
Definition: Ship.h:280
PyDict * GetShipState()
Definition: Ship.cpp:2199
void Jump()
Definition: Ship.cpp:405
bool IsBoosted()
Definition: Ship.h:341
void LoadWeaponGroups()
Definition: Ship.cpp:1745
virtual bool _Load()
uint8 DroneCount()
Definition: Ship.h:370
Timer m_processTimer
Definition: Ship.h:383
bool ValidateBoardShip(CharacterRef who)
Definition: Ship.cpp:2267
void CancelOverloading(uint32 itemID)
Definition: Ship.h:125
void DamageRandModule()
Definition: Ship.h:167
bool m_isDocking
Definition: Ship.h:287
void RepairModules()
Definition: Ship.h:144
this is a class that kinda mimics how python polymorph's numbers.
Definition: EvilNumber.h:59
void LoadLinkedWeapons(GenericModule *pMod, std::vector< int32 > &chargeIDs)
Definition: Ship.cpp:684
virtual bool IsShipSE()
Definition: Ship.h:311
void Overload(uint32 itemID)
Definition: Ship.h:124
virtual ShipItem * GetShipItem()
Definition: Ship.h:57
void UpdateDrones(std::map< int16, int8 > &attribs)
Definition: Ship.cpp:2843
Definition: Ship.h:301
void SaveShip()
Definition: Ship.h:352
bool GetFleetSMBUsage()
Definition: Ship.h:372
virtual void MissileLaunched(Missile *pMissile)
Definition: Ship.h:323
float GetShipArmorHP()
Definition: Ship.h:198
void SaveWeaponGroups()
Definition: Ship.cpp:1733
uint8 categoryID() const
Definition: ItemType.h:66
signed __int32 int32
Definition: eve-compat.h:49
void SetFleetSMBUsage(bool set=false)
Definition: Ship.h:373
ModuleManager * m_ModuleManager
Definition: Ship.h:276
void Warp()
Definition: Ship.cpp:2564
const ItemType & type() const
std::string GetShipDNA()
Definition: Ship.cpp:1902
bool m_isPopped
Definition: Ship.h:286
void InitPod()
Definition: Ship.cpp:171
void LogOut()
Definition: Ship.cpp:84
std::map< GenericModule *, std::list< GenericModule * > > m_linkedWeapons
Definition: Ship.h:281
virtual void Delete()
Definition: Ship.cpp:332
void Heal()
Definition: Ship.cpp:458
PyRep * GetLinkedWeapons()
Definition: Ship.cpp:1691
Generic class for buffers.
Definition: Buffer.h:40
GenericModule * GetModule(EVEItemFlags flag)
static ShipItemRef Load(uint32 shipID)
Definition: Ship.cpp:46
void ResetEffects()
Definition: Ship.cpp:1872
EvilNumber GetShipShieldPercent()
Definition: Ship.h:207
float m_oldInertia
Definition: Ship.h:396
void SetShipHull(float fraction)
Definition: Ship.cpp:931
ShipItem(uint32 shipID, const ItemType &type, const ItemData &data)
Definition: Ship.cpp:23
PyRep * ModuleRepair(uint32 modID)
void LinkAllWeapons()
Definition: Ship.cpp:1416
Client * m_pilot
Definition: Ship.h:273
void Warp()
Definition: Ship.cpp:401
PyDict * GetShipInfo()
Definition: Ship.cpp:2153
void ProcessEffects(bool add=false, bool update=false)
Definition: Ship.cpp:1794
PyTuple * MakeDamageState()
float GetShipPGLevel()
Definition: Ship.h:199
void OfflineGroup(GenericModule *pMod)
Definition: Ship.cpp:1711
void ClearBoostData()
Definition: Ship.cpp:2730
uint32 m_oldTargetRange
Definition: Ship.h:395
Definition: ShipDB.h:37
void PeelAndLink(uint32 masterID, uint32 slaveID)
Definition: Ship.cpp:1411
void ReplaceCharges(EVEItemFlags flag, InventoryItemRef newCharge)
Definition: Ship.cpp:1074
float CalculateRechargeRate(float Capacity, float RechargeTimeMS, float Current)
Definition: Ship.cpp:2416
void SetShipCapacitorLevel(float fraction)
Definition: Ship.cpp:881
Definition: Damage.h:33
float DissipateHeat(uint16 attrID, float heat)
Definition: Ship.cpp:1214
void SetLauncherID(uint32 shipID)
Definition: Ship.h:359
void OnlineAll()
Definition: Ship.cpp:1050
virtual Client * GetPilot()
Definition: Ship.h:331
void LoadChargesToBank(EVEItemFlags flag, std::vector< int32 > &chargeIDs)
Definition: Ship.cpp:661
void RepairShip(float fraction)
Definition: Ship.cpp:950
void SetUndocking(bool set=false)
Definition: Ship.h:151
uint16 m_oldArmor
Definition: Ship.h:392
void EmptyCargo()
Definition: Ship.cpp:1327
X * get() const
Definition: RefPtr.h:213
void SetBoost(bool set=false)
Definition: Ship.h:342
void Activate(int32 itemID, std::string effectName, int32 targetID, int32 repeat)
Definition: Ship.cpp:1039
virtual bool HasPilot()
Definition: Ship.h:330
float GetShipCPULevel()
Definition: Ship.h:200
void GetLinkedWeaponMods(EVEItemFlags flag, std::vector< GenericModule * > &modules)
Definition: Ship.cpp:1342
void StopModuleRepair(uint32 modID)
float GenerateHeat(uint16 attrID)
Definition: Ship.cpp:1164
void LinkWeaponLoop(std::list< GenericModule * > &moduleVec)
Definition: Ship.cpp:1448
Definition: Client.h:66
virtual bool _Load()
Definition: Ship.cpp:63
void AddModuleToOnlineVec(uint32 modID)
Definition: Ship.cpp:562
bool IsPopped()
Definition: Ship.h:89
static RefPtr< _Ty > _LoadItem(uint32 shipID, const ItemType &type, const ItemData &data)
Definition: Ship.h:216
unsigned __int32 uint32
Definition: eve-compat.h:50
void DamageRandModule()
void UpdateModules()
Definition: Ship.cpp:862
void DamageModule(uint32 modID)
Definition: Ship.h:349
EvilNumber GetShipPGPercent()
Definition: Ship.h:205
EVEItemFlags flag() const
InventoryItemRef GetModuleRef(EVEItemFlags flag)
Definition: Ship.cpp:582
void UnlinkAllWeapons()
Definition: Ship.cpp:1651
std::map< uint32, InventoryItem * > m_drones
Definition: Ship.h:402
void Dock()
Definition: Ship.cpp:361
void ApplyBoost(BoostData &bData)
Definition: Ship.cpp:2757
void Deactivate(uint32 itemID, std::string effectName)
void TryModuleLimitChecks(EVEItemFlags flag, InventoryItemRef iRef)
Definition: Ship.cpp:736
bool m_loaded
Definition: Ship.h:227
ShipItemRef m_shipRef
Definition: Ship.h:376
void Eject()
Definition: Ship.cpp:350
bool IsUndocking()
Definition: Ship.h:149
void RemoveTarget(SystemEntity *pSE)
Definition: Ship.cpp:2571
RefPtr< InventoryItem > InventoryItemRef
Definition: ItemRef.h:52
virtual bool IsShipItem()
Definition: Ship.h:59
Definition: Ship.h:46
bool LaunchDrone(InventoryItemRef dRef)
Definition: Ship.cpp:2792
void RemoveBoost()
Definition: Ship.cpp:2742
void ProcessShipEffects(bool update=false)
Definition: Ship.cpp:1834
uint32 GetLauncherID()
Definition: Ship.h:360
RefPtr< ShipItem > ShipItemRef
Definition: ItemRef.h:54
uint16 m_oldScanRes
Definition: Ship.h:394
float GetShipCapacitorLevel()
Definition: Ship.h:202
GenericModule * GetModule(EVEItemFlags flag)
Definition: Ship.h:173
virtual void EncodeDestiny(Buffer &into)
Definition: Ship.cpp:2579
ShipSE(InventoryItemRef self, PyServiceMgr &services, SystemManager *pSystem, const FactionData &data)
Definition: Ship.cpp:2390
void ResetShipSystemMgr(SystemManager *pSystem)
Definition: Ship.cpp:2512
void SetShipArmor(float fraction)
Definition: Ship.cpp:913
void PrepForUndock()
Definition: Ship.cpp:1895
void SetPassword(std::string pass)
Definition: Ship.h:338
virtual Client * GetPilot()
Definition: Ship.h:72
void Undock()
Definition: Ship.cpp:370
EvilNumber GetAttribute(const uint16 attrID) const
void ClearTargetRef()
Definition: Ship.h:153
virtual void SetPlayer(Client *pClient)
Definition: Ship.cpp:106
EvilNumber GetShipCPUPercent()
Definition: Ship.h:204
void UnloadAllModules()
Definition: Ship.h:132
int8 mining
Definition: FleetData.h:73
virtual void RemoveItem(InventoryItemRef iRef)
Definition: Ship.cpp:532
void DamageGroup(GenericModule *pMod)
Definition: Ship.cpp:1246
ShipDB m_db
Definition: Ship.h:381
virtual void SetPilot(Client *pClient)
Definition: Ship.cpp:2517
virtual void Killed(Damage &fatal_blow)
Definition: Damage.cpp:373
EvilNumber GetShipCapacitorPercent()
Definition: Ship.h:208
bool m_boosted
Definition: Ship.h:391
void DamageRandModule(float chance)
Definition: Ship.cpp:2494
PyDict * GetChargeState()
Definition: Ship.cpp:2224
void SetPopped(bool set=false)
Definition: Ship.h:90
static uint32 CreateItemID(ItemData &data)
Definition: Ship.cpp:59
void CharacterBoardingShip()
Definition: Ship.h:240
void RemoveCharge(EVEItemFlags fromFlag)
Definition: Ship.cpp:718
bool m_allowFleetSMBUsage
Definition: Ship.h:387
void ClearModuleModifiers()
Definition: Ship.cpp:1858
float GetShipShieldHP()
Definition: Ship.h:201
void traceStack(void)
Definition: misc.cpp:169
bool IsActive()
Definition: Ship.h:147
uint32 AddItemByFlag(EVEItemFlags flag, InventoryItemRef iRef, Client *pClient=nullptr)
Definition: Ship.cpp:486
EVEItemFlags FindAvailableModuleSlot(InventoryItemRef iRef)
Definition: Ship.cpp:797
void UnloadModule(GenericModule *pMod)
Definition: Ship.h:131
void StripFitting()
Definition: Ship.cpp:1311
void CharacterBoardingShip()
std::string m_towerPass
Definition: Ship.h:399
void Dock()
Definition: Ship.cpp:2543
uint8 GetMiningBoostAmount()
Definition: Ship.h:345
void Overload(uint32 itemID)
void SaveShip()
Definition: Ship.cpp:1060
float get_float()
Definition: EvilNumber.cpp:184
float GetRemainingVolumeByFlag(EVEItemFlags flag) const
Definition: Ship.cpp:338
void Offline(uint32 modID)
Definition: Ship.cpp:1034
Definition: timer.h:30
void GetModuleRefVec(std::vector< InventoryItemRef > &iRefVec)
Definition: Ship.cpp:577
void SetDocked()
Definition: Ship.h:150
void SetShipShield(float fraction)
Definition: Ship.cpp:897
void MergeModuleGroups(uint32 masterID, uint32 slaveID)
Definition: Ship.cpp:1406
void AbortCycle()
Definition: Ship.h:356
void DamageModule(uint32 itemID, float amount)
EvilNumber GetShipHullPercent()
Definition: Ship.h:203
unsigned __int16 uint16
Definition: eve-compat.h:48
bool IsDocking()
Definition: Ship.h:148
virtual PyDict * MakeSlimItem()
Definition: Ship.cpp:2689
PyList * ShipGetModuleList()
Definition: Ship.cpp:2247
bool m_isActive
Definition: Ship.h:285
void LoadCharge(InventoryItemRef cRef, EVEItemFlags flag)
Definition: Ship.cpp:601
InventoryItemRef m_targetRef
Definition: Ship.h:278
bool m_isUndocking
Definition: Ship.h:288
void AbandonDrones()
Definition: Ship.cpp:2853
const uint32 m_processTimerTick
Definition: Ship.h:378
virtual bool IsInvul()
Definition: Ship.cpp:2529
Python list.
Definition: PyRep.h:639
float GetShipHullHP()
Definition: Ship.h:197
void MoveModuleSlot(EVEItemFlags slot1, EVEItemFlags slot2)
Definition: Ship.cpp:818
uint32 itemID() const
Definition: InventoryItem.h:98
uint16 m_oldShield
Definition: Ship.h:393
void UnlinkGroup(uint32 memberID, bool update=false)
Definition: Ship.cpp:1602
void Jump(bool showCloak=true)
Definition: Ship.cpp:2553
bool HasModuleManager()
Definition: Ship.h:79
void LinkWeapon(uint32 masterID, uint32 slaveID)
Definition: Ship.cpp:1365
#define sDataMgr
void RemoveRig(InventoryItemRef iRef)
Definition: Ship.cpp:1067
uint8 GetLinkedCount(GenericModule *pMod)
Definition: Ship.cpp:1668