This commit is contained in:
aozhiwei 2023-04-13 17:00:59 +08:00
parent 3dfa04f2c6
commit 72540b8569
3 changed files with 43 additions and 0 deletions

View File

@ -43,6 +43,7 @@
#include "buff/modify_attr.h"
#include "buff/modify_base_attr.h"
#include "buff/modify_grow_attr.h"
#include "buff/direct_set_attr.h"
#include "buff/vertigo.h"
#include "buff/cond_add.h"
#include "buff/distance_dmg_addition.h"
@ -56,6 +57,8 @@ std::shared_ptr<Buff> BuffFactory::MakeBuff(const mt::Buff* buff_meta)
return std::make_shared<ModifyBaseAttrBuff>();
case kBET_ModifyGrowAttr:
return std::make_shared<ModifyGrowAttrBuff>();
case kBET_DirectSetAttr:
return std::make_shared<DirectSetAttrBuff>();
case kBET_SummonLoot:
return std::make_shared<SummonLootBuff>();
case kBET_DistanceDmgAddition:

View File

@ -0,0 +1,26 @@
#include "precompile.h"
#include "buff/direct_set_attr.h"
#include "creature.h"
#include "human.h"
#include "car.h"
#include "ability.h"
#include "mt/Buff.h"
void DirectSetAttrBuff::Activate()
{
int attr_id = meta->_int_buff_param1;
float value = meta->GetBuffParam2(this);
if (IsValidHumanAttr(attr_id)) {
handle_ = owner->GetAbility()->AddAttrDirect(attr_id, value);
}
}
void DirectSetAttrBuff::Deactivate()
{
if (!handle_.expired()) {
owner->GetAbility()->RemoveAttrDirect(handle_);
}
}

View File

@ -0,0 +1,14 @@
#pragma once
#include "buff.h"
class DirectSetAttrBuff : public Buff
{
public:
virtual void Activate() override;
virtual void Deactivate() override;
private:
AttrDirectHandle handle_;
};