Horizon Official Technical Documentation
Horizon::Zone::CombatRegistry::SkillResultOperation Class Reference

#include <Combat.hpp>

+ Inheritance diagram for Horizon::Zone::CombatRegistry::SkillResultOperation:
+ Collaboration diagram for Horizon::Zone::CombatRegistry::SkillResultOperation:

Classes

class  SkillResultOperand
 

Public Types

enum  skill_result_operation_type { SKILL_RESULT_OPERATION_DAMAGE = 0 , SKILL_RESULT_OPERATION_HEALING }
 
- Public Types inherited from Horizon::Zone::CombatRegistry::CombatOperation
enum  combat_operation_type {
  COMBAT_OPERATION_ATTRIBUTE , COMBAT_OPERATION_APPEARANCE , COMBAT_OPERATION_STATUS , COMBAT_OPERATION_SKILL_EXECUTION ,
  COMBAT_OPERATION_MELEE_EXECUTION , COMBAT_OPERATION_SKILL_RESULT , COMBAT_OPERATION_MELEE_RESULT , COMBAT_OPERATION_MAX
}
 

Public Member Functions

 SkillResultOperation ()=delete
 
 SkillResultOperation (SkillResultOperand *operand, skill_result_operation_type type, CombatValueDamage *value)
 
 SkillResultOperation (SkillResultOperand *operand, skill_result_operation_type type, CombatValueHealing *value)
 
 ~SkillResultOperation ()
 
void execute () const override
 
- Public Member Functions inherited from Horizon::Zone::CombatRegistry::CombatOperation
 CombatOperation ()=delete
 
 CombatOperation (const CombatOperation &right)=delete
 
 CombatOperation (CombatOperation &&right)=delete
 
 CombatOperation (CombatOperand *operand, int operation_type, int operation_sub_type, CombatOperationValue *value)
 
 CombatOperation (CombatOperand *operand, int operation_type, int operation_sub_type)
 
virtual ~CombatOperation ()
 
virtual CombatOperandget_operand () const
 
int get_operation_type () const
 
int get_operation_sub_type () const
 
virtual CombatOperationValueget_operation_value () const
 
int get_priority ()
 
void set_priority (int priority)
 
virtual void execute () const =0
 
void operator= (const CombatOperation &operation)=delete
 

Additional Inherited Members

- Protected Attributes inherited from Horizon::Zone::CombatRegistry::CombatOperation
CombatOperand_operand {nullptr}
 
int _operation_type { 0 }
 
int _operation_sub_type { 0 }
 
CombatOperationValue_operation_value {nullptr}
 
int _priority { 0 }
 

Member Enumeration Documentation

◆ skill_result_operation_type

Enumerator
SKILL_RESULT_OPERATION_DAMAGE 
SKILL_RESULT_OPERATION_HEALING 

Constructor & Destructor Documentation

◆ SkillResultOperation() [1/3]

Horizon::Zone::CombatRegistry::SkillResultOperation::SkillResultOperation ( )
delete

◆ SkillResultOperation() [2/3]

Horizon::Zone::CombatRegistry::SkillResultOperation::SkillResultOperation ( SkillResultOperand operand,
skill_result_operation_type  type,
CombatValueDamage value 
)
inline
515 : CombatOperation(operand, COMBAT_OPERATION_SKILL_RESULT, (int) type, value)
516 {}
@ COMBAT_OPERATION_SKILL_RESULT
Definition: Combat.hpp:294

◆ SkillResultOperation() [3/3]

Horizon::Zone::CombatRegistry::SkillResultOperation::SkillResultOperation ( SkillResultOperand operand,
skill_result_operation_type  type,
CombatValueHealing value 
)
inline
519 : CombatOperation(operand, COMBAT_OPERATION_SKILL_RESULT, (int) type, value)
520 {}

◆ ~SkillResultOperation()

Horizon::Zone::CombatRegistry::SkillResultOperation::~SkillResultOperation ( )
inline
522{ }

Member Function Documentation

◆ execute()

void CombatRegistry::SkillResultOperation::execute ( ) const
overridevirtual

Implements Horizon::Zone::CombatRegistry::CombatOperation.

502{
503 std::shared_ptr<Unit> source = get_operand()->get_source();
504 std::shared_ptr<Unit> target = get_operand()->get_target();
505
506 switch(get_operation_sub_type())
507 {
509 {
512 HLog(debug) << "Started skill result damage operation for skill: " << operand->get_config().skill_id << "." << std::endl;
513 s_unit_skill_use_notifier_config notifier_config;
514 notifier_config.skill_id = operand->get_config().skill_id;
515 notifier_config.skill_lv = operand->get_config().skill_lv;
516 notifier_config.source_guid = source->guid();
517 notifier_config.target_guid = target->guid();
518 notifier_config.start_time = get_sys_time();
519 notifier_config.attack_motion = operand->get_config().attack_motion;
520 notifier_config.delay_motion = operand->get_config().delay_motion;
521 notifier_config.damage_value = damage->get_damage().left_damage + damage->get_damage().right_damage;
522 notifier_config.number_of_hits = damage->get_damage().number_of_hits;
523 notifier_config.action_type = operand->get_config().action_type;
524 source->notify_nearby_players_of_skill_use(GRID_UNIT_SKILL_USE_NOTIFY_SUCCESS_DAMAGE, notifier_config);
525 HLog(debug) << "Finished skill result damage operation for skill: " << operand->get_config().skill_id << "." << std::endl;
526 target->on_damage_received(source, damage->get_damage().left_damage + damage->get_damage().right_damage);
527 }
528 break;
530 {
533 HLog(debug) << "Started skill result damage operation for skill: " << operand->get_config().skill_id << "." << std::endl;
534 s_unit_skill_use_notifier_config notifier_config;
535 notifier_config.skill_id = operand->get_config().skill_id;
536 notifier_config.skill_lv = operand->get_config().skill_lv;
537 notifier_config.source_guid = source->guid();
538 notifier_config.display_value = healing->get_healing().heal_amount;
539 notifier_config.target_guid = operand->get_target()->guid();
540 source->notify_nearby_players_of_skill_use(GRID_UNIT_SKILL_USE_NOTIFY_SUCCESS_NO_DAMAGE, notifier_config);
541 HLog(debug) << "Finished skill result damage operation for skill: " << operand->get_config().skill_id << "." << std::endl;
542 }
543 break;
544 default:
545 HLog(warning) << "CombatRegistry::SkillOperation::execute(): unknown skill operation type: " << get_operation_sub_type();
546 break;
547 }
548}
@ GRID_UNIT_SKILL_USE_NOTIFY_SUCCESS_DAMAGE
Definition: GridDefinitions.hpp:90
@ GRID_UNIT_SKILL_USE_NOTIFY_SUCCESS_NO_DAMAGE
Definition: GridDefinitions.hpp:91
#define HLog(type)
Definition: Logger.hpp:122
int64_t get_sys_time()
Definition: Utility.cpp:68
std::shared_ptr< Unit > get_target()
Definition: Combat.hpp:263
std::shared_ptr< Unit > get_source()
Definition: Combat.hpp:262
int get_operation_sub_type() const
Definition: Combat.hpp:319
virtual CombatOperationValue * get_operation_value() const
Definition: Combat.hpp:320
virtual CombatOperand * get_operand() const
Definition: Combat.hpp:317
combat_damage get_damage()
Definition: Combat.hpp:224
combat_healing get_healing()
Definition: Combat.hpp:239
s_skill_result_operation_config get_config()
Definition: Combat.hpp:508
int number_of_hits
Definition: CombatDefinitions.hpp:109
int64_t right_damage
Definition: CombatDefinitions.hpp:107
int64_t left_damage
Definition: CombatDefinitions.hpp:107
int64_t heal_amount
Definition: CombatDefinitions.hpp:120
Definition: GridNotifiers.hpp:364
int target_guid
Definition: GridNotifiers.hpp:365
int damage_value
Definition: GridNotifiers.hpp:365
zc_notify_act_3_action_types action_type
Definition: GridNotifiers.hpp:367
int source_guid
Definition: GridNotifiers.hpp:365
int attack_motion
Definition: GridNotifiers.hpp:365
int display_value
Definition: GridNotifiers.hpp:365
int skill_lv
Definition: GridNotifiers.hpp:365
int delay_motion
Definition: GridNotifiers.hpp:366
int start_time
Definition: GridNotifiers.hpp:365
int number_of_hits
Definition: GridNotifiers.hpp:366
int skill_id
Definition: GridNotifiers.hpp:365

References s_unit_skill_use_notifier_config::action_type, Horizon::Zone::CombatRegistry::SkillResultOperation::SkillResultOperand::s_skill_result_operation_config::action_type, s_unit_skill_use_notifier_config::attack_motion, Horizon::Zone::CombatRegistry::SkillResultOperation::SkillResultOperand::s_skill_result_operation_config::attack_motion, s_unit_skill_use_notifier_config::damage_value, s_unit_skill_use_notifier_config::delay_motion, Horizon::Zone::CombatRegistry::SkillResultOperation::SkillResultOperand::s_skill_result_operation_config::delay_motion, s_unit_skill_use_notifier_config::display_value, Horizon::Zone::CombatRegistry::SkillResultOperation::SkillResultOperand::get_config(), Horizon::Zone::CombatRegistry::CombatValueDamage::get_damage(), Horizon::Zone::CombatRegistry::CombatValueHealing::get_healing(), get_sys_time(), Horizon::Zone::CombatRegistry::CombatOperand::get_target(), GRID_UNIT_SKILL_USE_NOTIFY_SUCCESS_DAMAGE, GRID_UNIT_SKILL_USE_NOTIFY_SUCCESS_NO_DAMAGE, combat_healing::heal_amount, HLog, combat_damage::left_damage, combat_damage::number_of_hits, s_unit_skill_use_notifier_config::number_of_hits, combat_damage::right_damage, s_unit_skill_use_notifier_config::skill_id, Horizon::Zone::CombatRegistry::SkillResultOperation::SkillResultOperand::s_skill_result_operation_config::skill_id, s_unit_skill_use_notifier_config::skill_lv, Horizon::Zone::CombatRegistry::SkillResultOperation::SkillResultOperand::s_skill_result_operation_config::skill_lv, s_unit_skill_use_notifier_config::source_guid, s_unit_skill_use_notifier_config::start_time, and s_unit_skill_use_notifier_config::target_guid.

+ Here is the call graph for this function:

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