diff --git a/server/gameserver/buff/cond_add.cc b/server/gameserver/buff/cond_add.cc index 05a20e8e..3cd59571 100644 --- a/server/gameserver/buff/cond_add.cc +++ b/server/gameserver/buff/cond_add.cc @@ -148,6 +148,7 @@ void CondAddBuff::ProcDisengageBattle() ( std::vector> hold_buff_list; long long last_check_frameno = 0; + bool handled = false; ); a8::XTimerWp timer = owner->room->xtimer.SetIntervalWpEx @@ -156,7 +157,7 @@ void CondAddBuff::ProcDisengageBattle() [this, context] (int event, const a8::Args* args) { if (a8::TIMER_EXEC_EVENT == event) { - if (!owner->dead) { + if (!owner->dead && !context->handled) { for (int buff_id : meta->_buff_param4_int_list) { int buff_uniid = owner->TryAddBuff ( @@ -180,6 +181,7 @@ void CondAddBuff::ProcDisengageBattle() } } } + context->handled = true; } } }, @@ -201,6 +203,7 @@ void CondAddBuff::ProcDisengageBattle() } context->hold_buff_list.clear(); } + context->handled = false; owner->room->xtimer.ResetTimer(timer); };