game2006/server/gameserver/buff/modify_base_attr.cc
aozhiwei 104846bc6a 1
2023-04-14 14:22:37 +08:00

44 lines
958 B
C++

#include "precompile.h"
#include "buff/modify_base_attr.h"
#include "creature.h"
#include "human.h"
#include "car.h"
#include "mt/Buff.h"
void ModifyBaseAttrBuff::Activate()
{
int attr_id = meta->_int_buff_param1;
if (IsValidHumanAttr(attr_id)) {
float value = meta->GetBuffParam2(this);
switch (meta->_int_buff_param4) {
case 1:
{
rate_handle_ = owner->GetAbility()->AddAttrRate(attr_id, value);
}
break;
case 2:
{
abs_handle_ = owner->GetAbility()->AddAttrAbs(attr_id, value);
}
break;
default:
{
}
break;
}
}
}
void ModifyBaseAttrBuff::Deactivate()
{
if (!abs_handle_.expired()) {
owner->GetAbility()->RemoveAttrAbs(abs_handle_);
}
if (!rate_handle_.expired()) {
owner->GetAbility()->RemoveAttrRate(rate_handle_);
}
}