AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
UnitStub Class Reference

Lightweight stub for Unit proc-related functionality. More...

#include "UnitStub.h"

Inheritance diagram for UnitStub:
MockUnitStub

Classes

struct  CastRecord
 

Public Member Functions

 UnitStub ()=default
 
virtual ~UnitStub ()=default
 
virtual bool IsPlayer () const
 
virtual bool IsAlive () const
 
virtual bool IsFriendlyTo (UnitStub const *unit) const
 
void SetIsPlayer (bool isPlayer)
 
void SetIsAlive (bool isAlive)
 
void SetIsFriendly (bool isFriendly)
 
virtual bool HasAura (uint32_t spellId) const
 
virtual void AddAuraStub (uint32_t spellId)
 
virtual void RemoveAuraStub (uint32_t spellId)
 
virtual void RecordCast (uint32_t spellId, bool triggered=true, int32_t bp0=0, int32_t bp1=0, int32_t bp2=0)
 
std::vector< CastRecord > const & GetCastHistory () const
 
bool WasCast (uint32_t spellId) const
 
size_t CountCasts (uint32_t spellId) const
 
void ClearCastHistory ()
 
virtual uint32_t GetMaxHealth () const
 
virtual uint32_t GetHealth () const
 
virtual uint32_t CountPctFromMaxHealth (int32_t pct) const
 
void SetMaxHealth (uint32_t maxHealth)
 
void SetHealth (uint32_t health)
 
virtual uint32_t GetAttackTime (uint8_t attType) const
 
void SetAttackTime (uint8_t attType, uint32_t time)
 
void SetPPMModifier (uint32_t spellId, float modifier)
 
void ClearPPMModifiers ()
 
virtual float GetPPMProcChance (uint32_t weaponSpeed, float ppm, uint32_t spellId=0) const
 Calculate PPM proc chance with modifiers Mimics Unit::GetPPMProcChance() formula: (WeaponSpeed * PPM) / 600.0f.
 
void SetChanceModifier (uint32_t spellId, float modifier)
 
void ClearChanceModifiers ()
 
float ApplyChanceModifier (uint32_t spellId, float baseChance) const
 Apply chance modifier for a spell.
 
virtual bool HasSpellCooldown (uint32_t spellId) const
 
virtual void AddSpellCooldown (uint32_t spellId)
 
virtual void RemoveSpellCooldown (uint32_t spellId)
 
virtual uint8_t GetClass () const
 
virtual uint8_t GetLevel () const
 
void SetClass (uint8_t unitClass)
 
void SetLevel (uint8_t level)
 

Private Attributes

bool _isPlayer = false
 
bool _isAlive = true
 
bool _isFriendly = false
 
std::map< uint32_t, bool > _auras
 
std::vector< CastRecord_castHistory
 
std::map< uint32_t, bool > _cooldowns
 
std::map< uint8_t, uint32_t > _attackTimes
 
std::map< uint32_t, float > _ppmModifiers
 
std::map< uint32_t, float > _chanceModifiers
 
uint32_t _maxHealth = 10000
 
uint32_t _health = 10000
 
uint8_t _class = 1
 
uint8_t _level = 80
 

Detailed Description

Lightweight stub for Unit proc-related functionality.

This stub provides controlled behavior for testing proc scripts without requiring the full Unit hierarchy.

Constructor & Destructor Documentation

◆ UnitStub()

UnitStub::UnitStub ( )
default

◆ ~UnitStub()

virtual UnitStub::~UnitStub ( )
virtualdefault

Member Function Documentation

◆ AddAuraStub()

virtual void UnitStub::AddAuraStub ( uint32_t  spellId)
inlinevirtual
60 {
61 _auras[spellId] = true;
62 }
std::map< uint32_t, bool > _auras
Definition UnitStub.h:211

References _auras.

◆ AddSpellCooldown()

virtual void UnitStub::AddSpellCooldown ( uint32_t  spellId)
inlinevirtual
190 {
191 _cooldowns[spellId] = true;
192 }
std::map< uint32_t, bool > _cooldowns
Definition UnitStub.h:213

References _cooldowns.

◆ ApplyChanceModifier()

float UnitStub::ApplyChanceModifier ( uint32_t  spellId,
float  baseChance 
) const
inline

Apply chance modifier for a spell.

177 {
178 if (spellId > 0 && _chanceModifiers.count(spellId))
179 return baseChance + _chanceModifiers.at(spellId);
180 return baseChance;
181 }
std::map< uint32_t, float > _chanceModifiers
Definition UnitStub.h:216

References _chanceModifiers.

◆ ClearCastHistory()

void UnitStub::ClearCastHistory ( )
inline
108{ _castHistory.clear(); }
std::vector< CastRecord > _castHistory
Definition UnitStub.h:212

References _castHistory.

◆ ClearChanceModifiers()

void UnitStub::ClearChanceModifiers ( )
inline
169 {
170 _chanceModifiers.clear();
171 }

References _chanceModifiers.

◆ ClearPPMModifiers()

void UnitStub::ClearPPMModifiers ( )
inline
140 {
141 _ppmModifiers.clear();
142 }
std::map< uint32_t, float > _ppmModifiers
Definition UnitStub.h:215

References _ppmModifiers.

◆ CountCasts()

size_t UnitStub::CountCasts ( uint32_t  spellId) const
inline
98 {
99 size_t count = 0;
100 for (auto const& record : _castHistory)
101 {
102 if (record.spellId == spellId)
103 ++count;
104 }
105 return count;
106 }

References _castHistory.

◆ CountPctFromMaxHealth()

virtual uint32_t UnitStub::CountPctFromMaxHealth ( int32_t  pct) const
inlinevirtual
114 {
115 return (_maxHealth * static_cast<uint32_t>(pct)) / 100;
116 }
uint32_t _maxHealth
Definition UnitStub.h:218

References _maxHealth.

◆ GetAttackTime()

virtual uint32_t UnitStub::GetAttackTime ( uint8_t  attType) const
inlinevirtual
123 {
124 return _attackTimes.count(attType) ? _attackTimes.at(attType) : 2000;
125 }
std::map< uint8_t, uint32_t > _attackTimes
Definition UnitStub.h:214

References _attackTimes.

Referenced by ProcTestScenario::SimulateProc().

◆ GetCastHistory()

std::vector< CastRecord > const & UnitStub::GetCastHistory ( ) const
inline
85{ return _castHistory; }

References _castHistory.

◆ GetClass()

virtual uint8_t UnitStub::GetClass ( ) const
inlinevirtual
200{ return _class; }
uint8_t _class
Definition UnitStub.h:220

References _class.

◆ GetHealth()

virtual uint32_t UnitStub::GetHealth ( ) const
inlinevirtual
112{ return _health; }
uint32_t _health
Definition UnitStub.h:219

References _health.

◆ GetLevel()

virtual uint8_t UnitStub::GetLevel ( ) const
inlinevirtual
201{ return _level; }
uint8_t _level
Definition UnitStub.h:221

References _level.

Referenced by ProcTestScenario::SimulateProc().

◆ GetMaxHealth()

virtual uint32_t UnitStub::GetMaxHealth ( ) const
inlinevirtual
111{ return _maxHealth; }

References _maxHealth.

◆ GetPPMProcChance()

virtual float UnitStub::GetPPMProcChance ( uint32_t  weaponSpeed,
float  ppm,
uint32_t  spellId = 0 
) const
inlinevirtual

Calculate PPM proc chance with modifiers Mimics Unit::GetPPMProcChance() formula: (WeaponSpeed * PPM) / 600.0f.

149 {
150 if (ppm <= 0.0f)
151 return 0.0f;
152
153 // Apply PPM modifier if set for this spell
154 float modifiedPPM = ppm;
155 if (spellId > 0 && _ppmModifiers.count(spellId))
156 modifiedPPM += _ppmModifiers.at(spellId);
157
158 return (static_cast<float>(weaponSpeed) * modifiedPPM) / 600.0f;
159 }

References _ppmModifiers.

◆ HasAura()

virtual bool UnitStub::HasAura ( uint32_t  spellId) const
inlinevirtual
55 {
56 return _auras.find(spellId) != _auras.end();
57 }

References _auras.

◆ HasSpellCooldown()

virtual bool UnitStub::HasSpellCooldown ( uint32_t  spellId) const
inlinevirtual
185 {
186 return _cooldowns.find(spellId) != _cooldowns.end();
187 }

References _cooldowns.

◆ IsAlive()

virtual bool UnitStub::IsAlive ( ) const
inlinevirtual
46{ return _isAlive; }
bool _isAlive
Definition UnitStub.h:208

References _isAlive.

◆ IsFriendlyTo()

virtual bool UnitStub::IsFriendlyTo ( UnitStub const *  unit) const
inlinevirtual
47{ return _isFriendly; }
bool _isFriendly
Definition UnitStub.h:209

References _isFriendly.

◆ IsPlayer()

virtual bool UnitStub::IsPlayer ( ) const
inlinevirtual
45{ return _isPlayer; }
bool _isPlayer
Definition UnitStub.h:207

References _isPlayer.

◆ RecordCast()

virtual void UnitStub::RecordCast ( uint32_t  spellId,
bool  triggered = true,
int32_t  bp0 = 0,
int32_t  bp1 = 0,
int32_t  bp2 = 0 
)
inlinevirtual
81 {
82 _castHistory.push_back({spellId, triggered, bp0, bp1, bp2});
83 }

References _castHistory.

◆ RemoveAuraStub()

virtual void UnitStub::RemoveAuraStub ( uint32_t  spellId)
inlinevirtual
65 {
66 _auras.erase(spellId);
67 }

References _auras.

◆ RemoveSpellCooldown()

virtual void UnitStub::RemoveSpellCooldown ( uint32_t  spellId)
inlinevirtual
195 {
196 _cooldowns.erase(spellId);
197 }

References _cooldowns.

◆ SetAttackTime()

void UnitStub::SetAttackTime ( uint8_t  attType,
uint32_t  time 
)
inline
128 {
129 _attackTimes[attType] = time;
130 }

References _attackTimes.

Referenced by ProcTestScenario::WithWeaponSpeed().

◆ SetChanceModifier()

void UnitStub::SetChanceModifier ( uint32_t  spellId,
float  modifier 
)
inline
164 {
165 _chanceModifiers[spellId] = modifier;
166 }

References _chanceModifiers.

◆ SetClass()

void UnitStub::SetClass ( uint8_t  unitClass)
inline
203{ _class = unitClass; }

References _class.

◆ SetHealth()

void UnitStub::SetHealth ( uint32_t  health)
inline
119{ _health = health; }

References _health.

◆ SetIsAlive()

void UnitStub::SetIsAlive ( bool  isAlive)
inline
50{ _isAlive = isAlive; }

References _isAlive.

◆ SetIsFriendly()

void UnitStub::SetIsFriendly ( bool  isFriendly)
inline
51{ _isFriendly = isFriendly; }

References _isFriendly.

◆ SetIsPlayer()

void UnitStub::SetIsPlayer ( bool  isPlayer)
inline
49{ _isPlayer = isPlayer; }

References _isPlayer.

Referenced by ProcTestContext::WithActorAsPlayer().

◆ SetLevel()

void UnitStub::SetLevel ( uint8_t  level)
inline
204{ _level = level; }

References _level.

Referenced by ProcTestScenario::WithActorLevel().

◆ SetMaxHealth()

void UnitStub::SetMaxHealth ( uint32_t  maxHealth)
inline
118{ _maxHealth = maxHealth; }

References _maxHealth.

◆ SetPPMModifier()

void UnitStub::SetPPMModifier ( uint32_t  spellId,
float  modifier 
)
inline
135 {
136 _ppmModifiers[spellId] = modifier;
137 }

References _ppmModifiers.

◆ WasCast()

bool UnitStub::WasCast ( uint32_t  spellId) const
inline
88 {
89 for (auto const& record : _castHistory)
90 {
91 if (record.spellId == spellId)
92 return true;
93 }
94 return false;
95 }

References _castHistory.

Member Data Documentation

◆ _attackTimes

std::map<uint8_t, uint32_t> UnitStub::_attackTimes
private

Referenced by GetAttackTime(), and SetAttackTime().

◆ _auras

std::map<uint32_t, bool> UnitStub::_auras
private

◆ _castHistory

std::vector<CastRecord> UnitStub::_castHistory
private

◆ _chanceModifiers

std::map<uint32_t, float> UnitStub::_chanceModifiers
private

◆ _class

uint8_t UnitStub::_class = 1
private

Referenced by GetClass(), and SetClass().

◆ _cooldowns

std::map<uint32_t, bool> UnitStub::_cooldowns
private

◆ _health

uint32_t UnitStub::_health = 10000
private

Referenced by GetHealth(), and SetHealth().

◆ _isAlive

bool UnitStub::_isAlive = true
private

Referenced by IsAlive(), and SetIsAlive().

◆ _isFriendly

bool UnitStub::_isFriendly = false
private

Referenced by IsFriendlyTo(), and SetIsFriendly().

◆ _isPlayer

bool UnitStub::_isPlayer = false
private

Referenced by IsPlayer(), and SetIsPlayer().

◆ _level

uint8_t UnitStub::_level = 80
private

Referenced by GetLevel(), and SetLevel().

◆ _maxHealth

uint32_t UnitStub::_maxHealth = 10000
private

◆ _ppmModifiers

std::map<uint32_t, float> UnitStub::_ppmModifiers
private

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