- Update chars.kart hash, AGAIN!
- Fix spectators being visible on minimap when F12ing people
- Optimize how splitscreen players are drawn on top of the minimap
- Remove duplicated cvar registrations
- Move cv_resynchattempts and cv_netticbuffer from D_ClientServerInit to D_RegisterServerCommands and D_RegisterClientCommands respectively, so they can save to config properly
- Increase "Frequent" gametype switch frequency even more
- "SRB2" version dehacked warning ignores srb2.srb
* Make G_SetGameModified only console-print for major mods.
* Add amnesty to "major mod" detection while loading files with custom savedatas.
* Improved the console prints for command `isgamemodified`.
* If your file defines state and object freeslots in SOC, you are allowed to modify those freeslots IN ANY SOC SCRIPT IN THE SAME FILE without being marked as a "major mod".
* If your file contains broken unlockables/emblems that don't actually have effect for any reason, it's not counted as a "major mod".
* Added add-ons menu message for adding a "major mod".
# Conflicts:
# src/command.c
# src/command.h
# src/g_game.c
# src/m_menu.c
# src/sdl/i_system.c
# src/sdl/i_video.c
# src/sdl/sdlmain.h
This is NOT just a normal merge commit. I have adjusted the hotplugging code from stableid to account for the last two players, and also removed new 2.1 additions that were deemed irrelevant to Kart.
Needs the config default-changing shenanigans done still, not sure how to tackle that yet. Now the game is TOTALLY playable from a fresh install if you just plug in a controller.
* Add missing vars highlightflags, recommendedflags, warningflags from Kart
* V_GetStringColormap() use vanilla behavior because Kart behavior glitches for us
* V_GetStringColormap() made non-static
* Don't save cv_usejoystick/2 because hotplugging changes can be made invalid by next run
* Properly set cv_usejoystick/2 for menu toggling
* Force-disable a player's joystick if setting another player's joystick to the same device
* Properly set cv_usejoystick/2 value of BOTH target player AND other players when hotplugging and unplugging
I meant to fix the previous method, but I didn't even understand how it knew it was in a vote or not... so I just did it my own way :V
(Shouldn't FLUSHMAPBUFFEREARLY be on now...?)
Shadowed declarations
Unsuffixed float constants
There's an unsuffixed float constant I can't fix because the define is outside of SRB2. We could have our own copy of Pi if we really wanted.
* Use CV_NOSHOWHELP as an obstacle for CV_CompleteVar (so the hidden variables don't show up and ruin our party or anything).
* Hack around the karteliminatelast thing so we don't have to hex-edit the netids, and can release with current assets (but a different executable, of course, to get the credits).
* Fix M_HandleConnectIP not saving your current position on the menu if you use it while it's empty.
- Swap order of Silver & Gold, for menu appearances & bug fixing
- Ensure that totalplaytime and matchesplayed aren't kept when M_ClearSecrets getss called in M_EraseDataResponse
- Set sensible defaults for emblem sprite/color
* Make the maximum number of staff ghosts 99 instead of 100. It's a minor thing, and insignificant in the grand scheme of things, but it fixes a bugbear I haven't been able to get out of my head since originally starting to maintain this code. (In the case of 100, it'd do S00, which'd have some fucky effects on ordering. If we WANTED to start with S00, we shoulda used that slot in the first place.)
(Huge change: NO_MIDI is now a define, simply because that makes it easier for me to resolve merge conflicts if I can see the original code and the new code. Also means that people who REALLY miss MIDI can compile & fix it themselves :P)
* Rename "suicide" command to "respawn" so the game doesn't tell you to kill yourself when you try to get help for it.
* Add a "manual" command to open the manual.
Also: Remove playercolor being set to the replay's color. No need to kill your settings, seeing as it makes no tangible effect on your replay (doesn't even lose colour when you die, so I don't even know...)
* Oni's new 1x Bumpers and Out-Of-Bumpers competition-style 'X'!
* Modify alignment for `GOTITx` emblem drawing to match new Chaos Coin sprites.
* Adjust m_cond.c list to use new Chaos Coin Emblem sprite slots.
* Do that thing where the character icons are ALWAYS 1x sized, through having two seperate lumps.
* Revamp the S_SKIN parameters to be `facerank` (rankings - equivalent of half-scale old face), `facewant` (WANTED - equivalent of old face), and `facemmap` (equivalent of old iconprefix).
* Do that thing Oni wanted where it shows two postions above and two positions below your current ranking (and you) to the left of the screen, instead of always the top 4, with some limits to avoid drawing outside of everything.
* Replace the last few shitty Mario numbers (for the left rankings) with cool, new Oni numbers.
* Change a bunch of offsets and things so the tab rankings and the intermission work nicer with 9+ players.
* gr_md2 on the menu.
* Disable interpolerated model option completely for now.
Also, tweaked the GL menus a bit to suck less, since I was ferreting around in that area.
Learned the cause of the seemingly random crashes it causes; doesn't seem easy to fix, so it can stay a relatively-unknown console command until it does
* Fixed the conditionals for `suicide` and `retry` commands - `suicide` is now allowed in singleplayer, and `retry` no longer checks your lives (for now).
* Disable the "traditional" level reload method (which `retry` tried to use), since it was completely broken with the other changes we've made. Mapchanges only.
* Made retries cause a mapchange, per the above.
* Disable the last source of skincolor trampling in the game - loading a level while not netgame or record attacking.
The Menu Queen is in the house~ ✨
* Magical, single-page player select and general netgamey stuff, while still remaining both pretty and functional.
* Death to NOFOURPLAYER, now that the cat's out the bag.
* Clean up NONET, assuming people try to make DD builds on release.
* Minor tweaks across the board, mostly places where I wanted to pilfer minor code from and realised it wasn't done optimally originally.
* Multiplied rain speed by 3, per Oni's request.
* Disable weather density - force to 1 if weather draw distance, otherwise zero
* Move the ceilingpic check into a more convenient part of the weather spawning loop.
* `drawdist_precip_cons_t` - replaces "Infinite" with "None".
* Disable the lowest normal draw distance (256), given... both kart and srb2 are basically unplayable like that.
* Disable cv_drawdist_nights entirely.
Also: temporarily cleaned up the M_CanShowLevelInList record attack conditions to automatically match what we want, instead of requiring us to apply a bunch of vanilla flags just to emulate our "available unless explicitly hidden" MP mechanism like is currently in maps.kart.
You can now remap Change Viewpoint, Screenshot, and Toggle GIF Recording to other keys, mainly for gamepads
They also pushed me to my breaking point and I couldn't tolerate the control menu anymore, thanks to toaster for the scrolling backport
* S_Init -> S_InitSfxChannels because it did mostly SFX anyway
* S_MusicPlaying, S_MusicPaused, S_MusicName, S_MusicExists new status methods
* I_MusicPlaying, I_MusicPaused
(cherry picked from commit f5f0b5e76c2fd405c8cc895dde653c5ed2652622)
* Add `kartvoterulechanges`, or "Voting Rule Changes" on the menu, to allow some user control over event frequency.
* "Never" - does what it says on the tin.
* "Sometimes" - 1/8 chance of Encore if host has unlocked it, only gametype change when buffer is full
* "Frequent" - 1/2 chance of Encore if host has unlocked it, gametype change every 5 maps
* "Always" - If host has unlocked Encore, alternates between Encore and Gametype. Otherwise, always a gametype change
* There's probably room for a setting between "Sometimes" and "Frequent", but I didn't want to overload the host with options and these were the ones that made sense.
* Better handling of buffer refreshes, to prevent two of the same map appearing next to each other in the voting unless there literally aren't that many maps.
* Mostly unrelated: Minor bugfix for Y_SetupVoteFinish, preventing music changes/random sounds playing on the You Will Join Next Race screen. (Branch-appropriate, at least.)
* Some visual ordering fixes for the item menu, plus a #define-toggleable option for the bottom right slot to be traversable for ease-of-use purposes (even if it doesn't do anything).
* Uses the in-game timer element to draw its times.
* This includes showing them time emblems-to-get!
* good night sweet prince
* Make the emblem time use the same ' and " as the normal time.