Fixes two bugs:
- Attract mode carrying over to gameplay if an attract
demo is allowed to finish without interrupting it
- Credits ending after the first replay ends
The original purpose was to make using the map command allow for multiple tries, ala standard console testing, but the condition was way too permissive and was promoting all esoteric map overrides to undue importance for the end of the Cup's evaluation.
- Most R_SkinAvailable calls should be returning index into demo.skinlist (same numerical value as when demo was recorded), for demo sync
- A handful of general things permit exception for this
- Expose `replaynumskins` (calculated as `(demo.playback ? demo.numskins : numskins)`) to Lua
- There's *always* more that can be done for this, but this is the minimum spec that can at least be somewhat stable
- Remove CV_NOSHOWHELP, so the config file can load
- Do not stealth set the cvar, so it is not dependent on
order of operations of config loading and challenge
loading
Use G_PartySize/G_LocalSplitscreenPartySize instead of
r_splitscreen/splitscreen. This should be less
error-prone in case r_splitscreen fails to be updated
somehow.
- 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