From 8f714b5d628b8c8184be33a22d19fd1a9c31cc2b Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 15 Mar 2024 17:39:30 +0800 Subject: [PATCH] 1 --- server/gameserver/buff/callfunc.cc | 22 ++++++++++++++++++++++ server/gameserver/skill.cc | 7 ++++--- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/server/gameserver/buff/callfunc.cc b/server/gameserver/buff/callfunc.cc index 7efacbe7..54e2973a 100644 --- a/server/gameserver/buff/callfunc.cc +++ b/server/gameserver/buff/callfunc.cc @@ -355,6 +355,15 @@ void CallFuncBuff::ProcAddMinorMode() auto owner_ptr = owner->GetWeakPtrRef(); auto meta_ptr = meta; auto skill_meta_ptr = skill_meta; +#ifdef MYDEBUG + if (owner_ptr.Get()->IsPlayer()) { + a8::XPrintf("ProcAddMinorMode buff_uniid:%d buff_id:%d dur_time:%d\n", + { + buff_uniid, + meta->buff_id(), + dur_time}); + } +#endif skill->AddMinorMode ( meta->_int_buff_param2, @@ -378,7 +387,11 @@ void CallFuncBuff::ProcAddMinorMode() owner_ptr.Get()->RemoveBuffById(buff_id); } } +#if 0 + } else if (action == kSmaTimeOut) { +#else } else if (action == kSmaTimeOut || action == kSmaCancel) { +#endif for (int buff_id : meta_ptr->_buff_param7_int_list) { owner_ptr.Get()->RemoveBuffById(buff_id); } @@ -388,6 +401,15 @@ void CallFuncBuff::ProcAddMinorMode() } } }); +#ifdef MYDEBUG + if (owner_ptr.Get()->IsPlayer()) { + a8::XPrintf("ProcAddMinorMode buff_uniid:%d buff_id:%d dur_time:%d 2222222222222222\n", + { + buff_uniid, + meta->buff_id(), + dur_time}); + } +#endif } } } diff --git a/server/gameserver/skill.cc b/server/gameserver/skill.cc index 6a5a4871..2cac3f21 100644 --- a/server/gameserver/skill.cc +++ b/server/gameserver/skill.cc @@ -483,13 +483,14 @@ void Skill::ProcJumpToPhase(const mt::SkillPhase* phase) void Skill::CancelMinorMode() { if (GetMinorType() != SMT_NONE) { - if (minor_cb_) { - minor_cb_(kSmaCancel); - } + auto old_cb = minor_cb_; minor_cb_ = nullptr; if (!minor_mode_timer_.expired()) { owner->room->xtimer.Delete(minor_mode_timer_); } + if (old_cb) { + old_cb(kSmaCancel); + } } }