From fcb992a54e497d03f91cb91d2b18f8e3cc6e24d7 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 8 Mar 2023 10:12:04 +0800 Subject: [PATCH] 1 --- server/gameserver/buff/callfunc.cc | 7 +++++-- server/gameserver/skill.cc | 11 +++++++++++ server/gameserver/skill.h | 1 + 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/server/gameserver/buff/callfunc.cc b/server/gameserver/buff/callfunc.cc index fbe644c7..46a647dc 100644 --- a/server/gameserver/buff/callfunc.cc +++ b/server/gameserver/buff/callfunc.cc @@ -79,7 +79,10 @@ void CallFuncBuff::Deactivate() switch ((BuffCallFunc_e)meta->_int_buff_param1) { case BuffCallFunc_e::kAddMinorMode: { - + if (skill_meta) { + Skill* skill = owner->GetSkill(skill_meta->skill_id()); + skill->CancelMinorMode(); + } } break; case BuffCallFunc_e::kSpeedReduce: @@ -150,7 +153,7 @@ void CallFuncBuff::ProcAddMinorMode() if (owner_ptr.Get()) { if (action == 1) { owner_ptr.Get()->TryAddBuff(owner_ptr.Get(), meta_ptr->_int_buff_param4, skill_meta_ptr); - } else if (action) { + } else if (action == 0) { owner_ptr.Get()->TryAddBuff(owner_ptr.Get(), meta_ptr->_int_buff_param5, skill_meta_ptr); } } diff --git a/server/gameserver/skill.cc b/server/gameserver/skill.cc index 1fc4fded..08e6a1f9 100644 --- a/server/gameserver/skill.cc +++ b/server/gameserver/skill.cc @@ -1261,3 +1261,14 @@ void Skill::ProcJumpToPhase(const mt::SkillPhase* phase) Global::Instance()->verify_set_pos = 0; owner->room->grid_service->MoveCreature(owner); } + +void Skill::CancelMinorMode() +{ + if (GetMinorType() != SMT_NONE) { + minor_cb_(2); + minor_cb_ = nullptr; + if (!minor_mode_timer_.expired()) { + owner->room->xtimer.Delete(minor_mode_timer_); + } + } +} diff --git a/server/gameserver/skill.h b/server/gameserver/skill.h index 3669ce08..d02a82d5 100644 --- a/server/gameserver/skill.h +++ b/server/gameserver/skill.h @@ -42,6 +42,7 @@ class Skill std::function cb ); void DoMinorMode(); + void CancelMinorMode(); void ProcSkillPhase(const mt::SkillPhase* phase); private: