diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 0cb550a..fbebcc0 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -2957,3 +2957,15 @@ void Human::AutoChgWeapon() curr_weapon = &weapons[0]; } } + +void Human::CancelRevive() +{ + if (dead && revive_timer && !real_dead) { + dead = true; + real_dead = true; + downed = false; + FreeDownedTimer(); + OnDie(); + FreeReviveTimer(); + } +} diff --git a/server/gameserver/human.h b/server/gameserver/human.h index e103685..65a758a 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -250,6 +250,7 @@ protected: Buff* GetBuffById(int buff_id); void ProcSkillPhase(MetaData::SkillPhase* phase); void AutoChgWeapon(); + void CancelRevive(); private: void ClearFrameData(); diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 27de264..efba3c8 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -1103,6 +1103,7 @@ void Player::_CMVoice(f8::MsgHdr& hdr, const cs::CMVoice& msg) void Player::_CMGameOver(f8::MsgHdr& hdr, const cs::CMGameOver& msg) { + CancelRevive(); SendGameOver(); } @@ -1161,12 +1162,5 @@ void Player::_CMRevive(f8::MsgHdr& hdr, const cs::CMRevive& msg) void Player::_CMCancelRevive(f8::MsgHdr& hdr, const cs::CMCancelRevive& msg) { - if (dead && revive_timer && !real_dead) { - dead = true; - real_dead = true; - downed = false; - FreeDownedTimer(); - OnDie(); - FreeReviveTimer(); - } + CancelRevive(); }