aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Stewart2018-06-30 23:53:52 -0400
committerEugene Sandulenko2018-08-09 08:37:30 +0200
commitf583e307df83f67d56a541375afdfeac11bd36b9 (patch)
treea65ed3efc8f4fc9021f7ae6c1c586ddf07229841
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.
-rw-r--r--engines/startrek/awaymission.h24
-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
-rw-r--r--engines/startrek/text.h14
8 files changed, 105 insertions, 80 deletions
diff --git a/engines/startrek/awaymission.h b/engines/startrek/awaymission.h
index 788727dccf..21b75f981a 100644
--- a/engines/startrek/awaymission.h
+++ b/engines/startrek/awaymission.h
@@ -189,23 +189,27 @@ struct AwayMission {
} love;
struct {
- byte field29; // 0x29
+ // 0: Haven't entered first room yet
+ // 1: Have entered first room once
+ // 2: Mudd is gone from first room
+ byte muddFirstRoomState; // 0x29
+
bool torpedoLoaded; // 0x33
bool knowAboutTorpedo; // 0x34
bool discoveredBase3System; // 0x35
bool translatedAlienLanguage; // 0x36
bool databaseDestroyed; // 0x37
bool muddInDatabaseRoom; // 0x38
- bool muddDroppedCapsule; // 0x39
- bool computerDataErased; // 0x3a
- bool gaveMuddDatabaseAccess; // 0x3b
+ bool muddCurrentlyInsane; // 0x39
+ bool computerDataErasedOrDestroyed; // 0x3a
+ bool muddErasedDatabase; // 0x3b
// True if you've combined the lense + degrimer and fired it off, discovering
// it's a weapon
bool discoveredLenseAndDegrimerFunction; // 0x3c
int16 torpedoStatus; // 0x3d
- bool muddCurrentlyInsane; // 0x3f (TODO: rename)
+ bool muddUnavailable; // 0x3f
bool muddVisitedDatabaseRoom; // 0x40
bool accessedAlienDatabase; // 0x41
bool tookRepairTool; // 0x42
@@ -219,8 +223,14 @@ struct AwayMission {
bool gotDegrimer; // 0x4a
bool putCapsuleInMedicalMachine; // 0x4c
bool muddUnconscious; // 0x4d
- byte muddState; // 0x4e
- bool muddInhaledGas; // 0x4f
+
+ // 0: haven't entered room yet
+ // 1: will go insane next time room is entered (if he's available)
+ // 2: currently insane (or unconscious)
+ // 3: cured
+ byte muddInsanityState; // 0x4e
+
+ bool muddInhaledGas; // 0x4f (mostly the same as "muddCurrentlyInsane"?)
int16 lifeSupportTimer; // 0x50
bool startedLifeSupportTimer; // 0x52
bool enteredRoom0ForFirstTime; // 0x54
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;
diff --git a/engines/startrek/text.h b/engines/startrek/text.h
index 4811da9017..cc257d2126 100644
--- a/engines/startrek/text.h
+++ b/engines/startrek/text.h
@@ -1342,8 +1342,10 @@ enum GameStringIDs {
TX_MUD2N011,
+ // MISSING
TX_MUD3_002,
TX_MUD3_003,
+ // MISSING
TX_MUD3_005,
TX_MUD3_006,
TX_MUD3_007,
@@ -2334,7 +2336,7 @@ const char * const g_gameStrings[] = {
"#LOV0\\LOV0_050#This is how I want to feel all the time!",
"#LOV0\\LOV0_101#Fascinating. I am experiencing an urge to laugh.",
"#LOV0\\LOV0_102#I am a Vulcan. I must resist these unchecked emotions.",
- "#LOV0\\LOV0_103#Logic...What happened to my logic?",
+ "#LOV0\\LOV0_103#Logic... What happened to my logic?", // TYPO
"#LOV0\\LOV0_104#Jim, is this how you feel on shore leave?",
"#LOV0\\LOV0_105#I remember my mother trying to tell me jokes when I was a child. Now, I finally understand them.",
"#LOV0\\LOV0_106#Romulan laughing gas. My father would never approve.",
@@ -2821,7 +2823,7 @@ const char * const g_gameStrings[] = {
"#MUD2\\MUD2_011#Sorry if I was bothering you. I was just silently cursing the day I met Harry Mudd. ",
"#MUD2\\MUD2_012#All yours now, Doctor McCoy.",
"#MUD2\\MUD2_013#He's showing definite signs of hallucination and a marked increase in adrenalin. I would recommend extreme caution in handling him.",
- "#MUD2\\MUD2_014#I feel sure that these would have been used here, but I don't understand enough of how the aliens thought, to make it work.",
+ "#MUD2\\MUD2_014#I feel sure that these would have been used here, but I don't understand enough of the alien's thinking to make it work.", // TYPO
"#MUD2\\MUD2_015#I need to understand more about the aliens before I can make this bed and its instrumentation function.",
"#MUD2\\MUD2_016#I'm not fast enough to get him with a tranquilizer hypo, Jim!",
"#MUD2\\MUD2_018#Jim, these look like the capsules we might use in a hypo. I wouldn't recommend experimenting with them, though. Alien physiology or not, you can never be sure what unusual chemicals will do to the human body.",
@@ -2883,18 +2885,18 @@ const char * const g_gameStrings[] = {
"#MUD3\\MUD3_008#But their essence, their souls -- are gone, Spock.",
"#MUD3\\MUD3_009#Get away from that this instant, Harry, or I'll shoot you where you stand.",
"#MUD3\\MUD3_010#Help yourself, Harry. Knowledge is for everyone.",
- "#MUD3\\MUD3_011#It would be nice to think after all the stunts that Harry has pulled that he would do something right for a change. ",
+ "#MUD3\\MUD3_011#It would be nice to think that after all the stunts that Harry has pulled, that he would do something right for a change. ", // TYPO
"#MUD3\\MUD3_012#Spock, we're talking about Harry Mudd. He was probably trying to download it so he could sell it to the highest bidder.",
"#MUD3\\MUD3_013#Teeny bit clumsy? Mudd, you're a disgrace to the entire human race! ",
"#MUD3\\MUD3_014#This technology is unbelievable, Mr. Spock. I've never seen anything like it. ",
- "#MUD3\\MUD3_015#With the Enterprise out of range, that's not an option, Mr. Spock.What else can you do?",
+ "#MUD3\\MUD3_015#With the Enterprise out of range, that's not an option, Mr. Spock. What else can you do?", // TYPO
"#MUD3\\MUD3_016#You better believe it, lieutenant. ",
"#MUD3\\MUD3_017#Apparently an information data screen, something like the display readers on the Enterprise.",
"#MUD3\\MUD3_018#Both our tricorders are now working on basic processing of the aliens' computer data system. The tricorders are not the equal of the Universal Translator, but we should be able to retrieve basic information and get an insight into their culture and lifesystems. I don't believe we could have gotten even this far, had we not deduced their fixation on base-6 mathematics and esthetics.",
"#MUD3\\MUD3_019#Captain, it was not logical to allow Harry Mudd to get within one hundred meters of this room. ",
"#MUD3\\MUD3_020#Everyone is healthy, Jim, there's no need for the medical kit here.",
"#MUD3\\MUD3_021#Not my area of expertise, I'm afraid.",
- "#MUD3\\MUD3_022#That would be quite a find, Jim. This is an alien race unknown to us, and they were certain to have knowledge new to us.",
+ "#MUD3\\MUD3_022#That would be quite a find, Jim. This is an alien race unknown to us, and they are certain to have knowledge new to us.", // TYPO
"#MUD3\\MUD3_023#This equipment's way out of my league, Jim. ",
"#MUD3\\MUD3_024#And instead, he wiped the memory. That knowledge was priceless!",
"#MUD3\\MUD3_025#If you're incapable of emotion, how do you know what \"awe\" is, Spock? ",
@@ -2921,7 +2923,7 @@ const char * const g_gameStrings[] = {
"#MUD3\\MUD3_047#I believe if Dr. McCoy and I conjoin our two tricorders, we may be able to process enough sample data to get a basic understanding of the aliens' computer system. This will completely tie up both our tricorders for an extended amount of time, however.",
"#MUD3\\MUD3_048#I believe, Captain, that the basic functions of the ship remain, even now. This is the library module -- the art, history, and cultural memory of the aliens are gone, but the mechanical necessities of sick bay, engineering, and sensors continue to work.",
"#MUD3\\MUD3_049#I have found an entry on an experimental long-range weapon booster, recently installed, named the Whyos weapon. It does not alter the power of the primary weapons systems, but it does increase the range at which those weapons are effective.",
- "#MUD3\\MUD3_050#I'm recieving data now, Captain. Most internal and external functions are controlled from the bridge. These include Engineering, Navigation, Communications, and Sensors. Weapons functions are controlled from the weapons room.",
+ "#MUD3\\MUD3_050#I'm receiving data now, Captain. Most internal and external functions are controlled from the bridge. These include Engineering, Navigation, Communications, and Sensors. Weapons functions are controlled from the weapons room.", // TYPO
"#MUD3\\MUD3_051#Illogical, Captain. This race has been extinct for millenia.",
"#MUD3\\MUD3_052#It appears our good friend Harry Mudd has crashed the main computers. I doubt if it was a very easy thing to manage.",
"#MUD3\\MUD3_053#It should be no surprise that physiology affects mind and behavior. I would say a six-fingered, six-eyed people would naturally develop their sciences and arts around base-six numerical systems, just as I observed on the bridge.",