diff --git a/distribution/changelog.txt b/distribution/changelog.txt index c5a5d016a0..c1c79aaa31 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -29,6 +29,7 @@ - Fix: [#25388] The Shortcut Keys window uses the wrong colours for separators, scrollbars and buttons. - Fix: [#25401] Mazes can be built 2 units higher than their support limits. - Fix: [#25404] Guests that have been removed with the remove all guests cheat will still be visible if they were sliding down the Spiral Slide. +- Fix: [#25410] Guest flags (e.g. tracking) not imported from RCT1. 0.4.27 (2025-10-04) ------------------------------------------------------------------------ diff --git a/src/openrct2/rct1/RCT1.h b/src/openrct2/rct1/RCT1.h index 78aba54644..68b705a316 100644 --- a/src/openrct2/rct1/RCT1.h +++ b/src/openrct2/rct1/RCT1.h @@ -658,10 +658,16 @@ namespace OpenRCT2::RCT1 uint8_t StaffOrders; // 0xC6 uint8_t PeepIsLostCountdown; // 0xC6 }; - RCT12RideId Photo1RideRef; // 0xC7 - uint8_t PeepFlags; // 0xC8 - uint8_t padC9; // 0xC9 - uint16_t itemFlagsBase; // 0xCA + RCT12RideId Photo1RideRef; // 0xC7 + union + { + uint32_t peepFlagsLL; // 0xC8 + struct + { + uint16_t peepFlagsBaseAA; // 0xC8 + uint16_t itemFlagsBase; // 0xCA + }; + }; RCT12xyzd8 PathfindGoal; // 0xCC RCT12xyzd8 PathfindHistory[4]; // 0xD0 uint8_t NoActionFrameNum; // 0xE0 @@ -695,10 +701,15 @@ namespace OpenRCT2::RCT1 uint8_t FavouriteRideRating; // 0xFA uint8_t PadFB; uint32_t itemFlagsAALL; // 0xFC + uint64_t GetItemFlags(bool isBase) const { return isBase ? itemFlagsBase : itemFlagsAALL; } + uint32_t getPeepFlags(bool isLL) const + { + return isLL ? peepFlagsLL : peepFlagsBaseAA; + } }; static_assert(sizeof(Peep) == 0x100); diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index c4e0209f38..7e603fd9f0 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -2982,6 +2982,7 @@ namespace OpenRCT2::RCT1 OpenRCT2::RideUse::GetTypeHistory().Set(dst->Id, RCT12GetRideTypesBeenOn(src)); dst->Photo1RideRef = RCT12RideIdToOpenRCT2RideId(src->Photo1RideRef); + dst->PeepFlags = src->getPeepFlags(_gameVersion == FILE_VERSION_RCT1_LL); for (size_t i = 0; i < std::size(src->Thoughts); i++) {