by Spike » Fri Mar 27, 2015 9:24 pm
the problems the qc comment aludes to are:
1) svc_intermission won't be shown for late joiners (qc would need to send it).
2) a delayed svc_intermission will show the wrong end time (there's no sane way for qc to work around this, although I suspect generating a manual svc_time would do it, but would probably break things at the same time).
3) qc doesn't track which svc_finale message was displayed (again, logically this is the qc's job).
4) oldone.qc/end.bsp sets intermission_exittime to something really high. a new player joining the game is the only way for a dedicated coop server to progress.
5) qc doesn't move the player to an intermission spot when they join mid-intermission
these things could be fixed satisfactorily via qc, but its somewhat rare and much easier to just move to the next map. besides, in deathmatch, moving to the next map helps you wake up when someone new joins.
the server isn't aware of intermission at all, the qc does all intermission-related serving.
the client is aware of intermission, but only cares as far as the hud/scoreboard/finale is concerned.
.team is set according to the player's lower colours, as the server is unaware of intermissions, there is no reason for me to believe that there is anything wrong here. 1 is a valid value if your lower colour is 0 (or white).
the client will send a "color" command just before it sends the "spawn" command, so the .team field is guarenteed to be set correctly before ClientConnect+PutClientInServer are called.
makestatic/staticsound builtins write their data to the MSG_INIT buffer. as a result, clients only see these if they join AFTER the builtin was called. its possible for a server to also send it to current clients, but this can potentially result in duplicates if not handled correctly.
.