diff --git a/server/gameserver/guide.cc b/server/gameserver/guide.cc index cdcecade..50bbafa6 100644 --- a/server/gameserver/guide.cc +++ b/server/gameserver/guide.cc @@ -255,6 +255,7 @@ void Guide::ProcUseSkillAndKillEnemy() auto context = A8_MAKE_ANON_STRUCT_SHARED ( std::vector heros; + std::vector> handlers; ); { @@ -321,6 +322,20 @@ void Guide::ProcUseSkillAndKillEnemy() } }, &owner_->xtimer_attacher); + + context->handlers.push_back + (owner_->GetTrigger()->AddListener + ( + kUseSkillEvent, + [this, context] (const a8::Args& args) mutable + { + Skill* skill = args.Get(0); + if (curr_step_meta_->_int_param1 == skill->meta->skill_id()) { + NextStep(); + owner_->GetTrigger()->RemoveEventHandlers(context->handlers); + } + }) + ); } void Guide::ProcUseSkill() @@ -338,8 +353,8 @@ void Guide::ProcUseSkill() { Skill* skill = args.Get(0); if (curr_step_meta_->_int_param1 == skill->meta->skill_id()) { - owner_->GetTrigger()->RemoveEventHandlers(context->handlers); NextStep(); + owner_->GetTrigger()->RemoveEventHandlers(context->handlers); } }) );