Commit graph

21923 commits

Author SHA1 Message Date
toaster
6129d810cc UC_ALLCHAOS, UC_ALLSUPER, and UC_ALLEMERALDS
Measures whether you have all 7 Chaos Emeralds, 7 Super Emeralds, or 14 Emeralds
- Hidden if you haven't entered a special stage yet
- Checks all cups and all relevant difficulties outside of GS_LEVEL
    - You can specify a difficulty of Normal, Hard, or Master
2023-03-10 22:50:08 +00:00
toaster
b3aa2520bc gamedata->everseenspecial
Record whether you've ever successfully entered a special stage
Used for conditions which were previously checking for whether you'd completed a special stage - which I think is a bit too restrictive for someone figuring out what next to lab
2023-03-10 22:43:06 +00:00
toaster
cbebfe5a62 UC_POWERLEVEL: Do not iterate over your profiles in GS_LEVEL 2023-03-10 22:41:03 +00:00
toaster
fea235d8a7 UC_REPLAY
Save a replay after finishing a round.
Basically another tutorial unlock condition like UC_ADDON
2023-03-10 21:44:48 +00:00
toaster
dfe75726df cupwindata_t
Save your best GP stats across sessions.
- Saved into gamedata
- Deliniated per difficulty option
- Draw onto cupgrid in GP cup select
    - Best grade
    - Whether you've ever gotten the Emerald
        - TODO: Always shows Chaos Emerald, will need updating when Super Emerald graphics are created
    - Monitor status changes depending on recorded position
        - 1st: Gold, shiny
        - 2nd: Silver, shiny
        - 3rd: Bronze, shiny
        - 4th and downwards: Beige, barely different
- Wiped with G_ClearRecords

Also, to avoid circular dependencies:
- KARTSPEED/KARTGP constants moved from command.h to doomstat.h
- gp_rank_e enums moved from k_rank.h to doomstat.h
2023-03-10 20:20:48 +00:00
toaster
f3cde6140a G_GetNextMap: Do not permit entering GPEVENT_SPECIAL if you're on Easy 2023-03-10 20:15:33 +00:00
toaster
304a7dce72 K_InitGrandPrixRank: Accomodate cv_gptest 2023-03-10 20:14:48 +00:00
toaster
8b437d5a32 Minimum viable product of Chao Keys condition bypass
- Start with 3, per Sakurai's prior art.
- Earn them per certain number of rounds
    - DEVELOP builds: once every 4 rounds
    - Release builds: once every 50 rounds
    - Has an internal cap based on the maximum number of unlockables supported.
        - Possible future work could adjust this to restrict based on the maximum number of unlockables unlocks.pk3 actually has set.
- Use on the Challenges screen to bust open small tiles with hints (or the very first tile, if you haven't unlocked anything yet).
    - Will do a funny shake if you try anything else.
- Interrupts menu flow just like getting an unlock.
    - The matches you've played will tick upwards, giving you keys as they loop over.
2023-03-09 22:33:10 +00:00
toaster
328ab0059a F_StartIntro: Disable sound credit (was relevant during routine gamedata deletion) 2023-03-09 21:47:16 +00:00
toaster
40786a006c P_MobjCheckWater: Remove wet player test print 2023-03-09 16:40:39 +00:00
toaster
84742e0376 G_LoadGameData: Remove print from recorded map record 2023-03-07 20:02:23 +00:00
toaster
d2c36c952a Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into conditions-cascading
# Conflicts:
#	src/k_grandprix.c
#	src/k_grandprix.h
2023-03-07 19:37:46 +00:00
toaster
1ccd41c3db R_RenderThickSideRange: Compilation fix
It seems `lighteffect` was not a comprehensive enough blockade to referencing an uninitialised `xwalllights` for my strictly-warning compiler.
2023-03-07 19:32:52 +00:00
James R
df00ed4f64 Merge branch 'render-highlight' into 'master'
debugrender_contrast, debugrender_spriteclipping and debugrender_highlight

See merge request KartKrew/Kart!1021
2023-03-07 09:53:13 +00:00
Oni
cb6391c2cc Merge branch 'high-contrast-debug-waypoints' into 'render-highlight'
Make debugwaypoints radiuses more visible

See merge request KartKrew/Kart!1022
2023-03-07 09:52:24 +00:00
James R
aa927a5b00 Merge branch 'overtime-spectator' 2023-03-07 01:45:16 -08:00
James R
540bd6e18d Merge branch 'improve-battle-tracking' into 'master'
HUD TARGET for Battle Kiosk, Monitors and Emeralds; remove WANTED over players' heads

See merge request KartKrew/Kart!1016
2023-03-07 09:44:07 +00:00
Oni
e4ba544994 Merge branch 'buff-sliptide' into 'master'
Make sliptiding actually good

See merge request KartKrew/Kart!1020
2023-03-07 08:49:46 +00:00
James R
b8a503f56a Always sync health to bumpers in P_KillPlayer
Fixes Death Pit respawning in Battle.
2023-03-06 23:37:42 -08:00
James R
a55ddef528 Add cv_scrambleremoved, disable scramble on P_RemoveMobj
Because Monitors and players leaving leak references,
disable this crashing to be able to test other stuff at
least.
2023-03-06 22:55:01 -08:00
Oni
cdc56ab2cc Merge branch 'podium' into 'master'
Podium

See merge request KartKrew/Kart!1014
2023-03-07 05:58:20 +00:00
AJ Martinez
5d79ecd065 Oni feedback fixup
Sneaker boosts now pause decay timer, boost strength reduced to prevent tripwire memes, boost lengthened based on proximity to bottom left, further improvements to handling boosts
2023-03-06 20:01:09 -07:00
James R
ccd933556d Battle: activate director after dying to Overtime Barrier 2023-03-06 18:52:59 -08:00
James R
d56be63249 Battle: eliminate players killed by the Overtime Barrier
- Players killed this way become invisible and unable to
  move.
- Ends the match when one player is remaining.
2023-03-06 18:52:59 -08:00
James R
f2c806185e Cycle color of player TARGET between held emeralds 2023-03-06 18:52:53 -08:00
James R
18ccc3db27 Remove g_hiscore since it's not used anymore 2023-03-06 18:52:53 -08:00
James R
b023b16561 Remove WANTED over players' heads, TARGET wanted player 2023-03-06 18:52:53 -08:00
James R
20fe13deb7 HUD TARGET for Battle Kiosk, Monitors and Emeralds
Except in Break the Capsules, Boss mode or DUEL mode:

- When Overtime begins, all TARGETs are hidden and the
  Kiosk is targeted instead. Blue colored TARGET.

- TARGET player themself sees TARGETs on emeralds and
  monitors with emeralds inside. TARGET color matches
  emerald.
2023-03-06 18:52:53 -08:00
toaster
4802f96249 UCRP_TRIGGER: Convert to roundconditions_t
- Previously was extern scope UINT32 for all players, but this permits one player in a netgame taking a secret path while others don't.
- Attempted to make user-specifiable string, but while I can undo the effects of strtok for the condition, I cannot undo the effects of strupr - so it's disabled for now until we come up with a more robust and hopefully direct system.
- Also removed some old SRB2-originated assumptions that you couldn't unlock anything in multiplayer from the unlocktrigger system.
2023-03-07 00:03:41 +00:00
AJ Martinez
a7cc5aac78 Fix Lua interface mangling writes to sliptideZipBoost 2023-03-06 16:53:14 -07:00
AJ Martinez
2fb6bc5f46 Require 25% minimum handleboost to sliptide, change sliptide zip to 24% 2023-03-06 16:51:41 -07:00
Sal
fa430a6d41 Merge branch 'ranking' into 'podium'
Ranking

See merge request KartKrew/Kart!1017
2023-03-06 23:35:19 +00:00
Sally Coolatta
0f87e177b9 Be able to get partial credit for capsules again 2023-03-06 18:26:09 -05:00
Sally Coolatta
23a00b1d00 Move GP ranking data to grandprixinfo 2023-03-06 18:26:08 -05:00
Sally Coolatta
ca178324de Free capsules counting virtual resources 2023-03-06 18:26:08 -05:00
Sally Coolatta
96477caa88 Move K_ResetCeremony
Properly carry over GP ranking data to the ceremony
2023-03-06 18:26:07 -05:00
Sally Coolatta
57f53a5531 Search bonus maps to calculate total capsules
No more moving goalpost! This means we can put it on the intermission screen and not just the final rankings screen.
2023-03-06 18:26:07 -05:00
Sally Coolatta
cf20e2e831 SS requirement is now getting A rank 2023-03-06 18:26:07 -05:00
Sally Coolatta
d5d0647ae6 Remove difficulty as a ranking requirement
Was a cute idea, but removing it since it's not something you can 100% guarantee every time, which was the same reasoning for getting rid of times getting damaged / dealing damage from the requirements.
2023-03-06 18:26:06 -05:00
Sally Coolatta
3c07641938 Add final position as a ranking requirement
1st is a large bonus, 2nd is a medium bonus, 3rd place is no bonus, and everything below is a penalty. This will help make Loser Valley grades never be above a C at most.
2023-03-06 18:26:06 -05:00
Sally Coolatta
3d1070c2f2 Show ranking data on the screen 2023-03-06 18:25:16 -05:00
Sally Coolatta
6a4b4d8b70 Balance rank requirements
Old values were taken from Snap, which has a small number of very straight-forward and relatively easy to 100% requirements, so it has very high standards. RR has lots of requirements, they're slightly more nuanced, and it's extremely improbable to have them all 100% in one run even if you're good.

- Toned A rank down very slightly. (90% -> 85%)
- Rest of the ranks are more evenly distributed. (D: 45% -> 35%, C: 60% -> 50%, B: 75% -> 70%)
2023-03-06 18:25:15 -05:00
Sally Coolatta
f7851623ff Calculate a bot difficulty to reach
13 is very unlikely for Normal, likely impossible for Easy. (If we want a bonus game speeds, it should be explicitly defined)
2023-03-06 18:25:15 -05:00
Sally Coolatta
c61e017c38 GP rank cleanup
- Move ranking to its own file.
- gpRank (the variable) -> g_gpRank
- gpRank (the struct) -> gpRank_t
- Functions that worked on the global directly now take a pointer to a struct
- Fixed total ring increment
- Fixed final lap's lapPoints being discarded
- Capsules are now added when exiting with the rest of the stuff
2023-03-06 18:25:14 -05:00
Sally Coolatta
55de982fa3 GP ranking
Needs balancing + intermission, but mostly functional
2023-03-06 18:25:14 -05:00
Sally Coolatta
20dedb6602 Try to fix the podium bot spawning (again)
- Podium waypoint initialize is done always directly after spawning the player, instead of trying to detect it in K_UpdatePodiumWaypoints.
- Position is manually calculated for K_InitializePodiumWaypoint, instead of needing K_UpdateAllPlayerPositions to be called.
- Instead of calling K_UpdateAllPlayerPositions every time a player spawns, do it at the end of the spawning loops.
- Prioritize spawning bots in further away spots instead of 1st available, as spots 1st to 3rd spots are more important.
2023-03-06 18:24:51 -05:00
toaster
42a985d061 readcondition: Support stringvar for extended condition instead of always having to not fit one in 2023-03-06 23:18:22 +00:00
toaster
98423a2196 UNSTAGED CHANGE: Missing mobjeflag_t wet_player from roundconditions_t 2023-03-06 22:57:53 +00:00
toaster
ff926440d5 UCRP_WETPLAYER: Adjust SOC load to not Z_StrDup before confirming other data is valid, to prevent memory leak 2023-03-06 22:38:37 +00:00
toaster
f6a83d2161 M_GetConditionString: All non-allcaps messages have had their first letter lowercased
Instead, M_BuildConditionSetString uppercases the first lowercase letter, so it's always (approaching) grammatical correctness.
2023-03-06 22:32:02 +00:00