EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
TurretModule Class Reference

#include "TurretModule.h"

Inheritance diagram for TurretModule:
Collaboration diagram for TurretModule:

Public Member Functions

virtual ~TurretModule ()
 
virtual TurretModuleGetTurretModule ()
 
virtual bool IsTurretModule ()
 
TurretModule.cpp

turret module class : Allan

Date
: 10 June 2015 -UD/RW 02 April 2017
 TurretModule (ModuleItemRef mRef, ShipItemRef sRef)
 
virtual void LoadCharge (InventoryItemRef charge)
 
virtual void UnloadCharge ()
 
virtual void ApplyDamage ()
 
- Public Member Functions inherited from ActiveModule
virtual ~ActiveModule ()
 
virtual ActiveModuleGetActiveModule ()
 
virtual bool IsActiveModule () const
 
virtual uint16 GetReloadTime ()
 
virtual uint32 GetTargetID ()
 
SystemEntityGetTargetSE ()
 
 ActiveModule (ModuleItemRef mRef, ShipItemRef sRef)
 
virtual void Process ()
 
virtual void Overload ()
 
virtual void AbortCycle ()
 
virtual void DeOverload ()
 
virtual void Deactivate (std::string effect="")
 
virtual void DeactivateCycle (bool abort=false)
 
virtual void Activate (uint16 effectID, uint32 targetID=0, int16 repeat=0)
 
virtual void RemoveTarget (SystemEntity *pSE)
 
virtual uint32 DoCycle ()
 
virtual void Update ()
 
virtual bool CanActivate ()
 
virtual void ReprocessCharge ()
 
void LaunchProbe ()
 
void LaunchMissile ()
 
void LaunchSnowBall ()
 
void ApplyEffect (int8 state, bool active=false)
 
void ShowEffect (bool active=false, bool abort=false)
 
- Public Member Functions inherited from GenericModule
ModuleItemRef GetSelf ()
 
ShipItemRef GetShipRef ()
 
void Repair ()
 
bool HasAttribute (uint32 attrID)
 
void SetAttribute (uint32 attrID, EvilNumber val, bool update=true)
 
void ResetAttribute (uint32 attrID)
 
EvilNumber GetAttribute (uint32 attrID)
 
bool isWarpSafe ()
 
bool isTurretFitted ()
 
bool isLauncherFitted ()
 
virtual PassiveModuleGetPassiveModule ()
 
virtual MiningLaserGetMiningModule ()
 
virtual ProspectorGetProspectModule ()
 
virtual SuperWeaponGetSuperWeapon ()
 
virtual RigModuleGetRigModule ()
 
virtual SubSystemModuleGetSubSystemModule ()
 
virtual CynoModuleGetCynoModule ()
 
virtual bool IsGenericModule () const
 
virtual bool IsPassiveModule () const
 
virtual bool IsMiningLaser () const
 
virtual bool IsProspectModule () const
 
virtual bool IsCynoModule () const
 
virtual bool IsRigModule () const
 
virtual bool IsSubSystemModule () const
 
bool IsLoaded ()
 
bool IsTurretModule ()
 
bool IsLauncherModule ()
 
bool IsOverloaded ()
 
bool IsLinked ()
 
bool IsMaster ()
 
bool IsDamaged ()
 
bool IsActive ()
 
bool IsLoading ()
 
bool isOnline ()
 
bool isLowPower ()
 
bool isHighPower ()
 
bool isMediumPower ()
 
bool isRig ()
 
bool isSubSystem ()
 
uint32 itemID ()
 
uint32 typeID ()
 
uint32 groupID ()
 
EVEItemFlags flag ()
 
void SetChargeRef (InventoryItemRef iRef)
 
void SetModuleState (int8 state)
 
void SetChargeState (int8 state)
 
void SetLinked (bool set=false)
 
void SetLinkMaster (bool set=false)
 
int8 GetModuleState ()
 
int8 GetChargeState ()
 
InventoryItemRef GetLoadedChargeRef ()
 
virtual void ReloadCharge ()
 
virtual void RemoveRig ()
 
virtual void DestroyRig ()
 
virtual bool IsSuccess ()
 
 GenericModule (ModuleItemRef mRef, ShipItemRef sRef)
 
virtual ~GenericModule ()
 
void Online ()
 
void Offline ()
 
void ProcessEffects (int8 state, bool active=false)
 
void Repair (EvilNumber amount)
 
int8 GetModulePowerLevel ()
 

Protected Attributes

TurretFormulas m_formula
 
float m_crystalDmg
 
float m_crystalDmgAmount
 
float m_crystalDmgChance
 
- Protected Attributes inherited from ActiveModule
SystemBubblem_bubble
 
SystemEntitym_targetSE
 
DestinyManagerm_destinyMgr
 
SystemManagerm_sysMgr
 
TargetManagerm_targMgr
 
uint16 m_reloadTime
 
uint16 m_effectID
 
uint32 m_targetID
 
bool m_Stop:1
 
bool m_usesCharge:1
 
bool m_needsCharge:1
 
bool m_needsTarget:1
 
- Protected Attributes inherited from GenericModule
ModuleItemRef m_modRef
 
ShipItemRef m_shipRef
 
InventoryItemRef m_chargeRef
 
int8 m_ModuleState
 
int8 m_ChargeState
 
int16 m_repeat
 
bool m_linkMaster:1
 
bool m_linked:1
 
bool m_isWarpSafe:1
 
bool m_hiPower:1
 
bool m_medPower:1
 
bool m_loPower:1
 
bool m_rigSlot:1
 
bool m_subSystem:1
 
bool m_launcher:1
 
bool m_turret:1
 
bool m_overLoaded:1
 
bool m_chargeLoaded:1
 

Additional Inherited Members

- Protected Member Functions inherited from ActiveModule
uint32 GetRemainingCycleTimeMS ()
 
void StopTimer ()
 
void Clear ()
 
void ProcessActiveCycle ()
 
void UpdateCharge (uint16 attrID, uint16 testAttrID, uint16 srcAttrID, InventoryItemRef iRef)
 
void UpdateDamage (uint16 attrID, uint16 srcAttrID, InventoryItemRef iRef)
 
void SetSlaveData (ShipSE *pShip)
 
void ConsumeCharge ()
 
void SetTimer (uint32 time)
 
- Protected Member Functions inherited from GenericModule
const char * GetModuleStateName (int8 state)
 

Detailed Description

Definition at line 17 of file TurretModule.h.

Constructor & Destructor Documentation

TurretModule::TurretModule ( ModuleItemRef  mRef,
ShipItemRef  sRef 
)

Definition at line 17 of file TurretModule.cpp.

References GenericModule::m_chargeRef, and ActiveModule::m_needsCharge.

18  : ActiveModule(mRef, sRef),
19  m_crystalDmg(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 }
float m_crystalDmg
Definition: TurretModule.h:37
bool m_needsCharge
Definition: ActiveModule.h:106
ActiveModule(ModuleItemRef mRef, ShipItemRef sRef)
InventoryItemRef m_chargeRef
float m_crystalDmgChance
Definition: TurretModule.h:39
float m_crystalDmgAmount
Definition: TurretModule.h:38
virtual TurretModule::~TurretModule ( )
inlinevirtual

Definition at line 21 of file TurretModule.h.

21 { /* do nothing here */ }

Member Function Documentation

void TurretModule::ApplyDamage ( )
virtual

Reimplemented from ActiveModule.

Definition at line 55 of file TurretModule.cpp.

References _log, SystemEntity::ApplyDamage(), AttrCrystalsGetDamaged, AttrDamage, AttrDamageMultiplier, AttrEmDamage, AttrExplosiveDamage, AttrKineticDamage, AttrThermalDamage, ActiveModule::ConsumeCharge(), ActiveModule::Deactivate(), InventoryItem::Delete(), EVEDB::invGroups::Energy_Weapon, InventoryItem::flag(), RefPtr< X >::get(), EvilNumber::get_float(), GenericModule::GetAttribute(), InventoryItem::GetAttribute(), ShipItem::GetLoadedLinkedCount(), ShipItem::GetPilot(), Client::GetShipSE(), TurretFormulas::GetToHit(), InventoryItem::groupID(), InventoryItem::HasAttribute(), EVEDB::invGroups::Hybrid_Weapon, InventoryItem::itemID(), GenericModule::m_chargeRef, m_crystalDmg, m_crystalDmgAmount, m_crystalDmgChance, ActiveModule::m_effectID, m_formula, GenericModule::m_linkMaster, GenericModule::m_modRef, GenericModule::m_shipRef, ActiveModule::m_targetSE, MakeRandomFloat(), InventoryItem::name(), Stat::pcShots, EVEDB::invGroups::Projectile_Weapon, ShipItem::RemoveItem(), sConfig, sDataMgr, Client::SendErrorMsg(), Client::SendNotifyMsg(), InventoryItem::SetAttribute(), and sStatMgr.

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
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
ShipItemRef m_shipRef
float GetToHit(ShipItemRef shipRef, TurretModule *pMod, SystemEntity *pTarget)
SystemEntity * m_targetSE
Definition: ActiveModule.h:78
InventoryItemRef m_chargeRef
Definition: Damage.h:33
float m_crystalDmgChance
Definition: TurretModule.h:39
void SetAttribute(uint16 attrID, int num, bool notify=true)
X * get() const
Definition: RefPtr.h:213
EVEItemFlags flag() const
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 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
uint32 itemID() const
Definition: InventoryItem.h:98
#define sDataMgr

Here is the call graph for this function:

virtual TurretModule* TurretModule::GetTurretModule ( )
inlinevirtual

Reimplemented from GenericModule.

Definition at line 23 of file TurretModule.h.

23 { return this; }
virtual bool TurretModule::IsTurretModule ( )
inlinevirtual

Definition at line 25 of file TurretModule.h.

25 { return true; }
void TurretModule::LoadCharge ( InventoryItemRef  charge)
virtual

Reimplemented from ActiveModule.

Definition at line 30 of file TurretModule.cpp.

References _log, AttrCrystalVolatilityChance, AttrCrystalVolatilityDamage, AttrDamage, RefPtr< X >::get(), EvilNumber::get_float(), InventoryItem::GetAttribute(), ActiveModule::LoadCharge(), GenericModule::m_chargeRef, m_crystalDmg, m_crystalDmgAmount, m_crystalDmgChance, GenericModule::m_modRef, and InventoryItem::name().

31 {
32  _log(MODULE__TRACE, "%s calling TM::LoadCharge()", m_modRef->name());
33 
35 
36  if (m_chargeRef.get() == nullptr)
37  return;
38 
42 }
#define _log(type, fmt,...)
Definition: logsys.h:124
float m_crystalDmg
Definition: TurretModule.h:37
const char * name()
ModuleItemRef m_modRef
InventoryItemRef m_chargeRef
float m_crystalDmgChance
Definition: TurretModule.h:39
X * get() const
Definition: RefPtr.h:213
float m_crystalDmgAmount
Definition: TurretModule.h:38
EvilNumber GetAttribute(const uint16 attrID) const
virtual void LoadCharge(InventoryItemRef charge)
float get_float()
Definition: EvilNumber.cpp:184

Here is the call graph for this function:

void TurretModule::UnloadCharge ( )
virtual

Reimplemented from ActiveModule.

Definition at line 44 of file TurretModule.cpp.

References _log, m_crystalDmg, m_crystalDmgAmount, m_crystalDmgChance, GenericModule::m_modRef, InventoryItem::name(), and ActiveModule::UnloadCharge().

45 {
46  _log(MODULE__TRACE, "%s calling TM::UnloadCharge()", m_modRef->name());
47 
48  m_crystalDmg = 0;
51 
53 }
#define _log(type, fmt,...)
Definition: logsys.h:124
float m_crystalDmg
Definition: TurretModule.h:37
const char * name()
ModuleItemRef m_modRef
virtual void UnloadCharge()
float m_crystalDmgChance
Definition: TurretModule.h:39
float m_crystalDmgAmount
Definition: TurretModule.h:38

Here is the call graph for this function:

Member Data Documentation

float TurretModule::m_crystalDmg
protected

Definition at line 37 of file TurretModule.h.

Referenced by ApplyDamage(), LoadCharge(), and UnloadCharge().

float TurretModule::m_crystalDmgAmount
protected

Definition at line 38 of file TurretModule.h.

Referenced by ApplyDamage(), LoadCharge(), and UnloadCharge().

float TurretModule::m_crystalDmgChance
protected

Definition at line 39 of file TurretModule.h.

Referenced by ApplyDamage(), LoadCharge(), and UnloadCharge().

TurretFormulas TurretModule::m_formula
protected

Definition at line 35 of file TurretModule.h.

Referenced by ApplyDamage().


The documentation for this class was generated from the following files: