diff --git a/engines/titanic/game/sgt/sgt_state_room.cpp b/engines/titanic/game/sgt/sgt_state_room.cpp index ca6acaef1675..b4927e682881 100644 --- a/engines/titanic/game/sgt/sgt_state_room.cpp +++ b/engines/titanic/game/sgt/sgt_state_room.cpp @@ -125,10 +125,10 @@ bool CSGTStateRoom::VisibleMsg(CVisibleMsg *msg) { bool CSGTStateRoom::EnterRoomMsg(CEnterRoomMsg *msg) { CPetControl *pet = getPetControl(); - uint roomFlags = pet->getRoomFlags(); - uint assignedRoom = pet->getAssignedRoomFlags(); - if (roomFlags == assignedRoom) { + // WORKAROUND: Correctly show SGT furniture states in assigned stateroom + // even when the user has already upgraded to 2nd or 1st class + if (pet->isInAssignedRoom()) { loadFrame(_savedFrame); _isClosed = _savedIsClosed; setVisible(_savedVisible); @@ -139,7 +139,7 @@ bool CSGTStateRoom::EnterRoomMsg(CEnterRoomMsg *msg) { if (isEquals("Drawer")) { petSetArea(PET_REMOTE); - if (roomFlags == assignedRoom && getPassengerClass() == 3 + if (pet->isInAssignedRoom() && getPassengerClass() == 3 && _statics->_announcementFlag) { // Congratulations, you may have won an upgrade playSound(TRANSLATE("b#21.wav", "b#2.wav")); @@ -149,7 +149,7 @@ bool CSGTStateRoom::EnterRoomMsg(CEnterRoomMsg *msg) { _statics->_drawer = "Closed"; setVisible(false); _isClosed = true; - } else if (roomFlags != assignedRoom) { + } else if (!pet->isInAssignedRoom()) { loadFrame(0); if (_displayFlag) { setVisible(true);