diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 33292ea8b6..3c3b99be94 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -16,6 +16,7 @@ - Fix: [#24576] It is possible to edit open rides in certain circumstances. - Fix: [#24589] Music tab doesn’t fully render in multiplayer. - Fix: [#24615] Blank strings in Windows installer. +- Fix: [#24617] ‘Divide by zero’ error when updating boat hire acceleration. 0.4.23 (2025-06-07) ------------------------------------------------------------------------ diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 698d9627fa..74344fad77 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -3909,7 +3909,7 @@ void Vehicle::UpdateMotionBoatHire() int32_t curMass = mass == 0 ? 1 : mass; int32_t eax = ((velocity >> 1) + edx) / curMass; - int32_t ecx = -eax; + int32_t newAcceleration = -eax; if (carEntry->flags & CAR_ENTRY_FLAG_POWERED) { eax = speed << 14; @@ -3920,9 +3920,12 @@ void Vehicle::UpdateMotionBoatHire() } eax -= velocity; edx = powered_acceleration * 2; - ecx += (eax * edx) / ebx; + if (ebx != 0) + { + newAcceleration += (eax * edx) / ebx; + } } - acceleration = ecx; + acceleration = newAcceleration; } // eax = _vehicleMotionTrackFlags; // ebx = _vehicleStationIndex;