diff --git a/distribution/changelog.txt b/distribution/changelog.txt index bdf92feac8..615316539d 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -9,6 +9,7 @@ - Fix: [#21794] Lay-down coaster cars reverse on first frames of downwards corkscrew. - Fix: [#23368] Incorrect refund amount when deleting track pieces at or above 96m. - Fix: [#23508] Simultaneous virtual floors shown for ride and footpath. +- Fix: [#23512] Holding brakes are skipped if they’re too close together. - Fix: [#23581] [Plugin] Food/drink items given to guests have no consumption duration set. - Fix: [#23591] “Install new track” button in Track Designs Manager is misaligned. - Fix: [#23618] Can no longer build diagonal brakes & block brakes on Steeplechase, Inverted Lay-down, & Inverted Multi-Dim roller coasters. diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index f7ef26be86..7de365c43f 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -50,7 +50,7 @@ using namespace OpenRCT2; // It is used for making sure only compatible builds get connected, even within // single OpenRCT2 version. -constexpr uint8_t kNetworkStreamVersion = 2; +constexpr uint8_t kNetworkStreamVersion = 3; const std::string kNetworkStreamID = std::string(OPENRCT2_VERSION) + "-" + std::to_string(kNetworkStreamVersion); diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index ad7518d355..be6de68fec 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -5564,15 +5564,11 @@ void Vehicle::UpdateVelocity() } if (HasFlag(VehicleFlags::StoppedOnHoldingBrake)) { - vertical_drop_countdown--; - if (vertical_drop_countdown == -70) - { - ClearFlag(VehicleFlags::StoppedOnHoldingBrake); - } - if (vertical_drop_countdown >= 0) + if (vertical_drop_countdown > 0) { nextVelocity = 0; acceleration = 0; + vertical_drop_countdown--; } } velocity = nextVelocity; @@ -7060,6 +7056,10 @@ bool Vehicle::UpdateTrackMotionForwardsGetNewTrack( SetTrackDirection(location.direction); SetTrackType(trackType); PopulateBrakeSpeed(TrackLocation, *tileElement->AsTrack()); + if (HasFlag(VehicleFlags::StoppedOnHoldingBrake) && vertical_drop_countdown <= 0) + { + ClearFlag(VehicleFlags::StoppedOnHoldingBrake); + } if (trackType == TrackElemType::OnRidePhoto) { trigger_on_ride_photo(TrackLocation, tileElement); @@ -7470,7 +7470,10 @@ bool Vehicle::UpdateTrackMotionBackwardsGetNewTrack(TrackElemType trackType, con SetTrackType(trackType); SetTrackDirection(direction); PopulateBrakeSpeed(TrackLocation, *tileElement->AsTrack()); - + if (HasFlag(VehicleFlags::StoppedOnHoldingBrake) && vertical_drop_countdown <= 0) + { + ClearFlag(VehicleFlags::StoppedOnHoldingBrake); + } // There are two bytes before the move info list uint16_t trackTotalProgress = GetTrackProgress(); *progress = trackTotalProgress - 1;