From df98caab8a48cf6d98c32086ecb192d898dbb060 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 8 Jan 2024 16:08:56 +0800 Subject: [PATCH] 1 --- server/gameserver/buff/bufffactory.cc | 3 - server/gameserver/buff/callfunc.cc | 18 +++++ server/gameserver/buff/callfunc.h | 1 + server/gameserver/buff/once_chg_attr.cc | 93 ------------------------- server/gameserver/buff/once_chg_attr.h | 14 ---- server/gameserver/constant_export.h | 2 +- server/gameserver/mt/Buff.cc | 17 ----- 7 files changed, 20 insertions(+), 128 deletions(-) delete mode 100644 server/gameserver/buff/once_chg_attr.cc delete mode 100644 server/gameserver/buff/once_chg_attr.h diff --git a/server/gameserver/buff/bufffactory.cc b/server/gameserver/buff/bufffactory.cc index 06a70a55..69609cf9 100644 --- a/server/gameserver/buff/bufffactory.cc +++ b/server/gameserver/buff/bufffactory.cc @@ -26,7 +26,6 @@ #include "buff/internal_add.h" #include "buff/jump.h" #include "buff/machine_gun.h" -#include "buff/once_chg_attr.h" #include "buff/passenger.h" #include "buff/pull.h" #include "buff/pull_to_walkable.h" @@ -108,8 +107,6 @@ std::shared_ptr BuffFactory::MakeBuff(const mt::Buff* buff_meta) return std::make_shared(); case kBET_MachineGun: return std::make_shared(); - case kBET_OnceChgAttr: - return std::make_shared(); case kBET_Passenger: return std::make_shared(); case kBET_PullToWalkable: diff --git a/server/gameserver/buff/callfunc.cc b/server/gameserver/buff/callfunc.cc index d7a862e2..4b35307e 100644 --- a/server/gameserver/buff/callfunc.cc +++ b/server/gameserver/buff/callfunc.cc @@ -207,6 +207,24 @@ void CallFuncBuff::Activate() ThrowKnife(); } 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: { } diff --git a/server/gameserver/buff/callfunc.h b/server/gameserver/buff/callfunc.h index 99756dbc..b0b9aa6a 100644 --- a/server/gameserver/buff/callfunc.h +++ b/server/gameserver/buff/callfunc.h @@ -36,6 +36,7 @@ A8_DECLARE_CLASS_ENUM(BuffCallFunc_e, int, kLispEval = 36, kSpecCenterRangeHoldBuff = 37, kThrowKnife = 38, + kDirectAbsDecHP = 39, ); diff --git a/server/gameserver/buff/once_chg_attr.cc b/server/gameserver/buff/once_chg_attr.cc deleted file mode 100644 index e98b81af..00000000 --- a/server/gameserver/buff/once_chg_attr.cc +++ /dev/null @@ -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; - } -} diff --git a/server/gameserver/buff/once_chg_attr.h b/server/gameserver/buff/once_chg_attr.h deleted file mode 100644 index 2bdb61eb..00000000 --- a/server/gameserver/buff/once_chg_attr.h +++ /dev/null @@ -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(); -}; diff --git a/server/gameserver/constant_export.h b/server/gameserver/constant_export.h index c1211d6d..da038853 100644 --- a/server/gameserver/constant_export.h +++ b/server/gameserver/constant_export.h @@ -44,7 +44,7 @@ A8_DECLARE_ENUM(BuffEffectType_e, kBET_NewProtect = 8, //新手保护血量低于50% kBET_BePull = 9, //拉人(被拉方) kBET_DistanceDmgAddition = 10, - kBET_OnceChgAttr = 11, //一次性buff + kBET_UnUse11 = 11, // kBET_Scale = 12, //缩放角色模型,这时res_scale表示缩放比,客户端需要特殊处理 kBET_ModifyAttr = 13, kBET_PlayShotAni = 14, //播放射击动画 diff --git a/server/gameserver/mt/Buff.cc b/server/gameserver/mt/Buff.cc index 8c3f9280..2cbe59d2 100644 --- a/server/gameserver/mt/Buff.cc +++ b/server/gameserver/mt/Buff.cc @@ -377,23 +377,6 @@ namespace mt { } 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_ModifyGrowAttr: case kBET_DirectSetAttr: