diff --git a/distribution/changelog.txt b/distribution/changelog.txt index d0b2c660a2..c5a5d016a0 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -6,6 +6,7 @@ - Improved: [#25349] ‘Recent Messages’ window can now be fully themed. - Change: [#25089] Peep actions and animations that cause them to stop moving no longer trigger when they are on a level crossing. - Change: [#25337] Placing track designs with scenery that is obstructed no longer disables all of the scenery. +- Fix: [#20198] Guest inventory from RCT1 base game saves is not imported. - Fix: [#20486] Multiplayer desync when placing track designs without any scenery. - Fix: [#22779, #25330] Incorrect queue paths in Nevermore Park and Six Flags Holland scenarios (bug in the original scenarios). - Fix: [#24975] The Corkscrew and LIM Launched (original bug) roller coaster quarter loop tunnels are too high. diff --git a/src/openrct2/rct1/RCT1.h b/src/openrct2/rct1/RCT1.h index d1784aeb84..78aba54644 100644 --- a/src/openrct2/rct1/RCT1.h +++ b/src/openrct2/rct1/RCT1.h @@ -659,7 +659,9 @@ namespace OpenRCT2::RCT1 uint8_t PeepIsLostCountdown; // 0xC6 }; RCT12RideId Photo1RideRef; // 0xC7 - uint32_t PeepFlags; // 0xC8 + uint8_t PeepFlags; // 0xC8 + uint8_t padC9; // 0xC9 + uint16_t itemFlagsBase; // 0xCA RCT12xyzd8 PathfindGoal; // 0xCC RCT12xyzd8 PathfindHistory[4]; // 0xD0 uint8_t NoActionFrameNum; // 0xE0 @@ -692,10 +694,10 @@ namespace OpenRCT2::RCT1 RCT12RideId FavouriteRide; // 0xF9 uint8_t FavouriteRideRating; // 0xFA uint8_t PadFB; - uint32_t ItemStandardFlags; // 0xFC - uint64_t GetItemFlags() const + uint32_t itemFlagsAALL; // 0xFC + uint64_t GetItemFlags(bool isBase) const { - return ItemStandardFlags; + return isBase ? itemFlagsBase : itemFlagsAALL; } }; static_assert(sizeof(Peep) == 0x100); diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index e3aad3ce36..c4e0209f38 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -2933,18 +2933,20 @@ namespace OpenRCT2::RCT1 dst->OutsideOfPark = static_cast(src->OutsideOfPark); dst->TimeToConsume = src->TimeToConsume; dst->VandalismSeen = src->VandalismSeen; - dst->UmbrellaColour = RCT1::GetColour(src->UmbrellaColour); - dst->HatColour = RCT1::GetColour(src->HatColour); - // Balloons were always blue in RCT1 without AA/LL + // Balloons were always blue in RCT1 without AA/LL, umbrellas always red if (_gameVersion == FILE_VERSION_RCT1) { + dst->UmbrellaColour = COLOUR_BRIGHT_RED; dst->BalloonColour = COLOUR_LIGHT_BLUE; } else { + dst->UmbrellaColour = RCT1::GetColour(src->UmbrellaColour); dst->BalloonColour = RCT1::GetColour(src->BalloonColour); } + dst->HatColour = RCT1::GetColour(src->HatColour); + dst->Happiness = src->Happiness; dst->HappinessTarget = src->HappinessTarget; dst->Nausea = src->Nausea; @@ -3012,7 +3014,7 @@ namespace OpenRCT2::RCT1 dst->FavouriteRideRating = 0; } - dst->SetItemFlags(src->GetItemFlags()); + dst->SetItemFlags(src->GetItemFlags(_gameVersion == FILE_VERSION_RCT1)); } template<>