Commit graph

23886 commits

Author SHA1 Message Date
toaster
a3640110ae Only permit Spray Cans to be grabbed on base game levels
I would not be so heavy handed against preventing players from grabbing Spray Cans on custom levels, but designing a system that permits unloaded headers to retain their cans is frankly overkill. There are plenty of other ways the same kind of level-scouring play can be experienced on custom levels.
2023-08-23 17:16:07 +01:00
toaster
53549bfa2d M_Shuffle_UINT16: Fix to not rule out half of all possible Spray Can orders 2023-08-23 17:08:06 +01:00
toaster
e1b7cb66cb Rework the Spray Can system to ACTUALLY be what we want
Instead of being specific to each level, Spray Cans are stored in a list on gamedata that will be stepped along each Spray Can you collect.
They are only assigned to a level on collection - which prevents you from farming the same easy location for every colour in the game.

In addition, this new system is one step short of dehardcoding them entirely. Now only Spray Cans specifically asked for by the existence of UC_SPRAYCAN will be put in the list, and if a secondary parameter is either "Yes" or "True", it will be put at the head of the list. This could technically support custom skincolours one day, but the author of this commit doesn't care to do the last bit of work necessary to make it happen.

There's a slight extra overhead in that skincolor_t now also holds a `cache_spraycan` (renamed from `cachedcan`, which maps had previously)

Currently, there's no safeguard against grabbing it on a custom course - you'll lose the Spray Can as soon as you load a fresh game again - but  I consider that easy to fix (tomorrow) and necessary before merger, because the author of this commit does NOT want complaints on release because we forgot to protect users who keep on losing their skincolors.
2023-08-23 00:46:46 +01:00
toaster
6735868e26 MT_EMBLEM: Adjut to not run anything if not local 2023-08-23 00:31:10 +01:00
toaster
3ccf668fda Rename numspraycans to nummapspraycans
- Consistency with nummaprings
- Prevents confusion with incoming gamedata struct variable
2023-08-22 23:12:02 +01:00
toaster
f7635c4399 Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into spraycans 2023-08-22 19:57:28 +01:00
Oni
2926f4c201 Merge branch 'skip-intermission' into 'master'
Offline: intermission doesn't move automatically, skip with A button

See merge request KartKrew/Kart!1414
2023-08-21 16:53:23 +00:00
Oni
852e2c1035 Merge branch 'acs-game-over' into 'master'
ACS script type for game over (lose GP round with no extra lives), improve MapWarp and add a handful of functions

Closes #591 and #572

See merge request KartKrew/Kart!1403
2023-08-21 16:50:18 +00:00
toaster
7ce5ae03b0 Merge branch 'fix-gl-sprite-rollangle' into 'master'
Fix OpenGL sprite rollangle for non-papersprites

Closes #616

See merge request KartKrew/Kart!1416
2023-08-21 12:22:31 +00:00
toaster
1c44c1066a Merge branch 'podium-music-fix' into 'master'
Podium music fix

Closes #607

See merge request KartKrew/Kart!1417
2023-08-21 11:40:34 +00:00
SteelT
7785eb9f71 Merge branch 'fix-build-errors' into 'master'
Update Catch2 to latest version

See merge request KartKrew/Kart!1415
2023-08-21 11:13:30 +00:00
James R
f234c47d8a ACS: add Music_Play, Music_StopAll and Music_Remap 2023-08-21 01:04:19 -07:00
James R
5f9f573f20 Remove all code related to linedef 413, Change music 2023-08-21 00:44:27 -07:00
Sally Coolatta
82e9257284 Fix frequent legacy GL crash that Jeck is getting
This uses `gl_frontsector`, which can sometimes be NULL.
2023-08-21 01:40:05 -04:00
James R
2b02daca14 P_LoadLevel: don't randomize Podium music 2023-08-20 17:40:43 -07:00
James R
78ee9a7e0b G_StartTitleCard: don't play titlecard sfx for Podium 2023-08-20 17:18:39 -07:00
James R
f67c3df3ed HWR_ProjectSprite: fix rollangle for non-papersprites 2023-08-20 16:46:01 -07:00
SteelT
dbe80ab3a2 Update Catch2 to latest version
Fixes build errors related to it
2023-08-20 19:43:05 -04:00
James R
21706c6edf Merge branch 'shrink-sync' into 'master'
Shrink Sync

See merge request KartKrew/Kart!1413
2023-08-20 22:59:27 +00:00
James R
8412a1a787 Merge branch 'reset-ticcmd-angle' into 'master'
P_ForceLocalAngle: reset ticcmd angles and localsteering

See merge request KartKrew/Kart!1409
2023-08-20 22:57:00 +00:00
James R
9c14fe1aeb Merge branch 'pause-graphic-sound-test' into 'master'
Don't draw PAUSE graphic in the Stereo menu

See merge request KartKrew/Kart!1407
2023-08-20 22:56:52 +00:00
James R
99d9d4452b Offline: intermission doesn't move automatically, skip with A button
- Press A button the first time to do the card flip.
- Press A button a second time to end the intermission.
  - Will not end literally immediately, in order to let
    tally sounds finish and GP progression bar animate.
2023-08-20 15:40:55 -07:00
toaster
274e72ed2d Shrink Sync
Obj_CreateShrinkPohbees: Fix potential uninitialised memory being used that could cause a differing number of pobbys to spawn between client and server, causing an (extremely recoverable but still undesired) desync
2023-08-20 22:13:53 +01:00
toaster
434e451b8c Merge branch 'bios-pk3-real' into 'master'
Make bios.pk3 consistent filename

See merge request KartKrew/Kart!1412
2023-08-20 21:08:50 +00:00
toaster
ba7d319457 Make bios.pk3 consistent filename
Removes all reference to main.kart, not just the obvious ones.
2023-08-20 22:06:11 +01:00
James R
0b9d691ad6 acs/call-funcs.cpp: add ExitLevel function 2023-08-20 00:56:05 -07:00
James R
2ffc41b52e G_MapNumber: let parse NEXTMAP 2023-08-20 00:36:00 -07:00
James R
1a3ef843a5 acs/call-funcs.cpp: add StopLevelExit function 2023-08-20 00:36:00 -07:00
James R
9b4367773c Add GAMEOVER ACS script type
Triggered when the level ends with a losing condition and
there are no extra lives.
2023-08-20 00:36:00 -07:00
James R
8a72f42818 Split G_ExitLevel into G_BeginLevelExit and G_FinishExitLevel
- Save retry condition in G_BeginLevelExit
- Apply condition in G_FinishExitLevel

Preparation for ACS level end scripts, since the exit
condition will need be known when the countdown starts,
not when it ends (that'd be too late to do anything in the
level).
2023-08-20 00:36:00 -07:00
Oni
07aabdfdb3 Merge branch 'battle-emerald-collect' into 'master'
Emerald collection polish, animation for Battle and tweak to Sealed Star

See merge request KartKrew/Kart!1408
2023-08-20 06:10:35 +00:00
Oni
b336ec6f1d Merge branch 'main.kart-to-bios.pk3' into 'master'
main.kart to bios.pk3

See merge request KartKrew/Kart!1410
2023-08-20 05:52:43 +00:00
VelocitOni
d103d44938 main.kart to bios.pk3
Turned main.kart into a .pk3, reorganized it, added new logo and extras
2023-08-20 01:46:53 -04:00
James R
7b9665402a P_ForceLocalAngle: reset ticcmd angles and localsteering
For Sealed Stars, restarting the level after turning away
from the spawn angle. This would slightly skew your
momentum when spawning.
2023-08-19 17:03:32 -07:00
toaster
dc695e7acf First pass at implementing Spray Can pickups
- Replaces a few D00DKart objects because the doomednum specifically replaced one of these
- Reports on load if the map has too many, or if one's assigned but the object doesn't exist
2023-08-19 22:21:20 +01:00
toaster
3036eaf35d MT_EMBLEM: Rework grabbable conditions, so you pass through collected ones in both offline and online for consistency 2023-08-19 22:11:56 +01:00
toaster
d19e98beb8 Proper-Nounify the Spray Cans on the Challenges descriptions 2023-08-19 21:33:49 +01:00
toaster
78850c48b2 Disable some testing prints 2023-08-19 17:16:36 +01:00
Oni
7cdf8fbfdd Merge branch 'whip-sprzoff' into 'master'
Instawhip hop adjust sprite offset instead of physical Z position + flashing nitpick

Closes #601

See merge request KartKrew/Kart!1406
2023-08-19 14:58:46 +00:00
toaster
b03c82b8b2 Implement UC_SPRAYCAN condition
Currently impossible to achieve, but will work once I draw the rest of the owl
2023-08-19 15:09:18 +01:00
toaster
1d06637a38 First pass at assigning unique spraycans to level headers
Increments gamedata minor version, be aware
- M_AssignSpraycans
    - Called in M_FinaliseGameData.
    - Attaches a hardcoded set of colours to all race maps in cup order, stopping once we run out.
    - The colours are shuffled, with some "freebies" always at the head of the list.
    - Integrates partial lists pretty well.
    - In DEVELOP builds, I_Errors if it produces corrupted state.
- G_LoadGameData, G_SaveGameData
    - Save & Load is implemented for these assignments
2023-08-19 15:08:55 +01:00
toaster
be1d3e49e8 Change indentation/bracketing on gamedata load for map records
To make the next commit less painful to parse.
Also fixes signedness of mapnum from INT16 to UINT16
2023-08-19 15:04:46 +01:00
toaster
fb8795c8da M_FinaliseGameData
Creates a central landing point where gamedata loads/creates can be finalised properly.

In addition, gamedata wipes caused by data erase or custom SOC gamedata can no longer be saved in a partway corrupted state if they were to crash midway through.
2023-08-19 14:32:11 +01:00
James R
16d966d583 Merge branch 'update-freecam' into 'master'
Replay Freecam Love, accessible during regular gameplay, spectate and pause game anywhere, probably other fixes

See merge request KartKrew/Kart!1399
2023-08-19 12:02:51 +00:00
James R
7a1e61d722 Move democam.reset_aiming to camera_t, let spectator camera even out aiming 2023-08-19 05:01:41 -07:00
James R
414d6f3647 Don't reset camera position when spectating
Fixes a software renderer crash due to hitlag VFX from the
player's death (death from spectating) being too close to
the camera.
2023-08-19 05:01:41 -07:00
James R
0036006586 R_ViewRollAngle: don't apply camera tilting while using freecam 2023-08-19 05:01:40 -07:00
James R
01e2a26689 DEVELOP: let us spectate or pause the game at all times
TODO: This should be available as a debugging option at
release, since it would be useful for addon authors.
I don't want to make more cvars, those are getting
cluttered and should maybe be coalesced into a single
debugging option.
2023-08-19 05:01:40 -07:00
James R
c7bd74c661 Let replays use director controls 2023-08-19 05:01:40 -07:00
James R
fcc35c1bb1 Toggle between freecam and director using C button 2023-08-19 05:01:40 -07:00