Commit graph

21610 commits

Author SHA1 Message Date
James R
a880044f19 Move options menu profile reset to before profile gets set
When exiting a card, once the transition ends, there was
a 1 tic window that an A press could select a card and
THEN set the profile pointer to NULL.
2023-02-18 13:37:40 -08:00
toaster
d69e92d70f Fix changing kickstartaccel from the profile menu
- M_ProfileControlSaveResponse: Set without stealth (ie, call command which sends XD_WEAPONPREF netxcmd)
- weaponPrefChange (and its splitscreen ilk): Only build/send XD_WEAPONPREF command when Playing()
2023-02-18 14:15:58 +00:00
James R
b1fac18844 Add Garden Top arrows
Two arrows. One above the player, floating. One below the
player, on the ground.

Both arrows use the player's facing angle. Arrows are only
visible to their own player (other players can't see them).

The floating arrow is a papersprite. You can see the arrow
turn with you as you turn your camera.

The grounded arrow is a splat with additive blending. It
tilts to match the slope of the ground you're driving on.
2023-02-18 03:15:04 -08:00
James R
ecec400ca4 NULL check Garden Top when throwing backward 2023-02-18 01:21:22 -08:00
James R
8ab2962830 Nullify Garden Top friction at +200% 2023-02-17 23:55:28 -08:00
toaster
a884e332ba Merge branch 'tester-menus' into 'master'
Don't let testers shoot themselves in menus

See merge request KartKrew/Kart!934
2023-02-17 22:19:27 +00:00
toaster
9e494e45d0 D_IsPlayerHumanAndGaming means they're *human*, ie not a bot 🥹 2023-02-17 18:15:25 +00:00
toaster
ff29d446eb forcecharacter: Rename to end the snickering. 2023-02-17 17:19:27 +00:00
toaster
c71d4cbeaa M_SpecificMenuRestore: Catch prevMenu corruption for mid-game Character Select 2023-02-17 17:11:14 +00:00
toaster
0474675109 Character Select menu: Forceskin is now reflected on the menu
Matches cvar updates in real time, so can't change what's written to setup_chargrid
2023-02-17 17:07:33 +00:00
toaster
4d607ccdec Tidy up conditions for forceskin to not include !K_CanChangeRules or Playing. 2023-02-17 16:36:38 +00:00
Oni
52ec4c29b9 Merge branch 'blue-sparks' into 'master'
Alter blue spark color

See merge request KartKrew/Kart!935
2023-02-17 16:02:52 +00:00
toaster
05ee3df2f4 d_netcmd.c: Tidy up conditions for changing skin/color.
- Got_NameAndColor: Incorporate check for cv_restrictskinchange and FREE PLAY
- CanChangeSkin: Boil away all the useless conditions, combine with CanChangeSkinWhilePlaying
2023-02-17 15:50:25 +00:00
toaster
7d2accb044 Got_TeamChange: only do mobj kill/PST_REBORN stuff in GS_LEVEL. 2023-02-17 14:41:47 +00:00
toaster
8fb1ffe5fe Got_NameAndColor: If the player's skin is changed by the packet, make them a spectator.
- Doesn't apply on join, intro camera spin turnaround, or outside of GS_LEVEL.
- Extract some of Got_TeamChange's behaviour into a new FinalisePlaystateChange function.
2023-02-17 14:40:44 +00:00
toaster
e6dd399deb Merge branch 'blender-repair' into 'master'
Blender repair

See merge request KartKrew/Kart!928
2023-02-17 13:59:10 +00:00
toaster
7d015ac7b1 Fix unwinding Join By IP option
- M_CharacterSelectTick: Initialise Online menu when setting up
- PLAY_MP_OptSelect: Hide entries 0 and 1 instead of removing them, to keep options aligned
2023-02-17 13:56:29 +00:00
James R
b89b3cb6a7 Blue sparks skin color Sapphire -> Blue
Blue
2023-02-17 01:40:27 -08:00
AJ Martinez
f4d98a14b6 Don't let testers shoot themselves in menus 2023-02-17 00:02:23 -07:00
Oni
e9668598d2 Merge branch 'splitplayers-mapcommand' into 'master'
Splitplayers Fixes

Closes #408

See merge request KartKrew/Kart!927
2023-02-17 05:11:15 +00:00
Oni
a7a3a2c5d5 Merge branch 'special-out' into 'master'
Special Out

See merge request KartKrew/Kart!921
2023-02-17 05:04:34 +00:00
SteelT
047b84e3d0 Fix perfstats 4 not working properly 2023-02-16 23:48:37 -05:00
Oni
a1cd780a14 Merge branch 'matchrace-restore' into 'master'
Match Race menu restoring

See merge request KartKrew/Kart!913
2023-02-17 04:37:55 +00:00
Oni
474d3cd228 Merge branch 'always-quantize-slopes' into 'master'
Let no physics slopes slope launch

See merge request KartKrew/Kart!931
2023-02-17 04:03:14 +00:00
James R
c9122868ef Merge branch 'testers-preset' into 'master'
CMakePresets.json: add testers and host-testers presets

See merge request KartKrew/Kart!929
2023-02-17 03:51:47 +00:00
James R
f29e5d8270 Always quantize momentum on slopes, even if no physics
Lets no physics slopes launch. Travel time will be
affected by 3D surface area instead of just 2D surface.
2023-02-16 19:23:45 -08:00
James R
5b561815d7 Merge branch 'tester-rip' into 'master'
Tester build asset changes

See merge request KartKrew/Kart!930
2023-02-17 02:18:13 +00:00
toaster
c4b008e17e Merge branch 'fix-mobj-reference-counting' into 'master'
Fix negative mobj reference counts all over the place

See merge request KartKrew/Kart!926
2023-02-17 00:56:39 +00:00
James R
aaffc84242 Merge branch 'frozen-position-number' into 'master'
Update positiondelay during hitlag

See merge request KartKrew/Kart!922
2023-02-17 00:56:28 +00:00
toaster
baaec4c197 Merge branch 'fix-runtime-errors' into 'fix-asserts'
Fix errors revealed by PARANOIA

See merge request KartKrew/Kart!925
2023-02-17 00:44:03 +00:00
toaster
e4459933cb Merge branch 'fix-asserts' into 'master'
Fix PARANOIA compile

See merge request KartKrew/Kart!924
2023-02-17 00:39:02 +00:00
toaster
61a745b4e3 Tester build asset changes
We are now using base assets for tester builds
2023-02-17 00:23:45 +00:00
James R
3d9187203a CMakePresets.json: add testers and host-testers presets 2023-02-16 16:13:47 -08:00
toaster
a8ae2f035e K_drawKartTimestamp: Draw in splitscreen if gametype has timelimit.
- 2p: In 1p position (slides from right)
- 3p/4p: In top-middle of screen (slides from top)
- Uses time from the display with the highest time, which covers exiting, no contest, etc
- Exposes V_ flags in the function signature
2023-02-16 18:23:10 +00:00
toaster
d2aed2d49e V_AdjustXYWithSnap: Support top/bottom slides if not V_SPLITSCREEN, V_SNAPTORIGHT, or V_SNAPTOLEFT, but do have V_SLIDEIN 2023-02-16 18:14:31 +00:00
toaster
ae30a24a71 K_MoveExitBeam: PF_NOCONTEST and P_DoPlayerExit to match other special stage failures.
Not a currently accessible codepath, but in-advance fix.: P_DoTimeOver sets exitcountdown effectively unconditionally, which means it can only be used in situations where *every* remaining player is about to explode.
2023-02-16 17:09:13 +00:00
toaster
472d7bf25c Match old behaviour of GTR_BOSS: DMG_TIMEOVER a player that has lost all their bumpers 2023-02-16 17:04:59 +00:00
toaster
d046b2cb30 p_enemy.c: All object gravity arc calculations now collaborate with mapobjectscale again. 2023-02-16 16:52:55 +00:00
toaster
fa3b361e2f K_drawStartCountdown: Only show "DUEL" text if you're actually inDuel. 2023-02-16 16:36:32 +00:00
toaster
1b2be7b6c9 K_CheckBumpers, K_HandleBumperChanges: Make 2P behaviour in battle capsules mode function
- Only exit Capsules/Versus round if number of players with no bumpers is equal to number of players in game.
- Apply Eliminated flags in relevant context, to prevent griefing.
2023-02-16 16:35:52 +00:00
toaster
e3eb3ed9f8 Command_Map_f: Guess gametype of map in offline GP, as well as from titlescreen/menu 2023-02-16 15:31:25 +00:00
toaster
97c8d201eb Command_Map_f: Respect value of splitplayers cvar
Permits testing multiple players in GP by your lonesome without having to manipulate multiple controllers at once.
2023-02-16 15:28:31 +00:00
James R
6480aced64 S_SetSfxVolume/S_SetMusicVolume: update static copy of volume
blame c9ad926e7
2023-02-14 04:56:42 -08:00
James R
701324fb42 k_kart.c: reference count HOLD bubble 2023-02-14 04:17:04 -08:00
James R
fdddbcfd82 g_demo.c: ensure demobuf is always freed before use 2023-02-14 04:17:04 -08:00
James R
e8ab92fa64 p_mobj.c: guard some cases where a mobj could be removed 2023-02-14 04:17:04 -08:00
James R
c9ad926e76 Do not set cvars with S_SetSfxVolume or S_SetMusicVolume
Don't do this because in sdl/i_video.cpp,
S_InitMusicVolume is called to unmute music when the
window is refocused. Because I_StartupGraphics is called
before those cvars are added and it is an error to try to
set a cvar before it is added.
2023-02-14 04:17:04 -08:00
James R
33145ab2ae p_mobj.c: reference count kitemcap and overlaycap
With the old code, if the object at the head of the list
was removed, it would leave the reference behind,
extending the lifetime of the thinker until P_RunKartItems
or P_RunOverlays was run.
2023-02-14 04:17:04 -08:00
James R
9b08730281 Fix R_CacheSpriteBrightMap trying to cache out of range lump 2023-02-14 04:17:04 -08:00
James R
b8a41fa509 Fix negative reference counting in P_RestoreTMStruct
This fixes some thinkers never being removed due to having
negative reference counts.

And here's a breakdown of why the old code could produce
negative reference counts:

Consider P_CheckPosition. This function calls P_SetTarget
on tm.thing but does not call P_RestoreTMStruct. This
means that tm.thing will not be NULL the next P_SetTarget
is called on it. What are the implications of this?
Consider the following series of events:

- P_CheckPosition is called, tm.thing != NULL afterward
- Another function saves the tm struct and sets tm.thing to a different mobj
- - the old tm.thing will have its references decremented
- - the new tm.thing will have its references incremented
- This function calls P_RestoreTMStruct

What should happen when P_RestoreTMStruct is called? The
*new* tm.thing should have its references *decremented*
and the *old* tm.thing should its references
*incremented*, of course, for symmetry with P_SetTarget.

The old code correctly decremented new tm.thing's
references but did not increment old tm.thing's
references.
2023-02-14 04:17:04 -08:00