Commit graph

296 commits

Author SHA1 Message Date
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
James R
821fd41d70 Merge branch 'c99-pedantic' into 'master'
Switch compiler mode C90 to C99; enforce stricter standard conformance

See merge request KartKrew/Kart!554
2022-03-18 02:41:57 +00:00
toaster
6e7adedaa0 Make the Kart TICQUEUE system closer to the 2.2 BACKUPTICS system.
* Rename TICQUEUE to BACKUPTICS.
* Add CLIENTBACKUPTICS to limit the time gap players can send tics in at once
    * This likely means freezes are more possible, and this variable could be raised later, but prevents some potential duplication in the extrapolerated tic.
2022-03-14 19:24:07 +00:00
toaster
fcb6a4e1ab Disable the vanilla-sourced "keepbody" (rejointimeout) feature. 2022-03-14 16:33:03 +00:00
James R
59c04ae041 pedantic: resolve flexible array member in nested struct
ISO C forbids a structure that has a flexible array member
to be a member of another structure or element of an
array.

filetx_pak and fileack_pak are two such structures. These
have been removed from doomdata_t's union.
2022-02-20 03:10:27 -08:00
James R
bea79dfa65 Replace GNU zero-length array with ISO C99 flexible array member 2022-02-20 03:10:04 -08:00
James R
969d449973 Interpolate from time of previous tic
Previously interpolated from last 35th of a second, which
may be offset from game time due to connection lag.

Consider this the proper fix to 6ecac4159a too.
2022-01-12 03:38:17 -08:00
Sally Coolatta
0e25de897d Instead of gentlemens dropping packets, it simply delays what it sends 2021-11-29 05:27:44 -05:00
Sally Coolatta
0e7460811e Fix avgpwrlvl 2021-04-06 23:56:22 -04:00
Sally Coolatta
fed0e0f9e5 Issue #133 thing 2021-04-01 21:09:30 -04:00
Sally Coolatta
1619efec82 Make it past kart & mixer files 2021-03-01 01:13:03 -05:00
Sally Coolatta
9d7ec0ab8f Merge SRB2 next
Probably doesn't compile yet, but I got rid of all of the conflicts for anyone who wants to take a stab at it.
2021-02-27 05:18:36 -05:00
Sally Coolatta
93c5942ceb Air failsafe boost
While in the air: release accelerate while at nearly-still speeds, and you'll preform a minisucle air drift boost. This mechanic is meant to fix the long-standing issue where you can get stuck in 0 speed in the air and not be able to do anything.
2021-02-07 14:07:27 -05:00
Sally Coolatta
4535a642d6 Merge branch 'master' into spindash-rebalance 2021-02-07 02:35:55 -05:00
Sally Coolatta
ee68862d1f Drift protection
Before, doing a spindash input while turning, but not being at a low enough speed, would make you start drifting.

Now, it checks if you're trying to E-Brake first before interpreting it as a drift input.

If you were already drifting, then attempting accel+brake will still be brake-drift, so that technique is unaffected.
2021-02-06 00:08:28 -05:00
Sally Coolatta
b7e578b82b Keep look backwards direction in a variable, so it can smoothly rotate 2021-02-04 00:26:59 -05:00
SteelT
151acf4f68 Replace BACKUPTICS with TICQUEUE
Seems to help with the very frequent timeouts. Still weird issues with node/netcmd being resent or something...
2021-01-10 15:12:44 -05:00
Latapostrophe
3cd4c87df5 Weaker tumble, some effects + tumble on spring panel fail 2021-01-09 21:58:35 +01:00
Sally Coolatta
cfda66103d Merge branch 'master' into just-tumble 2021-01-06 23:02:51 -05:00
Latapostrophe
fe4d9ce889 New trick panel shit (but only the gameplay part) 2021-01-06 21:20:28 +01:00
Latapostrophe
74a39837bb Merge conflicts 2021-01-06 18:33:42 +01:00
Sally Coolatta
14b379fd27 Cherry-pick 4eb69a664 2020-11-16 19:52:26 -05:00
Sally Coolatta
827a1b5fca Refactor stealing & destroying bumpers
- Prevents being able to farm extra bumpers off of karma players
- Paves the way for bumper destroy animation later
2020-11-15 06:25:38 -05:00
Sally Coolatta
56a20d05df Merge branch 'master' into battle-rethink 2020-11-11 00:11:18 -05:00
Sally Coolatta
454fc41b71 Increase BACKUPTICS 2020-11-10 20:31:50 -05:00
Sally Coolatta
fc934b38e1 Merge public next 2020-11-10 15:32:48 -05:00
Sally Coolatta
0e28470228 Merge master 2020-11-08 02:34:24 -05:00
Sally Coolatta
0969ca1af9 Karma bombs rework
- Fixed the bugs with them in our last netgame
- Karma bombs are no longer slippery or have stat changes
- Karma bombs cannot pick up spheres. Their remaining spheres before they died are removed 1 per tic.
- Karma bombs are out of the game permanently when touching the overtime barrier
- When successfully hurting another player, instead of getting 0.5 bumpers, they steal ALL of the opponent's bumpers, effectively swapping places with them. One bumper is lost in the process, meaning bumpers are slowly flitered out the more people need to come back.
- Removed karma items/eggboxes... hopefully this is temporary and we can bring them back later, but currently we don't have a design for how they should work under the new rules :x. They are still in the code behind the `OTHERKARMAMODES` define
- Bumpers & comeback timer are now player_t variables instead of kartstuff shit
- eliminated boolean on player_t for checking when a player touched the barrier
2020-10-24 11:27:42 -04:00
Louis-Antoine
ddec491b0b Merge branch 'next' of https://git.do.srb2.org/STJr/SRB2.git into resend-gamestate 2020-10-24 16:21:44 +02:00
Sally Coolatta
7ce53ac104 Add blue spheres
Doesn't have animations, and doesn't have stat-specific buffs. But it's already a massive improvement
2020-10-22 02:52:33 -04:00
James R
f7a4667bc3 Use STUN instead of curl to fetch the public IP address for Discord
RFC 5389 is a standard protocol that can be used for this instead of ip4.me.

I may have gone overboard on the CSPRNG... It was fun though.
2020-09-30 03:57:50 -07:00
Sally Coolatta
b5fcd74ef9 Merge master
Slopes in a few maps are really broken ... think it's anchors, I'm gonna leave that to jart :V
2020-09-25 12:00:50 -04:00