Commit graph

376 commits

Author SHA1 Message Date
Eidolon
fa787c4e8f Merge remote-tracking branch 'public/master' 2025-09-30 17:37:01 -05:00
Eidolon
e9906915b0 Calculate podium position for PODIUMCUP condition instead of using current player position
Fixes https://gitlab.com/kart-krew-dev/ring-racers/-/issues/253
2025-09-24 19:58:53 -05:00
Zander
51e22892ac removed ability for class r to clear ta challenges 2025-09-23 13:58:43 -04:00
Eidolon
c43d15208a Merge branch 'fix-exit-game-quote-unquote-crash' into 'master'
Fix playground condition check exiting whole game in netgames

Closes #1633

See merge request kart-krew-dev/ring-racers-internal!2752
2025-08-23 12:33:07 -05:00
Eidolon
cfddb3d52f Fix playground condition check exiting whole game in netgames 2025-08-22 22:06:28 -05:00
toaster
be3c0faf7e More gracefully amend Splits/Attackstart data on ghost load rather than splits load 2025-08-21 18:25:03 +01:00
toaster
2033c75500 UC_EMBLEM: Require emblem to be valid before reading collected 2025-08-17 13:12:45 +01:00
toaster
69315d9163 M_CheckUnlockConditions: Fix initialisation 2025-08-15 16:24:45 +01:00
toaster
cc72be970b Support UC_CONDITIONSET for condition text on Challenges menu
Permits recursion by exactly one level
2025-08-13 15:40:30 +01:00
Eidolon
892a6b8620 Merge public master 2025-08-12 16:49:14 -05:00
Eidolon
255570cfca Dynamically allocate skins
This avoids an issue where the skins array takes up a fixed, but large
amount of memory at runtime. On x86_64 linux, that array is roughly 80
megabytes in memory, most of which is unused when the game is unmodded.
Instead, we treat `skins` as a dynamically resizing array, and it is an
array-of-pointers into separate allocated `skin_t`.

This is based on Lactozilla's skin limit MR for SRB2, but I've rewritten
it because RR has diverged quite a bit.

This was verified to check every access of `skins` by using clangd's
find-all-references function. However, I have only tested plain skins,
not Lua addons, so that could afford some extra checking.
2025-08-12 15:33:00 -05:00
Lach
bbe231e994 Add Ancient Gear object type & unlock type 2025-08-10 01:51:34 +10:00
VelocitOni
62e14fb2a3 Change some menu wording
"finish a perfect round" specifies above Gear 1, and Intense GP mentions top half instead of "4th" (because this changes in co-op)
2025-08-03 01:22:35 -04:00
toaster
f8aaa43f73 Reset *all* First Boot specific state in M_ClearSecrets, not M_ClearStats
Guarantees wiping gamedata will send you through goner again, since otherwise why are we wiping gonerlevel
Also fixes restarting Goner's audio
2025-07-24 20:03:47 +01:00
toaster
43fef1a59b Replace the Playground Hack with a specific fix via a case that needed its own function 2025-07-24 19:40:51 +01:00
toaster
295e8dd0ce Add Goner Choice
- Selection between Tails' Way (existing Tutorial) and Eggman's Way (Playground)
    - Semi-passable UI
    - Characterful descriptions
- Add "PlaygroundRoute" condition to Challenges
    - Fires if you select Eggman's Way
- 0 Chao Keys unless you go back to Goner for the outro (which Playground skips)
2025-07-23 19:25:52 +01:00
Antonio Martinez
79e4af5b8e oops I'm a dipshit 2025-05-24 21:34:46 -04:00
Antonio Martinez
1b308d0278 Perfect Round + SIGL Duel support 2025-05-24 21:26:35 -04:00
toaster
ecb4ffeeca Add bonus pickups in conditions you couldn't grab Spray Cans before
- If you've gotten every Spray Can, or you're on a custom course...
- Only one of these spawns per map
- Correctly save and load these
- Statistics menu counts base-game bonuses
- If there are gaps in the list, or new Spray Cans are added later, these base-game bonuses are converted into the new Spray Cans
- New graphics required so far:
    - SBONA0 to SBONP0 - 16-frame prerendered circling sprite animation
    - GOTBON - 8x8 representation of the SBON object
2025-05-20 20:27:06 +01:00
toaster
3f9c0685eb Move cache_spraycan on the mapheader_t struct to recorddata_t
Still in that struct, just in a more appropriate container
2025-05-20 20:18:11 +01:00
Ashnal
144e2be262 More renaming 2025-05-18 14:30:46 -04:00
toaster
beacbca72a M_EmblemMapNum: Free medal string once no longer relevant 2025-02-19 15:46:06 +00:00
toaster
405c6cb3e2 M_GetConditionString, UC_EMBLEM: Prevent Medal ID out-of-bounds 2025-02-19 15:46:06 +00:00
Eidolon
a4d304a1f5 Update copyright years to 2025 2025-02-13 15:32:26 -06:00
AJ Martinez
d32ba6cf64 Vicious difficulty 2024-05-05 13:57:18 -07:00
AJ Martinez
1a8b4dc78f Retheme difficulty modes 2024-05-05 20:56:40 +01:00
toaster
8790e20df7 PodiumCup condition: Don't say "Grade S or better"
No longer in unlocks.pk3, but fixed for future
2024-05-02 23:07:56 +01:00
toaster
2be1a50ae1 Allow Chao Keying large tiles if the only touching locked tiles are Big Challenges
Defuses the 12-long chain scenario in a relatively fair way
2024-05-01 00:03:38 +01:00
toaster
04214c05ec Reduce code duplication in M_UpdateChallengeGridExtraData for adjacency rules 2024-05-01 00:03:26 +01:00
Sally Coolatta
2c5caf582b "TutorialDone" unlockable condition
Replace all instances of `MapBeaten RR_SunbeamParadiseSprings` with `TutorialDone`, for the new early exits to work.
2024-04-25 15:18:47 -04:00
toaster
ff05516901 Don't show Super Emerald related condition text if you haven't unlocked the second row of cups yet 2024-04-15 14:52:16 +01:00
toaster
9d5860d38d Also prevent Fury Bike chao key blastin (resolves #1275)
Fury Bike ID handled by #define now
2024-04-14 23:04:53 +00:00
toaster
c9651f92af Grab a certain prize from a random Prison Egg
Extra word added because the newline situation sucks
2024-04-14 23:38:28 +01:00
toaster
6df31e96f0 M_BuildConditionString: Fix invalid conjunction behaviour
- Nothing except DescriptionOverride will prevent an `- OR ` being inserted
- Question marks for further secret types won't prevent alternate conditions from showing up
2024-04-14 21:33:45 +01:00
toaster
39d701359a The "(Find other secrets to learn about this...)" text only happens if it's at the start of the challenge, otherwise it does "???" as before
Least need to go over and check every challenge description again
2024-04-14 21:16:32 +01:00
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
283f2188db Merge branch 'clear-data-fixes' into 'master'
Erase Data screen now has responsibilities more properly divided

Closes #1204 and #1155

See merge request KartKrew/Kart!2263
2024-04-12 03:40:14 +00:00
AJ Martinez
cb7a579b16 Fury Bike 2024-04-11 17:43:59 -07: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
toaster
0c782767be Add "then" condition string builder type
Better for some sentences
2024-04-10 17:24:45 +01:00
toaster
9383551cc3 Remove quotation marks from UC_UNLOCKABLE condition text 2024-04-10 17:20:45 +01:00
toaster
595c1ff9c8 BONUS ROUND --> GRAND PRIX
Also, slightly clearer phrasing for "Grab a certain prize"
2024-04-09 16:55:57 +01:00
toaster
4794440eea FinishTime, FinishTimeExact, FinishTimeLeft conditions: Guarantee all Prison Eggs are broken before awarding
Fixes how running out of time activated the Death Egg's Eye challenge
Done this way to avoid extensive last minute unlocks.pk3 update
2024-04-08 23:11:12 +01:00
toaster
5b466527e8 Merge branch 'throw-more-dots' into 'master'
Add a bunch more statistics

See merge request KartKrew/Kart!1973
2024-04-06 22:08:30 +00:00
Eidolon
23e4df3c90 Add per-map time stats and TA/SPB time stats 2024-04-06 11:25:31 -05:00
Eidolon
3ebe235154 Add total netgame time stat 2024-04-06 11:25:31 -05:00
Eidolon
0cd5a662ce Add statistic for time looking at statistics 2024-04-06 11:25:31 -05:00
Eidolon
19341b71a3 Add total menu time stat 2024-04-06 11:25:31 -05:00
Eidolon
a0d52ddacd Add per-gametype time stats 2024-04-06 11:25:31 -05:00