Various gameplay & stability fixes
-
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
inMT_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 unlessMF_NOCLIP
was present. -
733cf20a -Redid this, see below.GS_LEVEL
gamestate is now set after the level finishes loading. -
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
. Domap map01
, then use thethroworb
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 the0thpos
command with 2 players to see it in action. 0thpositionrepro.lua
Feedback is much appreciated.