From c214855db9f2ecd6cda8c1bfee08493dd2bdfbdc Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 6 Mar 2023 16:46:03 +0800 Subject: [PATCH] 1 --- server/gameserver/buff/callfunc.cc | 17 ++++++++++++++++- server/gameserver/buff/callfunc.h | 2 ++ server/gameserver/creature.cc | 1 + 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/server/gameserver/buff/callfunc.cc b/server/gameserver/buff/callfunc.cc index fb9d72c1..cc4cbab7 100644 --- a/server/gameserver/buff/callfunc.cc +++ b/server/gameserver/buff/callfunc.cc @@ -56,6 +56,11 @@ void CallFuncBuff::Activate() owner->GetAbility()->AddSpeedAddition(hold_param2_); } break; + case BuffCallFunc_e::kRemoveBuff: + { + ProcRemoveBuff(); + } + break; default: { } @@ -130,7 +135,7 @@ void CallFuncBuff::ProcAddMinorMode() skill->AddMinorMode ( meta->_int_buff_param2, - dur_time, + dur_time * 1000, [this] (int action) { if (action == 0) { @@ -158,3 +163,13 @@ void CallFuncBuff::ProcMarkTag() break; } } + +void CallFuncBuff::ProcRemoveBuff() +{ + for (int buff_effect : meta->_buff_param2_int_list) { + owner->RemoveBuffByEffectId(buff_effect); + } + for (int buff_id : meta->_buff_param3_int_list) { + owner->RemoveBuffById(buff_id); + } +} diff --git a/server/gameserver/buff/callfunc.h b/server/gameserver/buff/callfunc.h index b3ef2bd8..b8542063 100644 --- a/server/gameserver/buff/callfunc.h +++ b/server/gameserver/buff/callfunc.h @@ -9,6 +9,7 @@ A8_DECLARE_CLASS_ENUM(BuffCallFunc_e, int, kDecHp = 4, kMarkTag = 5, kSpeedAddition = 6, + kRemoveBuff = 7, ); @@ -23,6 +24,7 @@ class CallFuncBuff : public Buff void ProcIntervalRangeAddBuffFunc(); void ProcAddMinorMode(); void ProcMarkTag(); + void ProcRemoveBuff(); float hold_param2_ = 0.0; }; diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 9c8d1d3b..54e768cd 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -856,6 +856,7 @@ void Creature::DoSkill(int skill_id, { Skill* skill = GetSkill(skill_id); if (skill && CanUseSkill(skill_id)) { + a8::XPrintf("DoSkill minor_type:%d\n", {skill->GetMinorType()}); if (skill->GetMinorType()) { skill->DoMinorMode(); return;