If an admin title cecho is active, do not render individual viewport title cechos.
Some information is lost, but currently everything expressed through them is not unique while admin title cechos generally are, so they're a safe thing to sacrifice given limited screen space.
Punctuation, like ellipsis, normally offsets the centered
position of text. But this looks subjectively weird. By
not counting it, punctuation is basically allowed to
extend further off to the sides.
The difference looks like:
CENTER
||
\/
||
OLD: | TOO LATE... |
||
NEW: | TOO LATE... |
||
/\
||
CENTER
- Takes player argument and only appears on the screen if
they're a display player.
- Uses 4P font when in splitscreen.
- Uses 1P font if not in splitscreen, or player argument
is NULL -- message to everyone.
- Interrupt argument controls whether the message should
overwrite another message that's already playing.
- Global and player specific messages are considered
separately.
- 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
Fixes player death not ending a Prisons round, bugged
debug feature.
Now, do it properly. Don't end the round if the last
player spectates.
This is more than a debug feature; in Free Play, it lets
the player spectate and fly around if they want to, and
even come back in, all without restarting the level.
- 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
The prepended colour list passed to M_Shuffle_UINT16 was off by one, leading to possible pollution of the region with an uninitialised value.
For some reason, some people's machines guarantee clean stack memory on game startup, while other people's do not. This is why some people were crashing on Spray Can list generation and some weren't.
The stack memory was DEFINITELY not clean by the time you could navigate to the gamedata clear menu, which is why that was crashing without fail.
Just in case I don't get to do a major pass on adding a ton of extra unlockable conditions later, this is an easy, quick add featuring a stat gamedata and the statistics menu has been tracking for a while.
- Skin_OnChange
- Now always checks for cheats for any machine-local player skin change in non-netgame, non-K_CanChangeRules contexts
- Previously applied only to consoleplayer in Time Trial
- Color_OnChange
- Fixes straight up incorrect condition that prevented honest players from changing color mid-game via the developer console