- Don't clamp all RNG calls to [0, FRACUNIT-1]. Only does this for P_RandomFixed now.
- Use rejection sampling for any clamped RNG calls, to remove modulo bias.
- Because of this, P_RandomRange ranges >= FRACUNIT are no longer undefined behavior.
- Added P_Random/M_Random to grab RNG output directly.
- Shuffle M_Random's RNG as well, since OS rand can be [0,INT32_MAX] instead of [0,UINT32_MAX].
- When selecting follower category, initial follower category is now the category of your last used follower (or None)
- More C/Extra button functionality:
- Profile selection: Toggle between your last used profile and guest
- Follower category: Toggle between category of your last selected follower and None
- Follower: Return to category selection and hover over None (flows seamlessly into above option)
- Fixes defaulting to follower id 0 (previously chao, currently hot robo) when joining a server without going through the menu flow
- No need to store TWO names for a follower, so save a little memory
- Should make it easier to add unlockable followers later
- Followers now have categories, definable in SOC
- New character select step: Follower category
- "None" is a category, just skips straight to Follower None
- Select a category to go to the previous regular follower selection step
- Press the C/Extra button to reset a character select step to its "default"
- Character: Center the character in the engine class (goes from [0,1] to [1,1], etc)
- Character alts: Centers the "primary" alt (prefers Eggman over Eggrobo)
- Skincolor: Centers the character's prefcolour
- Follower category: Centers on the "None" option
- Follower: [CURRENTLY NO BEHAVIOUR]
- Followercolor: Cycles between follower's defaultcolour, "Match", and "Opposite"
- Use default colours for followers when not select(ing/ed) follower colour, to match character selection
- Adjust offsets in general, including a rework bobbing handling, so there isn't a huge variance in follower position on-screen
- Move followers to draw in front of several elements, including the "A/B/C/D PLAYER" text and the rotatey wheel so you can actually see them
- Also applies to player: Don't mirror between sides of the screen - instead, rotate the virtual player object, so asymmetrical details aren't lost!
- Player-specific: Animate when READY !! to simlate starting your engine.
- Don't load level twice (only became apparent thanks to new console print warnings)
- Get first map of gametype instead of defaulting to Test Run
- Don't apply profile material
- If no clients at server start or after 10 seconds of GS_LEVEL, and no Netxcmd waiting to be digested, halt all SV_MakeTic.
- It's absolutely netsafe to only have enabled on the host's end, the only risk is that a dedicated server might not re-awaken when presented with certain stimuli
- Reduce the joiner grace period for normal ping limit to 10 seconds (from 30)
- Properly account for ignoring all local players when the host is splitscreen
# Conflicts:
# src/d_clisrv.c
Flattened due to changes between the code base including renamed functions.
Also renames CL_LEGACYREQUESTFAILED to the more specific CL_DOWNLOADFAILED.
Originally written by x.organic, flattened rewrite due to massive changes between RR and SRB2Kart codebase
Notable changes:
- p_adding_file has been reworked into partadd_earliestfile to allow for final setup to use
- much like the public version required removing TEXTURE SOCs, this one required removing Flats support from ANIMDEFS