Horizon Official Technical Documentation
Horizon::Zone::Bonuses::Bonus Class Reference

#include <BonusesImpl.hpp>

Inherits Horizon::Zone::Traits::Attribute.

Inherited by Horizon::Zone::Bonuses::BonusAddItemDropOnMonsterKill, Horizon::Zone::Bonuses::BonusAddMovementSpeedPercent, Horizon::Zone::Bonuses::BonusAddStealPercent, Horizon::Zone::Bonuses::BonusAllStatus, Horizon::Zone::Bonuses::BonusArmorBreakPercent, Horizon::Zone::Bonuses::BonusAttackElement, Horizon::Zone::Bonuses::BonusAttackOnDefenseRatioForElement, Horizon::Zone::Bonuses::BonusAttackOnDefenseRatioForRace, Horizon::Zone::Bonuses::BonusAttackPercent, Horizon::Zone::Bonuses::BonusAttackRange, Horizon::Zone::Bonuses::BonusAttackRangePercent, Horizon::Zone::Bonuses::BonusAttackSpeedPercent, Horizon::Zone::Bonuses::BonusCastCancelImmunity, Horizon::Zone::Bonuses::BonusCastPercent, Horizon::Zone::Bonuses::BonusCriticalDamagePercent, Horizon::Zone::Bonuses::BonusCriticalDefense, Horizon::Zone::Bonuses::BonusCriticalPercent, Horizon::Zone::Bonuses::BonusDamageSplashRange, Horizon::Zone::Bonuses::BonusDefenseElement, Horizon::Zone::Bonuses::BonusDisableHPRecovery, Horizon::Zone::Bonuses::BonusDisableSPRecovery, Horizon::Zone::Bonuses::BonusDoubleAttackPercent, Horizon::Zone::Bonuses::BonusFleePercent, Horizon::Zone::Bonuses::BonusGearFuelImmunity, Horizon::Zone::Bonuses::BonusGemstoneImmunity, Horizon::Zone::Bonuses::BonusGetZenyNum, Horizon::Zone::Bonuses::BonusHPDrainOnMonsterKill, Horizon::Zone::Bonuses::BonusHPDrainPercent, Horizon::Zone::Bonuses::BonusHPDrainValue, Horizon::Zone::Bonuses::BonusHPGainOnMobKill, Horizon::Zone::Bonuses::BonusHPRecoveryPercent, Horizon::Zone::Bonuses::BonusHPVanishPercent, Horizon::Zone::Bonuses::BonusHardDefensePercent, Horizon::Zone::Bonuses::BonusHardMagicalDefensePercent, Horizon::Zone::Bonuses::BonusHitPercent, Horizon::Zone::Bonuses::BonusInfiniteEndure, Horizon::Zone::Bonuses::BonusItemUsageImmunity, Horizon::Zone::Bonuses::BonusKnockBackImmunity, Horizon::Zone::Bonuses::BonusLongWeaponDamagePercent, Horizon::Zone::Bonuses::BonusMagicAttackPercent, Horizon::Zone::Bonuses::BonusMagicDamageImmunity, Horizon::Zone::Bonuses::BonusMagicDamageReflectPercentOnSelf, Horizon::Zone::Bonuses::BonusMagicDefensePercent, Horizon::Zone::Bonuses::BonusMaxHPPercent, Horizon::Zone::Bonuses::BonusMaxSPPercent, Horizon::Zone::Bonuses::BonusMeleeDefense, Horizon::Zone::Bonuses::BonusMeleeWeaponDamageReflectPercentOnSelf, Horizon::Zone::Bonuses::BonusMiscDefensePercent, Horizon::Zone::Bonuses::BonusPerfectDodgePercent, Horizon::Zone::Bonuses::BonusPerfectHitPercent, Horizon::Zone::Bonuses::BonusRaise, Horizon::Zone::Bonuses::BonusRangedDefense, Horizon::Zone::Bonuses::BonusRangedWeaponDamageReflectPercentOnSelf, Horizon::Zone::Bonuses::BonusRestartWithFullRecovery, Horizon::Zone::Bonuses::BonusSPDrainOnMonsterKill, Horizon::Zone::Bonuses::BonusSPDrainPercent, Horizon::Zone::Bonuses::BonusSPDrainValue, Horizon::Zone::Bonuses::BonusSPGainOnMobKill, Horizon::Zone::Bonuses::BonusSPPercent, Horizon::Zone::Bonuses::BonusSPRecoveryPercent, Horizon::Zone::Bonuses::BonusSPVanishPercent, Horizon::Zone::Bonuses::BonusShortWeaponDamagePercent, Horizon::Zone::Bonuses::BonusSizeModifierImmunity, Horizon::Zone::Bonuses::BonusSoftDefensePercent, Horizon::Zone::Bonuses::BonusSoftMagicalDefensePercent, Horizon::Zone::Bonuses::BonusUnbreakableArmor, Horizon::Zone::Bonuses::BonusUnbreakableHelm, Horizon::Zone::Bonuses::BonusUnbreakableShield, Horizon::Zone::Bonuses::BonusUnbreakableWeapon, Horizon::Zone::Bonuses::BonusWeaponBreakPercent, and Horizon::Zone::Bonuses::BonusWeaponDamageImmunity.

+ Collaboration diagram for Horizon::Zone::Bonuses::Bonus:

Public Member Functions

 Bonus ()
 
 Bonus (std::shared_ptr< Unit > unit, status_point_type status_point_type, int bonus, int parameter_1=0, int parameter_2=0, int parameter_3=0)
 
 Bonus (Bonus &other)
 
 Bonus (Bonus &&other) noexcept
 
Bonusoperator= (Bonus &other)
 
Bonusoperator= (Bonus &&other) noexcept
 
int32_t get ()
 
void set (int bonus, bool notify_client=true)
 
int32_t get_parameter_1 ()
 
void set_parameter_1 (int parameter_1)
 
int32_t get_parameter_2 ()
 
void set_parameter_2 (int parameter_2)
 
int32_t get_parameter_3 ()
 
void set_parameter_3 (int parameter_3)
 
virtual void apply (int64_t &ret)
 
virtual void remove (int64_t &ret)
 
std::shared_ptr< Unitunit ()
 
void unit (std::shared_ptr< Unit > e)
 
void set_applied (bool applied)
 
bool is_applied ()
 
- Public Member Functions inherited from Horizon::Zone::Traits::Attribute
 Attribute ()=default
 
 Attribute (std::weak_ptr< Unit > unit, status_point_type st_type, int32_t base=0, int32_t equip=0, int32_t status=0)
 
 Attribute (const Attribute &other)
 
 Attribute (Attribute &&other) noexcept
 
std::shared_ptr< Unitunit ()
 
void unit (std::shared_ptr< Unit > e)
 
virtual void set_base (int32_t val, bool notify=true)
 
virtual void add_base (int32_t val, bool notify=true)
 
virtual void sub_base (int32_t val, bool notify=true)
 
virtual int32_t get_base () const
 
virtual void set_equip (int32_t val, bool notify=true)
 
virtual void add_equip (int32_t val, bool notify=true)
 
virtual void sub_equip (int32_t val, bool notify=true)
 
virtual int32_t get_equip () const
 
virtual void set_status (int32_t val, bool notify=true)
 
virtual void add_status (int32_t val, bool notify=true)
 
virtual void sub_status (int32_t val, bool notify=true)
 
virtual int32_t get_status () const
 
virtual int32_t total () const
 
virtual int32_t compute ()
 
template<typename TT , typename std::enable_if< std::is_integral< TT >::value >::type * = nullptr>
TT operator+ (TT right)
 
template<typename TT , typename std::enable_if< std::is_integral< TT >::value >::type * = nullptr>
TT operator/ (TT right)
 
template<typename TT , typename std::enable_if< std::is_integral< TT >::value >::type * = nullptr>
TT operator* (TT right)
 
template<typename TT , typename std::enable_if< std::is_integral< TT >::value >::type * = nullptr>
TT operator- (TT right)
 
int operator+ (Attribute const &right) const
 
double operator/ (Attribute const &right)
 
double operator* (Attribute const &right)
 
int operator- (Attribute const &right)
 
template<typename TT , typename std::enable_if< std::is_integral< TT >::value >::type * = nullptr>
bool operator== (TT right)
 
template<typename TT , typename std::enable_if< std::is_integral< TT >::value >::type * = nullptr>
bool operator!= (TT right)
 
template<typename TT , typename std::enable_if< std::is_integral< TT >::value >::type * = nullptr>
bool operator> (TT right)
 
template<typename TT , typename std::enable_if< std::is_integral< TT >::value >::type * = nullptr>
bool operator>= (TT right)
 
template<typename TT , typename std::enable_if< std::is_integral< TT >::value >::type * = nullptr>
bool operator< (TT right)
 
template<typename TT , typename std::enable_if< std::is_integral< TT >::value >::type * = nullptr>
bool operator<= (TT right)
 
bool operator== (Attribute const &right)
 
bool operator!= (Attribute const &right)
 
bool operator> (Attribute const &right)
 
bool operator>= (Attribute const &right)
 
bool operator< (Attribute const &right)
 
bool operator<= (Attribute const &right)
 
Attribute operator= (Attribute &right)
 
Attribute operator= (Attribute &&right)
 
void add_permanent_change (s_attribute_change_values change, std::string source)
 
void remove_permanent_change (std::string source)
 
void add_temporary_change (s_attribute_change_values change, uint64_t duration, std::string source)
 
void remove_temporary_change (std::string source)
 
void add_periodic_change (s_attribute_change_values change, uint64_t duration, uint64_t interval, std::string source)
 
void remove_periodic_change (std::string source)
 
void update (uint64_t delta)
 
void apply (bool notify=true)
 
void reset ()
 
void notify ()
 
status_point_type get_type () const
 
bool needs_recalculation () const
 
void recalculate (bool flag)
 
bool is_compute_ready () const
 

Private Attributes

std::weak_ptr< Unit_unit
 
bool _applied {false}
 
int _parameter_1
 
int _parameter_2
 
int _parameter_3
 

Additional Inherited Members

- Protected Attributes inherited from Horizon::Zone::Traits::Attribute
status_point_type _status_point_type {status_point_type::STATUS_POINT_INVALID}
 
int32_t _base_val {0}
 
int32_t _equip_val {0}
 
int32_t _status_val {0}
 
bool _apply_periodic_changes {false}
 
bool _recalculate_flag {false}
 
bool _calculate_ready {false}
 

Constructor & Destructor Documentation

◆ Bonus() [1/4]

Horizon::Zone::Bonuses::Bonus::Bonus ( )
inline
53 : Traits::Attribute(std::shared_ptr<Unit>(), STATUS_POINT_INVALID, 0, 0, 0), _unit(std::shared_ptr<Unit>()), _applied(false),
@ STATUS_POINT_INVALID
Definition: UnitDefinitions.hpp:88
bool _applied
Definition: BonusesImpl.hpp:110
int _parameter_1
Definition: BonusesImpl.hpp:111
std::weak_ptr< Unit > _unit
Definition: BonusesImpl.hpp:109
int _parameter_2
Definition: BonusesImpl.hpp:112
int _parameter_3
Definition: BonusesImpl.hpp:113

◆ Bonus() [2/4]

Horizon::Zone::Bonuses::Bonus::Bonus ( std::shared_ptr< Unit unit,
status_point_type  status_point_type,
int  bonus,
int  parameter_1 = 0,
int  parameter_2 = 0,
int  parameter_3 = 0 
)
inline
57 : Traits::Attribute(unit, status_point_type, 0, bonus, 0), _unit(unit), _applied(false),
58 _parameter_1(parameter_1), _parameter_2(parameter_2), _parameter_3(parameter_3) { }
status_point_type
Definition: UnitDefinitions.hpp:87
std::shared_ptr< Unit > unit()
Definition: BonusesImpl.hpp:103

◆ Bonus() [3/4]

Horizon::Zone::Bonuses::Bonus::Bonus ( Bonus other)
inline
61: Traits::Attribute(other), _parameter_1(other._parameter_1), _parameter_2(other._parameter_2), _parameter_3(other._parameter_3) { }

◆ Bonus() [4/4]

Horizon::Zone::Bonuses::Bonus::Bonus ( Bonus &&  other)
inlinenoexcept
62: Traits::Attribute(std::move(other)), _parameter_1(other._parameter_1), _parameter_2(other._parameter_2), _parameter_3(other._parameter_3) { }

Member Function Documentation

◆ apply()

virtual void Horizon::Zone::Bonuses::Bonus::apply ( int64_t &  ret)
inlinevirtual
100{ ret += get(); }
int32_t get()
Definition: BonusesImpl.hpp:88

References get().

+ Here is the call graph for this function:

◆ get()

int32_t Horizon::Zone::Bonuses::Bonus::get ( )
inline
88{ return get_equip(); }
virtual int32_t get_equip() const
Definition: Attribute.hpp:278

References Horizon::Zone::Traits::Attribute::get_equip().

Referenced by apply(), remove(), and Horizon::Zone::UnitComponent::sync_data_types().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ get_parameter_1()

int32_t Horizon::Zone::Bonuses::Bonus::get_parameter_1 ( )
inline
91{ return _parameter_1;}

References _parameter_1.

Referenced by Horizon::Zone::UnitComponent::sync_data_types().

+ Here is the caller graph for this function:

◆ get_parameter_2()

int32_t Horizon::Zone::Bonuses::Bonus::get_parameter_2 ( )
inline
94{ return _parameter_2;}

References _parameter_2.

Referenced by Horizon::Zone::UnitComponent::sync_data_types().

+ Here is the caller graph for this function:

◆ get_parameter_3()

int32_t Horizon::Zone::Bonuses::Bonus::get_parameter_3 ( )
inline
97{ return _parameter_3;}

References _parameter_3.

Referenced by Horizon::Zone::UnitComponent::sync_data_types().

+ Here is the caller graph for this function:

◆ is_applied()

bool Horizon::Zone::Bonuses::Bonus::is_applied ( )
inline
107{ return _applied; }

References _applied.

Referenced by Horizon::Zone::UnitComponent::sync_data_types().

+ Here is the caller graph for this function:

◆ operator=() [1/2]

Bonus & Horizon::Zone::Bonuses::Bonus::operator= ( Bonus &&  other)
inlinenoexcept
76 {
77 if (this != &other) {
78 Traits::Attribute::operator=(std::move(other));
79 _parameter_1 = other._parameter_1;
80 _parameter_2 = other._parameter_2;
81 _parameter_3 = other._parameter_3;
82 _unit = std::move(other._unit);
83 _applied = other._applied;
84 }
85 return *this;
86 }
Attribute operator=(Attribute &right)
Definition: Attribute.hpp:327

References _applied, _parameter_1, _parameter_2, _parameter_3, _unit, and Horizon::Zone::Traits::Attribute::operator=().

+ Here is the call graph for this function:

◆ operator=() [2/2]

Bonus & Horizon::Zone::Bonuses::Bonus::operator= ( Bonus other)
inline
65 {
66 if (this != &other) {
68 _parameter_1 = other._parameter_1;
69 _parameter_2 = other._parameter_2;
70 _parameter_3 = other._parameter_3;
71 _unit = other._unit;
72 _applied = other._applied;
73 }
74 return *this;
75 }

References _applied, _parameter_1, _parameter_2, _parameter_3, _unit, and Horizon::Zone::Traits::Attribute::operator=().

+ Here is the call graph for this function:

◆ remove()

virtual void Horizon::Zone::Bonuses::Bonus::remove ( int64_t &  ret)
inlinevirtual
101{ ret -= get(); }

References get().

+ Here is the call graph for this function:

◆ set()

void Horizon::Zone::Bonuses::Bonus::set ( int  bonus,
bool  notify_client = true 
)
inline
89{ set_equip(bonus, notify_client); }
virtual void set_equip(int32_t val, bool notify=true)
Definition: Attribute.hpp:271

References Horizon::Zone::Traits::Attribute::set_equip().

Referenced by Horizon::Zone::UnitComponent::sync_data_types().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_applied()

void Horizon::Zone::Bonuses::Bonus::set_applied ( bool  applied)
inline
106{ _applied = applied; }

References _applied.

Referenced by Horizon::Zone::UnitComponent::sync_data_types().

+ Here is the caller graph for this function:

◆ set_parameter_1()

void Horizon::Zone::Bonuses::Bonus::set_parameter_1 ( int  parameter_1)
inline
92{ _parameter_1 = parameter_1; }

References _parameter_1.

Referenced by Horizon::Zone::UnitComponent::sync_data_types().

+ Here is the caller graph for this function:

◆ set_parameter_2()

void Horizon::Zone::Bonuses::Bonus::set_parameter_2 ( int  parameter_2)
inline
95{ _parameter_2 = parameter_2; }

References _parameter_2.

Referenced by Horizon::Zone::UnitComponent::sync_data_types().

+ Here is the caller graph for this function:

◆ set_parameter_3()

void Horizon::Zone::Bonuses::Bonus::set_parameter_3 ( int  parameter_3)
inline
98{ _parameter_3 = parameter_3; }

References _parameter_3.

Referenced by Horizon::Zone::UnitComponent::sync_data_types().

+ Here is the caller graph for this function:

◆ unit() [1/2]

std::shared_ptr< Unit > Horizon::Zone::Bonuses::Bonus::unit ( )
inline
103{ return _unit.lock(); }

References _unit.

◆ unit() [2/2]

void Horizon::Zone::Bonuses::Bonus::unit ( std::shared_ptr< Unit e)
inline
104{ _unit = e; }

References _unit.

Member Data Documentation

◆ _applied

bool Horizon::Zone::Bonuses::Bonus::_applied {false}
private

Referenced by is_applied(), operator=(), and set_applied().

◆ _parameter_1

int Horizon::Zone::Bonuses::Bonus::_parameter_1
private

◆ _parameter_2

int Horizon::Zone::Bonuses::Bonus::_parameter_2
private

◆ _parameter_3

int Horizon::Zone::Bonuses::Bonus::_parameter_3
private

◆ _unit

std::weak_ptr<Unit> Horizon::Zone::Bonuses::Bonus::_unit
private

Referenced by operator=(), and unit().


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