* Adjusted the save system to acknowledge the new status quo. Instead of trying to save modifiedgame in the file like some sort of extremely boneheaded honour system everyone and their mothers hacks around, we just use it to determine whether the save is for a mod with savedata or not (this keeps backwards compatibility based on how we were using it, anyways, especially with the *force* parameter...)
* Added a menu message for attempting to play a demo set on a map that isn't loaded, as opposed to letting it I_Error.
* Minor tweaks to addons menu representing modded status.
I really hate that PlayerMenu status hack, but that's really the only
way I could think off to show the entires for Tails, Knuckles and the
Sonic&Tails pair.
* majormods and savemoddata cannot coexist as true values, so going through and making situations that involve both only reference one.
* Clean up comments in `dehacked.c`.
- 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