{
if(!IS_PLAYER(self) && !lockteams)
{
+ if(self.caplayer)
+ return;
if(nJoinAllowed(self))
{
if(autocvar_g_campaign) { campaign_bots_may_start = 1; }
else if(self.wasplayer && autocvar_g_changeteam_banned)
sprint(self, "^1You cannot change team, forbidden by the server.\n");
else
+ {
+ if(autocvar_g_balance_teams && autocvar_g_balance_teams_prevent_imbalance)
+ {
+ GetTeamCounts(self);
+ if(!TeamSmallerEqThanTeam(selection, self.team, self))
+ {
+ sprint(self, "Cannot change to a larger/better/shinier team\n");
+ return;
+ }
+ }
ClientKill_TeamChange(selection);
+ }
}
}
else
}
}
- if(IS_PLAYER(self) && autocvar_sv_spectate == 1)
- ClientKill_TeamChange(-2); // observe
-
- // in CA, allow a dead player to move to spectators (without that, caplayer!=0 will be moved back to the player list)
- // note: if arena game mode is ever done properly, this needs to be removed.
- if(self.caplayer && (IS_SPEC(self) || IS_OBSERVER(self)))
+ if((IS_PLAYER(self) || self.caplayer) && autocvar_sv_spectate == 1)
{
- sprint(self, "WARNING: you will spectate in the next round.\n");
- self.caplayer = 0;
+ if(self.caplayer && (IS_SPEC(self) || IS_OBSERVER(self)))
+ sprint(self, "WARNING: you will spectate in the next round.\n");
+ ClientKill_TeamChange(-2); // observe
}
}
return; // never fall through to usage