aboutsummaryrefslogtreecommitdiff
path: root/engines/startrek
diff options
context:
space:
mode:
authorMatthew Stewart2018-06-06 23:43:29 -0400
committerEugene Sandulenko2018-08-09 08:37:30 +0200
commitad76c744afc777c2e602fb2f3646ef7b93925db2 (patch)
tree51e7693511635f82df1ee4f43491d20cda29f82b /engines/startrek
parented7d22cd0f2ac6a42bde79d49d417c7c981e0758 (diff)
downloadscummvm-rg350-ad76c744afc777c2e602fb2f3646ef7b93925db2.tar.gz
scummvm-rg350-ad76c744afc777c2e602fb2f3646ef7b93925db2.tar.bz2
scummvm-rg350-ad76c744afc777c2e602fb2f3646ef7b93925db2.zip
STARTREK: TUG0 (first room of mission 2)
Diffstat (limited to 'engines/startrek')
-rw-r--r--engines/startrek/awaymission.h13
-rw-r--r--engines/startrek/module.mk1
-rw-r--r--engines/startrek/room.cpp4
-rw-r--r--engines/startrek/room.h64
-rw-r--r--engines/startrek/rooms/function_map.h76
-rw-r--r--engines/startrek/rooms/tug0.cpp455
-rw-r--r--engines/startrek/sound.h21
-rw-r--r--engines/startrek/startrek.cpp2
-rw-r--r--engines/startrek/text.h144
9 files changed, 779 insertions, 1 deletions
diff --git a/engines/startrek/awaymission.h b/engines/startrek/awaymission.h
index 60d9b5bd7b..bf97739f3a 100644
--- a/engines/startrek/awaymission.h
+++ b/engines/startrek/awaymission.h
@@ -94,6 +94,19 @@ struct AwayMission {
bool foundAlienRoom; // 0x57
int16 missionScore; // 0x58
} demon;
+
+ // Hijacked
+ struct {
+ int16 missionScore; // 0x29
+ int16 field2b; // 0x2b
+ int16 field2d; // 0x2d;
+ bool engineerConscious; // 0x30
+ bool gotTransmogrifier; // 0x43
+ bool transporterRepaired; // 0x44
+ bool spockExaminedTransporter; // 0x45
+ bool usedTransmogrifierOnTransporter; // 0x46
+ bool haveBomb; // 0x49
+ } tug;
};
};
// Size: 0x129 bytes
diff --git a/engines/startrek/module.mk b/engines/startrek/module.mk
index f061ac3d29..36aff9e691 100644
--- a/engines/startrek/module.mk
+++ b/engines/startrek/module.mk
@@ -26,6 +26,7 @@ MODULE_OBJS = \
rooms/demon4.o \
rooms/demon5.o \
rooms/demon6.o \
+ rooms/tug0.o \
diff --git a/engines/startrek/room.cpp b/engines/startrek/room.cpp
index a2cc0d27b5..b66764f6cd 100644
--- a/engines/startrek/room.cpp
+++ b/engines/startrek/room.cpp
@@ -65,6 +65,10 @@ Room::Room(StarTrekEngine *vm, const Common::String &name) : _vm(vm) {
_roomActionList = demon6ActionList;
_numRoomActions = sizeof(demon6ActionList) / sizeof(RoomAction);
}
+ else if (name == "TUG0") {
+ _roomActionList = tug0ActionList;
+ _numRoomActions = sizeof(tug0ActionList) / sizeof(RoomAction);
+ }
else {
warning("Room \"%s\" unimplemented", name.c_str());
_numRoomActions = 0;
diff --git a/engines/startrek/room.h b/engines/startrek/room.h
index 4dd6e05d71..84b1b69e13 100644
--- a/engines/startrek/room.h
+++ b/engines/startrek/room.h
@@ -471,6 +471,70 @@ public:
void demon6KirkReachedCase();
int demon6ShowCase(int visible);
+ // TUG0
+ void tug0Tick1();
+ void tug0LookAtEngineer();
+ void tug0GetEngineer();
+ void tug0LookAtControls();
+ void tug0UseSpockOnControls();
+ void tug0SpockReachedControlsToExamine();
+ void tug0SpockExaminedControls();
+ void tug0UseTransmogrifierWithoutBitOnControls();
+ void tug0UseTransmogrifierWithBitOnControls();
+ void tug0SpockReachedControlsWithTransmogrifier();
+ void tug0SpockFinishedUsingTransmogrifier();
+ void tug0TransporterScreenFullyLit();
+ void tug0UseWireScrapsOnControls();
+ void tug0UseWireOnControls();
+ void tug0SpockReachedControlsWithWire();
+ void tug0SpockFinishedUsingWire();
+ void tug0UseMedkitOnEngineer();
+ void tug0MccoyReachedEngineer();
+ void tug0MccoyHealedEngineer();
+ void tug0EngineerGotUp();
+ void tug0GetTransmogrifier();
+ void tug0KirkReachedToolbox();
+ void tug0KirkGotTransmogrifier();
+ void tug0LookAtToolbox();
+ void tug0UsePhaserOnWelder();
+ void tug0UseWelderOnWireScraps();
+ void tug0UseWelderOnMetalScraps();
+ void tug0UseCombBitOnTransmogrifier();
+ void tug0UseTransporter();
+ void tug0SpockReachedControlsToTransport();
+ void tug0SpockPreparedTransporter();
+ void tug0SpockReachedTransporter();
+ void tug0FinishedTransporting();
+ void tug0UseBombOnTransporter();
+ void tug0KirkReachedTransporter();
+ void tug0KirkPlacedBomb();
+ void tug0SpockReachedControlsForBomb();
+ void tug0SpockBeginsBeamingBomb();
+ void tug0SpockFinishesBeamingBomb();
+ void tug0BombExploded();
+ void tug0UseMTricorderOnControls();
+ void tug0UseSTricorderOnControls();
+ void tug0UseMTricorderOnEngineer();
+ void tug0MccoyReachedEngineerToScan();
+ void tug0MccoyFinishedScanningEngineer();
+ void tug0UseSTricorderOnEngineer();
+ void tug0WalkToDoor();
+ void tug0LookAtKirk();
+ void tug0LookAtSpock();
+ void tug0LookAtMccoy();
+ void tug0LookAtRedshirt();
+ void tug0LookAtTransporter();
+ void tug0LookAtDoor();
+ void tug0TalkToKirk();
+ void tug0TalkToMccoy();
+ void tug0TalkToSpock();
+ void tug0TalkToRedshirt();
+ void tug0TalkToEngineer();
+ void tug0UseCommunicator();
+ void tug0LookAnywhere();
+ void tug0UseSTricorderAnywhere();
+ void tug0UseMTricorderAnywhere();
+
private:
// Room-specific variables. This is memset'ed to 0 when the room is initialized.
union {
diff --git a/engines/startrek/rooms/function_map.h b/engines/startrek/rooms/function_map.h
index db647df41e..1b52b0537f 100644
--- a/engines/startrek/rooms/function_map.h
+++ b/engines/startrek/rooms/function_map.h
@@ -513,6 +513,82 @@ RoomAction demon6ActionList[] = {
{ Action(ACTION_FINISHED_WALKING, 5, 0, 0), &Room::demon6KirkReachedCase },
};
+
+RoomAction tug0ActionList[] = {
+ { Action(ACTION_TICK, 1, 0, 0), &Room::tug0Tick1 },
+ { Action(ACTION_LOOK, 8, 0, 0), &Room::tug0LookAtEngineer },
+ { Action(ACTION_GET, 8, 0, 0), &Room::tug0GetEngineer },
+
+ { Action(ACTION_LOOK, 11, 0, 0), &Room::tug0LookAtControls },
+ { Action(ACTION_LOOK, 0x21, 0, 0), &Room::tug0LookAtControls },
+ { Action(ACTION_USE, OBJECT_SPOCK, 0x21, 0), &Room::tug0UseSpockOnControls },
+ { Action(ACTION_FINISHED_WALKING, 16, 0, 0), &Room::tug0SpockReachedControlsToExamine },
+ { Action(ACTION_FINISHED_ANIMATION, 17, 0, 0), &Room::tug0SpockExaminedControls },
+ { Action(ACTION_USE, OBJECT_IRT, 0x21, 0), &Room::tug0UseTransmogrifierWithoutBitOnControls },
+ { Action(ACTION_USE, OBJECT_IRTWB, 0x21, 0), &Room::tug0UseTransmogrifierWithBitOnControls },
+ { Action(ACTION_FINISHED_WALKING, 6, 0, 0), &Room::tug0SpockReachedControlsWithTransmogrifier },
+ { Action(ACTION_FINISHED_ANIMATION, 7, 0, 0), &Room::tug0SpockFinishedUsingTransmogrifier },
+ { Action(ACTION_FINISHED_ANIMATION, 22, 0, 0), &Room::tug0TransporterScreenFullyLit },
+ { Action(ACTION_USE, OBJECT_IWIRSCRP, 0x21, 0), &Room::tug0UseWireScrapsOnControls },
+ { Action(ACTION_USE, OBJECT_IWIRING, 0x21, 0), &Room::tug0UseWireOnControls },
+ { Action(ACTION_FINISHED_WALKING, 8, 0, 0), &Room::tug0SpockReachedControlsWithWire },
+ { Action(ACTION_FINISHED_ANIMATION, 9, 0, 0), &Room::tug0SpockFinishedUsingWire },
+ { Action(ACTION_USE, OBJECT_IMEDKIT, 8, 0), &Room::tug0UseMedkitOnEngineer },
+ { Action(ACTION_FINISHED_WALKING, 2, 0, 0), &Room::tug0MccoyReachedEngineer },
+ { Action(ACTION_FINISHED_ANIMATION, 13, 0, 0), &Room::tug0MccoyHealedEngineer },
+ { Action(ACTION_FINISHED_ANIMATION, 1, 0, 0), &Room::tug0EngineerGotUp },
+ { Action(ACTION_GET, 9, 0, 0), &Room::tug0GetTransmogrifier },
+ { Action(ACTION_FINISHED_WALKING, 3, 0, 0), &Room::tug0KirkReachedToolbox },
+ { Action(ACTION_FINISHED_ANIMATION, 4, 0, 0), &Room::tug0KirkGotTransmogrifier },
+ { Action(ACTION_LOOK, 9, 0, 0), &Room::tug0LookAtToolbox },
+
+ { Action(ACTION_USE, OBJECT_IPHASERS, OBJECT_IPWE, 0), &Room::tug0UsePhaserOnWelder },
+ { Action(ACTION_USE, OBJECT_IPHASERK, OBJECT_IPWE, 0), &Room::tug0UsePhaserOnWelder },
+ { Action(ACTION_USE, OBJECT_IPWE, OBJECT_IWIRSCRP, 0), &Room::tug0UseWelderOnWireScraps },
+ { Action(ACTION_USE, OBJECT_IPWE, OBJECT_IJNKMETL, 0), &Room::tug0UseWelderOnMetalScraps },
+ { Action(ACTION_USE, OBJECT_ICOMBBIT, OBJECT_IRT, 0), &Room::tug0UseCombBitOnTransmogrifier },
+
+ { Action(ACTION_USE, OBJECT_SPOCK, 11, 0), &Room::tug0UseTransporter },
+ { Action(ACTION_USE, OBJECT_KIRK, 0x22, 0), &Room::tug0UseTransporter },
+ { Action(ACTION_FINISHED_WALKING, 14, 0, 0), &Room::tug0SpockReachedControlsToTransport },
+ { Action(ACTION_FINISHED_ANIMATION, 18, 0, 0), &Room::tug0SpockPreparedTransporter },
+ { Action(ACTION_FINISHED_WALKING, 20, 0, 0), &Room::tug0SpockReachedTransporter },
+ { Action(ACTION_FINISHED_ANIMATION, 21, 0, 0), &Room::tug0FinishedTransporting },
+
+ { Action(ACTION_USE, OBJECT_IBOMB, 0x22, 0), &Room::tug0UseBombOnTransporter },
+ { Action(ACTION_FINISHED_WALKING, 5, 0, 0), &Room::tug0KirkReachedTransporter },
+ { Action(ACTION_FINISHED_ANIMATION, 10, 0, 0), &Room::tug0KirkPlacedBomb },
+ { Action(ACTION_FINISHED_WALKING, 15, 0, 0), &Room::tug0SpockReachedControlsForBomb },
+ { Action(ACTION_FINISHED_ANIMATION, 19, 0, 0), &Room::tug0SpockBeginsBeamingBomb },
+ { Action(ACTION_FINISHED_ANIMATION, 12, 0, 0), &Room::tug0SpockFinishesBeamingBomb },
+ { Action(ACTION_TIMER_EXPIRED, 0, 0, 0), &Room::tug0BombExploded },
+
+ { Action(ACTION_USE, OBJECT_MCCOY, 0x21, 0), &Room::tug0UseMTricorderOnControls },
+ { Action(ACTION_USE, OBJECT_IMTRICOR, 0x21, 0), &Room::tug0UseMTricorderOnControls },
+ { Action(ACTION_USE, OBJECT_ISTRICOR, 0x21, 0), &Room::tug0UseSTricorderOnControls },
+ { Action(ACTION_USE, OBJECT_IMTRICOR, 8, 0), &Room::tug0UseMTricorderOnEngineer },
+ { Action(ACTION_FINISHED_WALKING, 24, 0, 0), &Room::tug0MccoyReachedEngineerToScan },
+ { Action(ACTION_FINISHED_ANIMATION, 25, 0, 0), &Room::tug0MccoyFinishedScanningEngineer },
+ { Action(ACTION_USE, OBJECT_SPOCK, 8, 0), &Room::tug0UseSTricorderOnEngineer },
+ { Action(ACTION_USE, OBJECT_ISTRICOR, 8, 0), &Room::tug0UseSTricorderOnEngineer },
+ { Action(ACTION_WALK, 0x23, 0, 0), &Room::tug0WalkToDoor },
+ { Action(ACTION_LOOK, OBJECT_KIRK, 0, 0), &Room::tug0LookAtKirk },
+ { Action(ACTION_LOOK, OBJECT_SPOCK, 0, 0), &Room::tug0LookAtSpock },
+ { Action(ACTION_LOOK, OBJECT_MCCOY, 0, 0), &Room::tug0LookAtMccoy },
+ { Action(ACTION_LOOK, OBJECT_REDSHIRT, 0, 0), &Room::tug0LookAtRedshirt },
+ { Action(ACTION_LOOK, 0x22, 0, 0), &Room::tug0LookAtTransporter },
+ { Action(ACTION_LOOK, 0x23, 0, 0), &Room::tug0LookAtDoor },
+ { Action(ACTION_TALK, OBJECT_KIRK, 0, 0), &Room::tug0TalkToKirk },
+ { Action(ACTION_TALK, OBJECT_MCCOY, 0, 0), &Room::tug0TalkToMccoy },
+ { Action(ACTION_TALK, OBJECT_SPOCK, 0, 0), &Room::tug0TalkToSpock },
+ { Action(ACTION_TALK, OBJECT_REDSHIRT, 0, 0), &Room::tug0TalkToRedshirt },
+ { Action(ACTION_TALK, 8, 0, 0), &Room::tug0TalkToEngineer },
+ { Action(ACTION_USE, OBJECT_ICOMM, 0, 0), &Room::tug0UseCommunicator },
+ { Action(ACTION_LOOK, -1, 0, 0), &Room::tug0LookAnywhere },
+ { Action(ACTION_USE, OBJECT_ISTRICOR, -1, 0), &Room::tug0UseSTricorderAnywhere },
+ { Action(ACTION_USE, OBJECT_IMTRICOR, -1, 0), &Room::tug0UseMTricorderAnywhere },
+};
+
}
#endif
diff --git a/engines/startrek/rooms/tug0.cpp b/engines/startrek/rooms/tug0.cpp
new file mode 100644
index 0000000000..016bbbbef2
--- /dev/null
+++ b/engines/startrek/rooms/tug0.cpp
@@ -0,0 +1,455 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "startrek/room.h"
+
+namespace StarTrek {
+
+void Room::tug0Tick1() {
+ playVoc("TUG0LOOP");
+ playMidiMusicTracks(0, -1);
+
+ _vm->_awayMission.tug.field2b = 0x23;
+ if (_vm->_awayMission.tug.transporterRepaired)
+ loadActorAnim2(11, "t0con2", 0x105, 0xc2, 0);
+
+ if (!_vm->_awayMission.tug.engineerConscious)
+ loadActorAnim2(8, "tcdown", 0x27, 0xa8, 0);
+ else {
+ loadActorAnim2(8, "tcupd", 0x27, 0xa8, 0);
+
+ if (_vm->_awayMission.tug.gotTransmogrifier)
+ loadActorAnim2(9, "pempty", 0x27, 0xa9, 0);
+ else {
+ loadActorAnim2(9, "popend", 0x27, 0xa9, 0);
+ playVoc("MUR4E6S");
+ }
+ }
+}
+
+void Room::tug0LookAtEngineer() {
+ if (_vm->_awayMission.tug.engineerConscious)
+ showText(TX_TUG0N002);
+ else
+ showText(TX_TUG0N014);
+}
+
+void Room::tug0GetEngineer() {
+ showText(TX_SPEAKER_MCCOY, TX_TUG0_019);
+}
+
+void Room::tug0LookAtControls() {
+ if (_vm->_awayMission.tug.transporterRepaired)
+ showText(TX_TUG0N012);
+ else
+ showText(TX_TUG0N001);
+}
+
+void Room::tug0UseSpockOnControls() {
+ _vm->_awayMission.disableInput = true;
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_E;
+ walkCrewman(OBJECT_SPOCK, 0xdb, 0xc5, 16);
+}
+
+void Room::tug0SpockReachedControlsToExamine() {
+ loadActorAnim2(OBJECT_SPOCK, "sscane", -1, -1, 17);
+ playSoundEffectIndex(SND_TRICORDER);
+}
+
+void Room::tug0SpockExaminedControls() {
+ showText(TX_SPEAKER_SPOCK, TX_TUG0_040);
+ showText(TX_SPEAKER_KIRK, TX_TUG0_005);
+ showText(TX_SPEAKER_SPOCK, TX_TUG0_043);
+ showText(TX_SPEAKER_KIRK, TX_TUG0_013);
+ showText(TX_SPEAKER_SPOCK, TX_TUG0_038);
+ showText(TX_SPEAKER_KIRK, TX_TUG0_008);
+ _vm->_awayMission.tug.spockExaminedTransporter = true;
+ _vm->_awayMission.disableInput = false;
+}
+
+void Room::tug0UseTransmogrifierWithoutBitOnControls() {
+ showText(TX_SPEAKER_SPOCK, TX_TUG0_014);
+}
+
+void Room::tug0UseTransmogrifierWithBitOnControls() {
+ _vm->_awayMission.disableInput = true;
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_E;
+ walkCrewman(OBJECT_SPOCK, 0xdb, 0xc5, 6);
+}
+
+void Room::tug0SpockReachedControlsWithTransmogrifier() {
+ showText(TX_SPEAKER_SPOCK, TX_TUG0_029);
+ loadActorAnim2(OBJECT_SPOCK, "susehn", -1, -1, 7);
+ playSoundEffectIndex(SND_BLANK_0b); // FIXME: blank sound?
+}
+
+void Room::tug0SpockFinishedUsingTransmogrifier() {
+ loseItem(OBJECT_IRTWB);
+ _vm->_awayMission.tug.usedTransmogrifierOnTransporter = true;
+ _vm->_awayMission.disableInput = false;
+ _vm->_awayMission.tug.missionScore++;
+}
+
+void Room::tug0TransporterScreenFullyLit() {
+ loadActorAnim2(11, "t0con2", 0x105, 0xc2, 0);
+}
+
+void Room::tug0UseWireScrapsOnControls() {
+ if (_vm->_awayMission.tug.usedTransmogrifierOnTransporter)
+ showText(TX_SPEAKER_SPOCK, TX_TUG0_034);
+}
+
+void Room::tug0UseWireOnControls() {
+ if (_vm->_awayMission.tug.usedTransmogrifierOnTransporter) {
+ _vm->_awayMission.disableInput = true;
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_E;
+ walkCrewman(OBJECT_SPOCK, 0xdb, 0xc5, 8);
+ }
+}
+
+void Room::tug0SpockReachedControlsWithWire() {
+ loadActorAnim2(OBJECT_SPOCK, "susehn", -1, -1, 9);
+}
+
+void Room::tug0SpockFinishedUsingWire() {
+ _vm->_awayMission.disableInput = false;
+ loseItem(OBJECT_IWIRING);
+ _vm->_awayMission.tug.missionScore++;
+ loadActorAnim2(11, "t0con1", 0x105, 0xc2, 22);
+
+ showText(TX_SPEAKER_SPOCK, TX_TUG0_039);
+
+ _vm->_awayMission.tug.transporterRepaired = true;
+
+ showText(TX_SPEAKER_KIRK, TX_TUG0_010);
+ showText(TX_SPEAKER_MCCOY, TX_TUG0_022);
+ showText(TX_SPEAKER_KIRK, TX_TUG0_002);
+ showText(TX_SPEAKER_CHRISTENSEN, TX_TUG0L009);
+ showText(TX_SPEAKER_CHRISTENSEN, TX_TUG0L008);
+
+ if (_vm->_awayMission.tug.haveBomb) {
+ showText(TX_SPEAKER_CHRISTENSEN, TX_TUG0L010);
+ showText(TX_SPEAKER_MCCOY, TX_TUG0_021);
+ showText(TX_SPEAKER_SPOCK, TX_TUG0_041);
+ }
+}
+
+void Room::tug0UseMedkitOnEngineer() {
+ if (_vm->_awayMission.tug.engineerConscious)
+ return;
+ _vm->_awayMission.disableInput = true;
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_MCCOY] = DIR_N;
+ walkCrewman(OBJECT_MCCOY, 0x2d, 0xaf, 2);
+}
+
+void Room::tug0MccoyReachedEngineer() {
+ loadActorAnim2(OBJECT_MCCOY, "museln", -1, -1, 13);
+}
+
+void Room::tug0MccoyHealedEngineer() {
+ loadActorAnim2(8, "tcup", 0x27, 0xa8, 1);
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_MCCOY] = DIR_E;
+ walkCrewman(OBJECT_MCCOY, 0x41, 0xaf, 0);
+ _vm->_awayMission.disableInput = false;
+ _vm->_awayMission.tug.missionScore++;
+}
+
+void Room::tug0EngineerGotUp() {
+ showText(TX_SPEAKER_SIMPSON, TX_TUG0_F31);
+ _vm->_awayMission.tug.engineerConscious = true;
+ loadActorAnim2(8, "tcshow", 0x27, 0xa8, 0);
+ loadActorAnim2(9, "popen", 0x27, 0xa9, 0);
+ playVoc("MUR4E6S");
+}
+
+void Room::tug0GetTransmogrifier() {
+ if (_vm->_awayMission.tug.gotTransmogrifier)
+ return;
+ _vm->_awayMission.disableInput = true;
+ walkCrewman(OBJECT_KIRK, 0x1e, 0xb1, 3);
+}
+
+void Room::tug0KirkReachedToolbox() {
+ loadActorAnim2(OBJECT_KIRK, "kuselw", -1, -1, 4);
+}
+
+void Room::tug0KirkGotTransmogrifier() {
+ _vm->_awayMission.tug.gotTransmogrifier = true;
+ giveItem(OBJECT_IRT);
+ loadActorAnim2(9, "pempty", 0x27, 0xa9, 0);
+ loadActorStandAnim(OBJECT_KIRK);
+ _vm->_awayMission.disableInput = false;
+ _vm->_awayMission.tug.missionScore++;
+}
+
+void Room::tug0LookAtToolbox() {
+ if (_vm->_awayMission.tug.gotTransmogrifier)
+ showText(TX_TUG0N008);
+ else
+ showText(TX_TUG0N000);
+}
+
+void Room::tug0UsePhaserOnWelder() {
+ loseItem(OBJECT_IPWE);
+ giveItem(OBJECT_IPWF);
+ showText(TX_TUG0N006);
+}
+
+void Room::tug0UseWelderOnWireScraps() {
+ showText(TX_TUG0N010);
+ loseItem(OBJECT_IWIRSCRP);
+}
+
+void Room::tug0UseWelderOnMetalScraps() {
+ showText(TX_SPEAKER_SPOCK, TX_TUG0_032);
+ loseItem(OBJECT_IJNKMETL);
+ giveItem(OBJECT_ICOMBBIT);
+}
+
+void Room::tug0UseCombBitOnTransmogrifier() {
+ showText(TX_SPEAKER_SPOCK, TX_TUG0_035);
+ loseItem(OBJECT_ICOMBBIT);
+ loseItem(OBJECT_IRT);
+ giveItem(OBJECT_IRTWB);
+}
+
+void Room::tug0UseTransporter() {
+ if (!_vm->_awayMission.tug.transporterRepaired)
+ return;
+ _vm->_awayMission.disableInput = true;
+
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_KIRK] = DIR_S;
+ walkCrewman(OBJECT_KIRK, 0x62, 0x7f, 0);
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_W;
+ walkCrewman(OBJECT_SPOCK, 0x11e, 0xc7, 14);
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_MCCOY] = DIR_S;
+ walkCrewman(OBJECT_MCCOY, 0x7b, 0x7a, 0);
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_REDSHIRT] = DIR_S;
+ walkCrewman(OBJECT_REDSHIRT, 0x4a, 0x7b, 0);
+}
+
+void Room::tug0SpockReachedControlsToTransport() {
+ loadActorAnim2(OBJECT_SPOCK, "susehw", -1, -1, 18);
+ playSoundEffectIndex(SND_07);
+ playSoundEffectIndex(SND_TRANSENE);
+}
+
+void Room::tug0SpockPreparedTransporter() {
+ showText(TX_SPEAKER_KIRK, TX_TUG0_001);
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_S;
+ walkCrewman(OBJECT_SPOCK, 0x9a, 0x7e, 20);
+}
+
+void Room::tug0SpockReachedTransporter() {
+ playSoundEffectIndex(SND_TRANSDEM);
+ loadActorAnim2(OBJECT_KIRK, "kteled", -1, -1, 21);
+ loadActorAnim2(OBJECT_SPOCK, "steled", -1, -1, 0);
+ loadActorAnim2(OBJECT_MCCOY, "mteled", -1, -1, 0);
+ loadActorAnim2(OBJECT_REDSHIRT, "rteled", -1, -1, 0);
+}
+
+void Room::tug0FinishedTransporting() {
+ _vm->_awayMission.tug.missionScore += 3;
+ _vm->_awayMission.disableInput = true;
+ loadRoomIndex(3, 4);
+}
+
+void Room::tug0UseBombOnTransporter() {
+ _vm->_awayMission.disableInput = true;
+
+ walkCrewman(OBJECT_KIRK, 0x62, 0x7f, 5);
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_MCCOY] = DIR_N;
+ walkCrewman(OBJECT_MCCOY, 0x46, 0xbe, 0);
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_REDSHIRT] = DIR_N;
+ walkCrewman(OBJECT_REDSHIRT, 0x78, 0xbe, 0);
+}
+
+void Room::tug0KirkReachedTransporter() {
+ loadActorAnim2(OBJECT_KIRK, "kpickw", -1, -1, 10);
+}
+
+void Room::tug0KirkPlacedBomb() {
+ loseItem(OBJECT_IBOMB);
+ loadActorAnim2(10, "bomb1", 0x5a, 0x7f, 0);
+
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_KIRK] = DIR_N;
+ walkCrewman(OBJECT_KIRK, 0xc8, 0xbe, 11);
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_W;
+ walkCrewman(OBJECT_SPOCK, 0x11e, 0xc7, 15);
+}
+
+void Room::tug0SpockReachedControlsForBomb() {
+ loadActorAnim2(OBJECT_SPOCK, "susehw", -1, -1, 19);
+ playSoundEffectIndex(SND_07);
+ playSoundEffectIndex(SND_TRANSENE);
+}
+
+void Room::tug0SpockBeginsBeamingBomb() {
+ playSoundEffectIndex(SND_TRANSDEM);
+ loadActorAnim2(10, "bomb2", 0x5a, 0x7f, 12);
+}
+
+void Room::tug0SpockFinishesBeamingBomb() {
+ playSoundEffectIndex(SND_BLANK_14);
+ _vm->_awayMission.tug.missionScore = 0;
+ _vm->_awayMission.timers[0] = 64;
+}
+
+void Room::tug0BombExploded() {
+ playMidiMusicTracks(2, -1);
+ showText(TX_SPEAKER_MCCOY, TX_TUG0_023);
+ showText(TX_SPEAKER_SPOCK, TX_TUG0_037);
+ showText(TX_SPEAKER_MCCOY, TX_TUG0_027);
+ showText(TX_SPEAKER_KIRK, TX_TUG0_004);
+ showText(TX_SPEAKER_SCOTT, TX_TUG0_S11);
+ showText(TX_SPEAKER_KIRK, TX_TUG0_003);
+ showText(TX_SPEAKER_SCOTT, TX_TUG0_S06);
+
+ _vm->_awayMission.tug.field2d = 1;
+ _vm->_awayMission.disableInput = true;
+ if (_vm->_awayMission.tug.missionScore < 0)
+ _vm->_awayMission.tug.missionScore = 0;
+ endMission(_vm->_awayMission.tug.missionScore, _vm->_awayMission.tug.field2b, _vm->_awayMission.tug.field2d);
+}
+
+void Room::tug0UseMTricorderOnControls() {
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_MCCOY] = DIR_S;
+ loadActorAnim2(OBJECT_MCCOY, "mscans", -1, -1, 0);
+ playSoundEffectIndex(SND_TRICORDER);
+ showText(TX_SPEAKER_MCCOY, TX_TUG0_016);
+}
+
+void Room::tug0UseSTricorderOnControls() {
+ loadActorAnim2(OBJECT_SPOCK, "sscans", -1, -1, 23);
+ playSoundEffectIndex(SND_TRICORDER);
+ showText(TX_SPEAKER_SPOCK, TX_TUG0_015);
+}
+
+void Room::tug0UseMTricorderOnEngineer() {
+ _vm->_awayMission.disableInput = true;
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_MCCOY] = DIR_N;
+ walkCrewman(OBJECT_MCCOY, 0x2d, 0xaf, 24);
+}
+
+void Room::tug0MccoyReachedEngineerToScan() {
+ playSoundEffectIndex(SND_TRICORDER);
+ loadActorAnim2(OBJECT_MCCOY, "mscann", -1, -1, 25);
+}
+
+void Room::tug0MccoyFinishedScanningEngineer() {
+ if (_vm->_awayMission.tug.engineerConscious)
+ showText(TX_SPEAKER_MCCOY, TX_TUG0_017);
+ else
+ showText(TX_SPEAKER_MCCOY, TX_TUG0_018);
+
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_MCCOY] = DIR_W;
+ walkCrewman(OBJECT_MCCOY, 0x41, 0xaf, 26);
+ _vm->_awayMission.disableInput = false;
+}
+
+void Room::tug0UseSTricorderOnEngineer() {
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_S;
+ loadActorAnim2(OBJECT_SPOCK, "sscans", -1, -1, 0);
+ playSoundEffectIndex(SND_TRICORDER);
+ showText(TX_SPEAKER_SPOCK, TX_TUG0_030);
+}
+
+void Room::tug0WalkToDoor() {
+ walkCrewman(OBJECT_KIRK, 0x138, 0xaa, 0);
+}
+
+void Room::tug0LookAtKirk() {
+ showText(TX_TUG0N003);
+}
+
+void Room::tug0LookAtSpock() {
+ showText(TX_TUG0N007);
+}
+
+void Room::tug0LookAtMccoy() {
+ showText(TX_TUG0N005);
+}
+
+void Room::tug0LookAtRedshirt() {
+ showText(TX_TUG0N004);
+}
+
+void Room::tug0LookAtTransporter() {
+ showText(TX_TUG0N013);
+}
+
+void Room::tug0LookAtDoor() {
+ showText(TX_TUG0N011);
+}
+
+void Room::tug0TalkToKirk() {
+ showText(TX_SPEAKER_KIRK, TX_TUG0_006);
+ showText(TX_SPEAKER_SPOCK, TX_TUG0_036);
+ showText(TX_SPEAKER_KIRK, TX_TUG0_011);
+}
+
+void Room::tug0TalkToMccoy() {
+ showText(TX_SPEAKER_MCCOY, TX_TUG0_025);
+ showText(TX_SPEAKER_KIRK, TX_TUG0_007);
+ showText(TX_SPEAKER_MCCOY, TX_TUG0_024);
+}
+
+void Room::tug0TalkToSpock() {
+ showText(TX_SPEAKER_SPOCK, TX_TUG0_042);
+ showText(TX_SPEAKER_KIRK, TX_TUG0_009);
+}
+
+void Room::tug0TalkToRedshirt() {
+ showText(TX_SPEAKER_CHRISTENSEN, TX_TUG0L006);
+}
+
+void Room::tug0TalkToEngineer() {
+ if (_vm->_awayMission.tug.engineerConscious) {
+ showText(TX_SPEAKER_SIMPSON, TX_TUG0_F30);
+ showText(TX_SPEAKER_MCCOY, TX_TUG0_026);
+ showText(TX_SPEAKER_KIRK, TX_TUG0_012);
+ }
+}
+
+void Room::tug0UseCommunicator() {
+ showText(TX_SPEAKER_SPOCK, TX_TUG0_031);
+}
+
+void Room::tug0LookAnywhere() {
+ showText(TX_TUG0N009);
+}
+
+void Room::tug0UseSTricorderAnywhere() {
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_S;
+ loadActorAnim2(OBJECT_SPOCK, "sscans", -1, -1, 0);
+ playSoundEffectIndex(SND_TRICORDER);
+ showText(TX_SPEAKER_SPOCK, TX_TUG0_028);
+}
+
+void Room::tug0UseMTricorderAnywhere() {
+ _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_MCCOY] = DIR_S;
+ loadActorAnim2(OBJECT_MCCOY, "mscans", -1, -1, 0);
+ playSoundEffectIndex(SND_TRICORDER);
+ showText(TX_SPEAKER_MCCOY, TX_TUG0_020); // BUG: typo
+}
+
+}
diff --git a/engines/startrek/sound.h b/engines/startrek/sound.h
index 3885d8102a..6e4dfcd485 100644
--- a/engines/startrek/sound.h
+++ b/engines/startrek/sound.h
@@ -38,6 +38,27 @@ namespace StarTrek {
class StarTrekEngine;
+// Sound effects for "playSoundEffectIndex" function
+enum SoundEffects {
+ SND_TRICORDER = 4,
+ SND_DOOR1 = 5,
+ SND_PHASSHOT = 6,
+ SND_07 = 7,
+ SND_TRANSDEM = 8,
+ SND_TRANSMAT = 9,
+ SND_TRANSENE = 0x0a,
+ SND_BLANK_0b = 0x0b,
+ SND_SELECTION = 0x10,
+ SND_BLANK_14 = 0x14,
+ SND_HAILING = 0x22,
+ SND_PHASSHOT_2 = 0x24,
+ SND_PHOTSHOT = 0x25,
+ SND_HITSHIEL = 0x26,
+ SND_27 = 0x27,
+ SND_REDALERT = 0x28,
+ SND_WARP = 0x29
+};
+
// Max # of VOC files that can play at once
const int MAX_SFX_PLAYING = 4;
diff --git a/engines/startrek/startrek.cpp b/engines/startrek/startrek.cpp
index f3f14bd2bf..7e9f9bb42d 100644
--- a/engines/startrek/startrek.cpp
+++ b/engines/startrek/startrek.cpp
@@ -80,7 +80,7 @@ StarTrekEngine::StarTrekEngine(OSystem *syst, const StarTrekGameDescription *gam
_textboxVar6 = 0;
_textboxHasMultipleChoices = false;
- _missionToLoad = "DEMON";
+ _missionToLoad = "TUG";
_roomIndexToLoad = 0;
for (int i = 0; i < NUM_OBJECTS; i++)
diff --git a/engines/startrek/text.h b/engines/startrek/text.h
index 7a8a80f3d9..dba4babb7d 100644
--- a/engines/startrek/text.h
+++ b/engines/startrek/text.h
@@ -34,6 +34,7 @@ enum GameStringIDs {
TX_SPEAKER_SPOCK,
TX_SPEAKER_MCCOY,
TX_SPEAKER_UHURA,
+ TX_SPEAKER_SCOTT,
TX_SPEAKER_EVERTS,
TX_SPEAKER_ANGIVEN,
@@ -46,6 +47,9 @@ enum GameStringIDs {
TX_SPEAKER_GRISNASH,
TX_SPEAKER_NAUIAN,
+ TX_SPEAKER_CHRISTENSEN,
+ TX_SPEAKER_SIMPSON,
+
TX_DEM0_001,
TX_DEM0_002,
TX_DEM0_003,
@@ -461,6 +465,74 @@ enum GameStringIDs {
TX_DEM6N024,
+ TX_TUG0_001,
+ TX_TUG0_002,
+ TX_TUG0_003,
+ TX_TUG0_004,
+ TX_TUG0_005,
+ TX_TUG0_006,
+ TX_TUG0_007,
+ TX_TUG0_008,
+ TX_TUG0_009,
+ TX_TUG0_010,
+ TX_TUG0_011,
+ TX_TUG0_012,
+ TX_TUG0_013,
+ TX_TUG0_014,
+ TX_TUG0_015,
+ TX_TUG0_016,
+ TX_TUG0_017,
+ TX_TUG0_018,
+ TX_TUG0_019,
+ TX_TUG0_020,
+ TX_TUG0_021,
+ TX_TUG0_022,
+ TX_TUG0_023,
+ TX_TUG0_024,
+ TX_TUG0_025,
+ TX_TUG0_026,
+ TX_TUG0_027,
+ TX_TUG0_028,
+ TX_TUG0_029,
+ TX_TUG0_030,
+ TX_TUG0_031,
+ TX_TUG0_032,
+ TX_TUG0_033,
+ TX_TUG0_034,
+ TX_TUG0_035,
+ TX_TUG0_036,
+ TX_TUG0_037,
+ TX_TUG0_038,
+ TX_TUG0_039,
+ TX_TUG0_040,
+ TX_TUG0_041,
+ TX_TUG0_042,
+ TX_TUG0_043,
+ TX_TUG0_F30,
+ TX_TUG0_F31,
+ TX_TUG0_S06,
+ TX_TUG0_S11,
+ TX_TUG0L006,
+ TX_TUG0L008,
+ TX_TUG0L009,
+ TX_TUG0L010,
+ TX_TUG0N000,
+ TX_TUG0N001,
+ TX_TUG0N002,
+ TX_TUG0N003,
+ TX_TUG0N004,
+ TX_TUG0N005,
+ TX_TUG0N006,
+ TX_TUG0N007,
+ TX_TUG0N008,
+ TX_TUG0N009,
+ TX_TUG0N010,
+ TX_TUG0N011,
+ TX_TUG0N012,
+ TX_TUG0N013,
+ TX_TUG0N014,
+
+
TX_END
};
@@ -473,6 +545,7 @@ const char * const g_gameStrings[] = {
"Mr. Spock",
"Dr. McCoy",
"Lt. Uhura",
+ "Mr. Scott",
"Ensign Everts",
"Prel. Angiven",
@@ -485,6 +558,9 @@ const char * const g_gameStrings[] = {
"Brother Grisnash",
"Nauian",
+ "Lt. Christensen",
+ "Crewman Simpson",
+
"#DEM0\\DEM0_001#Doctor, you need to investigate the possibility of disease, mental or physical, among these people, before we go chasing up the mountains. Prelate Angiven, may we see those who have encountered the demons?",
"#DEM0\\DEM0_002#Aside from seeing demons, has any hard data been collected? Any evidence I could see?",
"#DEM0\\DEM0_003#Been seeing ghosts and bogeymen eh? I find that a little hard to believe.",
@@ -898,6 +974,74 @@ const char * const g_gameStrings[] = {
"#DEM6\\DEM6N022#The glass case is locked.",
"#DEM6\\DEM6N023#The machine synthesizes a quantity of Hypo-Dytoxin.",
"#DEM6\\DEM6N024#This appears to be a study and lab. The equipment looks very ancient.",
+
+
+ "#TUG0\\TUG0_001#I'm going to have a word for you, Spock, if we appear inside the door!",
+ "#TUG0\\TUG0_002#Analysis, Lt. Christensen",
+ "#TUG0\\TUG0_003#Beam us out of here.",
+ "#TUG0\\TUG0_004#Bones, later. Kirk to Enterprise.",
+ "#TUG0\\TUG0_005#Can they be repaired, Spock?",
+ "#TUG0\\TUG0_006#Get what you can from this area -- let's get moving.",
+ "#TUG0\\TUG0_007#I can't see them winning any popularity contests, Bones.",
+ "#TUG0\\TUG0_008#I've always been a gambler, Spock. Figure out what you'll need.",
+ "#TUG0\\TUG0_009#Let's not look too far ahead, Mr. Spock.",
+ "#TUG0\\TUG0_010#Mr. Spock, you're a genius!",
+ "#TUG0\\TUG0_011#Okay, but let's not stay too long in one place.",
+ "#TUG0\\TUG0_012#Provided the Elasi don't have anything to say about it.",
+ "#TUG0\\TUG0_013#Spock, we don't have two days. If we can repair the transporter, we might be able to transport onto the bridge and capture the Elasi.",
+ "#TUG0\\TUG0_014#Captain, I need to find a bit that will fit into the transmogrifier before I can go further with this.",
+ "#TUG0\\TUG0_015#Even our most efficient Chief Engineer Scott would have trouble repairing this damage in less than two days.",
+ "#TUG0\\TUG0_016#Damn it, Jim. I'm a doctor, not a rocket scientist.",
+ "#TUG0\\TUG0_017#He will be all right, but we shouldn't move him.",
+ "#TUG0\\TUG0_018#He's not hurt badly. I can revive him.",
+ "#TUG0\\TUG0_019#I don't think he should be moved, Jim.",
+ "#TUG0\\TUG0_020#Well, at least I'm not picking up residue of any biologicalweapons. The Elasi used some restraint if you can call it that.",
+ "#TUG0\\TUG0_021#And any hostages on the bridge will be killed when the bomb goes off! No, Jim, that's inhuman!",
+ "#TUG0\\TUG0_022#I wouldn't go that far, Jim. But I do have to congratulate you, Mr. Spock. Now we can really risk shooting our atoms around the universe. Is this really necessary, Jim?",
+ "#TUG0\\TUG0_023#My God Jim, what have you done! You killed them all. You probably blew up the whole damn bridge.",
+ "#TUG0\\TUG0_024#They can forget about my vote.",
+ "#TUG0\\TUG0_025#Well Jim, there's one thing I can tell you -- I don't like Elasi.",
+ "#TUG0\\TUG0_026#Well, with any luck, you won't have to worry about that for quite some time.",
+ "#TUG0\\TUG0_027#You cold blooded emotionless...",
+ "#TUG0\\TUG0_028#I am registering energy residue from phaser fire and phaser grenade detonations. There are readings of another energy weapon, but the type is unknown.",
+ "#TUG0\\TUG0_029#I attach these here... Now all I need is a spare length of wiring.",
+ "#TUG0\\TUG0_030#I believe this would be in Dr. McCoy's field of expertise.",
+ "#TUG0\\TUG0_031#I strongly recommend that we keep our silence, Captain. The Elasi are quite capable of tracing any communication from within this vessel.",
+ "#TUG0\\TUG0_032#I think that does it -- a Comb Bit for the transmogrifier. Now I can continue repairs on the transporter controls. ",
+ "#TUG0\\TUG0_033#I'll be able to use this later, so I want to keep it -- but I need to get some equipment in here first.",
+ "#TUG0\\TUG0_034#The bits are not long enough, I need a longer piece of wire.",
+ "#TUG0\\TUG0_035#The parts fit together satisfactorily.",
+ "#TUG0\\TUG0_036#Captain, a thorough analysis is required.",
+ "#TUG0\\TUG0_037#Captain, the ship will crash into the planet in 18.32 seconds, I would recommend, leaving the ship immediately.",
+ "#TUG0\\TUG0_038#I can attempt to jury-rig repairs if I can find parts. However, there is only a 67.357 percent probability of success.",
+ "#TUG0\\TUG0_039#The controls are set for just inside the bridge door Captain.",
+ "#TUG0\\TUG0_040#The controls have been virtually destroyed, Captain.",
+ "#TUG0\\TUG0_041#To say nothing of the possible damage to the bridge controls.",
+ "#TUG0\\TUG0_042#When this operation is complete, Captain, we should have Mr. Scott or Transporter Chief Kyle come here to assist with the repairs.",
+ "#TUG0\\TUG0_043#With chief Engineer Scott's assistance, I believe we could get them in perfect working order in two days.",
+ "#TUG0\\TUG0_F30#I suppose I should be grateful to see anyone after that. I thought I was dead.",
+ "#TUG0\\TUG0_F31#Thank you, Doctor. Be careful, Captain, the Elasi like to set boobytraps. if you need any equipment I've got my tools in this workspace.",
+ "#TUG0\\TUG0_S06#Aye Captain.",
+ "#TUG0\\TUG0_S11#Captain, you're alive!",
+ "#TUG0\\TUG0L006#This is just like their raid on Damocles Station, hard, fast, and dirty.",
+ "#TUG0\\TUG0L008#If we could get past the forcefield on the door of the bridge, we should be able to surprise them for sure.",
+ "#TUG0\\TUG0L009#Security analysis, sir: if we transport onto the bridge, we'll have the drop on them -- assuming Mr. Spock has the transporter working porperly.",
+ "#TUG0\\TUG0L010#Since we have a bomb, Captain, we could rearm it, transport it onto the bridge, and perhaps the Elasi will flee into the hallway. Then we could capture them.",
+ "#TUG0\\TUG0N000#A Runcinate Transmogrifier: An engineering tool used in the maintainance of transporters, which can be fitted with bits having a variety of irregularly serrated surfaces.",
+ "#TUG0\\TUG0N001#A small bomb appears to have damaged the transporter controls.",
+ "#TUG0\\TUG0N002#Crewman Simpson.",
+ "#TUG0\\TUG0N003#James T. Kirk cautiously watches the area.",
+ "#TUG0\\TUG0N004#Lieutenant Christensen stands ready.",
+ "#TUG0\\TUG0N005#McCoy wonders how many patients he'll have on this mission.",
+ "#TUG0\\TUG0N006#Phaser Welder is now charged.",
+ "#TUG0\\TUG0N007#Spock quietly analyzes the damaged areas of this transporter room.",
+ "#TUG0\\TUG0N008#The cabinet is empty.",
+ "#TUG0\\TUG0N009#The transporter bay has been damaged in a recent fire fight.",
+ "#TUG0\\TUG0N010#The wire scraps are too small, they melt instead of fusing together, and you're left with nothing. ",
+ "#TUG0\\TUG0N011#These doors have been scarred by phaser fire. There was a battle here.",
+ "#TUG0\\TUG0N012#These transporter controls are now operational. They are set for just inside the bridge door.",
+ "#TUG0\\TUG0N013#This is the main transporter pad of the Masada.",
+ "#TUG0\\TUG0N014#This man was obviously the transporter engineer. He is unconscious, but alive.",
};
}