1
This commit is contained in:
parent
162c2585c6
commit
df98caab8a
@ -26,7 +26,6 @@
|
|||||||
#include "buff/internal_add.h"
|
#include "buff/internal_add.h"
|
||||||
#include "buff/jump.h"
|
#include "buff/jump.h"
|
||||||
#include "buff/machine_gun.h"
|
#include "buff/machine_gun.h"
|
||||||
#include "buff/once_chg_attr.h"
|
|
||||||
#include "buff/passenger.h"
|
#include "buff/passenger.h"
|
||||||
#include "buff/pull.h"
|
#include "buff/pull.h"
|
||||||
#include "buff/pull_to_walkable.h"
|
#include "buff/pull_to_walkable.h"
|
||||||
@ -108,8 +107,6 @@ std::shared_ptr<Buff> BuffFactory::MakeBuff(const mt::Buff* buff_meta)
|
|||||||
return std::make_shared<JumpBuff>();
|
return std::make_shared<JumpBuff>();
|
||||||
case kBET_MachineGun:
|
case kBET_MachineGun:
|
||||||
return std::make_shared<MachineGunBuff>();
|
return std::make_shared<MachineGunBuff>();
|
||||||
case kBET_OnceChgAttr:
|
|
||||||
return std::make_shared<OnceChgAttrBuff>();
|
|
||||||
case kBET_Passenger:
|
case kBET_Passenger:
|
||||||
return std::make_shared<PassengerBuff>();
|
return std::make_shared<PassengerBuff>();
|
||||||
case kBET_PullToWalkable:
|
case kBET_PullToWalkable:
|
||||||
|
@ -207,6 +207,24 @@ void CallFuncBuff::Activate()
|
|||||||
ThrowKnife();
|
ThrowKnife();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case BuffCallFunc_e::kDirectAbsDecHP:
|
||||||
|
{
|
||||||
|
hold_param2_ = meta->GetBuffParam2(this);
|
||||||
|
if (GetCaster().Get()) {
|
||||||
|
float dmg = hold_param2_;
|
||||||
|
float dmg_out = 0.0f;
|
||||||
|
owner->DecHP(dmg,
|
||||||
|
GetCaster().Get()->GetUniId(),
|
||||||
|
GetCaster().Get()->GetName(),
|
||||||
|
VP_Buff,
|
||||||
|
GetCaster().Get()->GetUniId(),
|
||||||
|
GetCaster().Get()->GetName(),
|
||||||
|
dmg_out
|
||||||
|
);
|
||||||
|
owner->GetTrigger()->Attacked(GetCaster().Get());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -36,6 +36,7 @@ A8_DECLARE_CLASS_ENUM(BuffCallFunc_e, int,
|
|||||||
kLispEval = 36,
|
kLispEval = 36,
|
||||||
kSpecCenterRangeHoldBuff = 37,
|
kSpecCenterRangeHoldBuff = 37,
|
||||||
kThrowKnife = 38,
|
kThrowKnife = 38,
|
||||||
|
kDirectAbsDecHP = 39,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,93 +0,0 @@
|
|||||||
#include "precompile.h"
|
|
||||||
|
|
||||||
#include "buff/once_chg_attr.h"
|
|
||||||
|
|
||||||
#include "attrdefine.h"
|
|
||||||
#include "creature.h"
|
|
||||||
#include "room.h"
|
|
||||||
|
|
||||||
#include "mt/Buff.h"
|
|
||||||
|
|
||||||
void OnceChgAttrBuff::Activate()
|
|
||||||
{
|
|
||||||
InternalProcOnceChgAttr();
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnceChgAttrBuff::Deactivate()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnceChgAttrBuff::InternalProcOnceChgAttr()
|
|
||||||
{
|
|
||||||
if (owner->dead) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
switch (meta->_int_buff_param1) {
|
|
||||||
case kXHAT_Hp:
|
|
||||||
{
|
|
||||||
int real_killer_id = 0;
|
|
||||||
std::string real_killer_name;
|
|
||||||
if (caster_.Get()) {
|
|
||||||
real_killer_id = caster_.Get()->GetUniId();
|
|
||||||
real_killer_name = caster_.Get()->GetName();
|
|
||||||
}
|
|
||||||
#ifdef MYDEBUG
|
|
||||||
if (caster_.Get()->IsPlayer()) {
|
|
||||||
a8::XPrintf("once chgattr %d %d\n", {real_killer_id, real_killer_name});
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if (meta->_int_buff_param2 == 1) {
|
|
||||||
//绝对值
|
|
||||||
if (meta->_buff_param3 > 0) {
|
|
||||||
owner->AddHp(meta->_buff_param3);
|
|
||||||
} else if (meta->_buff_param3 < 0) {
|
|
||||||
float dmg_out = 0.0f;
|
|
||||||
owner->over_delay_time = 100;
|
|
||||||
owner->DecHP(std::abs(meta->_buff_param3),
|
|
||||||
VP_Buff,
|
|
||||||
"",
|
|
||||||
meta->buff_id(),
|
|
||||||
real_killer_id,
|
|
||||||
real_killer_name,
|
|
||||||
dmg_out);
|
|
||||||
owner->over_delay_time = 0;
|
|
||||||
}
|
|
||||||
} else if (meta->_int_buff_param2 == 2) {
|
|
||||||
//百分比
|
|
||||||
float chg_hp = owner->GetHP() * meta->_buff_param3;
|
|
||||||
if (chg_hp > 0.0001f) {
|
|
||||||
owner->AddHp(chg_hp);
|
|
||||||
} else if (chg_hp < 0.0001f) {
|
|
||||||
float dmg_out = 0.0f;
|
|
||||||
owner->over_delay_time = 100;
|
|
||||||
owner->DecHP(std::abs(chg_hp),
|
|
||||||
VP_Buff,
|
|
||||||
"",
|
|
||||||
meta->buff_id(),
|
|
||||||
real_killer_id,
|
|
||||||
real_killer_name,
|
|
||||||
dmg_out);
|
|
||||||
owner->over_delay_time = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#ifdef MYDEBUG
|
|
||||||
{
|
|
||||||
std::string dbg_msg = a8::Format
|
|
||||||
("buff扣血 type:%s val:%f",
|
|
||||||
{
|
|
||||||
meta->_int_buff_param2,
|
|
||||||
meta->_int_buff_param3,
|
|
||||||
});
|
|
||||||
owner->room->BroadcastDebugMsg(dbg_msg);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
owner->room->frame_event.AddHpChg(owner->GetWeakPtrRef());
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,14 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include "buff.h"
|
|
||||||
|
|
||||||
class OnceChgAttrBuff : public Buff
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
virtual void Activate() override;
|
|
||||||
virtual void Deactivate() override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
void InternalProcOnceChgAttr();
|
|
||||||
};
|
|
@ -44,7 +44,7 @@ A8_DECLARE_ENUM(BuffEffectType_e,
|
|||||||
kBET_NewProtect = 8, //新手保护血量低于50%
|
kBET_NewProtect = 8, //新手保护血量低于50%
|
||||||
kBET_BePull = 9, //拉人(被拉方)
|
kBET_BePull = 9, //拉人(被拉方)
|
||||||
kBET_DistanceDmgAddition = 10,
|
kBET_DistanceDmgAddition = 10,
|
||||||
kBET_OnceChgAttr = 11, //一次性buff
|
kBET_UnUse11 = 11, //
|
||||||
kBET_Scale = 12, //缩放角色模型,这时res_scale表示缩放比,客户端需要特殊处理
|
kBET_Scale = 12, //缩放角色模型,这时res_scale表示缩放比,客户端需要特殊处理
|
||||||
kBET_ModifyAttr = 13,
|
kBET_ModifyAttr = 13,
|
||||||
kBET_PlayShotAni = 14, //播放射击动画
|
kBET_PlayShotAni = 14, //播放射击动画
|
||||||
|
@ -377,23 +377,6 @@ namespace mt
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case kBET_OnceChgAttr:
|
|
||||||
{
|
|
||||||
AddCheckAttrBuff(_int_buff_param1, this);
|
|
||||||
switch (_int_buff_param1) {
|
|
||||||
case kXHAT_Hp:
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case kBET_ModifyBaseAttr:
|
case kBET_ModifyBaseAttr:
|
||||||
case kBET_ModifyGrowAttr:
|
case kBET_ModifyGrowAttr:
|
||||||
case kBET_DirectSetAttr:
|
case kBET_DirectSetAttr:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user