From e4bd23b8f18d393684f15eb0ef2ab8571c772454 Mon Sep 17 00:00:00 2001 From: terencehill Date: Sat, 30 May 2020 16:24:23 +0200 Subject: [PATCH] Allow normal revival during automatic revival. It fixes issues with the revive progress indicator --- .../gamemode/freezetag/sv_freezetag.qc | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/qcsrc/common/gamemodes/gamemode/freezetag/sv_freezetag.qc b/qcsrc/common/gamemodes/gamemode/freezetag/sv_freezetag.qc index 5b4c80e7f..360dc7a4e 100644 --- a/qcsrc/common/gamemodes/gamemode/freezetag/sv_freezetag.qc +++ b/qcsrc/common/gamemodes/gamemode/freezetag/sv_freezetag.qc @@ -486,24 +486,23 @@ MUTATOR_HOOKFUNCTION(ft, PlayerPreThink, CBC_ORDER_FIRST) entity reviving_players_last = NULL; entity reviving_players_first = NULL; - int n; - if(player.freezetag_frozen_timeout > 0 && time >= player.freezetag_frozen_timeout) - n = -1; - else - { - n = 0; - vector revive_extra_size = '1 1 1' * autocvar_g_freezetag_revive_extra_size; - FOREACH_CLIENT(IS_PLAYER(it) && IS_REVIVING(player, it, revive_extra_size), { - if (reviving_players_last) - reviving_players_last.chain = it; - reviving_players_last = it; - if (!reviving_players_first) - reviving_players_first = it; - ++n; - }); + int n = 0; + vector revive_extra_size = '1 1 1' * autocvar_g_freezetag_revive_extra_size; + FOREACH_CLIENT(IS_PLAYER(it) && IS_REVIVING(player, it, revive_extra_size), { if (reviving_players_last) - reviving_players_last.chain = NULL; - } + reviving_players_last.chain = it; + reviving_players_last = it; + if (!reviving_players_first) + reviving_players_first = it; + ++n; + }); + if (reviving_players_last) + reviving_players_last.chain = NULL; + + // allow normal revival during automatic revival + // (not allowing it IS_REVIVING should check freezetag_frozen_timeout too) + if (!n && player.freezetag_frozen_timeout > 0 && time >= player.freezetag_frozen_timeout) + n = -1; if (!n) // no teammate nearby { -- 2.39.2