Commit graph

2145 commits

Author SHA1 Message Date
toaster
2caa5ff018 Dedicated server -spoilers startup parameter
Servers should get enough free for a healthy launch ecosystem, but not everything.
We'll give the relevant password out after, like, the first week probably? Please be patient, commit-diver
2024-04-12 14:17:33 +01:00
Oni
a7951fc41c Merge branch 'furybike' into 'master'
Fury Bike

See merge request KartKrew/Kart!2273
2024-04-12 03:41:24 +00:00
Oni
47b44086e9 Merge branch 'show-lap-time' into 'master'
Show last lap time on HUD

See merge request KartKrew/Kart!2267
2024-04-12 03:40:38 +00:00
AJ Martinez
cb7a579b16 Fury Bike 2024-04-11 17:43:59 -07:00
Sally Coolatta
f1f7edbe9a Show last lap time on HUD
Inspired by RoyKirbs' Joypolis journey
2024-04-11 03:05:11 -04:00
toaster
a1ed3f8b23 "Clear GP and Record Data" has handed off some of its respnsibilities
- Map visitation flags (used for level select access) are now cleared by using "Clear Challenges Data" instead
    - Custom courses will still have their data completely wiped here because it's the case most likely to mean "I want to remove everything", and because I don't want to pick through all the possible places to nuke 'em
- Skin stats (and Eidolon's map stats) are now cleared by using "Clear Statistics Data" instead
2024-04-10 20:22:29 +01:00
Sal
5cec579f50 Merge branch 'cup-preview-final' into 'master'
Show Prison Break in GP cup preview

See merge request KartKrew/Kart!2251
2024-04-10 00:57:21 +00:00
toaster
1034dd7ec9 Grand Prix course preview adjustment: Show Prison Break stages too, just like on Challenges Board preview
- All gametypes will be shown in the drawer, as opposed to just Race
- However, don't attempt to add the preview pic for CUPCACHE_SPECIAL (the Sealed Star)
2024-04-09 17:47:30 +01:00
James R
a18cfeb58d Init evaluation screen at start of credits, to circumvent clobbered grandprixinfo
- Credits demos will erase grandprixinfo
- Call F_InitGameEvaluation (new function) at the
  beginning of the credits to cache the needed data from
  grandprixinfo
- Fixes the evaluation screen not showing up for GP
  credits
2024-04-08 22:06:58 -07:00
Eidolon
3348c571b1 Reset demobuf even when not saving a demo 2024-04-08 19:26:02 -05:00
James R
44ea14104e Add G_GametypeAllowsRetrying, split away from G_GametypeUsesLives
- Cases for lives specifically and not retrying use
  G_GametypeUsesLives
  - Such as HUD elements and GAME OVER

- Cases for retrying and losing lives use
  G_GametypeAllowsRetrying
  - Such as GP bonus rounds
2024-04-06 22:19:34 -07:00
Sal
1ff321d375 Merge branch 'retry-end-demo' into 'master'
Simpler solution to #1225: If a retry flag occurs in a demo, stop playback immediately!

See merge request KartKrew/Kart!2230
2024-04-06 23:27:08 +00:00
toaster
d618802abc Additional hack for Sealed Star game over: In demo.playback, do a retry flag anyways, just to guarantee it ends
Also guarantee it uses demo.netgame status where relevant
2024-04-06 23:57:25 +01:00
Eidolon
a0d52ddacd Add per-gametype time stats 2024-04-06 11:25:31 -05:00
toaster
6a07bca807 Minimal set of calls to dump you back to the EggTV menu as soon as possible
My patience is thin, let's just work around the crash as tightly as possible
2024-04-05 21:59:20 +01:00
Sally Coolatta
7dfa597c7d SRB2 -> DRRR copyright in src, acs, android folder
Be consistent with toaster's recent changes to copyright
2024-04-05 02:08:23 -04:00
toaster
0427f7f3ff Don't show uncollected Platinum medals
You'll see the Platinum time to reach as a guiding star when Time Attacking the specific course, but with no accompanying empty medal icon.

Also
- fixes an x coordinate issue for higher medal quantity on the version that draws under the timestamp
- cache SECRET_ENCORE and SECRET_SPBATTACK availability in the statistics drawer too
2024-04-05 00:45:31 +01:00
toaster
c7503a492d Simpler solution to #1225: If a retry flag occurs in a demo, stop playback immediately! 2024-04-04 21:37:17 +01:00
toaster
4f37a3f183 G_PlayerReborn: Clear roundcondition information on becoming a spectator (should resolve #1231) 2024-04-01 17:39:25 +01:00
Oni
8089cbd3a7 Merge branch 'sealed-acs-splitscreen' into 'master'
Sealed ACS Splitscreen (resolves #1209)

Closes #1209

See merge request KartKrew/Kart!2190
2024-03-31 05:54:16 +00:00
toaster
b33c65e118 Rings should ALWAYS be reset to map start's value on true death
Plugs a game design oversight that thankfully was completely sidestepped by all but one Attack replay
Replaces the reset that happened on lightsnake at -20.
2024-03-30 20:52:28 +00:00
toaster
e9205e19d6 ACS_RunPlayerEnterScript: If betweenmaps, defer until P_PostLoadLevel
Guarantees that the ENTER script actually consistently runs, since previously it was happening before ACS scope invalidation
2024-03-30 15:56:44 +00:00
Sally Coolatta
af6340741e Add speed to gametype
Set a specific gamespeed per gametype. KARTSPEED_AUTO for it to be decided by game settings.

Wanted this for a while, but also it makes game speed display logic for DRP very straightforward.
2024-03-22 16:58:36 -04:00
toaster
1c971660a9 Rework intro skipping
- Pressing/holding any input will now skip only ONE screen of the Intro, like a REAL VIDEOGAME
- Allow you to skip before the end of INTROSCENE_DISCLAIMER, but only once the text has been solid for half a second
- Fix regression re exiting title demos after using -skipintro command line parameter
    - intro_scenenum was stuck at 0, so the game was softlocked!
2024-03-19 22:03:09 +00:00
James R
0ce93b2d96 Add g_fast_forward_clock_stop, means to end g_fast_forward early if too much real world time is taken 2024-03-18 02:42:22 -07:00
James R
7abe285f84 Refactor: replace references to cv_timescale with I_GetTimeScale 2024-03-18 02:42:21 -07:00
James R
326e560329 Attract: fix attract demos end handling
Fixes two bugs:

- Attract mode carrying over to gameplay if an attract
  demo is allowed to finish without interrupting it
- Credits ending after the first replay ends
2024-03-18 02:42:21 -07:00
James R
93667eebb0 GP: do not apply continue logic twice if losing player waits out the tally
- If you lost and waited for TRY AGAIN to finish and
  automatically restart the map (did not touch Retry in the
  pause menu)
- Doing this would add TWO continues to your rank
  calculation and nerf the bot difficulty twice
- Did not affect lives at all
2024-03-14 02:16:57 -07:00
James R
59fb8aad8c Replays: end level music at tally of currently viewed player
- This is symmetrical with splitscreen behavior
- One edge case: if you switch away from the player after
  the level music stops but before the intermission music
  starts, then the silence will continue until you view
  another tally that reaches the intermission music
  - I think the benefit of doing the proper tally music at
    all outweighs this edge case
2024-03-12 06:42:24 -07:00
James R
d3bbae209f Preserve lap cheat timer between player deaths
Just being symmetrical with how safelap is preserved.
2024-03-10 17:08:09 -07:00
James R
fb6ebc6e6f Fix lap cheat prevention failing when player dies
- Cross a finish line so your lap goes forward and your
  waypoints update ahead of the line
- Turn around to face the opposite direction
- Do this on a map where the lap cheat timer activates
  when you turn around
- Drive a little way backward and make sure the lap cheat
  timer keeps going
- Activate Ring Shooter and start lightsnaking
- Immediately spectate and then rejoin
- The lightsnake would send you ahead of the finish line
  and give you an extra lap
2024-03-10 17:02:56 -07:00
Oni
4de4c9e57d Merge branch 'pre-podium-music' into 'master'
Add pre-Podium intermission music

Closes #1084

See merge request KartKrew/Kart!2075
2024-03-10 21:08:11 +00:00
Gunla
20ecc22ccf Merge branch 'blend-end' into 'master'
Blend End

See merge request KartKrew/Kart!2039
2024-03-10 20:30:38 +00:00
Sally Coolatta
9b93f56111 Add pre-Podium intermission music 2024-03-10 14:08:59 -04:00
toaster
a96e39b22f G_UpdateVisited, G_DoCompleted: Clean up tutorialchallenge behaviour
- Permit saving "this map has been beaten" for the Tutorial Challenge map if you conquered it
    - This was previously short circuited because it wasn't a dedicated course
- Only trigger an extra UpdateUnlockablesAndExtraEmblems check if you haven't yet completed it
2024-03-09 20:33:24 +00:00
toaster
4aa13105c4 Fix problems exposed by a Round Star potentially being the first entry in a Cup
- Don't assume that the first Round in a Cup defines the default gametype for it
    - Now consistently uses GT_RACE
    - It was written this way to try and permit non-Race cups in future...
    - But there are much more solid ways to approach this down the line, instead of overloading this pre-existing data.
- cup-select.c: Don't assume `roundqueue.position == 1` means starting a fresh Cup from scratch
- G_HandleSaveLevel: Allow saving GP backups for overridden Courses at the front of the roundqueue
2024-03-09 20:33:24 +00:00
toaster
161b46f3aa Store gametype string in gpringsav.bkp for overridden Rounds, too 2024-03-09 20:33:24 +00:00
toaster
e5964f862a Rejigger Grand Prix rank-related oversight exacerbated by MapWarp
If a stage is taken out of the running for Grand Prix mode and replaced with another, the rank data wasn't corrected. We were merely getting lucky that the one Round Star regularly accessible had the same number of laps as the course it replaced.
Now, Laps, Rings, and Prisons can be adjusted up or down depending on the number of each element you're expected to have with a perfect GP tally.

Related: To make it more friendly to call in multiple places, RankCapsules_CountFromMap has now been adjusted to take a course ID instead of a virtres_t.
2024-03-09 20:33:24 +00:00
toaster
c1fadac0a5 Permit gametype to be changed by MapWarp
- Simplest possible solution for the time remaining: If the current gametype doesn't overlap with the nextmapoverride's TOL, do G_GuessGametypeByTOL.
    - Future work: Allow an optional extra parameter to MapWarp to specify a specific Gametype by name.
- Fixes for tutorialchallenge
    - NEXTMAP_TUTORIALCHALLENGE is integrated into the above, to reduce duplicate code
    - Call D_GametypeChanged, which was previously missing
2024-03-09 20:33:24 +00:00
James R
717dcf0209 restartlevel: preserve last map's gametype
- gametype can be changed without changing gamemap,
  through the pause menu option
2024-03-09 05:20:49 -08:00
James R
0707c9e5ec Add g_musicfade, generic system to fade out the level music for a brief period 2024-03-08 17:53:07 -08:00
James R
c09f55059b GP Prisons: use regular player starts, not Battle starts 2024-03-07 03:06:38 -08:00
James R.
359b63fd6d Merge branch 'continues-gp-backup' into 'master'
Store scores in Grand Prix backup

See merge request KartKrew/Kart!2019
2024-03-07 02:16:16 +00:00
AJ Martinez
c590a42e6d Hard GP continue delevel 2 -> 1 2024-03-05 20:02:11 -07:00
toaster
ad6118f7a7 Store scores in Grand Prix backup 2024-03-05 20:09:23 +00:00
James R
1155acebad Let buffer inputs between maps
- Do not clear inputs when a map loads
2024-03-03 17:48:11 -08:00
James R
38e1ae1c53 Replays: let name be changed any time until the file is saved 2024-03-03 06:30:54 -08:00
James R.
b136df4d41 Merge branch 'seal-a-carte' into 'master'
Sealed Star re-ordering (resolves #606)

Closes #606

See merge request KartKrew/Kart!1980
2024-03-03 05:18:26 +00:00
SteelT
cc99ead23b Merge branch 'bugfix-roundup' into 'master'
Misc bug fixes

Closes #1097 and #1096

See merge request KartKrew/Kart!1992
2024-03-03 01:45:35 +00:00
toaster
e8523b69f0 Sealed Star re-ordering (resolves #606)
- If emerald not yet collected on that cup, pick the first uncollected emerald, then get the cup's CUPCACHE_SPECIAL with that ID to pick the stage
- Already collected emeralds retain their swappage across gamedata saves
- Returns to normal order if you get all 7 OR Special Mode is unlocked (chao key? debug? password in modded games? sky's the limit)
- Pops up a Message from the Stars telling you the gems have been returned to their natural place
- Add-ons will always use their dedicated sealed star, since it's unordered material

If it weren't so last minute I could have a better solution for GP Backups, but right now what I've gone for is it always trusts whatever G_GPCupIntoRoundQueue does AS LONG AS THE COURSE ISN'T THE ONE YOU'RE RELOADING INTO. If it IS, then it checks to see if it's exactly what's been saved, and complains (with the generic error message, unfortunately) if it isn't.
2024-03-03 00:24:31 +00:00