aboutsummaryrefslogtreecommitdiff
path: root/engines/startrek/rooms
diff options
context:
space:
mode:
authorMatthew Stewart2018-06-30 23:53:52 -0400
committerEugene Sandulenko2018-08-09 08:37:30 +0200
commitf583e307df83f67d56a541375afdfeac11bd36b9 (patch)
treea65ed3efc8f4fc9021f7ae6c1c586ddf07229841 /engines/startrek/rooms
parentbfb312a3196c6a46c5048599ea3000608f5d01ce (diff)
downloadscummvm-rg350-f583e307df83f67d56a541375afdfeac11bd36b9.tar.gz
scummvm-rg350-f583e307df83f67d56a541375afdfeac11bd36b9.tar.bz2
scummvm-rg350-f583e307df83f67d56a541375afdfeac11bd36b9.zip
STARTREK: Minor fixes to MUDD mission
Also make better names for variables.
Diffstat (limited to 'engines/startrek/rooms')
-rw-r--r--engines/startrek/rooms/function_map.h1
-rw-r--r--engines/startrek/rooms/mudd0.cpp41
-rw-r--r--engines/startrek/rooms/mudd2.cpp47
-rw-r--r--engines/startrek/rooms/mudd3.cpp36
-rw-r--r--engines/startrek/rooms/mudd4.cpp16
-rw-r--r--engines/startrek/rooms/mudd5.cpp6
6 files changed, 80 insertions, 67 deletions
diff --git a/engines/startrek/rooms/function_map.h b/engines/startrek/rooms/function_map.h
index e529f8b2cb..b2ecf1f919 100644
--- a/engines/startrek/rooms/function_map.h
+++ b/engines/startrek/rooms/function_map.h
@@ -1091,7 +1091,6 @@ RoomAction love2ActionList[] = {
{ Action(ACTION_FINISHED_WALKING, 10, 0, 0), &Room::love2ReachedSynthesizerOutput },
{ Action(ACTION_FINISHED_ANIMATION, 23, 0, 0), &Room::love2GotSynthesizerOutput },
- // TODO: test these
{ Action(ACTION_GET, 19, 0, 0), &Room::love2GetCure },
{ Action(ACTION_FINISHED_WALKING, 11, 0, 0), &Room::love2ReachedCure },
{ Action(ACTION_FINISHED_ANIMATION, 24, 0, 0), &Room::love2GotCure },
diff --git a/engines/startrek/rooms/mudd0.cpp b/engines/startrek/rooms/mudd0.cpp
index bb26440fac..9105c01e25 100644
--- a/engines/startrek/rooms/mudd0.cpp
+++ b/engines/startrek/rooms/mudd0.cpp
@@ -34,29 +34,24 @@
#define HOTSPOT_DOOR 0x25
#define HOTSPOT_BOTTOM_OF_ROOM 0x26
-// BUG: Mudd is sometimes present when he shouldn't be.
+// BUG-ish: Sometimes when looking at Mudd, Kirk walks toward him, but not always. Does
+// this happen in original?
namespace StarTrek {
void Room::mudd0Tick1() {
playVoc("MUD0LOOP");
- // ENHANCEMENT: Only disable input when Mudd showing Mudd cutscene (avoids a long,
- // pointless delay when entering the room otherwise)
- if (!_vm->_awayMission.mudd.enteredRoom0ForFirstTime)
- _vm->_awayMission.disableInput = 2;
-
- loadActorAnim(OBJECT_MUDD, "s4cbhr", 0xa2, 0xa9, 0);
-
- // Floppy version's code.
- /*
- if (_vm->_awayMission.mudd.field29 == 0)
- _vm->_awayMission.mudd.field29 = 2;
+ // NOTE: Using the floppy version's code here; Mudd disappears from this room after
+ // the first meeting. Fixes an issue where Mudd appears in the first room when he's
+ // supposed to be in the medbay.
+ // TODO: verify this matches with floppy version's code
+ if (_vm->_awayMission.mudd.muddFirstRoomState != 0)
+ _vm->_awayMission.mudd.muddFirstRoomState = 2;
else {
- _vm->_awayMission.mudd.field1d = 2;
+ _vm->_awayMission.disableInput = 2;
loadActorAnim(OBJECT_MUDD, "s4cbhr", 0xa2, 0xa9, 0);
}
- */
}
void Room::mudd0Tick50() {
@@ -67,11 +62,11 @@ void Room::mudd0Tick50() {
}
void Room::mudd0Tick60() {
- if (_vm->_awayMission.mudd.field29 == 0) {
+ if (_vm->_awayMission.mudd.muddFirstRoomState == 0) {
// ENHANCEMENT: Move this into if statement (related to above enhancement)
_vm->_awayMission.disableInput = false;
- _vm->_awayMission.mudd.field29++;
+ _vm->_awayMission.mudd.muddFirstRoomState++;
showText(TX_SPEAKER_MUDD, TX_MUD0_037);
showText(TX_SPEAKER_KIRK, TX_MUD0_009);
@@ -261,7 +256,7 @@ void Room::mudd0LookAtMudd() {
}
void Room::mudd0TalkToKirk() {
- if (_vm->_awayMission.mudd.field29 == 2)
+ if (_vm->_awayMission.mudd.muddFirstRoomState == 2)
showText(TX_SPEAKER_KIRK, TX_MUD0_010);
else {
showText(TX_SPEAKER_KIRK, TX_MUD0_010);
@@ -271,7 +266,7 @@ void Room::mudd0TalkToKirk() {
}
void Room::mudd0TalkToSpock() {
- if (_vm->_awayMission.mudd.field29 == 2)
+ if (_vm->_awayMission.mudd.muddFirstRoomState == 2)
showText(TX_SPEAKER_SPOCK, TX_MUD0_022);
else {
showText(TX_SPEAKER_SPOCK, TX_MUD0_022);
@@ -283,7 +278,7 @@ void Room::mudd0TalkToSpock() {
}
void Room::mudd0TalkToMccoy() {
- if (_vm->_awayMission.mudd.field29 == 2)
+ if (_vm->_awayMission.mudd.muddFirstRoomState == 2)
showText(TX_SPEAKER_MCCOY, TX_MUD0_016);
else {
showText(TX_SPEAKER_MCCOY, TX_MUD0_016);
@@ -294,15 +289,15 @@ void Room::mudd0TalkToMccoy() {
}
void Room::mudd0TalkToRedshirt() {
- if (_vm->_awayMission.mudd.field29 == 2)
- showText(TX_SPEAKER_BUCHERT, TX_MUD0_016);
+ if (_vm->_awayMission.mudd.muddFirstRoomState == 2) {
+ showText(TX_SPEAKER_BUCHERT, TX_MUD0_039);
+ showText(TX_SPEAKER_KIRK, TX_MUD0_008);
+ }
else {
showText(TX_SPEAKER_BUCHERT, TX_MUD0_040);
showText(TX_SPEAKER_MUDD, TX_MUD0_030);
showText(TX_SPEAKER_BUCHERT, TX_MUD0_041);
showText(TX_SPEAKER_MUDD, TX_MUD0_036);
- showText(TX_SPEAKER_BUCHERT, TX_MUD0_039);
- showText(TX_SPEAKER_KIRK, TX_MUD0_008);
}
}
diff --git a/engines/startrek/rooms/mudd2.cpp b/engines/startrek/rooms/mudd2.cpp
index d2a420d0c4..3a3ba81d14 100644
--- a/engines/startrek/rooms/mudd2.cpp
+++ b/engines/startrek/rooms/mudd2.cpp
@@ -67,12 +67,12 @@ void Room::mudd2Tick1() {
_vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_W;
_vm->_awayMission.crewDirectionsAfterWalk[OBJECT_MCCOY] = DIR_W;
_vm->_awayMission.crewDirectionsAfterWalk[OBJECT_REDSHIRT] = DIR_W;
- _vm->_awayMission.mudd.muddDroppedCapsule = false;
+ _vm->_awayMission.mudd.muddCurrentlyInsane = false;
- if (_vm->_awayMission.mudd.muddState == 0) {
- _vm->_awayMission.mudd.muddState = 0;
- } else if (_vm->_awayMission.mudd.muddState == 2) {
- _vm->_awayMission.mudd.muddDroppedCapsule = true;
+ if (_vm->_awayMission.mudd.muddInsanityState == 0) { // First time entering room
+ _vm->_awayMission.mudd.muddInsanityState = 1;
+ } else if (_vm->_awayMission.mudd.muddInsanityState == 2) { // Currently insane
+ _vm->_awayMission.mudd.muddCurrentlyInsane = true;
if (!_vm->_awayMission.mudd.muddUnconscious) {
_vm->_awayMission.mudd.muddUnconscious = false;
loadActorAnim2(OBJECT_MUDD, "s4sbhn", 0x9f, 0xbf);
@@ -80,16 +80,16 @@ void Room::mudd2Tick1() {
} else {
loadActorAnim2(OBJECT_MUDD, "s4sbob", 0x9f, 0xba);
}
- } else if (_vm->_awayMission.mudd.muddCurrentlyInsane) {
- _vm->_awayMission.mudd.muddState = 0;
- } else if (_vm->_awayMission.mudd.muddState == 1) {
+ } else if (_vm->_awayMission.mudd.muddUnavailable) {
+ _vm->_awayMission.mudd.muddInsanityState = 1;
+ } else if (_vm->_awayMission.mudd.muddInsanityState == 1) { // Second time entering room, start cutscene
playMidiMusicTracks(3);
loadActorAnim2(OBJECT_MUDD, "s4sbhw", 0x99, 0xbf);
_vm->_awayMission.disableInput = 2;
_vm->_awayMission.mudd.muddInhaledGas = true;
_vm->_awayMission.timers[1] = 70;
- _vm->_awayMission.mudd.muddState = 2;
- _vm->_awayMission.mudd.muddCurrentlyInsane = true;
+ _vm->_awayMission.mudd.muddInsanityState = 2;
+ _vm->_awayMission.mudd.muddUnavailable = true;
}
}
@@ -150,9 +150,9 @@ void Room::mudd2UseCapsuleOnControlPanel() {
void Room::mudd2MccoyReachedControlPanel() {
if (_vm->_awayMission.mudd.translatedAlienLanguage)
- showText(TX_SPEAKER_MCCOY, TX_MUD2_014);
- else
loadActorAnimC(OBJECT_MCCOY, "musehn", -1, -1, &Room::mudd2MccoyPutCapsuleInControlPanel);
+ else // NOTE: Unused, since you can't get capsules without translating the language first
+ showText(TX_SPEAKER_MCCOY, TX_MUD2_014);
}
void Room::mudd2MccoyPutCapsuleInControlPanel() {
@@ -195,7 +195,7 @@ void Room::mudd2MuddNoticedKirk() {
void Room::mudd2MuddDroppedCapsule() {
loadActorAnim2(OBJECT_MUDD, "s4sbhn", 0x9f, 0xbf, 3); // NOTE: no callback from this
loadActorAnim2(OBJECT_CAPSULE, "s4sbvp", 0x93, 0xc3);
- _vm->_awayMission.mudd.muddDroppedCapsule = true;
+ _vm->_awayMission.mudd.muddCurrentlyInsane = true;
showText(TX_SPEAKER_MCCOY, TX_MUD2_032);
showText(TX_SPEAKER_MUDD, TX_MUD2_049);
@@ -312,9 +312,9 @@ void Room::mudd2MccoyReachedMudd() {
}
void Room::mudd2MccoyCuredMudd() {
+ _vm->_awayMission.mudd.muddUnavailable = false;
+ _vm->_awayMission.mudd.muddInsanityState = 3;
_vm->_awayMission.mudd.muddCurrentlyInsane = false;
- _vm->_awayMission.mudd.muddState = 3;
- _vm->_awayMission.mudd.muddDroppedCapsule = false;
_vm->_awayMission.mudd.muddInhaledGas = false;
showText(TX_SPEAKER_MCCOY, TX_MUD2_033);
@@ -352,9 +352,10 @@ void Room::mudd2LookAtBed() {
showText(TX_MUD2N007);
}
-// FIXME: The conditions in the below functions seem wrong.
void Room::mudd2TalkToKirk() {
- if (!_vm->_awayMission.mudd.muddDroppedCapsule || _vm->_awayMission.mudd.muddInhaledGas || _vm->_awayMission.mudd.muddUnconscious)
+ // BUGFIX: second condition in if statement changed to "must be false" instead of
+ // "must be true". (Same applies to below talk functions.)
+ if (!_vm->_awayMission.mudd.muddCurrentlyInsane || !_vm->_awayMission.mudd.muddInhaledGas || _vm->_awayMission.mudd.muddUnconscious)
showText(TX_SPEAKER_KIRK, TX_MUD2_010);
else {
showText(TX_SPEAKER_KIRK, TX_MUD2_005);
@@ -364,7 +365,7 @@ void Room::mudd2TalkToKirk() {
}
void Room::mudd2TalkToSpock() {
- if (!_vm->_awayMission.mudd.muddDroppedCapsule || _vm->_awayMission.mudd.muddInhaledGas || _vm->_awayMission.mudd.muddUnconscious) {
+ if (!_vm->_awayMission.mudd.muddCurrentlyInsane || !_vm->_awayMission.mudd.muddInhaledGas || _vm->_awayMission.mudd.muddUnconscious) {
showText(TX_SPEAKER_SPOCK, TX_MUD2_040);
showText(TX_SPEAKER_KIRK, TX_MUD2_011);
} else {
@@ -373,7 +374,7 @@ void Room::mudd2TalkToSpock() {
}
void Room::mudd2TalkToMccoy() {
- if (!_vm->_awayMission.mudd.muddDroppedCapsule || _vm->_awayMission.mudd.muddInhaledGas || _vm->_awayMission.mudd.muddUnconscious) {
+ if (!_vm->_awayMission.mudd.muddCurrentlyInsane || !_vm->_awayMission.mudd.muddInhaledGas || _vm->_awayMission.mudd.muddUnconscious) {
showText(TX_SPEAKER_MCCOY, TX_MUD2_025);
showText(TX_SPEAKER_KIRK, TX_MUD2_007);
} else {
@@ -382,23 +383,23 @@ void Room::mudd2TalkToMccoy() {
}
void Room::mudd2TalkToRedshirt() {
- if (!_vm->_awayMission.mudd.muddDroppedCapsule || _vm->_awayMission.mudd.muddInhaledGas || _vm->_awayMission.mudd.muddUnconscious) {
+ if (!_vm->_awayMission.mudd.muddCurrentlyInsane || !_vm->_awayMission.mudd.muddInhaledGas || _vm->_awayMission.mudd.muddUnconscious) {
showText(TX_SPEAKER_BUCHERT, TX_MUD2_054);
showText(TX_SPEAKER_KIRK, TX_MUD2_008);
} else {
showText(TX_SPEAKER_BUCHERT, TX_MUD2_055);
showText(TX_SPEAKER_KIRK, TX_MUD2_003);
- showText(TX_SPEAKER_MCCOY, TX_MUD2_048);
+ showText(TX_SPEAKER_MCCOY, TX_MUD2_036);
}
}
void Room::mudd2TalkToMudd() {
- if (!_vm->_awayMission.mudd.muddDroppedCapsule || _vm->_awayMission.mudd.muddUnconscious)
+ if (!_vm->_awayMission.mudd.muddCurrentlyInsane || !_vm->_awayMission.mudd.muddInhaledGas || _vm->_awayMission.mudd.muddUnconscious)
return;
else if (_vm->_awayMission.mudd.muddInhaledGas) {
showText(TX_SPEAKER_MUDD, TX_MUD2_048);
showText(TX_SPEAKER_MCCOY, TX_MUD2_028);
- } else {
+ } else { // NOTE: Unused (assumes harry is in a normal state, which doesn't happen here)
showText(TX_SPEAKER_MUDD, TX_MUD2_047);
showText(TX_SPEAKER_KIRK, TX_MUD2_006);
}
diff --git a/engines/startrek/rooms/mudd3.cpp b/engines/startrek/rooms/mudd3.cpp
index b0bc5a3e9e..792e749f30 100644
--- a/engines/startrek/rooms/mudd3.cpp
+++ b/engines/startrek/rooms/mudd3.cpp
@@ -54,7 +54,7 @@ void Room::mudd3Tick1() {
_vm->_awayMission.mudd.muddInDatabaseRoom = false;
- if (!_vm->_awayMission.mudd.muddVisitedDatabaseRoom && _vm->_awayMission.mudd.translatedAlienLanguage && !_vm->_awayMission.mudd.muddCurrentlyInsane) {
+ if (!_vm->_awayMission.mudd.muddVisitedDatabaseRoom && _vm->_awayMission.mudd.translatedAlienLanguage && !_vm->_awayMission.mudd.muddUnavailable) {
_vm->_awayMission.mudd.muddVisitedDatabaseRoom = true;
loadActorAnim(OBJECT_MUDD, "s4lbhs", 0xa2, 0x9f);
playMidiMusicTracks(3);
@@ -69,10 +69,12 @@ void Room::mudd3UseCommunicator() {
}
void Room::mudd3LookAtScreen() {
- if (_vm->_awayMission.mudd.translatedAlienLanguage) // FIXME: flipped conditions?
- showText(TX_MUD3N017);
- else
+ // BUGFIX: the condition was flipped in the original; the more "vague" description
+ // should be shown before the alien language is understood.
+ if (_vm->_awayMission.mudd.translatedAlienLanguage)
showText(TX_SPEAKER_SPOCK, TX_MUD3_038);
+ else
+ showText(TX_MUD3N017);
}
void Room::mudd3UseSTricorderOnScreen() {
@@ -94,7 +96,7 @@ void Room::mudd3UseSpockOnSphere() {
_vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_S;
loadActorStandAnim(OBJECT_SPOCK);
- if (_vm->_awayMission.mudd.computerDataErased) {
+ if (_vm->_awayMission.mudd.computerDataErasedOrDestroyed) {
if (!_vm->_awayMission.mudd.databaseDestroyed) {
showText(TX_MUD3N000);
showText(TX_SPEAKER_SPOCK, TX_MUD3_052);
@@ -254,14 +256,22 @@ void Room::mudd3Timer2Expired() {
TX_BLANK
};
- _vm->_awayMission.mudd.computerDataErased = true;
+ _vm->_awayMission.mudd.computerDataErasedOrDestroyed = true;
showText(TX_SPEAKER_MUDD, TX_MUD3_065);
int choice = showText(choices);
- if (choice == 0) { // Allow him to access the database
+ if (choice == 0) { // Allow him to access the database (he ends up erasing it)
showText(TX_SPEAKER_MUDD, TX_MUD3_066);
- _vm->_awayMission.mudd.gaveMuddDatabaseAccess = true;
+ _vm->_awayMission.mudd.muddErasedDatabase = true;
+
+ // ENHANCEMENT: Add a few lines to make it clear that Mudd erased the databanks.
+ // Otherwise, the end of the mission when you confront Mudd doesn't make sense
+ // unless the player happened to try accessing the database again. Also, if you
+ // talk to the crew, they berate him for no apparent reason if this isn't clear.
+ showText(TX_MUD3N000);
+ showText(TX_SPEAKER_MCCOY, TX_MUD3_031);
+
} else { // Don't allow it (he destroys it by accident)
showText(TX_SPEAKER_MUDD, TX_MUD3_064);
_vm->_awayMission.timers[4] = 98;
@@ -281,9 +291,13 @@ void Room::mudd3Timer4Expired() {
}
void Room::mudd3UseMemoryDiskOnSphere() {
+ // ENHANCEMENT: Turn to face south
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_KIRK] = DIR_S;
+ loadActorStandAnim(OBJECT_KIRK);
+
if (_vm->_awayMission.mudd.databaseDestroyed)
showText(TX_MUD3N014);
- else if (_vm->_awayMission.mudd.translatedAlienLanguage && !_vm->_awayMission.mudd.gaveMuddDatabaseAccess) {
+ else if (_vm->_awayMission.mudd.translatedAlienLanguage && !_vm->_awayMission.mudd.muddErasedDatabase) {
showText(TX_MUD3N020);
if (!_vm->_awayMission.mudd.gotPointsForDownloadingData) {
_vm->_awayMission.mudd.missionScore += 3;
@@ -419,7 +433,9 @@ void Room::mudd3TalkToRedshirt() {
}
void Room::mudd3TalkToMudd() {
- if (_vm->_awayMission.mudd.databaseDestroyed) {
+ // ENHANCEMENT: the 2nd part of the if condition is new; whether he physically
+ // destroys the database or does through software, he should give this reaction.
+ if (_vm->_awayMission.mudd.databaseDestroyed || _vm->_awayMission.mudd.muddErasedDatabase) {
showText(TX_SPEAKER_MUDD, TX_MUD3_060);
showText(TX_SPEAKER_MCCOY, TX_MUD3_029);
showText(TX_SPEAKER_MUDD, TX_MUD3_061);
diff --git a/engines/startrek/rooms/mudd4.cpp b/engines/startrek/rooms/mudd4.cpp
index 502a65047a..2905fb3e0a 100644
--- a/engines/startrek/rooms/mudd4.cpp
+++ b/engines/startrek/rooms/mudd4.cpp
@@ -51,11 +51,11 @@ void Room::mudd4UseCommunicator() {
showText(TX_SPEAKER_UHURA, TX_STATICU1);
}
-void Room::mudd4Timer2Expired() { // TODO: better name
+void Room::mudd4Timer2Expired() {
playSoundEffectIndex(SND_07);
}
-void Room::mudd4Timer3Expired() { // TODO: better name
+void Room::mudd4Timer3Expired() {
playSoundEffectIndex(SND_TRANSENE);
}
@@ -331,7 +331,7 @@ void Room::mudd4KirkUsedCommunications() {
}
void Room::mudd4TalkWithMuddAtMissionEnd() {
- if (_vm->_awayMission.mudd.muddCurrentlyInsane)
+ if (_vm->_awayMission.mudd.muddUnavailable)
return;
else {
_vm->_awayMission.disableInput = true;
@@ -356,7 +356,7 @@ void Room::mudd4KirkReachedPositionToTalkToMudd() {
_vm->_awayMission.disableInput = false;
if (_vm->_awayMission.mudd.discoveredLenseAndDegrimerFunction
- || _vm->_awayMission.mudd.gaveMuddDatabaseAccess
+ || _vm->_awayMission.mudd.muddErasedDatabase
|| _vm->_awayMission.mudd.databaseDestroyed
|| !_vm->_awayMission.mudd.accessedAlienDatabase) { // NOTE: why this last line? Test this...
const int choices[] = {
@@ -381,18 +381,20 @@ void Room::mudd4KirkReachedPositionToTalkToMudd() {
endMission(_vm->_awayMission.mudd.missionScore, 0x1b, _vm->_awayMission.mudd.torpedoStatus);
} else {
// Threaten to arrest Mudd.
- if (_vm->_awayMission.mudd.gaveMuddDatabaseAccess || _vm->_awayMission.mudd.databaseDestroyed)
+ if (_vm->_awayMission.mudd.muddErasedDatabase || _vm->_awayMission.mudd.databaseDestroyed)
showText(TX_SPEAKER_KIRK, TX_MUD4_034);
if (_vm->_awayMission.mudd.discoveredLenseAndDegrimerFunction)
showText(TX_SPEAKER_KIRK, TX_MUD4_037);
showText(TX_SPEAKER_KIRK, TX_MUD4_026);
- if (_vm->_awayMission.mudd.gaveMuddDatabaseAccess && _vm->_awayMission.mudd.databaseDestroyed) {
+ if (_vm->_awayMission.mudd.muddErasedDatabase && _vm->_awayMission.mudd.databaseDestroyed) {
+ // Mudd offers to copy the lost data to the enterprise computer. You don't
+ // get any points for this outcome.
+
// NOTE: This combination is probably impossible, making this unused?
// (Either you give Mudd access to the database, or he destroys it.)
- // Mudd offers to copy the lost data to the enterprise computer.
showText(TX_SPEAKER_MUDD, TX_MUD4_071);
showText(TX_SPEAKER_KIRK, TX_MUD4_036);
showText(TX_SPEAKER_SPOCK, TX_MUD4_029);
diff --git a/engines/startrek/rooms/mudd5.cpp b/engines/startrek/rooms/mudd5.cpp
index c8e7500126..c7e63f35d7 100644
--- a/engines/startrek/rooms/mudd5.cpp
+++ b/engines/startrek/rooms/mudd5.cpp
@@ -48,8 +48,8 @@ void Room::mudd5Tick1() {
loadActorAnim(OBJECT_LIFE_SUPPORT_GENERATOR, "s4eplo", GENERATOR_X, GENERATOR_Y);
_vm->_awayMission.mudd.numTimesEnteredRoom5++;
// BUG: this event can become permanently unavailable? (test)
- if (_vm->_awayMission.mudd.numTimesEnteredRoom5 == 2 && !_vm->_awayMission.mudd.muddCurrentlyInsane && !_vm->_awayMission.mudd.repairedLifeSupportGenerator) {
- _vm->_awayMission.mudd.muddCurrentlyInsane = true;
+ if (_vm->_awayMission.mudd.numTimesEnteredRoom5 == 2 && !_vm->_awayMission.mudd.muddUnavailable && !_vm->_awayMission.mudd.repairedLifeSupportGenerator) {
+ _vm->_awayMission.mudd.muddUnavailable = true;
_vm->_awayMission.mudd.numTimesEnteredRoom5 = 1;
_vm->_awayMission.disableInput = 2;
playMidiMusicTracks(3);
@@ -154,7 +154,7 @@ void Room::mudd5KirkRepairedLifeSupportGenerator() {
showText(TX_SPEAKER_SPOCK, TX_MUD5_028);
_vm->_awayMission.mudd.lifeSupportMalfunctioning = false;
- _vm->_awayMission.mudd.muddCurrentlyInsane = false;
+ _vm->_awayMission.mudd.muddUnavailable = false;
playMidiMusicTracks(3);
loadActorAnim(OBJECT_MUDD, "s4ephh", 0x0e, 0xa7);
_vm->_awayMission.disableInput = true;