From cda1ae67ba321d18a5765427d032c568f6689efb Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 22 Mar 2023 21:04:57 +0800 Subject: [PATCH] 1 --- server/gameserver/buff/cond_add.cc | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/server/gameserver/buff/cond_add.cc b/server/gameserver/buff/cond_add.cc index 1b19c20e..d71a38cc 100644 --- a/server/gameserver/buff/cond_add.cc +++ b/server/gameserver/buff/cond_add.cc @@ -262,12 +262,19 @@ void CondAddBuff::ProcLimitTimeKillTarget() Entity* e = owner->room->GetEntityByUniId(target_uniid); if (e && e->IsCreature(owner->room)) { Creature* c = (Creature*)e; - c->GetTrigger()->RemoveEventHandler(std::get<1>(itr->second)); + auto buff_vars = std::make_shared>(); + buff_vars->push_back(target_uniid); owner->TryAddBuff(GetCaster().Get(), meta->_int_buff_param4, - skill_meta); + skill_meta, + nullptr, + buff_vars); + std::weak_ptr handler = std::get<1>(itr->second); + context->watch_targets.erase(itr); + c->GetTrigger()->RemoveEventHandler(handler); + } else { + context->watch_targets.erase(itr); } - context->watch_targets.erase(itr); } }); context->watch_targets[target->GetUniId()] = std::make_tuple(timer_wp, handler);