diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index f6fdfd70..1cb93616 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -4501,21 +4501,25 @@ void Human::InternalBeKill(int killer_id, const std::string& killer_name, int we SetHP(0.0f); KillMgr::Instance()->OnHumanDead(this, &info); room->frame_event.AddDead(GetWeakPtrRef(), 1000 * 15); - dead_timer = room->xtimer.AddDeadLineTimerAndAttach - (MetaMgr::Instance()->revive_time * SERVER_FRAME_RATE, - a8::XParams() - .SetSender(this), - [] (const a8::XParams& param) - { - Human* hum = (Human*)param.sender.GetUserData(); - hum->real_dead = true; - }, - &xtimer_attacher.timer_list_, - [] (const a8::XParams& param) - { - Human* hum = (Human*)param.sender.GetUserData(); - hum->dead_timer = nullptr; - }); + if (GetBattleContext()->GetReviveCoin() > 0) { + dead_timer = room->xtimer.AddDeadLineTimerAndAttach + (MetaMgr::Instance()->revive_time * SERVER_FRAME_RATE, + a8::XParams() + .SetSender(this), + [] (const a8::XParams& param) + { + Human* hum = (Human*)param.sender.GetUserData(); + hum->real_dead = true; + }, + &xtimer_attacher.timer_list_, + [] (const a8::XParams& param) + { + Human* hum = (Human*)param.sender.GetUserData(); + hum->dead_timer = nullptr; + }); + } else { + real_dead = true; + } } else { dead = true; real_dead = true;