This avoids an issue where the skins array takes up a fixed, but large
amount of memory at runtime. On x86_64 linux, that array is roughly 80
megabytes in memory, most of which is unused when the game is unmodded.
Instead, we treat `skins` as a dynamically resizing array, and it is an
array-of-pointers into separate allocated `skin_t`.
This is based on Lactozilla's skin limit MR for SRB2, but I've rewritten
it because RR has diverged quite a bit.
This was verified to check every access of `skins` by using clangd's
find-all-references function. However, I have only tested plain skins,
not Lua addons, so that could afford some extra checking.
Servers should get enough free for a healthy launch ecosystem, but not everything.
We'll give the relevant password out after, like, the first week probably? Please be patient, commit-diver
- Map visitation flags (used for level select access) are now cleared by using "Clear Challenges Data" instead
- Custom courses will still have their data completely wiped here because it's the case most likely to mean "I want to remove everything", and because I don't want to pick through all the possible places to nuke 'em
- Skin stats (and Eidolon's map stats) are now cleared by using "Clear Statistics Data" instead
- All gametypes will be shown in the drawer, as opposed to just Race
- However, don't attempt to add the preview pic for CUPCACHE_SPECIAL (the Sealed Star)
- Credits demos will erase grandprixinfo
- Call F_InitGameEvaluation (new function) at the
beginning of the credits to cache the needed data from
grandprixinfo
- Fixes the evaluation screen not showing up for GP
credits
- Cases for lives specifically and not retrying use
G_GametypeUsesLives
- Such as HUD elements and GAME OVER
- Cases for retrying and losing lives use
G_GametypeAllowsRetrying
- Such as GP bonus rounds
You'll see the Platinum time to reach as a guiding star when Time Attacking the specific course, but with no accompanying empty medal icon.
Also
- fixes an x coordinate issue for higher medal quantity on the version that draws under the timestamp
- cache SECRET_ENCORE and SECRET_SPBATTACK availability in the statistics drawer too
Plugs a game design oversight that thankfully was completely sidestepped by all but one Attack replay
Replaces the reset that happened on lightsnake at -20.
Set a specific gamespeed per gametype. KARTSPEED_AUTO for it to be decided by game settings.
Wanted this for a while, but also it makes game speed display logic for DRP very straightforward.
- Pressing/holding any input will now skip only ONE screen of the Intro, like a REAL VIDEOGAME
- Allow you to skip before the end of INTROSCENE_DISCLAIMER, but only once the text has been solid for half a second
- Fix regression re exiting title demos after using -skipintro command line parameter
- intro_scenenum was stuck at 0, so the game was softlocked!
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
- If you lost and waited for TRY AGAIN to finish and
automatically restart the map (did not touch Retry in the
pause menu)
- Doing this would add TWO continues to your rank
calculation and nerf the bot difficulty twice
- Did not affect lives at all
- This is symmetrical with splitscreen behavior
- One edge case: if you switch away from the player after
the level music stops but before the intermission music
starts, then the silence will continue until you view
another tally that reaches the intermission music
- I think the benefit of doing the proper tally music at
all outweighs this edge case
- Cross a finish line so your lap goes forward and your
waypoints update ahead of the line
- Turn around to face the opposite direction
- Do this on a map where the lap cheat timer activates
when you turn around
- Drive a little way backward and make sure the lap cheat
timer keeps going
- Activate Ring Shooter and start lightsnaking
- Immediately spectate and then rejoin
- The lightsnake would send you ahead of the finish line
and give you an extra lap