diff --git a/src/server/cstrike/gamerules.cpp b/src/server/cstrike/gamerules.cpp index fa532648..44e4d5a7 100644 --- a/src/server/cstrike/gamerules.cpp +++ b/src/server/cstrike/gamerules.cpp @@ -129,6 +129,11 @@ CSGameRules::PlayerPostFrame(base_player pp) pl.old_a_ammo3 = pl.a_ammo3; pl.old_cs_shotmultiplier = pl.cs_shotmultiplier; pl.old_cs_shottime = pl.cs_shottime; + + if (g_cs_gamestate != GAME_FREEZE) { + if (pl.progress <= 0.0f) + pl.flags &= ~FL_FROZEN; + } } diff --git a/src/server/cstrike/gamerules_multiplayer.cpp b/src/server/cstrike/gamerules_multiplayer.cpp index 9a4ebbe3..afcd89cc 100644 --- a/src/server/cstrike/gamerules_multiplayer.cpp +++ b/src/server/cstrike/gamerules_multiplayer.cpp @@ -102,13 +102,13 @@ CSMultiplayerRules::PlayerDeath(base_player pl) void CSMultiplayerRules::PlayerPreFrame(base_player pl) { + player pp = (player)pl; + if (pl.health <= 0) return; - if (g_cs_gamestate == GAME_FREEZE) { + if (g_cs_gamestate == GAME_FREEZE || pp.progress > 0.0f) { pl.flags |= FL_FROZEN; - } else { - pl.flags &= ~FL_FROZEN; } } diff --git a/src/server/cstrike/item_c4bomb.cpp b/src/server/cstrike/item_c4bomb.cpp index af17a8f2..c9558413 100644 --- a/src/server/cstrike/item_c4bomb.cpp +++ b/src/server/cstrike/item_c4bomb.cpp @@ -19,6 +19,7 @@ item_c4::ClearProgress(void) if (m_eUser != world) { player pl = (player)m_eUser; pl.progress = 0.0f; + pl.flags &= ~FL_FROZEN; } } @@ -65,6 +66,7 @@ item_c4::Logic(void) /* tracked stat */ pl.progress = m_flDefusalState; + pl.flags |= FL_FROZEN; } }