- Prevents a map from appearing on the vote screen if
there are too many players
- LobbySize
- Duel - 2 players max
- Small - 5 players max
- Medium - 10 players max
- Large - 16 players max (default if not set)
- Future proofing
- Doesn't count bot players in gametypes that don't
support bots
Notable deletions:
- Metal Sonic Race
- Includes all the specialised recording/playback apparatus which made g_demo.c harder to read
- A bunch of hyperspecialised code inside several A_ actions
- EXCEPTION: intentfully left in the spriteless SMK stuff for Sal's add-on down the line.
- Tag-0 specified times of less than a second
- Invalid tags
- <= AUTOMEDAL_MAX (invalid Auto Medal)
- >= course's ghostCount (invalid specific Ghost-matching Medal)
- AUTOMEDAL_ with invalid number of Ghosts
- PLATINUM with no best Ghost to match
- All other types with less than two associated ghosts
- Loop over each set of conditions twice
- first to determine relevant level/gametype
- secondly to evaluate everything else in that context
- Pick up called events which are invalid for the relevant gametype
- Pick up multiple levels per single condition
- Force to play when selecting "START GAME" from the Goner Setup
- Make far shorter on the First Boot, obscuring the extended Kart Krew vroom, to prevent it playing identically twice
- Prevent skipping the intro at all if Ring Cup hasn't been unlocked
- Both for the shortened initial startup and the START GAME first encounter
- It already clears dirmenu if relevant, don't do that twice
- There's a freeze cheat bool to freeze everything except for players.
- There's a level freeze bool to freeze literally everything.
- There's a frozen bool on mobj_t to explicitly control freeze status on an object.
- G_AddPlayer now contains CL_ClearPlayer, G_DestroyParty, and playeringame set
- Instead of a nasty, complicated block in P_SpawnPlayer, externalise it into G_SpectatePlayerOnJoin
- All mid-game human player-to-spectator transitions are handled by P_SetPlayerSpectator, instead of lots of `spectator = true` and associated boilerplate
- Simplifies Got_Teamchange MASSIVELY
- Of course this is helped by also stripping back team change
- This is called by P_KillPlayer, too
- P_KillPlayer no longer eats DMG_SPECTATOR when lightsnaking or exiting
- G_GametypeHasSpectators condition tidied
- No need to call CV_RegisterVar
- Cvar definitions live in only one file, easier to locate
- Organized into sections -- netvars, cheats, etc.
- Use builder pattern to initialize cvars
- Still need to extern if you want to read the cvar value