diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 939d8f30..3a6b5722 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -1120,6 +1120,9 @@ void Human::DecHP(float dec_hp, int killer_id, const std::string& killer_name, i dec_hp = std::max((float)1.0, dec_hp - buff->meta->param2); } } + if (HasBuffEffect(kBET_Invincible)) { + return; + } auto downed_func = [] (const a8::XParams& param) { diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 87e1dcbc..daee18cf 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -1,5 +1,4 @@ #include "precompile.h" - #include #include @@ -1091,6 +1090,9 @@ void Player::_CMRevive(f8::MsgHdr& hdr, const cs::CMRevive& msg) int buff_uniid = TryAddBuff(this, kInvincibleBuffId); if (buff_uniid) { Buff* buff = GetBuffByUniId(buff_uniid); + if (buff) { + room->xtimer.ModifyTimer(buff->remover_timer, 6 * SERVER_FRAME_RATE); + } } } }