diff --git a/regamedll/dlls/client.cpp b/regamedll/dlls/client.cpp index d15cffb93..daee11d12 100644 --- a/regamedll/dlls/client.cpp +++ b/regamedll/dlls/client.cpp @@ -1893,6 +1893,15 @@ BOOL EXT_FUNC __API_HOOK(HandleMenu_ChooseTeam)(CBasePlayer *pPlayer, int slot) } } +#ifdef REGAMEDLL_FIXES + // Both teams are full and no bot could be vacated, deny; + // otherwise the player would get into the game while on UNASSIGNED team + if (team == UNASSIGNED) + { + return FALSE; + } +#endif + break; } case MENU_SLOT_TEAM_SPECT: diff --git a/regamedll/dlls/player.cpp b/regamedll/dlls/player.cpp index 90572ada2..c5c7b0e20 100644 --- a/regamedll/dlls/player.cpp +++ b/regamedll/dlls/player.cpp @@ -10731,7 +10731,8 @@ bool EXT_FUNC CBasePlayer::__API_HOOK(GetIntoGame)() void CBasePlayer::PlayerRespawnThink() { #ifdef REGAMEDLL_ADD - if (GetObserverMode() != OBS_NONE && (m_iTeam == UNASSIGNED || m_iTeam == SPECTATOR)) + // Players without a team can never respawn (e.g. stuck at team menu when both teams are full) + if (m_iTeam == UNASSIGNED || m_iTeam == SPECTATOR) return; // Player cannot respawn while in the Choose Appearance menu