Commit graph

2244 commits

Author SHA1 Message Date
Antonio Martinez
c7e07576f8 Higher Sealed Star entry reqs for first entry 2025-09-14 21:48:31 -04:00
toaster
57c5fa3cd7 Replace new gametype-specific checks with gametyperule checks
- K_PlayerTripwireSpeedThreshold, K_CheckpointCrossAward - repaced with "GTR_CIRCUIT and not K_Cooperative" - excludes Sealed Stars as before, but includes custom Race-based gametypes
- UFO Spawner tracking on minimap - GTR_PAPERITEMS, per how UFOs are handled in k_battle.c
- G_RandMapPerPlayerCount: Check for the absence of GT_SPECIAL when excluding LF_SECTIONRACE, not the presence of GT_RACE
    - Little bit of a hack, but right now there's no way to do custom cooperative gametypes, we don't have proper access to gametyperules in this function, and Battle courses aren't going to have this flag anyways
2025-08-28 15:48:31 +01:00
Antonio Martinez
8a87f0ed7d Apply gamestochat restrictions to voice 2025-08-27 20:38:45 -04:00
AJ Martinez
90ee6dbdc0 Merge branch 'forfeit-fixes' into 'master'
PWR forfeit / calculation fixes

Closes #1642

See merge request kart-krew-dev/ring-racers-internal!2766
2025-08-26 06:26:10 +00:00
Antonio Martinez
d67bba9255 Fix SPB Attack and Class R attack replays 2025-08-25 15:53:11 -04:00
Antonio Martinez
1e49453d78 Fix double-exit conditions WITHOUT changing checkpoint count 2025-08-25 06:24:07 -04:00
toaster
48a155f8e7 Fix Auto-Ring follower fallback
- Move `followerready`'s first set from `K_SetFollowerByNum` (which isn't called if your follower is -1, the exact case Goddess is supposed to help us with) to `G_UpdatePlayerPreferences`, which is always called whenever the follower ID is validated on join
- Cache "Goddess"' followerskin ID by cribbing from `r_skins` and `R_DefaultBotSkin`
2025-08-23 22:20:47 +01:00
Oni VelocitOni
3f7ae9dd23 Merge branch 'skinlimit' into 'master'
Increase skin limit to 1024

See merge request kart-krew-dev/ring-racers-internal!2743
2025-08-23 05:03:58 +00:00
Eidolon
55388c17c2 Merge public master 2025-08-21 20:43:28 -05:00
JugadorXEI
1e2e833d80 Bot library for Lua (botvars getter/setter, bot functions) 2025-08-22 01:24:13 +00:00
toaster
be3c0faf7e More gracefully amend Splits/Attackstart data on ghost load rather than splits load 2025-08-21 18:25:03 +01:00
Antonio Martinez
7b39fc4b7e "Staffsync" command to test staff ghost playback 2025-08-19 18:52:13 -04: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
Antonio Martinez
5e9a80bb32 Fix race split carryover between rounds 2025-08-08 22:42:42 -04:00
Antonio Martinez
385257af73 Splits in Race gametypes 2025-08-08 20:09:14 -04:00
Antonio Martinez
fad24db244 Merge remote-tracking branch 'origin/master' into ta-rebalance-gaiden 2025-08-07 21:20:00 -04:00
Antonio Martinez
bf8511c495 Review fixup 2025-08-06 16:48:20 -04:00
Antonio Martinez
76b88990cc WIP: Foes 2025-08-04 04:23:37 -04:00
toaster
7b134a1a90 Resolve #1616 2025-08-03 20:17:15 +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
6ce6c0d6cf Two minor hacks for Playground that I can't be bothered to do properly, to match desired spec
- Play intro when exiting goner Playground
- Do not allow using menu to skip driving down that hill in goner Playground
The reason these two are hacks is because a map is considered goner Playground if you use -warp at command line or map in console on title screen to get to a Tutorial course... but these are unimportant edge cases IMO
2025-07-23 19:32:07 +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
78fb3c0cdd No lives in Relaxed 2025-07-15 16:40:27 -04:00
Antonio Martinez
dc45f4427b Try fixing vote party crash 2025-06-23 14:10:57 -04:00
Antonio Martinez
331110e6cf Use rank percentage for Sealed Star entry, not grade 2025-06-21 02:22:50 -04:00
AJ Martinez
9f506f93dd Merge branch 'gp-tweaks-420' into 'master'
GP refinements

Closes #1527

See merge request kart-krew-dev/ring-racers-internal!2620
2025-06-19 06:44:28 +00:00
Oni VelocitOni
f5c2031ea5 Merge branch 'beyond-the-relink' into 'master'
Use ChangePlayerReferences to relink kartitems

See merge request kart-krew-dev/ring-racers-internal!2622
2025-06-11 21:37:18 +00:00
Antonio Martinez
878972fc7b Use ChangePlayerReferences to relink kartitems 2025-06-07 19:30:59 -04:00
Antonio Martinez
cd439be74c Bot difficulty and grading tweaks 2025-06-07 17:49:11 -04:00
Antonio Martinez
2459affaa3 GP refinements 2025-06-07 15:21:58 -04:00
Antonio Martinez
4af7ab2555 Lower Duel HUD, global option to disable/enable Duel 2025-06-06 21:32:37 -04:00
TehRealSalt
75047a630d Merge branch 'fix-duel-death' into 'master'
Restore duel score after true death

Closes #1542

See merge request kart-krew-dev/ring-racers-internal!2608
2025-06-04 04:32:02 +00:00
Antonio Martinez
a5790f0ce1 Restore duel score after true death 2025-06-02 18:50:40 -04:00
toaster
830cfe76da Round Queue UI on Level Select
- Only works in Match Race and Online level selects
- Shows in-progress state on Pause and Cup Grid, but no direct influence available on those screens
- Z to queue current highlighted map
    - Pending until you press A, then sent to server
    - When done online, tries to send one at a time to avoid overloading connection
- C to clear
    - Removes one from pending first
    - If you're out of pending maps, prompts whether you want to clear server's queue
2025-06-01 00:25:20 +01:00
toaster
71e1179030 M_MenuToLevelPreamble: Seriously clean up the process of starting a course from the menu
A lot of messy, copypasted boilerplate has been bundled together into a single function.
Programmers can now fire up a Match Race, the most basic type of gameplay, from menu code in only four steps (other modes take a little more attention):
- **M_MenuToLevelPreamble(UINT8 - splitscreen players #, boolean - false to extend wipe/true for short wipe)**
- set restoremenu
- D_MapChange(...)
- M_ClearMenus(...)
Includes the following fixes:
- Encore no longer has over-long wipes when started from menu, only standard-length
- "Boss Intro" and Encore start-of-round sounds will always play, even if no Title Card is drawn
- No long wipe when restarting a Time Attack run
- Auto Encore and Auto Gamespeed are no longer accidentially forced if you've manually changed them to Off and Gear 2 before starting netgame
2025-06-01 00:05:45 +01:00
toaster
e4907227fc New simpler rewind code + re-enable in UI
- Built off g_fast_forward to utilise a lot of existing structure
- Only does steps of 5 seconds and therefore isn't precise, but that's better than having to rewatch/fastforward through the entire thing
- No single frame step back or general in-motion rewind preview, but that was all overkill
2025-06-01 00:02:19 +01:00
toaster
09e23e6e18 Rip out all the rewinding code
It was all messy and none of it is called in release builds because it was so crashy in testing
2025-06-01 00:02:19 +01:00
Antonio Martinez
e75ffd0707 Save team assignments in demo (DEMO BREAKER) 2025-05-28 15:20:06 -04:00
AJ Martinez
9009a5aef9 Merge branch 'early-item-fix' into 'master'
Fix inconsistent early item behavior

Closes #1533

See merge request kart-krew-dev/ring-racers-internal!2585
2025-05-28 04:10:34 +00:00
Antonio Martinez
ea7a7ea7e6 Allow viewing enemy team in replays 2025-05-27 20:54:45 -04:00
Antonio Martinez
0ae5ca3341 Fix weird inconsistent initialization of cangrabitems maybe???
I took a shower and I want to go to bed
2025-05-27 03:38:04 -04:00
AJ Martinez
4b00703856 Merge remote-tracking branch 'origin/master' into duel 2025-05-25 15:38:38 -04:00
James R
0fc22e5fbd Preserve spectatewait between maps
- Add spectatewait to G_PlayerReborn
- This was making shuffeloser not work
- Testing setup
  - `-server -splitscreen 4 +shuffleloser 1 +maxplayers 2 +numlaps 0 +debugstart 0 +inttime 0 +advancemap random`
  - Spectate two players, go to map
2025-05-25 00:58:50 -07:00
Antonio Martinez
b9818d52e4 Duel sprint lockout, duel overtime darken 2025-05-25 01:57:02 -04:00
Antonio Martinez
28f12acab1 Merge remote-tracking branch 'origin/master' into duel 2025-05-24 16:34:36 -04:00
Antonio Martinez
2ec4fa044c Tiny roulette fixes 2025-05-20 15:35:05 -04:00
Oni VelocitOni
ae962c4d14 Merge branch 'ta24' into 'master'
2.4 TA refinements mkII

Closes #1507 and #1508

See merge request kart-krew-dev/ring-racers-internal!2532
2025-05-18 22:12:47 +00:00
Ashnal
50fd04bdb1 small hud performance improvement
now that we have spots on the player struct for both gradingfactor and exp, store exp in the exp field after adjusting gradingfactor, and just reference it instead of recalculating every time
2025-05-18 14:30:46 -04:00
Ashnal
144e2be262 More renaming 2025-05-18 14:30:46 -04:00