diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index dd719ec..2c240b0 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -1900,6 +1900,15 @@ void Human::ProcSkillPhase(MetaData::SkillPhase* phase) } } }; + auto explosion_check_func = + [] (const a8::XParams& param) + { + Obstacle* obstacle = (Obstacle*)param.sender.GetUserData(); + if (!obstacle->dead) { + obstacle->dead = true; + obstacle->Explosion(); + } + }; switch (phase->func_id) { case Skill_Jump: @@ -1957,14 +1966,7 @@ void Human::ProcSkillPhase(MetaData::SkillPhase* phase) room->xtimer.AddDeadLineTimerAndAttach(SERVER_FRAME_RATE * 5, a8::XParams() .SetSender(obstacle), - [] (const a8::XParams& param) - { - Obstacle* obstacle = (Obstacle*)param.sender.GetUserData(); - if (!obstacle->dead) { - obstacle->dead = true; - obstacle->Explosion(); - } - }, + explosion_check_func, &obstacle->xtimer_attacher.timer_list_); } }