This commit is contained in:
aozhiwei 2023-10-02 21:08:07 +08:00
parent bd1ae29826
commit aa7be551cd

View File

@ -3386,6 +3386,43 @@ void Human::InternalBeKill(int killer_id, const std::string& killer_name, int we
KillMgr::Instance()->OnHumanDead(this, &info);
room->frame_event.AddDead(GetWeakPtrRef(), 0);
}
} else if (room->IsMobaModeRoom()) {
dead = true;
real_dead = false;
downed = false;
SetHP(0.0f);
if (real_killer_id != GetUniId() && GetTeam() && GetTeam()->HasReviveCoin(this)) {
real_dead = true;
dead_frameno = room->GetFrameNo();
GetTrigger()->Die(killer_id, weapon_id);
if (real_dead) {
real_dead = false;
OnDie();
KillMgr::Instance()->OnHumanDead(this, &info);
room->frame_event.AddDead(GetWeakPtrRef(), 1000 * mt::Param::s().revive_time);
dead_timer = room->xtimer.SetTimeoutWpEx
(mt::Param::s().revive_time * SERVER_FRAME_RATE,
[this] (int event, const a8::Args* args)
{
if (a8::TIMER_EXEC_EVENT == event) {
real_dead = true;
SendGameOver();
}
},
&xtimer_attacher);
} else {
OnDie();
KillMgr::Instance()->OnHumanDead(this, &info);
room->frame_event.AddDead(GetWeakPtrRef(), 0);
}
} else {
real_dead = true;
dead_frameno = room->GetFrameNo();
GetTrigger()->Die(killer_id, weapon_id);
OnDie();
KillMgr::Instance()->OnHumanDead(this, &info);
room->frame_event.AddDead(GetWeakPtrRef(), 0);
}
} else {
if (room->GetGasData().old_area_meta &&
room->GetGasData().old_area_meta->CanRevive() &&