Takes two screenshots for a list of maps that have an "Alternate View Point" thing with tag 0 -- one intended for level select pictures and another for Discord Rich Presence. If no view point exists, the map is skipped.
- V_SLIDEIN: For (G_IsTitleCardAvailable == false)/(versus at map start == true) contexts, use timeinmap instead of leveltime
- Don't reset timeinmap when reloading gamestate, so it's more functionally equivalent to lt_ticker
These two changes also fix the hypothetical issue of titlecard-less custom gametypes having weird HUD state on late netgame join.
Timeinmap is exclusively used for HUD, as is st_fadein. timeinmap also doesn't increment under g_fastforward, therefore the best candidate to tie together
- You can spawn in Tutorial Challenge, but only if a single can has been picked up already
- Don't print a (DEVELOP-only, but still annoying) error when it doesn't spawn in Tutorial Challenge
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.
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
- `EncoreMusic` on mapheader
- Supports up to 3 alt musics, as with every other type
- Do not vape/nightcoreify if provided
- To avoid complicating the Alt Music logic too much, uses "side B" of the same Prison Egg CD
- That is to say, if there are 2 encore tracks and 3 normal tracks, the second Encore track will only play if you've gotten the CD associated with the second normal track
I haven't actually tested it *with* any Encore music, but I've triplechecked literally everywhere to make sure it didn't break standard play
- 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
- It is possible to have a circuit map separated into
sections, where there are multiple "laps" before making
a full loop
- Normally the lap count is used to multiply the finish
line distance, but it fails for these maps
- The LapsPerSection property fixes the calculation by
specifying how many laps make up a full loop
- Default = 1 lap (most maps)