Commit graph

22210 commits

Author SHA1 Message Date
toaster
03b6f50ab8 M_DrawChallengePreview: Selection assistance icons
- SECRET_SKIN:
    - Shows the character icon you'd have to pick (Eggman for Eggrobo, etc)
    - Shows the Engine Class section of the charsel grid you'd have to pick
- SECRET_FOLLOWER:
    - Shows the category icon you'd have to pick (3DB for Whirl, etc)
- SECRET_CUP:
    - Shows the position on the cup grid, INCLUDING previous pages
2023-03-12 18:10:14 +00:00
toaster
84e807cfa0 UCRP_ISENGINECLASS
Checks for the player's character's engine class
As before, A-I and J are valid classes
2023-03-12 15:55:14 +00:00
toaster
65a4f33b6f R_GetEngineClass
Before unlockable conditions dependent on Engine Class are added, standardise the system.
- enum constant in r_skins.h from A-I + J
    - Engine Class J is for SF_IRONMAN
        - The Joker in the pack of cards
        - Also immediately after I in the alphabet
        - It's a Jape that works on multiple levels
- Integrate into K_UpdateEngineSounds
    - Ignores Engine Class J
- Show the Engine Class in character select extrainfo mode, even in situations character name would have been the only thing shown
2023-03-12 14:41:15 +00:00
toaster
01f6eb71f5 Optimisation: reduce the number of calls to M_CheckUnlockConditions
- For P_Ticker()'s calls to M_UpdateUnlockablesAndExtraEmblems
    - Do not check non-UCRP_REQUIRESPLAYING conditions
        - Controlled by a new `boolean doall` parameter to M_UpdateUnlockablesAndExtraEmblems
        - Most other contexts have this as true
        - Forced true if update is meant to be silent
    - Only check UCRP_REQUIRESPLAYING conditions if a relevant property has been touched
        - Controlled by a new `boolean checkthisframe` property on roundcondition_t
        - Set in all contexts where roundcondition_t is modified
        - Would also be set on lap change, but that case is already covered by the following
- Check all conditions, both UCRP_REQUIRESPLAYING and not, on:
    - local player K_HandleLapIncrement
    - local player P_DoPlayerExit
    - local player P_DoTimeOver
    - Controlled by a new `boolean deferredconditioncheck` property on gamedata_t
2023-03-12 13:52:28 +00:00
Sally Coolatta
b0064e41e8 Only save used vertices
Fixed in two ways:
- P_LoadExtraVertices is a special construct for extended blockmap types. This is easily resolved with num_orig_vertexes before loading the map.
- Original Doom-style blockmap with ZenNode however also adds additional vertices directly into VERTEXES. These have to simply be ignored by cross-referencing them with linedefs to see if they are used by anything.
2023-03-12 06:43:31 -04:00
Sally Coolatta
f02057bf2e Write textmap after conversion like vanilla
Unfortunately this means that K_AdjustWaypointsParameters no longer saves to UDMF converted maps, because it requires sector thinglists, FOFs, and spawned mobjs.
2023-03-12 06:03:32 -04:00
Oni
0f303100d4 Merge branch 'easy-balance' into 'master'
Changes for different game speeds

See merge request KartKrew/Kart!1039
2023-03-12 09:33:31 +00:00
James R
253489b75c Merge branch 'vol-cvar-defaults' into 'master'
Normalize all volume scales to 0-100

See merge request KartKrew/Kart!1030
2023-03-12 03:50:57 +00:00
James R
ab26a66602 Merge branch 'new-sound-musicdef' into 'master'
Implement musicdef volume in new mixer

See merge request KartKrew/Kart!1029
2023-03-12 03:43:58 +00:00
James R
552b774028 Merge branch 'noexchndl' into 'master'
Windows: add -noexchndl, optionally disables loading exchndl.dll

See merge request KartKrew/Kart!1032
2023-03-12 03:23:08 +00:00
James R
01efc8cbd4 Merge branch '3p-challenger' into 'master'
HERE COMES A NEW CHALLENGER for 3P + fix DUEL mode bugs

Closes #463

See merge request KartKrew/Kart!1008
2023-03-12 03:22:56 +00:00
James R
0058d9efc3 Merge branch 'update-linedef-80' into 'master'
Update line special 80

See merge request KartKrew/Kart!1037
2023-03-12 03:22:36 +00:00
James R
e85b769dc5 Fix Bubble blowup vs Invincibility sfx spam 2023-03-11 18:54:31 -08:00
AJ Martinez
fcd1fe8b8b Wavedash refinement 2023-03-11 17:20:44 -07:00
toaster
5a9281ecfb Three new UCRP's
- UCRP_ISDIFFICULTY
    - Example: IsDifficulty Hard - "on Hard difficulty"
    - Does what it says on the tin
    - You can't specify Easy because there is nothing easier than Easy
    - Does it based on the GPsetting if in grand prix, or the level setting otherwise
- UCRP_PODIUMCUP
    - Example: PodiumCup Ring - "complete RING CUP"
    - Example: PodiumCup Barrier Silver - "get Silver or better on BARRIER CUP"
    - Example: PodiumCup Goggles S - "get grade S on GOGGLES CUP"
    - Basically a monolithic cup completion handler.
    - Only happens after rankings begins in Podium ceremony.
- UCRP_PODIUMEMERALD
    - Example: PodiumEmerald - "collect the Emerald"
    - Get the Emerald to the ceremony and this is yours.
- UCRP_PODIUMPRIZE
    - Example: PodiumPrize - "collect the prize"
    - LITERALLY identical to PodiumEmerald except the string
    - Doing it seperately from PodiumCup means we can't check whether that cup uses an Emerald or another Catcher Prize automagically
2023-03-11 23:56:58 +00:00
Sally Coolatta
383bf4b604 Fix deleted line for uphill/downhill multiplier 2023-03-11 18:07:04 -05:00
toaster
3abba2bd26 G_LoadGameData: Add -resetchallengegrid command line parameter for DEVELOP builds only 2023-03-11 21:19:42 +00:00
toaster
4d88923173 UC_ALLCHAOS, UC_ALLSUPER, UC_ALLEMERALDS: Provide a ??? tease for Master difficulty if not unlocked 2023-03-11 21:09:43 +00:00
toaster
6f62abc1ef UCRP_FINISHPLACE: Don't permit messed up position of 0 2023-03-11 21:06:37 +00:00
toaster
f411ca1e85 UC_ALLCHAOS, UC_ALLSUPER, UC_ALLEMERALDS: Move to using KARTSPEED/KARTGP constants directly 2023-03-11 19:42:20 +00:00
Eidolon
17c1e69ed5 Recreate GL context on renderer swap
Restores renderer swapping to legacy GL
2023-03-11 11:08:49 -06:00
James R
e5e23e788a Remove hitlag threshold condition from items
This condition blocked items from doing damage after just
being thrown. The intention was to not let shotgun Ballhog
instakill the player. This is now prevented by
MF2_ALREADYHIT instead.

blame cab1af549
2023-03-11 05:39:07 -08:00
James R
264e445f0c Add MF2_ALREADYHIT; don't deal damage for multiple wombos within the same tic
These wombos still create hitlag.
2023-03-11 05:39:07 -08:00
James R
ec6ffbf072 Let wombo damage work again
Damage can't be ignored entirely while in hitlag because
that defeats stacked hitlag (wombo combo).

But it should be ignored if in an invincible state.
2023-03-11 05:39:07 -08:00
James R
d28b1615cf Don't let mine explosion's own hitbox receive hitlag
Don't extend the time that its hitbox remains.
2023-03-11 05:39:07 -08:00
James R
8c1771112c Fix Bubble Shield duplicate collisions
Bubble Shield could collide with the same object up to
5 times per tic! (3 times at least!)

1) P_CheckPosition from MFE_ONGROUND being unset.
2) P_CheckPosition AGAIN from MFE_ONGROUND being unset
   while literally being on the ground. This one's
   probably a bug in general but it's beyond the scope of
   this commit. It's also scary movement code, yiiiikes...
3) P_MoveOrigin to teleport the Bubble to its holder's
   position.
4) If something moves into the Bubble.
5) If something moves into the player holding the Bubble.

This generated extra unwated hitlag, especially noticeable
against invincible players.

To reduce these to one collision only, the Bubble is now
MF_NOCLIPTHING except while calling P_MoveOrigin. The
player's own hitbox is also disabled for Bubble
collisions.
2023-03-11 05:39:07 -08:00
James R
ee4011cca6 Don't pause mobj thinker for player whose hitlag will be cancelled anyway 2023-03-11 05:36:24 -08:00
James R
622bfa9512 Count nullHitlag for inflictor player too
Cancel hitlag of inflictor player too if the inflictor is
a constant damage source and the target is invincible.
2023-03-11 05:36:24 -08:00
James R
b2a6ffecf9 Refactor player->invulnhitlag -> player->nullHitlag
- Move condition for whether hitlag came from a constant
  damage source into P_DamageMobj directly. Should be more
  accurate if a player is dealt brand new damage, the
  constant damage still won't count.

- player->invulnhitlag renamed to player->nullHitlag
2023-03-11 05:36:24 -08:00
toaster
c67412f6ef Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into conditions-cascading 2023-03-11 12:42:55 +00:00
Sally Coolatta
431a99db78 Don't decrease bot difficulty on Master 2023-03-11 05:01:50 -05:00
Sally Coolatta
5639113ed8 Slope thrust changes
- Slope thrust is scaled with game speed. Makes Easy more reasonable, and Hard goofier.
- Slope upward/downward thrust multiplier is applied to all objects equally, instead of only players.
2023-03-11 04:59:47 -05:00
Sally Coolatta
569b9a7dee Reduce all bot difficulty when retrying
Especially reasonable now that you have a penalty for retrying.
2023-03-11 04:07:50 -05:00
SteelT
d9ef9514fa Merge branch 'altmusic-autoload' into 'master'
Auto load altmusic.pk3 on startup

See merge request KartKrew/Kart!1038
2023-03-11 03:03:57 +00:00
SteelT
43991dd798 Auto load altmusic.pk3 on startup 2023-03-10 21:43:51 -05:00
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
James R
3349f17cd7 Update line special 80
- UDMF: use args[1] instead of line tag.
- Binary: do not add thing angle to thing's tag list, just
  compare angle directly. Seemed weird that this was the
  only place in the code to alter the tags list like that.
2023-03-10 04:17:07 -08: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
Eidolon
901ebdb5b0 Implement musicdef volume in new mixer 2023-03-09 15:12:24 -06:00
toaster
40786a006c P_MobjCheckWater: Remove wet player test print 2023-03-09 16:40:39 +00:00
James R
600063f46b Merge branch 'bot-improvements-round-12' into 'master'
Bots Again: Round 12

See merge request KartKrew/Kart!1034
2023-03-09 10:29:14 +00:00
Oni
60863a88a3 Merge branch 'quieter-wavedash' into 'master'
Quieter wavedashing

See merge request KartKrew/Kart!1035
2023-03-09 09:05:55 +00:00
AJ Martinez
85c492e848 Wavedashing no longer puts everyone in your netgame into a hurricane 2023-03-09 02:01:57 -07:00