if (IS_PLAYER(this))
{
- if (autocvar_sv_maxidle_playertospectator > 0 && CS(this).idlekick_lasttimeleft)
- {
- Kill_Notification(NOTIF_ONE_ONLY, this, MSG_CENTER, CPID_IDLING);
- CS(this).idlekick_lasttimeleft = 0;
- CS(this).parm_idlesince = time;
- }
-
if(GetResource(this, RES_HEALTH) >= 1)
{
// despawn effect
if (this.caplayer)
this.caplayer = 0;
PutObserverInServer(this);
- CS(this).parm_idlesince = time;
}
else
{
return false;
}
LogTeamChange(player.playerid, player.team, type);
- if (team_index != old_team_index)
+ if (team_index == -1)
{
- PlayerScore_Clear(player);
- if (team_index != -1)
+ if (autocvar_sv_maxidle_playertospectator > 0 && CS(player).idlekick_lasttimeleft)
{
- Send_Notification(NOTIF_ALL, NULL, MSG_INFO, APP_TEAM_NUM(
- player.team, INFO_JOIN_PLAY_TEAM), player.netname);
+ // centerprint is killed and timestamps are reset here to ensure
+ // it's done even when manually speccing during the countdown
+ Kill_Notification(NOTIF_ONE_ONLY, player, MSG_CENTER, CPID_IDLING);
+ CS(player).parm_idlesince = time;
+ CS(player).idlekick_lasttimeleft = 0;
}
- else
+ else if (!CS(player).just_joined && player.frags != FRAGS_SPECTATOR)
{
- if (!CS(player).just_joined)
- {
- Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_QUIT_SPECTATE,
- player.netname);
- }
+ Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_QUIT_SPECTATE, player.netname);
}
+ }
+ else if (team_index != old_team_index)
+ {
+ PlayerScore_Clear(player);
+ Send_Notification(NOTIF_ALL, NULL, MSG_INFO, APP_TEAM_NUM(player.team, INFO_JOIN_PLAY_TEAM), player.netname);
KillPlayerForTeamChange(player);
if (!IS_BOT_CLIENT(player))
{
TeamBalance_AutoBalanceBots();
}
}
- else if (team_index == -1)
- {
- if (!CS(player).just_joined && player.frags != FRAGS_SPECTATOR)
- Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_QUIT_SPECTATE, player.netname);
- }
return true;
}