71 lines
1.7 KiB
C++
71 lines
1.7 KiB
C++
#include "stdafx.h"
|
|
#include "Ability.h"
|
|
#include "AbsorbStatus.h"
|
|
|
|
|
|
void AbsorbStatus::AttackAbsorb(DAMAGETYPE damage)
|
|
{
|
|
#ifdef _NA_008486_20150914_TOTAL_BALANCE
|
|
#else
|
|
Character* const owner = GetOwner();
|
|
if (owner == NULL)
|
|
{
|
|
return;
|
|
}
|
|
|
|
int calc_value = GetAbilityValue();
|
|
{
|
|
const int value_type = GetAbilityValueType();
|
|
if (value_type == VALUE_TYPE_PERCENT_PER_MAX)
|
|
{
|
|
calc_value = damage * calc_value / 1000;
|
|
}
|
|
else if (value_type == VALUE_TYPE_PERCENT_PER_CUR)
|
|
{
|
|
calc_value = damage * calc_value / 1000;
|
|
}
|
|
}
|
|
|
|
const eABILITY ability_id = GetAbilityID();
|
|
if (ability_id == eABILITY_ATTACK_DAMAGE_HP_ABSORPTION)
|
|
{
|
|
owner->OnRecover(calc_value, 0);
|
|
}
|
|
else if (ability_id == eABILITY_ATTACK_DAMAGE_MP_ABSORPTION)
|
|
{
|
|
owner->OnRecover(0, calc_value);
|
|
}
|
|
#endif //_NA_008486_20150914_TOTAL_BALANCE
|
|
}
|
|
|
|
void AbsorbStatus::AttackedAbsorb(eATTACK_TYPE /*attack_type*/, DAMAGETYPE damage)
|
|
{
|
|
Character* const owner = GetOwner();
|
|
if (owner == NULL)
|
|
{
|
|
return;
|
|
}
|
|
|
|
int calc_value = GetAbilityValue();
|
|
{
|
|
const int value_type = GetAbilityValueType();
|
|
if (value_type == VALUE_TYPE_PERCENT_PER_MAX)
|
|
{
|
|
calc_value = damage * calc_value / 1000;
|
|
}
|
|
else if (value_type == VALUE_TYPE_PERCENT_PER_CUR)
|
|
{
|
|
calc_value = damage * calc_value / 1000;
|
|
}
|
|
}
|
|
|
|
const eABILITY ability_id = GetAbilityID();
|
|
if (ability_id == eABILITY_ATTACKED_DAMAGE_HP_ABSORPTION)
|
|
{
|
|
owner->OnRecover(calc_value, 0);
|
|
}
|
|
else if (ability_id == eABILITY_ATTACKED_DAMAGE_MP_ABSORPTION)
|
|
{
|
|
owner->OnRecover(0, calc_value);
|
|
}
|
|
} |