Commit graph

22224 commits

Author SHA1 Message Date
Oni
4297591b87 Merge branch 'misc-battle-fixes-chapter-69' into 'bumpers-ARE-health'
Bug fixes and general improvements to Battle: The Final Season Part 1

See merge request KartKrew/Kart!1028
2023-03-13 07:48:22 +00:00
Oni
bee420ff8d Merge branch 'fix-stacked-hitlag' into 'misc-battle-fixes-chapter-69'
Let wombo combo work again; fix Bubble-Invincibility deadlock; fix Mine spinout hitbox lifetime

See merge request KartKrew/Kart!1033
2023-03-13 07:47:57 +00:00
James R
9652b5a860 Reset stacked sneaker counter when hitting UFO 2023-03-13 00:28:50 -07:00
James R
b405e88ec3 Non-damaging UFO-player collision
- UFO is always solid.
- Adds a height check if the player is no boosting.
- Stumbles if the player is within a 60 degree cone of the
  direction the UFO is moving. (Only applies if not
  boosting.)
2023-03-12 23:42:14 -07:00
Sal
073b787a82 Merge branch 'fix-director-reset-if-others-join' into 'master'
Only toggle director when you yourself spawn or when the first player in the level spawns

See merge request KartKrew/Kart!1006
2023-03-13 04:07:46 +00:00
Sally Coolatta
0a11eef569 Default controls in menus works for all players
Prevents keyboard-only profile softlock.
2023-03-13 00:04:40 -04:00
James R
34e322b7a1 Ignore non-combo damage during hitlag
Fixes stumble deadlock
2023-03-12 20:55:07 -07:00
Sal
e70c23fe0f Merge branch 'sliptide-improvements' into 'master'
Wavedash refinement

See merge request KartKrew/Kart!1040
2023-03-13 02:54:55 +00:00
Sal
aa1e31e51f Merge branch 'fix-writetextmap' into 'master'
Fix -writetextmap

See merge request KartKrew/Kart!1041
2023-03-13 02:53:09 +00:00
AJ Martinez
b741d1f11a Use dedicated sound for wavedash min charge indicator 2023-03-12 17:09:09 -07:00
toaster
45891ac22f G_GetNextMap: Go to TEST RUN when the next Race map in a GP is invalid
Resolves #366
2023-03-12 20:53:46 +00:00
toaster
425f260914 Never consider TEST RUN locked
- Repairs access to TEST RUN cup
- We want to make it an unlockable later, so...
- M_MapLocked data types corrected
2023-03-12 20:41:00 +00:00
toaster
241475155b Rename "Break the Capsules" to "Prison Break"
We had this collective consciousness bigbrain moment in VC together, and it can literally only happen in this branch because unlocks.pk3 is the only main-game asset that needs to change for it
Solves the big problem we had with mixing up Item Capsules and ~~Battle Capsules~~ PRISON EGGS
2023-03-12 20:17:46 +00:00
toaster
0b71b2f71f M_DrawStatistics: Fix "Hours/Minutes/Seconds" plurality if there's only 1 2023-03-12 20:16:03 +00:00
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