Goes hand in hand with the previous commit's highlight feature at being accessibility UI polish for the intimidating number of Challenges we have.
Finally, there's a consistent frame of reference for where you are scrolling through the board!
Game design solution to the problem of multiple Challenges being unlocked at once not being clear enough.
Uses the `unlockpending` array for gamedata save purposes, which I was always intending to use for this purpose but never quite got around to.
Guarantees netUnlocked is correctly updated in most contexts, since that's dependent on SV_ResetServer, which isn't called if a server is running
Also guarantees titlemapinaction isn't true during regular play
Func specifically for setting name for CPU players.
Lets anything go in offline mode, as per previous behaviour.
In online mode, attempts to append a slot-specific char before running EnsurePlayerNameIsGood (which removes characters at the end if a pre-existing match is found).
Should resolve the crash which for some reason doesn't have an issue to reference here
Also, for `debugprisoncd On`:
- Extensive debug logging
- Disable the "if all achieved, still force a pre-existing CD" behaviour
- The list is empty if you've achieved every Prison CD and then restart the game, so it wasn't consistent at always making something. Without that kind of reliability I think it's more important for it to just be a fastforward
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
- Use menu font for speaker's name
- Make the Z input in the top left of the box animate if the dialogue can be closed/go to the next page
- Exempt certain sigils from punctuation delay that look awkward ( + and " )
- Additional comments, since this has always been kind of a rat's nest
- Use W_CheckNumForLongName for extensionless string parameter
- So you can play staffghosts.pk3 lumps via the `playdemo` console command
- If missing at launch, would have been a regression compared to the previous entry in the series
- Gate the virtres support behind a `#define`
- This isn't how we're shipping staff ghosts with the game anymore, so this would have been the only way to access them
- SKIPERRORS `#define`: Only show errors if the demo is guaranteed external, instead of suppressing them exclusively if confirmed internal
- Hides errors for restarting a staff ghost
- Prevents duplication of errors for restarting an external ghost