From 803f0ae873ffbfe3a02c7caa5ba1296f98cc8c2f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 10 Apr 2024 15:51:08 +0800 Subject: [PATCH] 1 --- server/gameserver/creature.cc | 38 +++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 0037160e..a0a9ed58 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -1721,26 +1721,30 @@ void Creature::CheckSpecObject(int new_poly_flags) if (a8::HasBitFlag(poly_ext_flags_, i)) { ClearBuffById(8058); RemoveBuffById(kInGrassBuffId); + if (!battling_grass_hide_delay_timer.expired()) { + room->xtimer.Delete(battling_grass_hide_delay_timer); + } } else { TryAddBuffAndSetTime(this, kInGrassBuffId, 9999999); - if (battling_grass_hide_delay_timer.expired() && - (room->GetFrameNo() - last_battling_frameno) * FRAME_RATE_MS < - mt::Param::s().battling_disengage_time) { - int dur_time = mt::Param::s().battling_grass_hide_delay_time; - battling_grass_hide_delay_timer = room->xtimer.SetTimeoutWpEx - ( - dur_time / FRAME_RATE_MS, - [this] (int event, const a8::Args* args) - { - if (a8::TIMER_EXEC_EVENT == event) { - if (HasBuffEffect(kBET_InGrass) && !dead) { - TryAddBuffAndSetTime(this, 8058, 9999999); + if (battling_grass_hide_delay_timer.expired()) { + if ((room->GetFrameNo() - last_battling_frameno) * FRAME_RATE_MS < + mt::Param::s().battling_disengage_time) { + int dur_time = mt::Param::s().battling_grass_hide_delay_time; + battling_grass_hide_delay_timer = room->xtimer.SetTimeoutWpEx + ( + dur_time / FRAME_RATE_MS, + [this] (int event, const a8::Args* args) + { + if (a8::TIMER_EXEC_EVENT == event) { + if (HasBuffEffect(kBET_InGrass) && !dead) { + TryAddBuffAndSetTime(this, 8058, 9999999); + } } - } - }, - &xtimer_attacher); - } else { - TryAddBuffAndSetTime(this, 8058, 9999999); + }, + &xtimer_attacher); + } else { + TryAddBuffAndSetTime(this, 8058, 9999999); + } } } }