Skip to content

Various gameplay & stability fixes

JugadorXEI requested to merge JugadorXEI/Kart-Public:more-fixes-jug into next
  • Gameplay

  • 58823381 - Fixed "magnet landing" - a physics bug where players would "magnet" to a previous position after being hit by a wipeout-inducing item, use a spring panel sector, and then landing.

  • e123f4bd - Fixed "0th position" - a bug where its most common side effect was, when a player's roulette finished, if someone else respawned on that same tic, the former player would get significantly better items (the respawning player would have position 0th for a tic, which is technically higher than 1st, thus 1st's position gets compared against 0th's to determine useodds).

  • dfc942a6 - Fixed drift charge disappearing in midair, if the player performed a new drift in midair, meaning the player's drift charge would disappear.

  • df769a13 2c1d5a72 - Addressed yellow spring panels removing grown players' miniturbos and causing wrongdrift, by making an exception to the minimum speed required to drift if the player is in yellow spring panel state, and has a higher scale than normal. This is because otherwise, for at least one tic, the grown player's speed will always be below the minimum speed, causing undesired effects.

  • bf911d02 - Thunder Shield now has COOLDOWNONSTART when rolling for items. Commit 9e6980c8 changed how the Thunder Shield works, inadvertently removing the starting cooldown that existed pre-1.3 (which was part of the bug), but many believed the cooldown component was an intentional mechanic (because Thunder Shield at the start of races is really strong), so this has been added back.

  • Stability

  • 58823381 - Removed unused painstate value in MT_SINK, which could cause crashes due to map and gameplay elements that could hurt the Sink (namely, Laser FoFs).

  • 58823381 - Added MF_NOCLIP in MT_BOOMPARTICLE's flags. This namely fixes Jawz's smoke effect hanging the server and clients if the object moved out-of-bounds, as the combination of flags had it run the scenery thinker and not account for this unless MF_NOCLIP was present.

  • 733cf20a - GS_LEVEL gamestate is now set after the level finishes loading. Redid this, see below.

  • 4fdbfb1d - Don't handle connections until the level finishes loading. This fixes a myriad of join bugs, such as dedicated servers crashing if the generated save game was invalid, clients crashing for downloading a corrupted or partial save game, listen servers infinitely hanging if someone joined as the server started, and various zombie client issues.

The following is attached:

  • A 32-bit Windows build of the game with this branch's fixes, with DEVELOP flag. srb2kart_morefixesjug_2.exe
  • A test level and script for testing the magnet landing glitch, MagnetLandingTest.wad. Do map map01, then use the throworb command in front of a spring panel to see it in action. MagnetLandingTest.wad
  • A test script for testing the 0th position bug, 0thpositionrepro.lua. Load the script, then load a level, then use the 0thpos command with 2 players to see it in action. 0thpositionrepro.lua

Feedback is much appreciated.

Edited by JugadorXEI

Merge request reports