Fix: A queuing guest can ignore the next guest in the queue in certain circumstances (RCT2 bug) (#19068)

* Use PeepDirection instead of sprite_direction to update queue position

* Align guests to the centre of the first queue tile.

* Bump network version

* Update changelog

* Update replays

Co-authored-by: duncanspumpkin <duncans_pumpkin@hotmail.co.uk>
This commit is contained in:
Wirlie 2023-01-24 03:35:12 -06:00 committed by GitHub
parent be5b7b7f74
commit 538b87e94c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 13 additions and 7 deletions

View File

@ -76,9 +76,9 @@ set(OPENMSX_VERSION "1.0.1")
set(OPENMSX_URL "https://github.com/OpenRCT2/OpenMusic/releases/download/v${OPENMSX_VERSION}/openmusic.zip")
set(OPENMSX_SHA1 "8ff94490180e2fbfdd13a4130eb300da726ca406")
set(REPLAYS_VERSION "0.0.70")
set(REPLAYS_VERSION "0.0.72")
set(REPLAYS_URL "https://github.com/OpenRCT2/replays/releases/download/v${REPLAYS_VERSION}/replays.zip")
set(REPLAYS_SHA1 "09B339E86AAE81580C5AC3E23AC4BC9E030DA076")
set(REPLAYS_SHA1 "93744627E3F1FE5ED6317D5A292D15B63AA71765")
option(FORCE32 "Force 32-bit build. It will add `-m32` to compiler flags.")
option(WITH_TESTS "Build tests")

View File

@ -21,6 +21,7 @@
- Fix: [#18971] New Game does not prompt for save before quitting.
- Fix: [#19025] Park loan behaves inconsistently with non-round and out-of-bounds values.
- Fix: [#19026] Park loan is clamped to a 32-bit integer.
- Fix: [#19068] Guests may not join queues correctly.
- Fix: [#19091] [Plugin] Remote plugins in multiplayer servers do not unload properly.
- Fix: [#19112] Clearing the last character in the Object Selection filter does not properly reset it.
- Fix: [#19112] Text boxes not updated with empty strings in Track List, Server List, and Start Server windows.

View File

@ -51,8 +51,8 @@
<OpenSFXSha1>8f04aea33f8034131c3069f6accacce0d94f80c1</OpenSFXSha1>
<OpenMSXUrl>https://github.com/OpenRCT2/OpenMusic/releases/download/v1.0.1/openmusic.zip</OpenMSXUrl>
<OpenMSXSha1>8ff94490180e2fbfdd13a4130eb300da726ca406</OpenMSXSha1>
<ReplaysUrl>https://github.com/OpenRCT2/replays/releases/download/v0.0.70/replays.zip</ReplaysUrl>
<ReplaysSha1>09B339E86AAE81580C5AC3E23AC4BC9E030DA076</ReplaysSha1>
<ReplaysUrl>https://github.com/OpenRCT2/replays/releases/download/v0.0.72/replays.zip</ReplaysUrl>
<ReplaysSha1>93744627E3F1FE5ED6317D5A292D15B63AA71765</ReplaysSha1>
</PropertyGroup>
<ItemGroup>

View File

@ -7318,10 +7318,10 @@ bool Guest::UpdateQueuePosition(PeepActionType previous_action)
return false;
}
if (sprite_direction != guestNext->sprite_direction)
if (PeepDirection != guestNext->PeepDirection)
return false;
switch (guestNext->sprite_direction / 8)
switch (guestNext->PeepDirection)
{
case 0:
if (x >= guestNext->x)

View File

@ -2237,6 +2237,11 @@ static void PeepInteractWithPath(Peep* peep, const CoordsXYE& coords)
}
}
// Force set centre of tile to prevent issues with guests accidentally skipping the queue
auto queueTileCentre = CoordsXY{ CoordsXY{ guest->NextLoc } + CoordsDirectionDelta[guest->PeepDirection] }
.ToTileCentre();
guest->SetDestination(queueTileCentre);
PeepFootpathMoveForward(guest, { coords, tile_element }, vandalism_present);
}
else

View File

@ -43,7 +43,7 @@
// It is used for making sure only compatible builds get connected, even within
// single OpenRCT2 version.
#define NETWORK_STREAM_VERSION "2"
#define NETWORK_STREAM_VERSION "3"
#define NETWORK_STREAM_ID OPENRCT2_VERSION "-" NETWORK_STREAM_VERSION