From b3c317410232a6b5896237018874f8c5ecc3b5eb Mon Sep 17 00:00:00 2001 From: Matthew Stewart Date: Fri, 29 Jun 2018 16:46:54 -0400 Subject: STARTREK: MUDD5 --- engines/startrek/awaymission.cpp | 2 +- engines/startrek/awaymission.h | 7 +- engines/startrek/room.h | 32 +++++ engines/startrek/rooms/function_map.h | 49 +++++++- engines/startrek/rooms/mudd0.cpp | 7 +- engines/startrek/rooms/mudd5.cpp | 227 +++++++++++++++++++++++++++++++++- engines/startrek/startrek.cpp | 2 +- engines/startrek/text.h | 110 ++++++++++++++++ 8 files changed, 422 insertions(+), 14 deletions(-) (limited to 'engines/startrek') diff --git a/engines/startrek/awaymission.cpp b/engines/startrek/awaymission.cpp index 0ba73e8f00..e11cae9d98 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(2); + initAwayCrewPositions(0); } void StarTrekEngine::runAwayMission() { diff --git a/engines/startrek/awaymission.h b/engines/startrek/awaymission.h index 7097f449c9..25a5c1fe0f 100644 --- a/engines/startrek/awaymission.h +++ b/engines/startrek/awaymission.h @@ -203,14 +203,17 @@ struct AwayMission { // 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 + bool muddCurrentlyInsane; // 0x3f (TODO: rename) bool muddVisitedDatabaseRoom; // 0x40 bool accessedAlienDatabase; // 0x41 bool tookRepairTool; // 0x42 bool gotPointsForDownloadingData; // 0x43 bool contactedEnterpriseFirstTime; // 0x44 bool viewScreenEnabled; // 0x45 + bool lifeSupportMalfunctioning; // 0x46 + byte numTimesEnteredRoom5; // 0x47 bool gotMemoryDisk; // 0x48 bool gotLense; // 0x49 bool gotDegrimer; // 0x4a @@ -224,7 +227,7 @@ struct AwayMission { bool gotPointsForPressingRedButton; // 0x56 bool gotPointsForEnablingViewscreen; // 0x57 bool enteredRoom1ForFirstTime; // 0x58 - bool field58; // 0x58 + bool repairedLifeSupportGenerator; // 0x59 int16 missionScore; // 0x5a } mudd; }; diff --git a/engines/startrek/room.h b/engines/startrek/room.h index 81f98321ea..849fb503ab 100644 --- a/engines/startrek/room.h +++ b/engines/startrek/room.h @@ -1344,6 +1344,38 @@ public: // MUDD5 void mudd5Tick1(); + void mudd5Timer1Expired(); + void mudd5Timer2Expired(); + void mudd5UseCommunicator(); + void mudd5UseSTricorderAnywhere(); + void mudd5UseSTricorderOnEngine(); + void mudd5UseSTricorderOnCrane(); + void mudd5UseSTricorderOnHatch(); + void mudd5UseSTricorderOnLifeSupportGenerator(); + void mudd5UseStunPhaserOnHatch(); + void mudd5UseKillPhaserOnHatch(); + void mudd5UseAnythingOnLifeSupportGenerator(); + void mudd5UseDooverOnLifeSupportGenerator(); + void mudd5KirkReachedLifeSupportGenerator(); + void mudd5KirkTimer4Expired(); + void mudd5KirkRepairedLifeSupportGenerator(); + void mudd5KirkTimer3Expired(); + void mudd5LookAtHatch(); + void mudd5LookAtLifeSupportGenerator(); + void mudd5TouchedHotspot0(); + void mudd5WalkToDoor(); + void mudd5LookAtKirk(); + void mudd5LookAtSpock(); + void mudd5LookAtMccoy(); + void mudd5LookAtRedshirt(); + void mudd5LookAtDoor(); + void mudd5LookAtCrane(); + void mudd5LookAtEngine(); + void mudd5TalkToKirk(); + void mudd5TalkToSpock(); + void mudd5TalkToMccoy(); + void mudd5TalkToRedshirt(); + void mudd5UseMedkit(); // MUDDA diff --git a/engines/startrek/rooms/function_map.h b/engines/startrek/rooms/function_map.h index 2f729b5d39..a6930ea69d 100644 --- a/engines/startrek/rooms/function_map.h +++ b/engines/startrek/rooms/function_map.h @@ -1414,7 +1414,7 @@ RoomAction mudd0ActionList[] = { { Action(ACTION_USE, OBJECT_ISTRICOR, 0x22, 0), &Room::mudd0UseSTricorderOnDegrimerBox }, { Action(ACTION_USE, OBJECT_IMTRICOR, 0x21, 0), &Room::mudd0UseMTricorderOnLense }, - // TODO: move these to common code + // Common code (next 4 lines) { 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 }, @@ -1459,7 +1459,7 @@ RoomAction mudd1ActionList[] = { { Action(ACTION_FINISHED_WALKING, 3, 0, 0), &Room::mudd1SpockReachedRedButton }, { Action(ACTION_FINISHED_ANIMATION, 4, 0, 0), &Room::mudd1SpockPressedRedButton }, - // Common code + // Common code (next 4 lines) { 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 }, @@ -1517,7 +1517,7 @@ RoomAction mudd2ActionList[] = { { Action(ACTION_FINISHED_ANIMATION, 13, 0, 0), &Room::mudd2MccoyPickedUpCapsules }, { Action(ACTION_USE, OBJECT_ICOMM, -1, 0), &Room::mudd2UseCommunicator }, - // Common code + // Common code (next 4 lines) { 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 }, @@ -1585,7 +1585,7 @@ RoomAction mudd3ActionList[] = { { Action(ACTION_TIMER_EXPIRED, 4, 0, 0), &Room::mudd3Timer4Expired }, { Action(ACTION_USE, OBJECT_IDISKS, 0x21, 0), &Room::mudd3UseMemoryDiskOnSphere }, - // Common code + // Common code (next 4 lines) { 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 }, @@ -1655,7 +1655,7 @@ RoomAction mudd4ActionList[] = { // ENHANCEMENT: Allow scanning the viewscreen when it's on, not just when off { Action(ACTION_USE, OBJECT_ISTRICOR, 8, 0), &Room::mudd4UseSTricorderOnViewscreen }, - // Common code + // Common code (next 4 lines) { 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 }, @@ -1692,6 +1692,45 @@ RoomAction mudd4ActionList[] = { RoomAction mudd5ActionList[] = { { Action(ACTION_TICK, 1, 0, 0), &Room::mudd5Tick1 }, + { Action(ACTION_TIMER_EXPIRED, 1, 0, 0), &Room::mudd5Timer1Expired }, + { Action(ACTION_TIMER_EXPIRED, 2, 0, 0), &Room::mudd5Timer2Expired }, + { Action(ACTION_USE, OBJECT_ICOMM, -1, 0), &Room::mudd5UseCommunicator }, + { Action(ACTION_USE, OBJECT_ISTRICOR, -1, 0), &Room::mudd5UseSTricorderAnywhere }, + { Action(ACTION_USE, OBJECT_ISTRICOR, 0x21, 0), &Room::mudd5UseSTricorderOnEngine }, + { Action(ACTION_USE, OBJECT_ISTRICOR, 0x22, 0), &Room::mudd5UseSTricorderOnCrane }, + { Action(ACTION_USE, OBJECT_ISTRICOR, 0x20, 0), &Room::mudd5UseSTricorderOnHatch }, + { Action(ACTION_USE, OBJECT_ISTRICOR, 9, 0), &Room::mudd5UseSTricorderOnLifeSupportGenerator }, + { Action(ACTION_USE, OBJECT_IPHASERS, 0x20, 0), &Room::mudd5UseStunPhaserOnHatch }, + { Action(ACTION_USE, OBJECT_IPHASERK, 0x20, 0), &Room::mudd5UseKillPhaserOnHatch }, + { Action(ACTION_USE, -1, 9, 0), &Room::mudd5UseAnythingOnLifeSupportGenerator }, + { Action(ACTION_USE, OBJECT_IDOOVER, 9, 0), &Room::mudd5UseDooverOnLifeSupportGenerator }, + { Action(ACTION_FINISHED_WALKING, 2, 0, 0), &Room::mudd5KirkReachedLifeSupportGenerator }, + { Action(ACTION_TIMER_EXPIRED, 4, 0, 0), &Room::mudd5KirkTimer4Expired }, + { Action(ACTION_FINISHED_ANIMATION, 2, 0, 0), &Room::mudd5KirkRepairedLifeSupportGenerator }, + { Action(ACTION_TIMER_EXPIRED, 3, 0, 0), &Room::mudd5KirkTimer3Expired }, + + // Common code (next 4 lines) + { 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_USE, OBJECT_IDEGRIME, -1, 0), &Room::mudd0UseDegrimer }, + + { Action(ACTION_LOOK, 0x20, 0, 0), &Room::mudd5LookAtHatch }, + { Action(ACTION_LOOK, 9, 0, 0), &Room::mudd5LookAtLifeSupportGenerator }, + { Action(ACTION_TOUCHED_HOTSPOT, 0, 0, 0), &Room::mudd5TouchedHotspot0 }, + { Action(ACTION_WALK, 0x22, 0, 0), &Room::mudd5WalkToDoor }, + { Action(ACTION_LOOK, OBJECT_KIRK, 0, 0), &Room::mudd5LookAtKirk }, + { Action(ACTION_LOOK, OBJECT_SPOCK, 0, 0), &Room::mudd5LookAtSpock }, + { Action(ACTION_LOOK, OBJECT_MCCOY, 0, 0), &Room::mudd5LookAtMccoy }, + { Action(ACTION_LOOK, OBJECT_REDSHIRT, 0, 0), &Room::mudd5LookAtRedshirt }, + { Action(ACTION_LOOK, 0x22, 0, 0), &Room::mudd5LookAtDoor }, + { Action(ACTION_LOOK, 0x23, 0, 0), &Room::mudd5LookAtCrane }, + { Action(ACTION_LOOK, 0x21, 0, 0), &Room::mudd5LookAtEngine }, + { Action(ACTION_TALK, OBJECT_KIRK, 0, 0), &Room::mudd5TalkToKirk }, + { Action(ACTION_TALK, OBJECT_SPOCK, 0, 0), &Room::mudd5TalkToSpock }, + { Action(ACTION_TALK, OBJECT_MCCOY, 0, 0), &Room::mudd5TalkToMccoy }, + { Action(ACTION_TALK, OBJECT_REDSHIRT, 0, 0), &Room::mudd5TalkToRedshirt }, + { Action(ACTION_USE, OBJECT_IMEDKIT, -1, 0), &Room::mudd5UseMedkit }, }; } diff --git a/engines/startrek/rooms/mudd0.cpp b/engines/startrek/rooms/mudd0.cpp index dbb1c999f6..c4960312f2 100644 --- a/engines/startrek/rooms/mudd0.cpp +++ b/engines/startrek/rooms/mudd0.cpp @@ -166,7 +166,7 @@ void Room::mudd0UseLenseOnDegrimer() { _vm->_awayMission.mudd.missionScore++; showText(TX_MUD0N011); // TODO: Identical (?) audio files: TX_MUD0N011, TX_MUD1N013, TX_MUD2N010, TX_MUD3N016, - // TX_MUD4009 + // TX_MUD4009, TX_MUD5N009 } @@ -177,6 +177,7 @@ void Room::mudd0UseAlienDevice() { 11, // MUDD2 11, // MUDD3 9, // MUDD4 + 11 // MUDD5 }; _vm->_awayMission.disableInput = true; @@ -192,7 +193,7 @@ void Room::mudd0FiredAlienDevice() { _vm->_awayMission.disableInput = false; if (!_vm->_awayMission.mudd.discoveredLenseAndDegrimerFunction) { _vm->_awayMission.mudd.discoveredLenseAndDegrimerFunction = true; - _vm->_awayMission.mudd.missionScore += 5; + _vm->_awayMission.mudd.missionScore += 5; // BUGFIX: didn't happen if done in MUDD5 showText(TX_SPEAKER_KIRK, TX_MUD0_002); // TODO: Identical (?) audio files: TX_MUD0_002, TX_MUD1_002, TX_MUD2_002 } @@ -201,7 +202,7 @@ void Room::mudd0FiredAlienDevice() { void Room::mudd0UseDegrimer() { // TODO: Identical (?) audio files: TX_MUD0N002, TX_MUD1N004, TX_MUD2N001, - // TX_MUD3N001, TX_MUD4N002 + // TX_MUD3N001, TX_MUD4N002, TX_MUD5_001 showText(TX_MUD0N002); } diff --git a/engines/startrek/rooms/mudd5.cpp b/engines/startrek/rooms/mudd5.cpp index 30ddc9879c..f5b6bf90b2 100644 --- a/engines/startrek/rooms/mudd5.cpp +++ b/engines/startrek/rooms/mudd5.cpp @@ -22,13 +22,236 @@ #include "startrek/room.h" -#define OBJECT_DOOR1 8 +#define OBJECT_MUDD 8 +#define OBJECT_LIFE_SUPPORT_GENERATOR 9 +#define OBJECT_DOOR 10 +#define OBJECT_ALIENDV 11 -#define HOTSPOT_CONSOLE 0x20 +#define HOTSPOT_HATCH 0x20 +#define HOTSPOT_ENGINE 0x21 +#define HOTSPOT_DOOR 0x22 +#define HOTSPOT_CRANE 0x23 + +const int16 GENERATOR_X = 0x54; +const int16 GENERATOR_Y = 0xb0; namespace StarTrek { void Room::mudd5Tick1() { + playVoc("MUD5LOOP"); + + _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_REDSHIRT] = DIR_E; + if (_vm->_awayMission.mudd.lifeSupportMalfunctioning) { + playMidiMusicTracks(19); + loadActorAnim(OBJECT_LIFE_SUPPORT_GENERATOR, "s4epls", GENERATOR_X, GENERATOR_Y); + } else { + 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; + _vm->_awayMission.mudd.numTimesEnteredRoom5 = 1; + _vm->_awayMission.disableInput = 2; + playMidiMusicTracks(3); + loadActorAnim(OBJECT_MUDD, "s4ephh", 0x0e, 0xa7); + _vm->_awayMission.timers[1] = 112; + _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_KIRK] = DIR_W; + } + } +} + +void Room::mudd5Timer1Expired() { // Mudd enters room through hatch + const int choices[] = { + TX_SPEAKER_KIRK, + TX_MUD5_006, + TX_MUD5_010, + TX_BLANK + }; + + showText(TX_SPEAKER_MUDD, TX_MUD5_034); + showText(choices); + showText(TX_SPEAKER_MUDD, TX_MUD5_037); + + loadActorAnim2(OBJECT_MUDD, "s4ephc"); + _vm->_awayMission.timers[2] = 140; +} + +void Room::mudd5Timer2Expired() { // Life-support generator starts acting up + _vm->_awayMission.disableInput = false; + _vm->_awayMission.mudd.lifeSupportMalfunctioning = true; + playMidiMusicTracks(19); + loadActorAnim(OBJECT_LIFE_SUPPORT_GENERATOR, "s4epls", GENERATOR_X, GENERATOR_Y); +} + +void Room::mudd5UseCommunicator() { + showText(TX_SPEAKER_KIRK, TX_MUD5_003); + showText(TX_SPEAKER_UHURA, TX_STATICU1); +} + +void Room::mudd5UseSTricorderAnywhere() { + spockScan(DIR_S, TX_MUD5_022, false); +} + +void Room::mudd5UseSTricorderOnEngine() { + spockScan(DIR_E, TX_MUD5_011, false); +} + +void Room::mudd5UseSTricorderOnCrane() { + spockScan(DIR_S, TX_MUD5_023, false); +} + +void Room::mudd5UseSTricorderOnHatch() { + spockScan(DIR_W, TX_MUD5_024, false); + showText(TX_SPEAKER_KIRK, TX_MUD5_001); +} + +void Room::mudd5UseSTricorderOnLifeSupportGenerator() { + if (_vm->_awayMission.mudd.lifeSupportMalfunctioning) + spockScan(DIR_W, TX_MUD5_019, false); + else + spockScan(DIR_W, TX_MUD5_021, false); +} + +void Room::mudd5UseStunPhaserOnHatch() { + showText(TX_SPEAKER_SPOCK, TX_MUD5_025); + showText(TX_SPEAKER_MCCOY, TX_MUD5_015); + showText(TX_SPEAKER_SPOCK, TX_MUD5_030); +} + +void Room::mudd5UseKillPhaserOnHatch() { + showText(TX_SPEAKER_BUCHERT, TX_MUD5_039); + showText(TX_SPEAKER_SPOCK, TX_MUD5_027); +} + +void Room::mudd5UseAnythingOnLifeSupportGenerator() { + showText(TX_SPEAKER_MCCOY, TX_MUD5_014); // BUGFIX: speaker is McCoy, not none +} + + +void Room::mudd5UseDooverOnLifeSupportGenerator() { + if (_vm->_awayMission.mudd.lifeSupportMalfunctioning) { + _vm->_awayMission.disableInput = true; + _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_KIRK] = DIR_N; + walkCrewmanC(OBJECT_KIRK, 0x57, 0xb4, &Room::mudd5KirkReachedLifeSupportGenerator); + } else + showText(TX_SPEAKER_MCCOY, TX_MUD5_014); // BUGFIX: speaker is McCoy, not none +} + +void Room::mudd5KirkReachedLifeSupportGenerator() { + loadActorAnimC(OBJECT_KIRK, "kuseln", -1, -1, &Room::mudd5KirkRepairedLifeSupportGenerator); + _vm->_awayMission.timers[4] = 20; +} + +void Room::mudd5KirkTimer4Expired() { + playMidiMusicTracks(-1); + loadActorAnim2(OBJECT_LIFE_SUPPORT_GENERATOR, "s4eplo"); + _vm->_awayMission.mudd.repairedLifeSupportGenerator = true; + _vm->_awayMission.mudd.missionScore += 2; +} + +void Room::mudd5KirkRepairedLifeSupportGenerator() { + showText(TX_SPEAKER_KIRK, TX_MUD5_007); + showText(TX_SPEAKER_SPOCK, TX_MUD5_028); + + _vm->_awayMission.mudd.lifeSupportMalfunctioning = false; + _vm->_awayMission.mudd.muddCurrentlyInsane = false; + playMidiMusicTracks(3); + loadActorAnim(OBJECT_MUDD, "s4ephh", 0x0e, 0xa7); + _vm->_awayMission.disableInput = true; + + _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_KIRK] = DIR_W; + loadActorStandAnim(OBJECT_KIRK); + + _vm->_awayMission.timers[3] = 110; +} + +void Room::mudd5KirkTimer3Expired() { // Mudd popped back in after repairing generator + showText(TX_SPEAKER_MUDD, TX_MUD5_035); + showText(TX_SPEAKER_KIRK, TX_MUD5_005); + showText(TX_SPEAKER_MUDD, TX_MUD5_036); + + loadActorAnim2(OBJECT_MUDD, "s4ephc"); + _vm->_awayMission.disableInput = false; +} + +void Room::mudd5LookAtHatch() { + showText(TX_MUD5N011); + showText(TX_SPEAKER_SPOCK, TX_MUD5_031); + showText(TX_SPEAKER_KIRK, TX_MUD5_009); +} + +void Room::mudd5LookAtLifeSupportGenerator() { + if (_vm->_awayMission.mudd.lifeSupportMalfunctioning) + showText(TX_MUD5N008); + else { + showText(TX_MUD5N012); + showText(TX_SPEAKER_SPOCK, TX_MUD5_026); + } +} + +void Room::mudd5TouchedHotspot0() { // Triggers door + if (_roomVar.mudd.walkingToDoor) { + playVoc("SMADOOR3"); + loadActorAnim(OBJECT_DOOR, "s4epdo", 0x85, 0x74); + } +} + +void Room::mudd5WalkToDoor() { + _roomVar.mudd.walkingToDoor = true; + _vm->_awayMission.disableInput = true; + walkCrewman(OBJECT_KIRK, 0x85, 0x74); +} + +void Room::mudd5LookAtKirk() { + showText(TX_MUD5N002); +} + +void Room::mudd5LookAtSpock() { + showText(TX_MUD5N005); +} + +void Room::mudd5LookAtMccoy() { + showText(TX_MUD5N004); +} + +void Room::mudd5LookAtRedshirt() { + showText(TX_MUD5N003); +} + +void Room::mudd5LookAtDoor() { + showText(TX_MUD5N010); +} + +void Room::mudd5LookAtCrane() { + showText(TX_MUD5N000); +} + +void Room::mudd5LookAtEngine() { + showText(TX_MUD5N006); +} + +void Room::mudd5TalkToKirk() { + showText(TX_SPEAKER_KIRK, TX_MUD5_002); + showText(TX_SPEAKER_SPOCK, TX_MUD5_032); +} + +void Room::mudd5TalkToSpock() { + showText(TX_SPEAKER_SPOCK, TX_MUD5_033); + showText(TX_SPEAKER_MCCOY, TX_MUD5_016); +} + +void Room::mudd5TalkToMccoy() { + showText(TX_SPEAKER_MCCOY, TX_MUD5_017); + showText(TX_SPEAKER_KIRK, TX_MUD5_004); +} + +void Room::mudd5TalkToRedshirt() { + showText(TX_SPEAKER_BUCHERT, TX_MUD5_040); + showText(TX_SPEAKER_MCCOY, TX_MUD5_018); +} + +void Room::mudd5UseMedkit() { + showText(TX_SPEAKER_MCCOY, TX_MUD5_012); } } diff --git a/engines/startrek/startrek.cpp b/engines/startrek/startrek.cpp index d829dd98c9..44c7aea742 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 = 4; + _roomIndexToLoad = 5; 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 0ecac514d3..4811da9017 100644 --- a/engines/startrek/text.h +++ b/engines/startrek/text.h @@ -1530,6 +1530,62 @@ enum GameStringIDs { TX_MUD4N013, + TX_MUD5_001, + TX_MUD5_002, + TX_MUD5_003, + TX_MUD5_004, + TX_MUD5_005, + TX_MUD5_006, + TX_MUD5_007, + // UNUSED + TX_MUD5_009, + TX_MUD5_010, + TX_MUD5_011, + TX_MUD5_012, + TX_MUD5_013, + TX_MUD5_014, + TX_MUD5_015, + TX_MUD5_016, + TX_MUD5_017, + TX_MUD5_018, + TX_MUD5_019, + TX_MUD5_020, + TX_MUD5_021, + TX_MUD5_022, + TX_MUD5_023, + TX_MUD5_024, + TX_MUD5_025, + TX_MUD5_026, + TX_MUD5_027, + TX_MUD5_028, + // MISSING + TX_MUD5_030, + TX_MUD5_031, + TX_MUD5_032, + TX_MUD5_033, + TX_MUD5_034, + TX_MUD5_035, + TX_MUD5_036, + TX_MUD5_037, + TX_MUD5_038, + TX_MUD5_039, + TX_MUD5_040, + TX_MUD5N000, + TX_MUD5N001, + TX_MUD5N002, + TX_MUD5N003, + TX_MUD5N004, + TX_MUD5N005, + TX_MUD5N006, + TX_MUD5N007, + TX_MUD5N008, + TX_MUD5N009, + TX_MUD5N010, + TX_MUD5N011, + TX_MUD5N012, + TX_MUD5N105, + + TX_SIN3_012, @@ -3005,6 +3061,60 @@ const char * const g_gameStrings[] = { "#MUD4\\MUD4N013#You see a plain grey screen.", + "#MUD5\\MUD5_001#I suspect that's a blessing in disguise, Mr. Spock!", + "#MUD5\\MUD5_002#Just think of it, Spock. An advanced civilization, with powerful technology and nearly unlimited knowledge, and yet all of that didn't save them. ", + "#MUD5\\MUD5_003#Kirk to Enterprise...", + "#MUD5\\MUD5_004#Let's hope there isn't too much for you to do back at the Enterprise. ", + "#MUD5\\MUD5_005#Mudd! I oughta...", + "#MUD5\\MUD5_006#No, Harry, but I figure it's probably where you'll find your lost marbles.", + "#MUD5\\MUD5_007#That was a close one. Too close! If I ever get my hands on that no good Mudd I'll...", + "#MUD5\\MUD5_009#Will wonders never cease.", + "#MUD5\\MUD5_010#Yes, I've got it but you can't have it.", + "#MUD5\\MUD5_011#An unusual matter-anti-matter engine, reminiscent of the designs created by the hoopooin of Seginus IV.", + "#MUD5\\MUD5_012#Everyone is healthy, Jim, there's no need for the medical kit here.", + "#MUD5\\MUD5_013#Our lives won't be worth a plugged nickel if we don't get that makeshift life support generator back in working order!", + "#MUD5\\MUD5_014#This life support generator is an unreliable model at the best of times. Tinkering with it is a gamble with your life!", + "#MUD5\\MUD5_015#Do you really think there's anything on Mudd's ship we need, Captain? I don't.", + "#MUD5\\MUD5_016#Spock! Meaningless conversation is one of life's great pleasures. ", + "#MUD5\\MUD5_017#Well Jim, as long as we don't strangle Harry Mudd, I can't see very much for me to do on this mission. ", + "#MUD5\\MUD5_018#You know, lieutenant, they say if you can't say anything good about a person, you shouldn't say anything at all. In that case, I've got a lot I shouldn't say about Harry Mudd. ", + "#MUD5\\MUD5_019#The life support generator is malfunctioning. Repairs must be made soon or the atmosphere will fall below the level required to sustain us, Captain.", + "#MUD5\\MUD5_020#The life support system must be repaired soon. Readings indicate the environment is dropping quickly.", + "#MUD5\\MUD5_021#This \"Sav-a-Ship\" life support generator has seen a great deal of use. It was never a reliable model, being prone to breakdown without warning. It is, however, properly connected, with warning alarms for temperature, atmosphere, and radiation.", + "#MUD5\\MUD5_022#This room appears to have been the alien ship's engine pod. A ship-to-ship access hatch and a temporary life support generator are evidently recent additions.", + "#MUD5\\MUD5_023#This seems to be a crane of some sort, Captain. Currently, no power is running to it.", + "#MUD5\\MUD5_024#As one would expect, Mr. Mudd has sealed the hatch with his personal code. We cannot enter his ship, Captain.", + "#MUD5\\MUD5_025#Captain, the Gomuchi-Grindrod Salvage Hatch is designed to withstand low power phaser blasts. However, I would not trust the integrity of the ship's hull were we to increase phaser power to open this hatch.", + "#MUD5\\MUD5_026#Evidently Mr. Mudd was unwilling to pay the price for a reliable salvage model.", + "#MUD5\\MUD5_027#I doubt there's anything on Mudd's ship we require, Captain.", + "#MUD5\\MUD5_028#I would not suggest we take the time to seek him. This emergency could occur again. I would suggest we hasten our departure.", // TYPO + "#MUD5\\MUD5_030#In this case, I agree with the good doctor.", + "#MUD5\\MUD5_031#It appears that Harry Mudd managed to emplace this access hatch without significantly damaging the alien ship.", + "#MUD5\\MUD5_032#It is a sobering thought, Captain. ", + "#MUD5\\MUD5_033#Unlike humans, I do not decrease my efficiency with meaningless dialogue. ", + "#MUD5\\MUD5_034#Captain, you wouldn't have seen my Multipurpose Doover anywhere? I need to, uh, fix something.", + "#MUD5\\MUD5_035#Oh! Was there a problem?", + "#MUD5\\MUD5_036#Sorry, no time to chat. I'm a busy man you know.", + "#MUD5\\MUD5_037#You really can be a headache, Captain. Maybe I can find a spare somewhere else. Good lu...I mean goodbye.", + "#MUD5\\MUD5_038#Captain, I'm not feeling well. Without life support, we can't remain here much longer.", + "#MUD5\\MUD5_039#Captain, I don't think we can open this hatch with phasers, and still depend on the integrity of the ship's hull to hold atmosphere.", + "#MUD5\\MUD5_040#When we get back to the Enterprise, you're going to have to tell me everything you know about this Mudd guy. ", + "#MUD5\\MUD5N000#A large claw-like device hangs from the ceiling.", + "#MUD5\\MUD5N001#Dust and grease lifts off the surface, leaving this item clean as new.", + "#MUD5\\MUD5N002#James T. Kirk. Exploring the unknown is one of the few pleasures that the burden of command allows him. ", + "#MUD5\\MUD5N003#Lieutenant Buchert watches and says nothing. He's the strong, silent type. ", + "#MUD5\\MUD5N004#McCoy glances back and forth, looking for a sign of Harry Mudd. ", + "#MUD5\\MUD5N005#Spock continues to examine the equipment with a scientist's eye. ", + "#MUD5\\MUD5N006#Tall, transparent columns run through the ceiling. Energy crackles in between the duo-decahedrons inside them.", + "#MUD5\\MUD5N007#The atmosphere in the ship has dropped below the level needed to sustain life. You drop to unconsciousness and slowly die.", + "#MUD5\\MUD5N008#There seems to be something wrong with the life support generator.", + "#MUD5\\MUD5N009#These two things fit together like they were made for each other.", + "#MUD5\\MUD5N010#This door leads back to the main cargo bay.", + "#MUD5\\MUD5N011#A salvage lock hatch, a common type used to link a derelict to the ship doing the salvaging.", + "#MUD5\\MUD5N012#A \"Sav-a-Ship\" emergency life support generator, generally used for temporary life support during evacuation of small damaged ships.", + "#MUD5\\MUD5N105#Life support fails completely and you fall unconscious.", + + "#SIN3\\SIN3_012#Can't say I like the decor.", -- cgit v1.2.3