EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
TurretModule.cpp
Go to the documentation of this file.
1 
10 #include "eve-server.h"
11 
12 #include "StaticDataMgr.h"
13 #include "StatisticMgr.h"
15 #include "system/Damage.h"
16 
18  : ActiveModule(mRef, sRef),
19  m_crystalDmg(0),
20  m_crystalDmgAmount(0),
21  m_crystalDmgChance(0)
22 {
23  /* this may lead to some weird shit, but civilian turrets dont use charges.
24  * these turrets have the damage attribs set in turret item, so set chargeRef to turret item for damage calcs
25  */
26  if (!m_needsCharge)
27  m_chargeRef = mRef;
28 }
29 
31 {
32  _log(MODULE__TRACE, "%s calling TM::LoadCharge()", m_modRef->name());
33 
35 
36  if (m_chargeRef.get() == nullptr)
37  return;
38 
42 }
43 
45 {
46  _log(MODULE__TRACE, "%s calling TM::UnloadCharge()", m_modRef->name());
47 
48  m_crystalDmg = 0;
51 
53 }
54 
56 {
57  if (m_chargeRef.get() == nullptr) {
58  // catchall
59  m_shipRef->GetPilot()->SendErrorMsg("Your %s in %s doesnt have a charge registered.<br>You can try Unload/Reload, but if this error happens again, dock or relog.", \
60  m_modRef->name(), sDataMgr.GetFlagName(m_modRef->flag()));
61  _log(MODULE__ERROR, "TurretModule::ApplyDamage() - module %s(%u) does not have a m_chargeRef.", m_modRef->name(), m_modRef->itemID());
62  Deactivate();
63  return;
64  }
65  // add data to StatisticMgr
66  sStatMgr.Increment(Stat::pcShots);
67 
69  m_modRef,
76  );
77 
79  d *= sConfig.rates.turretDamage;
80 
81  if (m_linkMaster)
82  d *= m_shipRef->GetLoadedLinkedCount(this); // only loaded weapons add to damage.
83 
85 
86  switch (m_modRef->groupID()) {
89  ConsumeCharge();
90  } break;
92  // AttrUsageDamagePercent
96  if (m_crystalDmg > 1.0f) {
97  m_shipRef->GetPilot()->SendNotifyMsg("Your %s loaded in %s has been destroyed.", m_chargeRef->name(), m_modRef->name());
98  InventoryItemRef chargeRef = m_chargeRef; // make a copy of item ref, as m_chargeRef = NULL after next call returns
100  chargeRef->Delete();
101  } else {
103  }
104  }
105  } break;
106  }
107 }
#define sConfig
A macro for easier access to the singleton.
#define sStatMgr
Definition: StatisticMgr.h:68
void SendErrorMsg(const char *fmt,...)
Definition: Client.cpp:2719
#define _log(type, fmt,...)
Definition: logsys.h:124
float m_crystalDmg
Definition: TurretModule.h:37
void ConsumeCharge()
uint16 m_effectID
Definition: ActiveModule.h:100
bool HasAttribute(const uint16 attrID) const
bool m_needsCharge
Definition: ActiveModule.h:106
uint8 GetLoadedLinkedCount(GenericModule *pMod)
Definition: Ship.cpp:1676
double MakeRandomFloat(double low, double high)
Generates random real from interval [low; high].
Definition: misc.cpp:114
const char * name()
void SendNotifyMsg(const char *fmt,...)
Definition: Client.cpp:2776
ModuleItemRef m_modRef
uint16 groupID() const
virtual void LoadCharge(InventoryItemRef charge)
ShipItemRef m_shipRef
float GetToHit(ShipItemRef shipRef, TurretModule *pMod, SystemEntity *pTarget)
SystemEntity * m_targetSE
Definition: ActiveModule.h:78
virtual void UnloadCharge()
InventoryItemRef m_chargeRef
Definition: Damage.h:33
float m_crystalDmgChance
Definition: TurretModule.h:39
void SetAttribute(uint16 attrID, int num, bool notify=true)
virtual void ApplyDamage()
X * get() const
Definition: RefPtr.h:213
EVEItemFlags flag() const
TurretModule(ModuleItemRef mRef, ShipItemRef sRef)
ShipSE * GetShipSE()
Definition: Client.h:168
virtual Client * GetPilot()
Definition: Ship.h:72
float m_crystalDmgAmount
Definition: TurretModule.h:38
EvilNumber GetAttribute(const uint16 attrID) const
virtual void RemoveItem(InventoryItemRef iRef)
Definition: Ship.cpp:532
virtual void LoadCharge(InventoryItemRef charge)
virtual void Delete()
float get_float()
Definition: EvilNumber.cpp:184
virtual void Deactivate(std::string effect="")
bool ApplyDamage(Damage &d)
Definition: Damage.cpp:108
TurretFormulas m_formula
Definition: TurretModule.h:35
EvilNumber GetAttribute(uint32 attrID)
Definition: GenericModule.h:53
virtual void UnloadCharge()
uint32 itemID() const
Definition: InventoryItem.h:98
#define sDataMgr