aboutsummaryrefslogtreecommitdiff
path: root/engines/startrek
diff options
context:
space:
mode:
authorMatthew Stewart2018-06-28 18:44:22 -0400
committerEugene Sandulenko2018-08-09 08:37:30 +0200
commit0879985ddd27dd1e119efb6e8200df5f0ba3e970 (patch)
treecfcb3f0bbbf7189a83f873192de48cdee441bbfb /engines/startrek
parentc47150358157524c4b0079b7927ded660359f99f (diff)
downloadscummvm-rg350-0879985ddd27dd1e119efb6e8200df5f0ba3e970.tar.gz
scummvm-rg350-0879985ddd27dd1e119efb6e8200df5f0ba3e970.tar.bz2
scummvm-rg350-0879985ddd27dd1e119efb6e8200df5f0ba3e970.zip
STARTREK: MUDD3
Diffstat (limited to 'engines/startrek')
-rw-r--r--engines/startrek/awaymission.cpp2
-rw-r--r--engines/startrek/awaymission.h17
-rw-r--r--engines/startrek/room.h38
-rw-r--r--engines/startrek/rooms/function_map.h43
-rw-r--r--engines/startrek/rooms/mudd0.cpp7
-rw-r--r--engines/startrek/rooms/mudd2.cpp34
-rw-r--r--engines/startrek/rooms/mudd3.cpp406
-rw-r--r--engines/startrek/startrek.cpp2
-rw-r--r--engines/startrek/text.h189
9 files changed, 709 insertions, 29 deletions
diff --git a/engines/startrek/awaymission.cpp b/engines/startrek/awaymission.cpp
index 694e0ccf71..fd1f61f6be 100644
--- a/engines/startrek/awaymission.cpp
+++ b/engines/startrek/awaymission.cpp
@@ -41,7 +41,7 @@ void StarTrekEngine::initAwayMission() {
_roomIndexToLoad = -1;
// Load crew positions for beaming in
- initAwayCrewPositions(3);
+ initAwayCrewPositions(1);
}
void StarTrekEngine::runAwayMission() {
diff --git a/engines/startrek/awaymission.h b/engines/startrek/awaymission.h
index 612e7dc9f1..eaae68bb17 100644
--- a/engines/startrek/awaymission.h
+++ b/engines/startrek/awaymission.h
@@ -192,20 +192,29 @@ struct AwayMission {
byte field29; // 0x29
bool torpedoLoaded; // 0x33
bool knowAboutTorpedo; // 0x34
- bool field36; // 0x36
+ bool discoveredBase3System; // 0x35
+ bool translatedAlienLanguage; // 0x36
+ bool databaseDestroyed; // 0x37
+ bool muddInDatabaseRoom; // 0x38
bool muddDroppedCapsule; // 0x39
+ bool computerDataErased; // 0x3a
+ bool gaveMuddDatabaseAccess; // 0x3b
// True if you've combined the lense + degrimer and fired it off, discovering
// it's a weapon
bool discoveredLenseAndDegrimerFunction; // 0x3c
byte torpedoStatus; // 0x3d
- bool field3f; // 0x3f
+ bool muddCurrentlyInsane; // 0x3f
+ bool muddVisitedDatabaseRoom; // 0x40
+ bool accessedAlienDatabase; // 0x41
+ bool tookRepairToolFromDatabaseRoom; // 0x42
+ bool gotPointsForDownloadingData; // 0x43
bool gotMemoryDisk; // 0x48
bool gotLense; // 0x49
bool gotDegrimer; // 0x4a
- bool field4c; // 0x4c
+ bool putCapsuleInMedicalMachine; // 0x4c
bool muddUnconscious; // 0x4d
- byte field4e; // 0x4e
+ byte muddState; // 0x4e
bool muddInhaledGas; // 0x4f
bool enteredRoom0ForFirstTime; // 0x54
diff --git a/engines/startrek/room.h b/engines/startrek/room.h
index d76589e206..9eea5d1ac2 100644
--- a/engines/startrek/room.h
+++ b/engines/startrek/room.h
@@ -1257,6 +1257,40 @@ public:
// MUDD3
void mudd3Tick1();
+ void mudd3UseCommunicator();
+ void mudd3LookAtScreen();
+ void mudd3UseSTricorderOnScreen();
+ void mudd3UseKirkOnScreen();
+ void mudd3UseSpockOnSphere();
+ void mudd3Timer3Expired();
+ void mudd3UseMccoyOnSphere();
+ void mudd3UseRedshirtOnSphere();
+ void mudd3UseMTricorderOnSphere();
+ void mudd3UseSTricorderOnSphere();
+ void mudd3ReadyToHookUpTricorders();
+ void mudd3Timer1Expired();
+ void mudd3Timer2Expired();
+ void mudd3Timer4Expired();
+ void mudd3UseMemoryDiskOnSphere();
+ void mudd3GetRepairTool();
+ void mudd3ReachedRepairTool();
+ void mudd3PickedUpRepairTool();
+ void mudd3LookAtSphere();
+ void mudd3WalkToNorthDoor();
+ void mudd3TouchedHotspot0();
+ void mudd3WalkToEastDoor();
+ void mudd3TouchedHotspot1();
+ void mudd3LookAtKirk();
+ void mudd3LookAtSpock();
+ void mudd3LookAtMccoy();
+ void mudd3LookAtRedshirt();
+ void mudd3LookAtMudd();
+ void mudd3TalkToKirk();
+ void mudd3TalkToSpock();
+ void mudd3TalkToMccoy();
+ void mudd3TalkToRedshirt();
+ void mudd3TalkToMudd();
+ void mudd3UseMedkit();
// MUDD4
void mudd4Tick1();
@@ -1373,6 +1407,10 @@ private:
} love;
struct {
+ // mudd3
+ bool suggestedUsingTricorders; // 0xca
+ bool tricordersUnavailable; // 0xcb
+
// common
byte walkingToDoor;
} mudd;
diff --git a/engines/startrek/rooms/function_map.h b/engines/startrek/rooms/function_map.h
index d1f3b7800e..89b03975f7 100644
--- a/engines/startrek/rooms/function_map.h
+++ b/engines/startrek/rooms/function_map.h
@@ -1569,7 +1569,50 @@ RoomAction mudd2ActionList[] = {
RoomAction mudd3ActionList[] = {
{ Action(ACTION_TICK, 1, 0, 0), &Room::mudd3Tick1 },
+ { Action(ACTION_USE, OBJECT_ICOMM, -1, 0), &Room::mudd3UseCommunicator },
+ { Action(ACTION_LOOK, 0x20, 0, 0), &Room::mudd3LookAtScreen },
+ { Action(ACTION_USE, OBJECT_ISTRICOR, 0x20, 0), &Room::mudd3UseSTricorderOnScreen },
+ { Action(ACTION_USE, OBJECT_KIRK, 0x20, 0), &Room::mudd3UseKirkOnScreen },
+ { Action(ACTION_USE, OBJECT_SPOCK, 0x21, 0), &Room::mudd3UseSpockOnSphere },
+ { Action(ACTION_TIMER_EXPIRED, 3, 0, 0), &Room::mudd3Timer3Expired },
+ { Action(ACTION_USE, OBJECT_MCCOY, 0x21, 0), &Room::mudd3UseMccoyOnSphere },
+ { Action(ACTION_USE, OBJECT_REDSHIRT, 0x21, 0), &Room::mudd3UseRedshirtOnSphere },
+ { Action(ACTION_USE, OBJECT_IMTRICOR, 0x21, 0), &Room::mudd3UseMTricorderOnSphere },
+ { Action(ACTION_USE, OBJECT_ISTRICOR, 0x21, 0), &Room::mudd3UseSTricorderOnSphere },
+ { Action(ACTION_FINISHED_WALKING, 2, 0, 0), &Room::mudd3ReadyToHookUpTricorders },
+ { Action(ACTION_TIMER_EXPIRED, 1, 0, 0), &Room::mudd3Timer1Expired },
+ { Action(ACTION_TIMER_EXPIRED, 2, 0, 0), &Room::mudd3Timer2Expired },
+ { Action(ACTION_TIMER_EXPIRED, 4, 0, 0), &Room::mudd3Timer4Expired },
+ { Action(ACTION_USE, OBJECT_IDISKS, 0x21, 0), &Room::mudd3UseMemoryDiskOnSphere },
+
+ // Common code
+ { Action(ACTION_USE, OBJECT_IDEGRIME, -1, 0), &Room::mudd0UseDegrimer },
+ { Action(ACTION_USE, OBJECT_ILENSES, OBJECT_IDEGRIME, 0), &Room::mudd0UseLenseOnDegrimer },
+ { Action(ACTION_USE, OBJECT_IALIENDV, -1, 0), &Room::mudd0UseAlienDevice },
+ { Action(ACTION_FINISHED_ANIMATION, 9, 0, 0), &Room::mudd0FiredAlienDevice },
+
+ { Action(ACTION_GET, 13, 0, 0), &Room::mudd3GetRepairTool },
+ { Action(ACTION_FINISHED_WALKING, 3, 0, 0), &Room::mudd3ReachedRepairTool },
+ { Action(ACTION_FINISHED_ANIMATION, 1, 0, 0), &Room::mudd3PickedUpRepairTool },
+ { Action(ACTION_LOOK, 0x21, 0, 0), &Room::mudd3LookAtSphere },
+ { Action(ACTION_WALK, 0x22, 0, 0), &Room::mudd3WalkToNorthDoor },
+ { Action(ACTION_TOUCHED_HOTSPOT, 0, 0, 0), &Room::mudd3TouchedHotspot0 },
+ { Action(ACTION_WALK, 0x23, 0, 0), &Room::mudd3WalkToEastDoor },
+ { Action(ACTION_TOUCHED_HOTSPOT, 1, 0, 0), &Room::mudd3TouchedHotspot1 },
+ { Action(ACTION_LOOK, OBJECT_KIRK, 0, 0), &Room::mudd3LookAtKirk },
+ { Action(ACTION_LOOK, OBJECT_SPOCK, 0, 0), &Room::mudd3LookAtSpock },
+ { Action(ACTION_LOOK, OBJECT_MCCOY, 0, 0), &Room::mudd3LookAtMccoy },
+ { Action(ACTION_LOOK, OBJECT_REDSHIRT, 0, 0), &Room::mudd3LookAtRedshirt },
+ { Action(ACTION_LOOK, 8, 0, 0), &Room::mudd3LookAtMudd },
+ { Action(ACTION_TALK, OBJECT_KIRK, 0, 0), &Room::mudd3TalkToKirk },
+ { Action(ACTION_TALK, OBJECT_SPOCK, 0, 0), &Room::mudd3TalkToSpock },
+ { Action(ACTION_TALK, OBJECT_MCCOY, 0, 0), &Room::mudd3TalkToMccoy },
+ { Action(ACTION_TALK, OBJECT_REDSHIRT, 0, 0), &Room::mudd3TalkToRedshirt },
+ { Action(ACTION_TALK, 8, 0, 0), &Room::mudd3TalkToMudd },
+ { Action(ACTION_USE, OBJECT_IMEDKIT, -1, 0), &Room::mudd3UseMedkit },
+ // TODO: remainder? something about losing atmosphere?
};
+
RoomAction mudd4ActionList[] = {
{ Action(ACTION_TICK, 1, 0, 0), &Room::mudd4Tick1 },
};
diff --git a/engines/startrek/rooms/mudd0.cpp b/engines/startrek/rooms/mudd0.cpp
index 54b3a2244f..381a07a14b 100644
--- a/engines/startrek/rooms/mudd0.cpp
+++ b/engines/startrek/rooms/mudd0.cpp
@@ -165,7 +165,7 @@ void Room::mudd0UseLenseOnDegrimer() {
_vm->_awayMission.mudd.missionScore++;
showText(TX_MUD0N011);
- // Identical (?) audio files: TX_MUD0N011, TX_MUD1N013, TX_MUD2N010
+ // Identical (?) audio files: TX_MUD0N011, TX_MUD1N013, TX_MUD2N010, TX_MUD3N016
}
@@ -174,6 +174,7 @@ void Room::mudd0UseAlienDevice() {
9, // MUDD0
13, // MUDD1
11, // MUDD2
+ 11, // MUDD3
};
_vm->_awayMission.disableInput = true;
@@ -191,13 +192,13 @@ void Room::mudd0FiredAlienDevice() {
_vm->_awayMission.mudd.discoveredLenseAndDegrimerFunction = true;
_vm->_awayMission.mudd.missionScore += 5;
showText(TX_SPEAKER_KIRK, TX_MUD0_002);
- // Identical (?) audio files: TX_MUD0_002, TX_MUD1_002
+ // Identical (?) audio files: TX_MUD0_002, TX_MUD1_002, TX_MUD2_002
}
}
void Room::mudd0UseDegrimer() {
- // Identical (?) audio files: TX_MUD0N002, TX_MUD1N004, TX_MUD2N001...
+ // Identical (?) audio files: TX_MUD0N002, TX_MUD1N004, TX_MUD2N001, TX_MUD3N001...
showText(TX_MUD0N002);
}
diff --git a/engines/startrek/rooms/mudd2.cpp b/engines/startrek/rooms/mudd2.cpp
index 81a975dfe6..d2a420d0c4 100644
--- a/engines/startrek/rooms/mudd2.cpp
+++ b/engines/startrek/rooms/mudd2.cpp
@@ -69,9 +69,9 @@ void Room::mudd2Tick1() {
_vm->_awayMission.crewDirectionsAfterWalk[OBJECT_REDSHIRT] = DIR_W;
_vm->_awayMission.mudd.muddDroppedCapsule = false;
- if (_vm->_awayMission.mudd.field4e == 0) {
- _vm->_awayMission.mudd.field4e = 0;
- } else if (_vm->_awayMission.mudd.field4e == 2) {
+ 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.muddUnconscious) {
_vm->_awayMission.mudd.muddUnconscious = false;
@@ -80,16 +80,16 @@ void Room::mudd2Tick1() {
} else {
loadActorAnim2(OBJECT_MUDD, "s4sbob", 0x9f, 0xba);
}
- } else if (_vm->_awayMission.mudd.field3f) {
- _vm->_awayMission.mudd.field4e = 0;
- } else if (_vm->_awayMission.mudd.field4e == 1) {
+ } else if (_vm->_awayMission.mudd.muddCurrentlyInsane) {
+ _vm->_awayMission.mudd.muddState = 0;
+ } else if (_vm->_awayMission.mudd.muddState == 1) {
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.field4e = 2;
- _vm->_awayMission.mudd.field3f = true;
+ _vm->_awayMission.mudd.muddState = 2;
+ _vm->_awayMission.mudd.muddCurrentlyInsane = true;
}
}
@@ -107,7 +107,7 @@ void Room::mudd2UseSpockOnCapsules() {
void Room::mudd2GetCapsules() {
if (!_vm->_awayMission.mudd.muddInhaledGas || _vm->_awayMission.mudd.muddUnconscious) {
- if (!_vm->_awayMission.mudd.field36)
+ if (!_vm->_awayMission.mudd.translatedAlienLanguage)
showText(TX_SPEAKER_MCCOY, TX_MUD2_024);
else
walkCrewmanC(OBJECT_MCCOY, 0x9f, 0xbf, &Room::mudd2MccoyReachedCapsules);
@@ -149,7 +149,7 @@ void Room::mudd2UseCapsuleOnControlPanel() {
}
void Room::mudd2MccoyReachedControlPanel() {
- if (_vm->_awayMission.mudd.field36)
+ if (_vm->_awayMission.mudd.translatedAlienLanguage)
showText(TX_SPEAKER_MCCOY, TX_MUD2_014);
else
loadActorAnimC(OBJECT_MCCOY, "musehn", -1, -1, &Room::mudd2MccoyPutCapsuleInControlPanel);
@@ -164,15 +164,17 @@ void Room::mudd2MccoyPutCapsuleInControlPanel() {
if (_vm->_awayMission.mudd.muddUnconscious)
showText(TX_SPEAKER_MCCOY, TX_MUD2_034);
+ _vm->_awayMission.mudd.putCapsuleInMedicalMachine = true;
+
loseItem(OBJECT_ICAPSULE);
_vm->_awayMission.crewDirectionsAfterWalk[OBJECT_MCCOY] = DIR_W;
walkCrewman(OBJECT_MCCOY, 0xfe, 0xb2);
}
void Room::mudd2UseKirkOnBed() {
- if (!_vm->_awayMission.mudd.field4c && !_vm->_awayMission.mudd.field36) {
+ if (!_vm->_awayMission.mudd.putCapsuleInMedicalMachine && !_vm->_awayMission.mudd.translatedAlienLanguage) {
walkCrewmanC(OBJECT_KIRK, 0xd7, 0xbd, &Room::mudd2KirkReachedBed);
- } else if (_vm->_awayMission.mudd.field36) {
+ } else if (_vm->_awayMission.mudd.translatedAlienLanguage) {
walkCrewman(OBJECT_KIRK, 0xd7, 0xbd, 7); // BUG(?): no continuation?
}
}
@@ -293,9 +295,9 @@ void Room::mudd2UseMedkitOnMudd() {
if (!_vm->_awayMission.mudd.muddInhaledGas)
return;
else if (_vm->_awayMission.mudd.muddUnconscious) {
- if (!_vm->_awayMission.mudd.field36)
+ if (!_vm->_awayMission.mudd.translatedAlienLanguage)
showText(TX_SPEAKER_MCCOY, TX_MUD2_015);
- else if (!_vm->_awayMission.mudd.field4c)
+ else if (!_vm->_awayMission.mudd.putCapsuleInMedicalMachine)
showText(TX_SPEAKER_MCCOY, TX_MUD2_021);
else
walkCrewmanC(OBJECT_MCCOY, 0xde, 0xaf, &Room::mudd2MccoyReachedMudd);
@@ -310,8 +312,8 @@ void Room::mudd2MccoyReachedMudd() {
}
void Room::mudd2MccoyCuredMudd() {
- _vm->_awayMission.mudd.field3f = false;
- _vm->_awayMission.mudd.field4e = 3;
+ _vm->_awayMission.mudd.muddCurrentlyInsane = false;
+ _vm->_awayMission.mudd.muddState = 3;
_vm->_awayMission.mudd.muddDroppedCapsule = false;
_vm->_awayMission.mudd.muddInhaledGas = false;
diff --git a/engines/startrek/rooms/mudd3.cpp b/engines/startrek/rooms/mudd3.cpp
index e3f215f784..1eed3de931 100644
--- a/engines/startrek/rooms/mudd3.cpp
+++ b/engines/startrek/rooms/mudd3.cpp
@@ -22,13 +22,415 @@
#include "startrek/room.h"
-#define OBJECT_DOOR1 8
+#define OBJECT_MUDD 8
+#define OBJECT_9 9
+#define OBJECT_ALIEN_IMAGE 10
+#define OBJECT_ALIENDV 11
+#define OBJECT_NORTH_DOOR 12
+#define OBJECT_REPAIR_TOOL 13
-#define HOTSPOT_CONSOLE 0x20
+#define HOTSPOT_SCREEN 0x20
+#define HOTSPOT_SPHERE 0x21
+#define HOTSPOT_NORTH_DOOR 0x22
+#define HOTSPOT_EAST_DOOR 0x23
namespace StarTrek {
void Room::mudd3Tick1() {
+ playVoc("MUD3LOOP");
+
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_REDSHIRT] = DIR_W;
+
+ if (_vm->_awayMission.mudd.databaseDestroyed) {
+ loadActorAnim(OBJECT_9, "s4lbpb", 0xa2, 0x9f);
+
+ // FIXME: is this supposed to be in this if statement?
+ if (!_vm->_awayMission.mudd.tookRepairToolFromDatabaseRoom)
+ loadActorAnim(OBJECT_REPAIR_TOOL, "s4lbdv", 0xb7, 0xa8);
+ }
+
+ _vm->_awayMission.mudd.muddInDatabaseRoom = false;
+
+ if (!_vm->_awayMission.mudd.muddVisitedDatabaseRoom && _vm->_awayMission.mudd.translatedAlienLanguage && !_vm->_awayMission.mudd.muddCurrentlyInsane) {
+ _vm->_awayMission.mudd.muddVisitedDatabaseRoom = true;
+ loadActorAnim(OBJECT_MUDD, "s4lbhs", 0xa2, 0x9f);
+ playMidiMusicTracks(3);
+ _vm->_awayMission.mudd.muddInDatabaseRoom = true;
+ _vm->_awayMission.timers[2] = 10;
+ }
+}
+
+void Room::mudd3UseCommunicator() {
+ showText(TX_SPEAKER_KIRK, TX_MUD3_003);
+ showText(TX_SPEAKER_UHURA, TX_STATICU1);
+}
+
+void Room::mudd3LookAtScreen() {
+ if (_vm->_awayMission.mudd.translatedAlienLanguage) // FIXME: flipped conditions?
+ showText(TX_MUD3N017);
+ else
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_038);
+}
+
+void Room::mudd3UseSTricorderOnScreen() {
+ if (_roomVar.mudd.tricordersUnavailable)
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_039);
+ else
+ spockScan(DIR_S, TX_MUD3_017, false);
+}
+
+// BUGFIX: Event was actually "use screen on kirk", which makes no sense.
+void Room::mudd3UseKirkOnScreen() {
+ if (!_vm->_awayMission.mudd.translatedAlienLanguage) {
+ showText(TX_MUD3N011);
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_037);
+ }
+}
+
+void Room::mudd3UseSpockOnSphere() {
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_S;
+ loadActorStandAnim(OBJECT_SPOCK);
+
+ if (_vm->_awayMission.mudd.computerDataErased) {
+ if (!_vm->_awayMission.mudd.databaseDestroyed) {
+ showText(TX_MUD3N000);
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_052);
+ showText(TX_SPEAKER_KIRK, TX_MUD3_012);
+ showText(TX_SPEAKER_MCCOY, TX_MUD3_024);
+ }
+ showText(TX_SPEAKER_KIRK, TX_MUD3_006);
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_048);
+ showText(TX_SPEAKER_KIRK, TX_MUD3_008);
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_051);
+ } else if (_vm->_awayMission.mudd.translatedAlienLanguage) {
+ if (_vm->_awayMission.mudd.accessedAlienDatabase)
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_035);
+ else {
+ _vm->_awayMission.mudd.accessedAlienDatabase = true;
+
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_054);
+ showText(TX_SPEAKER_MCCOY, TX_MUD3_032);
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_050);
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_049);
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_046);
+ showText(TX_SPEAKER_KIRK, TX_MUD3_007);
+
+ _vm->_awayMission.mudd.missionScore++;
+ playVoc("LSHAIANS");
+ loadActorAnim(OBJECT_ALIEN_IMAGE, "s4lbap", 0x32, 0x64);
+
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_KIRK] = DIR_W;
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_W;
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_MCCOY] = DIR_W;
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_REDSHIRT] = DIR_W;
+ loadActorStandAnim(OBJECT_KIRK);
+ loadActorStandAnim(OBJECT_SPOCK);
+ loadActorStandAnim(OBJECT_MCCOY);
+ loadActorStandAnim(OBJECT_REDSHIRT);
+
+ _vm->_awayMission.disableInput = true;
+ _vm->_awayMission.timers[3] = 40;
+ }
+ } else if (_vm->_awayMission.mudd.discoveredBase3System) {
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_043);
+ showText(TX_SPEAKER_MCCOY, TX_MUD3_022);
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_056);
+ showText(TX_SPEAKER_KIRK, TX_MUD3_015);
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_047);
+ _roomVar.mudd.suggestedUsingTricorders = true;
+ } else {
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_044);
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_W;
+ walkCrewman(OBJECT_SPOCK, 0xcd, 0x87);
+ }
+}
+
+// Finished looking at alien image
+void Room::mudd3Timer3Expired() {
+ _vm->_awayMission.disableInput = false;
+
+ showText(TX_SPEAKER_MCCOY, TX_MUD3_027);
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_053);
+ showText(TX_SPEAKER_MCCOY, TX_MUD3_028);
+ showText(TX_SPEAKER_MCCOY, TX_MUD3_026);
+}
+
+void Room::mudd3UseMccoyOnSphere() {
+ // ENHANCEMENT: Turn to face south
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_MCCOY] = DIR_S;
+ loadActorStandAnim(OBJECT_MCCOY);
+
+ showText(TX_SPEAKER_MCCOY, TX_MUD3_021);
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_MCCOY] = DIR_W;
+ walkCrewman(OBJECT_MCCOY, 0xec, 0x84);
+}
+
+void Room::mudd3UseRedshirtOnSphere() {
+ // ENHANCEMENT: Turn to face south
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_REDSHIRT] = DIR_S;
+ loadActorStandAnim(OBJECT_REDSHIRT);
+
+ showText(TX_SPEAKER_BUCHERT, TX_MUD3_068); // BUGFIX: original played McCoy's audio by mistake
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_REDSHIRT] = DIR_W;
+ walkCrewman(OBJECT_REDSHIRT, 0xec, 0x84);
+}
+
+void Room::mudd3UseMTricorderOnSphere() {
+ if (_roomVar.mudd.tricordersUnavailable)
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_039); // BUGFIX: speaker is Spock
+ else {
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_MCCOY] = DIR_S;
+ loadActorStandAnim(OBJECT_MCCOY);
+ if (!_vm->_awayMission.mudd.translatedAlienLanguage && _roomVar.mudd.suggestedUsingTricorders && _vm->_awayMission.mudd.discoveredBase3System) {
+ _vm->_awayMission.disableInput = true;
+
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_MCCOY] = DIR_S;
+ walkCrewman(OBJECT_MCCOY, 0xac, 0x88);
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_S;
+ walkCrewmanC(OBJECT_SPOCK, 0xa5, 0x8c, &Room::mudd3ReadyToHookUpTricorders);
+ } else {
+ showText(TX_SPEAKER_MCCOY, TX_MUD3_021);
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_MCCOY] = DIR_W;
+ walkCrewman(OBJECT_MCCOY, 0xec, 0x84);
+ }
+ }
+}
+
+void Room::mudd3UseSTricorderOnSphere() {
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_S;
+ loadActorStandAnim(OBJECT_SPOCK);
+
+ if (_roomVar.mudd.tricordersUnavailable)
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_039); // BUGFIX: speaker is Spock
+ else if (_vm->_awayMission.mudd.translatedAlienLanguage || (_vm->_awayMission.mudd.discoveredBase3System && !_roomVar.mudd.suggestedUsingTricorders)) {
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_041);
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_W;
+ walkCrewman(OBJECT_SPOCK, 0xcd, 0x87);
+ } else if (_vm->_awayMission.mudd.discoveredBase3System && _roomVar.mudd.suggestedUsingTricorders) { // Hooking up tricorders
+ _vm->_awayMission.disableInput = true;
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_MCCOY] = DIR_S;
+ walkCrewmanC(OBJECT_MCCOY, 0xca, 0x88, &Room::mudd3ReadyToHookUpTricorders);
+ } else { // No idea how to access it
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_042);
+ walkCrewman(OBJECT_SPOCK, 0xcd, 0x87);
+ }
+}
+
+void Room::mudd3ReadyToHookUpTricorders() {
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_018);
+
+ _roomVar.mudd.tricordersUnavailable = true;
+ _vm->_awayMission.timers[1] = 50;
+
+ loadActorAnim2(OBJECT_SPOCK, "sscans");
+ playSoundEffectIndex(SND_TRICORDER);
+}
+
+void Room::mudd3Timer1Expired() { // Tricorders ready for use again
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_040);
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_034);
+
+ _vm->_awayMission.disableInput = false;
+ _roomVar.mudd.tricordersUnavailable = false;
+ _roomVar.mudd.suggestedUsingTricorders = false;
+ _vm->_awayMission.mudd.translatedAlienLanguage = true;
+ _vm->_awayMission.mudd.missionScore++;
+
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_W;
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_MCCOY] = DIR_W;
+ walkCrewman(OBJECT_SPOCK, 0xcd, 0x87);
+ walkCrewman(OBJECT_MCCOY, 0xec, 0x84);
+}
+
+// Harry Mudd stumbled into the room
+void Room::mudd3Timer2Expired() {
+ const int choices[] = {
+ TX_SPEAKER_KIRK,
+ TX_MUD3_010,
+ TX_MUD3_009,
+ TX_BLANK
+ };
+
+ _vm->_awayMission.mudd.computerDataErased = true;
+
+ showText(TX_SPEAKER_MUDD, TX_MUD3_065);
+ int choice = showText(choices);
+
+ if (choice == 0) { // Allow him to access the database
+ showText(TX_SPEAKER_MUDD, TX_MUD3_066);
+ _vm->_awayMission.mudd.gaveMuddDatabaseAccess = true;
+ } else { // Don't allow it (he destroys it by accident)
+ showText(TX_SPEAKER_MUDD, TX_MUD3_064);
+ _vm->_awayMission.timers[4] = 98;
+ _vm->_awayMission.disableInput = 2;
+ playMidiMusicTracks(26);
+ loadActorAnim(OBJECT_MUDD, "s4lbhb", 0xa2, 0x9f);
+ }
+}
+
+void Room::mudd3Timer4Expired() {
+ _vm->_awayMission.mudd.databaseDestroyed = true;
+
+ showText(TX_SPEAKER_MUDD, TX_MUD3_063);
+ showText(TX_SPEAKER_MCCOY, TX_MUD3_031);
+
+ _vm->_awayMission.disableInput = false;
+}
+
+void Room::mudd3UseMemoryDiskOnSphere() {
+ if (_vm->_awayMission.mudd.databaseDestroyed)
+ showText(TX_MUD3N014);
+ else if (_vm->_awayMission.mudd.translatedAlienLanguage && !_vm->_awayMission.mudd.gaveMuddDatabaseAccess) {
+ showText(TX_MUD3N020);
+ if (!_vm->_awayMission.mudd.gotPointsForDownloadingData) {
+ _vm->_awayMission.mudd.missionScore += 3;
+ _vm->_awayMission.mudd.gotPointsForDownloadingData = true;
+ }
+ } else
+ showText(TX_MUD3N019);
+}
+
+
+void Room::mudd3GetRepairTool() {
+ if (_vm->_awayMission.mudd.tookRepairToolFromDatabaseRoom)
+ showText(TX_MUD3N018); // NOTE: unused, since the object disappears, can't be selected again
+ else {
+ _vm->_awayMission.disableInput = true;
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_KIRK] = DIR_N;
+ walkCrewmanC(OBJECT_KIRK, 0xba, 0xc1, &Room::mudd3ReachedRepairTool);
+ }
+}
+
+void Room::mudd3ReachedRepairTool() {
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_KIRK] = DIR_N;
+ loadActorAnimC(OBJECT_KIRK, "kusemn", -1, -1, &Room::mudd3PickedUpRepairTool);
+}
+
+void Room::mudd3PickedUpRepairTool() {
+ _vm->_awayMission.disableInput = false;
+ loadActorStandAnim(OBJECT_REPAIR_TOOL);
+ _vm->_awayMission.mudd.tookRepairToolFromDatabaseRoom = true;
+ _vm->_awayMission.mudd.missionScore++;
+ giveItem(OBJECT_IDOOVER);
+}
+
+void Room::mudd3LookAtSphere() {
+ // ENHANCEMENT: Turn to face south
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_KIRK] = DIR_S;
+ loadActorStandAnim(OBJECT_KIRK);
+
+ showText(TX_MUD3N015);
+}
+
+void Room::mudd3WalkToNorthDoor() {
+ _roomVar.mudd.walkingToDoor = true;
+ _vm->_awayMission.disableInput = true;
+ walkCrewman(OBJECT_KIRK, 0xb8, 0x70);
+}
+
+void Room::mudd3TouchedHotspot0() { // Triggers north door
+ if (_roomVar.mudd.walkingToDoor) {
+ playVoc("SMADOOR3");
+ loadActorAnim(OBJECT_NORTH_DOOR, "s4lbdo", 0xba, 0x6f);
+ }
+}
+
+void Room::mudd3WalkToEastDoor() {
+ _roomVar.mudd.walkingToDoor = true;
+ _vm->_awayMission.disableInput = true;
+ walkCrewman(OBJECT_KIRK, 0x121, 0x81);
+}
+
+void Room::mudd3TouchedHotspot1() {
+ if (_roomVar.mudd.walkingToDoor) {
+ playVoc("SMADOOR3");
+ }
+}
+
+void Room::mudd3LookAtKirk() {
+ if (!_vm->_awayMission.mudd.muddInDatabaseRoom)
+ showText(TX_MUD3N005);
+ else
+ showText(TX_MUD3N004);
+}
+
+void Room::mudd3LookAtSpock() {
+ if (!_vm->_awayMission.mudd.muddInDatabaseRoom)
+ showText(TX_MUD3N012);
+ else
+ showText(TX_MUD3N002);
+}
+
+void Room::mudd3LookAtMccoy() {
+ if (!_vm->_awayMission.mudd.muddInDatabaseRoom)
+ showText(TX_MUD3N010);
+ else
+ showText(TX_MUD3N009);
+}
+
+void Room::mudd3LookAtRedshirt() {
+ if (!_vm->_awayMission.mudd.muddInDatabaseRoom)
+ showText(TX_MUD3N007);
+ else
+ showText(TX_MUD3N006);
+}
+
+void Room::mudd3LookAtMudd() {
+ showText(TX_MUD3N003);
+}
+
+void Room::mudd3TalkToKirk() {
+ if (!_vm->_awayMission.mudd.muddInDatabaseRoom) {
+ showText(TX_SPEAKER_KIRK, TX_MUD3_014);
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_057);
+ showText(TX_SPEAKER_MCCOY, TX_MUD3_025);
+ } else
+ showText(TX_SPEAKER_KIRK, TX_MUD3_002);
+}
+
+void Room::mudd3TalkToSpock() {
+ if (!_vm->_awayMission.mudd.muddInDatabaseRoom) {
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_055);
+ showText(TX_SPEAKER_MCCOY, TX_MUD3_033);
+ showText(TX_SPEAKER_KIRK, TX_MUD3_011);
+ } else
+ showText(TX_SPEAKER_SPOCK, TX_MUD3_019);
+}
+
+void Room::mudd3TalkToMccoy() {
+ if (!_vm->_awayMission.mudd.muddInDatabaseRoom)
+ showText(TX_SPEAKER_MCCOY, TX_MUD3_023);
+ else {
+ showText(TX_SPEAKER_MCCOY, TX_MUD3_030);
+ showText(TX_SPEAKER_MUDD, TX_MUD3_062);
+ }
+}
+
+void Room::mudd3TalkToRedshirt() {
+ if (!_vm->_awayMission.mudd.muddInDatabaseRoom) {
+ showText(TX_SPEAKER_BUCHERT, TX_MUD3_070);
+ showText(TX_SPEAKER_KIRK, TX_MUD3_016);
+ showText(TX_SPEAKER_BUCHERT, TX_MUD3_071);
+ } else
+ showText(TX_SPEAKER_BUCHERT, TX_MUD3_067);
+}
+
+void Room::mudd3TalkToMudd() {
+ if (_vm->_awayMission.mudd.databaseDestroyed) {
+ showText(TX_SPEAKER_MUDD, TX_MUD3_060);
+ showText(TX_SPEAKER_MCCOY, TX_MUD3_029);
+ showText(TX_SPEAKER_MUDD, TX_MUD3_061);
+ showText(TX_SPEAKER_KIRK, TX_MUD3_013);
+ showText(TX_SPEAKER_MUDD, TX_MUD3_058);
+ showText(TX_SPEAKER_SPOCK, TX_MUD3C001);
+ showText(TX_SPEAKER_BUCHERT, TX_MUD3_069);
+ showText(TX_SPEAKER_MUDD, TX_MUD3_059);
+ showText(TX_SPEAKER_KIRK, TX_MUD3_005);
+ }
+}
+
+void Room::mudd3UseMedkit() {
+ showText(TX_SPEAKER_MCCOY, TX_MUD3_020);
}
}
diff --git a/engines/startrek/startrek.cpp b/engines/startrek/startrek.cpp
index 1fa88bb206..beb18e7a8d 100644
--- a/engines/startrek/startrek.cpp
+++ b/engines/startrek/startrek.cpp
@@ -84,7 +84,7 @@ StarTrekEngine::StarTrekEngine(OSystem *syst, const StarTrekGameDescription *gam
_textboxHasMultipleChoices = false;
_missionToLoad = "MUDD";
- _roomIndexToLoad = 2;
+ _roomIndexToLoad = 3;
for (int i = 0; i < NUM_OBJECTS; i++)
_itemList[i] = g_itemList[i];
diff --git a/engines/startrek/text.h b/engines/startrek/text.h
index 611305a697..546a7cf005 100644
--- a/engines/startrek/text.h
+++ b/engines/startrek/text.h
@@ -1342,6 +1342,99 @@ enum GameStringIDs {
TX_MUD2N011,
+ TX_MUD3_002,
+ TX_MUD3_003,
+ TX_MUD3_005,
+ TX_MUD3_006,
+ TX_MUD3_007,
+ TX_MUD3_008,
+ TX_MUD3_009,
+ TX_MUD3_010,
+ TX_MUD3_011,
+ TX_MUD3_012,
+ TX_MUD3_013,
+ TX_MUD3_014,
+ TX_MUD3_015,
+ TX_MUD3_016,
+ TX_MUD3_017,
+ TX_MUD3_018,
+ TX_MUD3_019,
+ TX_MUD3_020,
+ TX_MUD3_021,
+ TX_MUD3_022,
+ TX_MUD3_023,
+ TX_MUD3_024,
+ TX_MUD3_025,
+ TX_MUD3_026,
+ TX_MUD3_027,
+ TX_MUD3_028,
+ TX_MUD3_029,
+ TX_MUD3_030,
+ TX_MUD3_031,
+ TX_MUD3_032,
+ TX_MUD3_033,
+ TX_MUD3_034,
+ TX_MUD3_035,
+ TX_MUD3_036,
+ TX_MUD3_037,
+ TX_MUD3_038,
+ TX_MUD3_039,
+ TX_MUD3_040,
+ TX_MUD3_041,
+ TX_MUD3_042,
+ TX_MUD3_043,
+ TX_MUD3_044,
+ // UNUSED
+ TX_MUD3_046,
+ TX_MUD3_047,
+ TX_MUD3_048,
+ TX_MUD3_049,
+ TX_MUD3_050,
+ TX_MUD3_051,
+ TX_MUD3_052,
+ TX_MUD3_053,
+ TX_MUD3_054,
+ TX_MUD3_055,
+ TX_MUD3_056,
+ TX_MUD3_057,
+ TX_MUD3_058,
+ TX_MUD3_059,
+ TX_MUD3_060,
+ TX_MUD3_061,
+ TX_MUD3_062,
+ TX_MUD3_063,
+ TX_MUD3_064,
+ TX_MUD3_065,
+ TX_MUD3_066,
+ TX_MUD3_067,
+ TX_MUD3_068,
+ TX_MUD3_069,
+ TX_MUD3_070,
+ TX_MUD3_071,
+ TX_MUD3N000,
+ TX_MUD3N001,
+ TX_MUD3N002,
+ TX_MUD3N003,
+ TX_MUD3N004,
+ TX_MUD3N005,
+ TX_MUD3N006,
+ TX_MUD3N007,
+ TX_MUD3N008,
+ TX_MUD3N009,
+ TX_MUD3N010,
+ TX_MUD3N011,
+ TX_MUD3N012,
+ TX_MUD3N013,
+ TX_MUD3N014,
+ TX_MUD3N015,
+ TX_MUD3N016,
+ TX_MUD3N017,
+ TX_MUD3N018,
+ TX_MUD3N019,
+ TX_MUD3N020,
+ TX_MUD3C001,
+
+
TX_MUD4_018,
@@ -2444,7 +2537,7 @@ const char * const g_gameStrings[] = {
"#LOV5\\LOV5N016#Some odd looking equipment, connected to the torpedo.",
"#LOV5\\LOV5N017#The Romulan Preax weakly regains conscienceness, reaching for his weapon.",
"#LOV5\\LOV5N018#The Romulan Preax drinks thirstily and empties the container.",
- "(Raises an eyebrow).", // NOTE: no corresponding audio
+ "(Raises an eyebrow)", // NOTE: no corresponding audio
"#LOVA\\LOVA_100#He's dead, Jim.",
@@ -2568,7 +2661,7 @@ const char * const g_gameStrings[] = {
"#MUD2\\MUD2_001#Spock, see if you can outflank him...",
- "#MUD2\\MUD2_002#Well, now I think we know why the Elasi pirates were so interested in finding out where Mudd was getting these>",
+ "#MUD2\\MUD2_002#Well, now! I think we know why the Elasi pirates were so interested in finding out where Mudd was getting these!", // TYPO
"#MUD2\\MUD2_003#Almost worth a try. Bones? ",
"#MUD2\\MUD2_004#Do they pose any threat to us, Doctor?",
"#MUD2\\MUD2_005#Harry! Calm down Harry, it's only us! ",
@@ -2634,6 +2727,98 @@ const char * const g_gameStrings[] = {
"#MUD2\\MUD2N011#This seems to be the main monitoring station for the beds. Above it is some sort of dispensary.",
+ "#MUD3\\MUD3_002#Harry! Look what you've done! ",
+ "#MUD3\\MUD3_003#Kirk to Enterprise...",
+ "#MUD3\\MUD3_005#At ease, lieutenant. He's not worth it. ",
+ "#MUD3\\MUD3_006#At least our life support system isn't dependent on the alien computer.",
+ "#MUD3\\MUD3_007#By all means, Spock.",
+ "#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_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_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_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? ",
+ "#MUD3\\MUD3_026#Interesting data here about the six-eyed vision processing in the brain. Their eyesight must have been excellent, and almost 300 degrees around.",
+ "#MUD3\\MUD3_027#Look at their physiology, Jim -- I think this explains the L'Shaians' fascination with threes and sixes.",
+ "#MUD3\\MUD3_028#Medical knowledge is comprehensive, and lifespan is extended considerably over archaic expectations, with maintenance of quality of life.",
+ "#MUD3\\MUD3_029#Mudd! Don't you realize what you've done! That knowledge was irreplaceable! You just burned down the galactic equivalent of the Library of Alexandria! Millions of lives might have been saved by the knowledge you destroyed! ",
+ "#MUD3\\MUD3_030#Mudd! If I were to perform an autopsy on you right now, I might be able to find a cure for stupidity! ",
+ "#MUD3\\MUD3_031#Mudd, do you know what you just did!? That knowledge was priceless -- and you've just destroyed it forever!!",
+ "#MUD3\\MUD3_032#To say nothing of fulfilling our mandate to seek out new life and new civilizations...",
+ "#MUD3\\MUD3_033#You can't be serious, Spock! ",
+ "#MUD3\\MUD3_034#I believe I have downloaded enough information to our tricorders to enable operation of most of the ship's controls, Captain.",
+ "#MUD3\\MUD3_035#I believe I have retrieved as much data as I can, Captain.",
+ "#MUD3\\MUD3_036#I believe I've extracted a copy of the main databank, Captain.",
+ "#MUD3\\MUD3_037#I would suggest, Captain, that the controls to this screen are elsewhere in this room.",
+ "#MUD3\\MUD3_038#The data viewscreen is operational. The information selectors are controlled from the console platform.",
+ "#MUD3\\MUD3_039#The tricorder's entire sensor and data processing capabilities are presently occupied with decipherment of the ship's library.",
+ "#MUD3\\MUD3_040#The tricorders are again available for general use. The alien ship's computer data is now accessible from the ship's library.",
+ "#MUD3\\MUD3_041#This platform contains the control console for the ship's computer library. Data may be accessed by using this console.",
+ "#MUD3\\MUD3_042#This platform contains the control console for what appears to be the information center of the ship -- the computer library, if you will. It appears functional, but incomprehensible without some better understanding of the aliens who built it.",
+ "#MUD3\\MUD3_043#This seems to activate the ship's computer bank control node. Given the aliens' predilection for multiples of 3, it may be possible to use our tricorders to decipher the information carried in these data banks.",
+ "#MUD3\\MUD3_044#This seems to activate the ship's computer bank control node. I lack sufficient information to commence data retrieval, however. Simply put, without some understanding of the aliens' mindset, there's no place to start.",
+ "#MUD3\\MUD3_046#I believe I can produce a picture of a member of their race, Captain.",
+ "#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_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.",
+ "#MUD3\\MUD3_054#Not all topics will necessarily be available, Captain. Nor do I believe we can get full details on all data -- the tricorders could only do so much processing. It would be worth our effort to locate the central databanks for delivery to the Kornephoros Life Sciences University, I believe.",
+ "#MUD3\\MUD3_055#This is a major archeological find, Captain. I believe the galaxy may actually have cause to thank Harry Mudd. ",
+ "#MUD3\\MUD3_056#Were the Universal Translator available, this would be simple.",
+ "#MUD3\\MUD3_057#It is indeed impressive Captain. If I were capable of emotion, I would be in awe of this place. ",
+ "#MUD3\\MUD3_058#How dare you, Kirk! I have half a mind to sue for defamation of character... ",
+ "#MUD3\\MUD3_059#Kirk! Get this muscle-bound clod away from me. I'm allergic to violence! ",
+ "#MUD3\\MUD3_060#Kirk, look what you made me do! You and your clumsy Starfleet... ",
+ "#MUD3\\MUD3_061#Now see here, Dr. McCoy! Don't blame me if Kirk's bellowing causes me to be a teeny bit clumsy... ",
+ "#MUD3\\MUD3_062#Now, you aren't... I mean.... Kirk! ",
+ "#MUD3\\MUD3_063#Ooops!",
+ "#MUD3\\MUD3_064#Whatever you say, Captain!",
+ "#MUD3\\MUD3_065#Why, Captain! I see you got this machine to work -- I tried to get it up and running for the longest time.",
+ "#MUD3\\MUD3_066#Why, Kirk, I didn't think you had it in you. Thank you!",
+ "#MUD3\\MUD3_067#Captain, I think I understand why you dislike this Mudd guy so much. ",
+ "#MUD3\\MUD3_068#Not my area of expertise, I'm afraid.",
+ "#MUD3\\MUD3_069#Captain, I think Mr. Mudd looks like he's getting out of control... ",
+ "#MUD3\\MUD3_070#Captain, does this mean that I'm a part of a major archeological discovery? ",
+ "#MUD3\\MUD3_071#I don't see why you're complaining about this Mudd guy. Who knows what advances we could get from all this knowledge? ",
+ "#MUD3\\MUD3N000#Databanks erased.",
+ "#MUD3\\MUD3N001#Dust and grease lifts off the surface, leaving this item clean as new.",
+ "#MUD3\\MUD3N002#Even Spock is visibly disturbed by Mudd's carelessness. ",
+ "#MUD3\\MUD3N003#Harry Mudd hopes he can make it back to his ship and get away in one piece. ",
+ "#MUD3\\MUD3N004#Kirk is dismayed by the destruction he has seen. ",
+ "#MUD3\\MUD3N005#Kirk is silently worried about what is happening back on the Enterprise. ",
+ "#MUD3\\MUD3N006#Lieutenant Buchert is not at all happy with Harcourt Fenton Mudd. ",
+ "#MUD3\\MUD3N007#Lieutenant Buchert seems to have limitless energy. It makes you feel old just watching him. ",
+ "#MUD3\\MUD3N008#Life support fails completely and you fall unconscious.",
+ "#MUD3\\MUD3N009#McCoy is aghast at this turn of events. ",
+ "#MUD3\\MUD3N010#McCoy is his usual crusty old self. ",
+ "#MUD3\\MUD3N011#Nothing happens.",
+ "#MUD3\\MUD3N012#Sometimes you wonder if Spock will ever show emotion. ",
+ "#MUD3\\MUD3N013#The atmosphere in the ship has dropped below the level needed to sustain life. You drop to unconsciousness and slowly die.",
+ "#MUD3\\MUD3N014#The computer has nothing to write to the spheroid.",
+ "#MUD3\\MUD3N015#The sphere in the middle of this console appears to be some sort of control mechanism.",
+ "#MUD3\\MUD3N016#These two things fit together like they were made for each other.",
+ "#MUD3\\MUD3N017#This might be a data screen of some kind.",
+ "#MUD3\\MUD3N018#You already have a doover.",
+ "#MUD3\\MUD3N019#You can't seem to make this work.",
+ "#MUD3\\MUD3N020#You download major portions of the alien library onto the yellow spheroid.",
+ "(Raises eyebrow)", // Custom
+
+
"#MUD4\\MUD4_018#Kirk to Enterprise ... Kirk to Enterprise.",