diff --git a/server/gameserver/buff/callfunc.cc b/server/gameserver/buff/callfunc.cc index a6c1c78f..e999cbe7 100644 --- a/server/gameserver/buff/callfunc.cc +++ b/server/gameserver/buff/callfunc.cc @@ -328,6 +328,7 @@ void CallFuncBuff::ProcLightCircle() a8::XTimerWp active_skill_timer; std::map in_human_infos; const mt::Skill* active_skill_meta = nullptr; + int keep_buff_uniid = 0; ); { @@ -483,5 +484,20 @@ void CallFuncBuff::ProcLightCircle() } } ); + + owner->GetTrigger()->AddListener + ( + kDieEvent, + [this, context] (const a8::Args& args) mutable + { + if (context->keep_buff_uniid) { + owner->RemoveBuffByUniId(context->keep_buff_uniid); + context->keep_buff_uniid = 0; + } + } + ); + } + { + context->keep_buff_uniid = owner->TryAddBuff(GetCaster().Get(), meta->_int_buff_param4, skill_meta); } }