Whenever a 16th player would join, it would wrap around and overwrite the dedicated server ghost host player. This is possibly a bug in vanilla as well, but it'd only occur at 32 players so it's no wonder no one figured that out. :V
As a quick patch, I just capped cv_maxplayers to MAXPLAYERS-1 in dedicated servers only. To fix this for real, we'd need to give dedicated servers their own player & node instead of clumping in into the start of the normal ones.
nettimeout being 10 seconds is INSANITY, and maxping of 500 is when it starts being unplayable (I could also be bargained to raise it to 750 or 1000 though). Not sure if jointimeout causes any freezing, if it does then I'd also like to lower that
This makes rubber-burn turning even more useless, but I don't think there's a way to fix the rubber-burn turn without breaking demo playback, so let's just do the part that is needed for now. I kinda want to redo how that mechanic works anyway.
- The skin values are now locked between 1 and 9.
- kartspeed & kartweight are no longer locked on skin-switch. Combined with the above, this results in no gameplay change, other than the character select showing the proper value.
- Values used for the engine sounds are locked. No longer can overflow into character voices or freeslotted sounds.
- Removed the overzealous weight locking when in offroad.
If we want to ACTUALLY lock speed/weight for Lua too then we should do that in the Lua stuff.
This fixes two bugs:
- Makes it so that the countdown happens when all the winners are ACTUALLY in instead of the first loser, because exiting timer wasn't set for the last winner in the place this was down before
- Means that the countdown timer can be set on disconnect
The Kart Minimap heads I believe should use GTC_CACHE as they're shown in level, only(?) Not using it causes the memory to keep creeping up as more colourmaps are loaded but not freed, while OpenGL by extention endlessly keeps making new textures for the "new" colourmaps.
Also the MS seems to just throw the entire char array into the website and ignore null terminators, so I'm memsetting maptitle all to 0 before we do anything with it.