#include "StdAfx.h" #include "WeaponMasteryAbility.h" #include "SkillAttrCalculator.h" bool WeaponMasteryAbility::Execute(Character* /*target*/, BYTE* /*msg*/, WORD& /*msg_size*/) { Character* const attacker = GetAttacker(); if (attacker == NULL) { return false; } SkillAttrCalculator calc(attacker->GetAttr()); // °ø°Ý·Â Áõ°¡ const BASE_ABILITYINFO* const ability_info = GetBaseAbilityInfo(); const int add_attack_power = ability_info->m_iParam[0]; if (add_attack_power != 0) { calc.AddAttr(eATTR_OPTION_PHYSICAL_ATTACK_POWER, VALUE_TYPE_VALUE, add_attack_power); } // °ø°Ý ¼Óµµ Áõ°¡ const int add_attack_speed = ability_info->m_iParam[1]; if (add_attack_speed != 0) { calc.AddAttr(eATTR_ATTACK_SPEED, VALUE_TYPE_VALUE, add_attack_speed); } return false; } void WeaponMasteryAbility::Release(Character* /*target*/) { Character* const attacker = GetAttacker(); if (attacker == NULL) { return; } SkillAttrCalculator calc(attacker->GetAttr()); // °ø°Ý·Â °¨¼Ò const BASE_ABILITYINFO* const ability_info = GetBaseAbilityInfo(); const int del_attack_power = ability_info->m_iParam[0]; if (del_attack_power != 0) { calc.DelAttr(eATTR_OPTION_PHYSICAL_ATTACK_POWER, VALUE_TYPE_VALUE, del_attack_power); } // °ø°Ý ¼Óµµ °¨¼Ò const int del_attack_speed = ability_info->m_iParam[1]; if (del_attack_speed != 0) { calc.DelAttr(eATTR_ATTACK_SPEED, VALUE_TYPE_VALUE, del_attack_speed); } }