Commit graph

327 commits

Author SHA1 Message Date
James R
801deafa96 MAXTEXTCMD -> 512
Fixes 4P XD_ADDPLAYER
2023-06-01 20:03:23 -07:00
James R
039a73ce64 Expand textcmd size byte to 16-bit word
Raises hard limit from 255 to 65535
2023-06-01 20:03:23 -07:00
toaster
de22fc8ff1 Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into profile-restrictions
# Conflicts:
#	src/hu_stuff.c
#	src/y_inter.c
2023-05-12 13:42:50 +01:00
toaster
ab68be49e1 cv_antigrief
- Increments a timer on human players who aren't making progress, does it even faster if they're going backwards.
    - Only applies in:
        - Netgames
        - GTR_CIRCUIT after the timer starts
        - If there's no timelimit, pointlimit, or K_Cooperative (because unproductive behaviour there will be punished by other rules)
    - The rate at which this changes needs trial and error, but getting the feature functional is more important to start out with.
- If this timer reaches cv_antigrief's value in seconds , the player gets a "Grief Strike"
    - This doesn't happen if:
        - There's only one active player in the server, so FREE PLAY permits mappers to test what increments/decrements the counter
            - Turn `debugwaypoints` on to observe this
        - The cvar is set to 0
    - Less than 3 grief strikes is a forced spectate
    - Anything more is a kick via "automatic grief detection"
        - Unless your node is the host (or an admin)
    - Remove grief strike strike for finishing normally

# Conflicts:
#	src/d_clisrv.h
2023-05-01 16:57:35 +01:00
AJ Martinez
167f5f40ed PT_SAY and gamestochat: the rest of the owl 2023-04-29 20:16:20 -07:00
AJ Martinez
cb8e48d8a7 WIP: PT_SAY 2023-04-29 16:12:23 -07:00
Sally Coolatta
996ca9adad Z Voting 2023-04-20 15:55:38 -04:00
AJ Martinez
535fc17875 Fix RRID/crypto primitive size defines 2023-03-30 20:36:10 -07:00
James R
3b67f99d0d RRID: correct remaining instances of hardcoded sizes to defines 2023-03-28 03:54:29 -07:00
AJ Martinez
86b6b2b1cd Clean up some mismatched and hardcoded sizes, use defines for crypto primitive size 2023-03-28 03:03:00 -07:00
AJ Martinez
3c561c564e Use 64-byte challenges consistently 2023-03-28 01:25:56 -07:00
AJ Martinez
c46612329e Don't UpdateChallenges during NetKeepAlive, could lead to challenge spam 2023-03-28 01:25:55 -07:00
AJ Martinez
ecc2c65742 Cleanup and comments 2023-03-28 01:25:55 -07:00
AJ Martinez
5a52199dc8 Refactor challenge creation, no more duplicated memory shenanigans 2023-03-28 01:25:55 -07:00
AJ Martinez
630555ca51 More bad actor cvars 2023-03-28 01:25:54 -07:00
AJ Martinez
30ca69e51d Don't sign game traffic, we shouldn't need it anymore 2023-03-28 01:25:54 -07:00
AJ Martinez
a1f82b2a37 Use server IP and timestamp in PT_SERVERCHALLENGE to avoid signature reuse 2023-03-28 01:25:54 -07:00
AJ Martinez
f873df764e USE THE ENTIRE 64 BYTES OF THE CHALLENGE YOU IDIOT also check time/gamemap 2023-03-28 01:25:54 -07:00
AJ Martinez
137f166043 Cvars to do bad network things in DEVELOP, fixes to bad network things 2023-03-28 01:25:54 -07:00
AJ Martinez
2afc43383e Jart node deadlock fixup part 2 2023-03-28 01:25:52 -07:00
AJ Martinez
15ec5ee90b Client bails if server doesn't verify, first pass 2023-03-28 01:20:44 -07:00
AJ Martinez
33760dec51 I don't even know, unfuck everything 2023-03-28 01:20:44 -07:00
AJ Martinez
2925843ea2 Sigfail command for testing, fix guest join sigcheck, scaffolding for sigfail kick reason 2023-03-28 01:20:43 -07:00
AJ Martinez
baedcc6ade Add allowguests cvar 2023-03-28 01:20:43 -07:00
AJ Martinez
b758001661 We don't need payloadsize, we don't trust it anyway 2023-03-28 01:20:43 -07:00
AJ Martinez
3747ba6cbd Sign game traffic that could be used to cause problems 2023-03-28 01:20:43 -07:00
AJ Martinez
4ffae5d862 Store keypairs in profiles, do signature verification for all splitscreen players 2023-03-28 01:19:43 -07:00
AJ Martinez
138663bf5a Literally, unironically, draw the rest of the owl 2023-03-28 01:19:43 -07:00
AJ Martinez
9b77d95357 Pass key into player_t for other stuff to work with it 2023-03-28 01:19:43 -07:00
AJ Martinez
568dc59aa5 State scaffolding for challenge-response 2023-03-28 01:19:43 -07:00
AJ Martinez
805186c3a9 RRID: initial commit, WIP broken 2023-03-28 01:19:43 -07:00
AJ Martinez
7c08634f7e WIP: Turn towards local camera (midgame join broken right now) 2023-02-24 16:59:22 -07:00
Sally Coolatta
761be01dbb Contain end & size into savebuffer_t
I would've liked to make it use a single allocate function to do this very cleanly, but these cases were very clearly not meant to be standardized and use wildly different methods to allocate & free...
2023-01-01 00:23:23 -08:00
Eidolon
be021baa02 Add extern "C" in C++ to all headers 2022-12-30 19:26:16 -06:00
toaster
803490d7aa Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into unlockables-undefeatable
# Conflicts:
#	src/d_clisrv.h
#	src/doomstat.h
#	src/g_demo.h
#	src/m_cond.h
2022-12-10 21:54:58 +00:00
James R
051b4f8935 Always use typedef name instead of struct name
mobj_t instead of struct mobj_s
2022-11-27 17:21:40 -08:00
James R
b5310a1f68 Add typedef.h
All typedefs for structs that were present in other header
files have been moved to here. (Except node_t because the
renderer and netcode both define node_t LOL.)
2022-11-27 17:21:40 -08:00
toaster
6d0637d39d Unlockable skins (in a way friendly to #define MAXSKINS 255)
Mammoth commit, sorry. I only realised halfway through writing it that SECRET_SKIN was only partially merged.

Ports from 2.2:
- Merge SECRET_SKIN (STJr/SRB2!1474)
    - Default skin is now handled by checking all skins for unlock status, and I_Erroring if none are available
    - Don't show skin names on game startup, to keep our secrets hidden
    - Unlockables now have string variables zallocated.
         - For skin names rather than numbers.
    - Correctly clean up memory when freeing unlockables and emblems.

Bespoke code:
- For temporary testing. `unlocks.pk3`
    - Using this for rapid testing gameboot SOC instead of patch.pk3 because of the intent to turn that into scripts.pk3
- Don't not save gamedata in DEVELOP builds, even if you've used cheats!
- `player->availabilities` is now an array of UINT8
    - (MAXSKINS + 7)/8 entries, or 32 bytes.
    - Included with XD_ADDPLAYER instead of XD_NAMEANDCOLOR.
         - Simplifies a lot of logic with respect to demos, skin changes mid-game, etc.
             - Seriously, there's a lot of random places in the code that just iterate over MAXSPLITSCREENPLAYERS and g_localplayers to update availabilities in real time in a way that's not particularly netsafe...
         - Lines up with the plan for handling unlocks when returning to menus.
         - Was included with XD_ADDBOT, but that actually overruns the netxcmd buffer at first mapload with 7 bots. We might need to consider expanding the size of the netxcmd buffer...
    - In demos, can be interpreted as both relative to the original replay and the current skin list depending on boolean context provided to R_SkinUsable.
    - Used for SF_IRONMAN (and will crash if all other skins are inaccessible).
- Grand Prix bot randomisation uses the host's unlocks.
- Don't show locked characters on the fancy new character select.
-  DXD_JOINDATA for demos
    - Replaces the dual-purpose behaviour of DXD_PLAYSTATE
    - Contains availabilities
    - Handles bot material in a different way
- Forceskin restrictions
    - Won't run in demos, because it's assumed recorded DXD_SKIN will handle all the conversions the original match had
    - Won't run if K_CanChangeRules says no
- Correctly set `mapvisited` on level visit, even in [fake gasp] MULTIPLAYER/NETGAMES!! 🥹
- Added updating unlockables and extra emblems on `mapvisited` update.
    - Currently fails to produce the cecho, but that'll be stripped out entirely in a future commit so I'm not bothered.
2022-11-27 22:53:29 +00:00
toaster
243f38227c Rework time limit a bit
- Make timelimitintics handled a bit more like gamespeed, encore, frantic, etc - update on mapload/starttime, not during gameplay
    - Use default setting if can't change rules - this is a surprise tool that will help us later
- Have it properly update when adjusting gametype from the menu
    - Cleaned up SV_StartSinglePlayerServer to do this
- Remove CV_SAVE to prevent time limit bruh moments
2022-10-11 23:00:44 +01:00
James R
bc0fc9b05a Readd version and subversion to serverinfo
Add commit field after those two so packet is identical up
to that point and DEVELOP builds mismatch version online.

blame d176aefd8
2022-09-30 05:51:43 -07:00
James R
d176aefd88 Compare git commit when joining netgames in DEVELOP builds 2022-09-29 12:55:07 -07:00
toaster
ff629a4c78 Merge branch 'kill-nonet' into 'master'
Kill last of NONET, DJGPP (DOS), WATTCP (also DOS?), _WINDOWS (DirectDraw)

See merge request KartKrew/Kart!704
2022-09-26 17:02:55 +00:00
James R
f6a5ed9c6c Remove NONET 2022-09-24 19:22:04 -07:00
toaster
abb567ab81 Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into big-large-map-markers 2022-09-21 23:06:24 +01:00
toaster
5a813cd94d Remove mapname buffer from serverinfo_pak 2022-09-21 22:19:51 +01:00
AJ Martinez
db25599647 Offline input delay cvar 2022-09-20 02:34:53 -07:00
VelocitOni
8a5707ad83 Merge branch 'master' into hostcode 2022-09-13 17:08:15 -04:00
Sally Coolatta
e8b179f7a1 Switch around maxplayers and ingamecap
- ingamecap is now the new maxplayers
- The old maxplayers is now called maxconnections, but can mostly be left alone
- Insert into match race menu
2022-08-29 04:35:14 -04:00
Sally Coolatta
3096806f04 Kicks are now temp bans
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.)
2022-08-24 21:02:38 +01:00
Eidolon
2c36a8cefe Don't interpolate during net lag 2022-05-17 20:04:26 -05:00