void nades_Clear(entity player);
-#define CA_ALIVE_TEAMS_OK() (Team_GetNumberOfAliveTeams() == NumTeams(ca_teams))
float CA_CheckWinner()
{
if(round_handler_GetEndTime() > 0 && round_handler_GetEndTime() - time <= 0)
static int prev_missing_teams_mask;
allowed_to_spawn = true;
CA_count_alive_players();
- if(CA_ALIVE_TEAMS_OK())
+ if (Team_GetNumberOfAliveTeams() == NumTeams(ca_teams))
{
if(prev_missing_teams_mask > 0)
Kill_Notification(NOTIF_ALL, NULL, MSG_CENTER, CPID_MISSING_TEAMS);
{
entity player = M_ARGV(0, entity);
- if (player.caplayer == 1)
+ if (IS_PLAYER(player) && !IS_DEAD(player))
ca_LastPlayerForTeam_Notify(player);
return true;
}
{
entity player = M_ARGV(0, entity);
- if (!IS_DEAD(player))
+ if (IS_PLAYER(player) && !IS_DEAD(player))
ca_LastPlayerForTeam_Notify(player);
if (player.killindicator_teamchange == -2) // player wants to spectate
player.caplayer = 0;
{
entity client = M_ARGV(0, entity);
- if (!autocvar_g_ca_spectate_enemies && client.caplayer)
+ if (!autocvar_g_ca_spectate_enemies && client.caplayer
+ && Team_GetNumberOfAlivePlayers(Entity_GetTeam(client)))
{
entity targ = M_ARGV(1, entity);
M_ARGV(1, entity) = CA_SpectateNext(client, targ);
entity targ = M_ARGV(1, entity);
entity first = M_ARGV(2, entity);
- if (!autocvar_g_ca_spectate_enemies && client.caplayer)
+ if (!autocvar_g_ca_spectate_enemies && client.caplayer
+ && Team_GetNumberOfAlivePlayers(Entity_GetTeam(client)))
{
do { targ = targ.chain; }
while(targ && DIFF_TEAM(targ, client));
return MUT_SPECPREV_RETURN;
}
}
+ else
+ return MUT_SPECPREV_CONTINUE;
M_ARGV(1, entity) = targ;