56 lines
1.3 KiB
C++
56 lines
1.3 KiB
C++
#include "StdAfx.h"
|
|
#include "PassiveStatusAbility.h"
|
|
#include "SkillAttrCalculator.h"
|
|
|
|
|
|
bool PassiveStatusAbility::Execute(Character* /*target*/, BYTE* /*msg*/, WORD& /*msg_size*/)
|
|
{
|
|
Character* const attacker = GetAttacker();
|
|
if (attacker == NULL)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
const eATTR_TYPE attr_id = GetAttrID();
|
|
if (attr_id == eATTR_TYPE_INVALID)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
const BASE_ABILITYINFO* const ability_info = GetBaseAbilityInfo();
|
|
const int add_value = ability_info->m_iParam[1];
|
|
if (add_value == 0)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
SkillAttrCalculator calc(attacker->GetAttr());
|
|
calc.AddAttr(attr_id, ability_info->m_iParam[0], add_value);
|
|
|
|
return false;
|
|
}
|
|
|
|
void PassiveStatusAbility::Release(Character* /*target*/)
|
|
{
|
|
Character* const attacker = GetAttacker();
|
|
if (attacker == NULL)
|
|
{
|
|
return;
|
|
}
|
|
|
|
const eATTR_TYPE attr_id = GetAttrID();
|
|
if (attr_id == eATTR_TYPE_INVALID)
|
|
{
|
|
return;
|
|
}
|
|
|
|
const BASE_ABILITYINFO* const ability_info = GetBaseAbilityInfo();
|
|
const int del_value = ability_info->m_iParam[1];
|
|
if (del_value == 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
SkillAttrCalculator calc(attacker->GetAttr());
|
|
calc.DelAttr(attr_id, ability_info->m_iParam[0], del_value);
|
|
} |