This commit is contained in:
aozhiwei 2023-03-28 16:10:27 +08:00
parent 93f4137ae1
commit 1d01fc048b
4 changed files with 30 additions and 5 deletions

View File

@ -503,7 +503,7 @@ AttrRateHandle Ability::AddAttrRate(int attr_id, float value)
return AttrRateHandle();
}
void Ability::RemoveAttrRate(AttrAbsHandle handle)
void Ability::RemoveAttrRate(AttrRateHandle handle)
{
if (!handle.expired()) {
auto p = handle.lock();

View File

@ -66,7 +66,7 @@ class Ability
AttrAbsHandle AddAttrAbs(int attr_id, float value);
void RemoveAttrAbs(AttrAbsHandle handle);
AttrRateHandle AddAttrRate(int attr_id, float value);
void RemoveAttrRate(AttrAbsHandle handle);
void RemoveAttrRate(AttrRateHandle handle);
void RecalcAttrAbs(int attr_id);
void RecalcAttrRate(int attr_id);
float GetAttrAbs(int attr_id);

View File

@ -10,9 +10,34 @@
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:
{
owner->GetAbility()->AddAttrAbs(attr_id, value);
}
break;
case 2:
{
owner->GetAbility()->AddAttrRate(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_);
}
}

View File

@ -11,6 +11,6 @@ class ModifyBaseAttrBuff : public Buff
virtual void Deactivate() override;
private:
AttrAdditionHandle add_handle_;
AttrRuduceHandle ruduce_handle_;
AttrAbsHandle abs_handle_;
AttrRateHandle rate_handle_;
};