* Fix some bugs.
* Reset bannode information properly, fixing being unable to join your own server.
* Write to the buffer before saving the kick/ban reason, rather than after.
* Improve the print output for the `showbanlist` command.
* Includes username.
* Includes remaining time as seen by a kicked joiner.
* Hides expired bans.
* Improve the messages for ban/kick related refused joins.
* Replace the Reason with the actual admin-provided reason for refused connection.
* Replace the "Server refuses connection" header with "You have been [banned/temporarily kicked] from the server", the previous given Reason.
* Fudge the time reported for temporary kicks so that a user is encouraged to return slightly after their tempkick ends, rather than before.
* Add an extra newline to the M_StartMessage for being kicked/banned with a reason provided.
* Ensure it can compile.
* Removing vanilla 2.2 properties that slipped in to previous commits.
* Rearranging i_tcp.c to avoid implicit declaration.
* Complete rename of `IsNameGood` to `EnsurePlayerNameIsGood`.
* Add "BANFORMAT" header, for versioning support.
* Add conversion from 1.3-and-earlier format to new system.
* Don't ban the entire internet - convert zero-masks to the most specific ones.
- Save a note of the username, not just the reason.
- Allow setting a mask with the `banip` command.
- Make ban.txt's formatting a lot more sane. Username and reason are stored in quotes. The mask uses the same formatting as actual CDIR.
- Keep track of if we tried to load ban.txt. If it wasn't, then don't save over it with a blank file.
- Disallow quotes in player names, as it makes player name detection in console more annoying, and saving username in files scary.
# Conflicts:
# src/d_clisrv.c
# src/d_netcmd.c
# src/i_tcp.c
Length is determined by the "kicktime" cvar, in minutes. By default, this is set to 10, but I'm willing to adjust this. Only applies to manual kicks (in the future, maybe also name filter kicks).
The timestamp for the unban time is even saved in ban.txt, so long-term temporary bans are completely possible. (I checked, you can attempt to ban someone for up to 1902 years if you really want to.)
# Conflicts:
# src/d_clisrv.c
# src/d_clisrv.h
# src/i_tcp.c
- Properly call D_SaveBan after remote bans. Bans are no longer saved in the ban command and instead wait for the actual kick to process, since before they were split between the two, which is what caused the discrepancy.
# Conflicts:
# src/d_clisrv.c
# src/i_tcp.c
The intent is to stop servers from needing to dedicate their limited name/MOTD space to things like advertising `lessbattlevotes`, and to avoid "punishing" a server in visibility for allowing temporary gametype switches. However, this is possibly a controversial change, so I'm doing it in its own commit in case there's a clear consensus to revert.
* A "canon" adaptation of the community-created server option `lessbattlevotes`.
* If set to "None", voting behaves as before.
* If set to "Race" or "Battle". that gametype is considered the preference.
* The voting screen is always operated from the perspective of the preferred gametype.
* If you're in an un-preferred gametype, the third vote option will always allow you to continue the gametype.
* If the preferred gametype is Race and you've just exited a Battle map, Encore may now appear on the second vote option.
* A number of bugs with voting have been corrected.
* If `kartencore` is on, the third vote option will now correctly have Encore applied.
* If a custom EXE or malformed packet sends an Encore flag alongside a Battle gametype ID, actively strip it.
* Just to note, clients do not enter Battle Encore with or without this change - this just prevents a promise the rest of the game couldn't fulfill.
2.2 Backports - add ceil slope double step-up/down and fix sprite/models all black in sector with light level of 256
See merge request KartKrew/Kart-Public!274
Makes the displayed FPS more accurate to what it's actually displaying.
Also removed HUDTRANS from it -- stop it fading out during level transitions, it's annoying when I actually want to see the FPS during those bits.
Was done this way for the sake of an older version of uncapped's timing; now that the new timing is much better, I decided it should remain as close to pre-uncapped as it can be.