diff options
author | Matthew Stewart | 2018-06-09 21:08:25 -0400 |
---|---|---|
committer | Eugene Sandulenko | 2018-08-09 08:37:30 +0200 |
commit | 0c28fd964e5aab156539d6ff64b82aa06cb22aef (patch) | |
tree | f76bdb8771a61299f629bb06aa5d1f4d96fcc579 /engines/startrek | |
parent | ad76c744afc777c2e602fb2f3646ef7b93925db2 (diff) | |
download | scummvm-rg350-0c28fd964e5aab156539d6ff64b82aa06cb22aef.tar.gz scummvm-rg350-0c28fd964e5aab156539d6ff64b82aa06cb22aef.tar.bz2 scummvm-rg350-0c28fd964e5aab156539d6ff64b82aa06cb22aef.zip |
STARTREK: TUG1
Diffstat (limited to 'engines/startrek')
-rw-r--r-- | engines/startrek/awaymission.h | 2 | ||||
-rw-r--r-- | engines/startrek/module.mk | 1 | ||||
-rw-r--r-- | engines/startrek/room.cpp | 4 | ||||
-rw-r--r-- | engines/startrek/room.h | 48 | ||||
-rw-r--r-- | engines/startrek/rooms/function_map.h | 67 | ||||
-rw-r--r-- | engines/startrek/rooms/tug0.cpp | 4 | ||||
-rw-r--r-- | engines/startrek/rooms/tug1.cpp | 311 | ||||
-rw-r--r-- | engines/startrek/text.h | 72 |
8 files changed, 507 insertions, 2 deletions
diff --git a/engines/startrek/awaymission.h b/engines/startrek/awaymission.h index bf97739f3a..d91ad46c77 100644 --- a/engines/startrek/awaymission.h +++ b/engines/startrek/awaymission.h @@ -101,10 +101,12 @@ struct AwayMission { int16 field2b; // 0x2b int16 field2d; // 0x2d; bool engineerConscious; // 0x30 + bool gotJunkPile; // 0x3f bool gotTransmogrifier; // 0x43 bool transporterRepaired; // 0x44 bool spockExaminedTransporter; // 0x45 bool usedTransmogrifierOnTransporter; // 0x46 + bool forceFieldDown; // 0x47 bool haveBomb; // 0x49 } tug; }; diff --git a/engines/startrek/module.mk b/engines/startrek/module.mk index 36aff9e691..fd3f80a747 100644 --- a/engines/startrek/module.mk +++ b/engines/startrek/module.mk @@ -27,6 +27,7 @@ MODULE_OBJS = \ rooms/demon5.o \ rooms/demon6.o \ rooms/tug0.o \ + rooms/tug1.o \ diff --git a/engines/startrek/room.cpp b/engines/startrek/room.cpp index b66764f6cd..4f960fb2cb 100644 --- a/engines/startrek/room.cpp +++ b/engines/startrek/room.cpp @@ -69,6 +69,10 @@ Room::Room(StarTrekEngine *vm, const Common::String &name) : _vm(vm) { _roomActionList = tug0ActionList; _numRoomActions = sizeof(tug0ActionList) / sizeof(RoomAction); } + else if (name == "TUG1") { + _roomActionList = tug1ActionList; + _numRoomActions = sizeof(tug1ActionList) / 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 84b1b69e13..943ed901eb 100644 --- a/engines/startrek/room.h +++ b/engines/startrek/room.h @@ -535,6 +535,54 @@ public: void tug0UseSTricorderAnywhere(); void tug0UseMTricorderAnywhere(); + // TUG1 + void tug1Tick1(); + void tug1UseSTricorderOnAnything(); + void tug1LookAtBridgeDoor(); + void tug1UseSTricorderOnBridgeDoor(); + void tug1UsePhaserOnBridgeDoor(); + void tug1KirkReachedFiringPosition(); + void tug1KirkPulledOutPhaser(); + void tug1KirkFinishedFiringPhaser(); + void tug1TalkToSpock(); + void tug1UseSTricorderOnJunkPile(); + void tug1LookAtJunkPile(); + void tug1GetJunkPile(); + void tug1KirkReachedJunkPile(); + void tug1KirkFinishedTakingJunkPile(); + void tug1UsePhaserOnWelder(); + void tug1UseWelderOnWireScraps(); + void tug1UseWelderOnMetalScraps(); + void tug1UseCombBitOnTransmogrifier(); + void tug1UsePhaserWelderOnBridgeDoor(); + void tug1UsePhaserWelderOnBridgeDoorInLeftSpot(); + void tug1KirkReachedBridgeDoorWithWelder(); + void tug1KirkFinishedUsingWelder(); + void tug1KirkReachedBridgeDoorWithWelderInLeftSpot(); + void tug1KirkFinishedUsingWelderInLeftSpot(); + void tug1LookAnywhere(); + void tug1LookAtMccoy(); + void tug1LookAtSpock(); + void tug1LookAtRedshirt(); + void tug1TalkToMccoy(); + void tug1TalkToRedshirt(); + void tug1LookAtTerminal(); + void tug1LookAtDebris(); + void tug1LookAtBrigDoor(); + void tug1UseSTricorderOnBrigDoor(); + void tug1TalkToKirk(); + void tug1UseCommunicator(); + void tug1WalkToBridgeDoor(); + void tug1KirkReachedBridgeDoor(); + void tug1BridgeDoorOpened(); + void tug1WalkToBrigDoor(); + void tug1UseMTricorderAnywhere(); + void tug1UseMTricorderOnBridgeDoor(); + void tug1UseMTricorderOnBrigDoor(); + void tug1UseSpockOnBridgeDoor(); + void tug1UseRedshirtOnBridgeDoor(); + void tug1UseMedkitOnBridgeDoor(); + 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 1b52b0537f..7ea01393c8 100644 --- a/engines/startrek/rooms/function_map.h +++ b/engines/startrek/rooms/function_map.h @@ -544,8 +544,8 @@ RoomAction tug0ActionList[] = { { 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_IPWF, OBJECT_IWIRSCRP, 0), &Room::tug0UseWelderOnWireScraps }, + { Action(ACTION_USE, OBJECT_IPWF, OBJECT_IJNKMETL, 0), &Room::tug0UseWelderOnMetalScraps }, { Action(ACTION_USE, OBJECT_ICOMBBIT, OBJECT_IRT, 0), &Room::tug0UseCombBitOnTransmogrifier }, { Action(ACTION_USE, OBJECT_SPOCK, 11, 0), &Room::tug0UseTransporter }, @@ -589,6 +589,69 @@ RoomAction tug0ActionList[] = { { Action(ACTION_USE, OBJECT_IMTRICOR, -1, 0), &Room::tug0UseMTricorderAnywhere }, }; + +// TUG1 +RoomAction tug1ActionList[] = { + { Action(ACTION_TICK, 1, 0, 0), &Room::tug1Tick1 }, + { Action(ACTION_USE, OBJECT_ISTRICOR, -1, 0), &Room::tug1UseSTricorderOnAnything }, + { Action(ACTION_LOOK, 0x21, 0, 0), &Room::tug1LookAtBridgeDoor }, + { Action(ACTION_USE, OBJECT_ISTRICOR, 0x21, 0), &Room::tug1UseSTricorderOnBridgeDoor }, + { Action(ACTION_USE, OBJECT_IPHASERS, 0x21, 0), &Room::tug1UsePhaserOnBridgeDoor }, + { Action(ACTION_USE, OBJECT_IPHASERK, 0x21, 0), &Room::tug1UsePhaserOnBridgeDoor }, + { Action(ACTION_FINISHED_WALKING, 3, 0, 0), &Room::tug1KirkReachedFiringPosition }, + { Action(ACTION_FINISHED_ANIMATION, 4, 0, 0), &Room::tug1KirkPulledOutPhaser }, + { Action(ACTION_FINISHED_ANIMATION, 5, 0, 0), &Room::tug1KirkFinishedFiringPhaser }, + { Action(ACTION_TALK, OBJECT_SPOCK, 0, 0), &Room::tug1TalkToSpock }, + { Action(ACTION_USE, OBJECT_ISTRICOR, 8, 0), &Room::tug1UseSTricorderOnJunkPile }, + { Action(ACTION_LOOK, 8, 0, 0), &Room::tug1LookAtJunkPile }, + { Action(ACTION_GET, 8, 0, 0), &Room::tug1GetJunkPile }, + { Action(ACTION_FINISHED_WALKING, 1, 0, 0), &Room::tug1KirkReachedJunkPile }, + { Action(ACTION_FINISHED_ANIMATION, 2, 0, 0), &Room::tug1KirkFinishedTakingJunkPile }, + { Action(ACTION_USE, OBJECT_IPHASERS, OBJECT_IPWE, 0), &Room::tug1UsePhaserOnWelder }, + { Action(ACTION_USE, OBJECT_IPHASERK, OBJECT_IPWE, 0), &Room::tug1UsePhaserOnWelder }, + { Action(ACTION_USE, OBJECT_IPWF, OBJECT_IWIRSCRP, 0), &Room::tug1UseWelderOnWireScraps }, + { Action(ACTION_USE, OBJECT_IPWF, OBJECT_IJNKMETL, 0), &Room::tug1UseWelderOnMetalScraps }, + { Action(ACTION_USE, OBJECT_ICOMBBIT, OBJECT_IRT, 0), &Room::tug1UseCombBitOnTransmogrifier }, + { Action(ACTION_USE, OBJECT_IPWF, 0x22, 0), &Room::tug1UsePhaserWelderOnBridgeDoor }, + { Action(ACTION_USE, OBJECT_IPWF, 0x21, 0), &Room::tug1UsePhaserWelderOnBridgeDoor }, + { Action(ACTION_USE, OBJECT_IPWF, 0x20, 0), &Room::tug1UsePhaserWelderOnBridgeDoorInLeftSpot }, + { Action(ACTION_FINISHED_WALKING, 6, 0, 0), &Room::tug1KirkReachedBridgeDoorWithWelder }, + { Action(ACTION_FINISHED_ANIMATION, 7, 0, 0), &Room::tug1KirkFinishedUsingWelder }, + { Action(ACTION_FINISHED_WALKING, 8, 0, 0), &Room::tug1KirkReachedBridgeDoorWithWelderInLeftSpot }, + { Action(ACTION_FINISHED_ANIMATION, 9, 0, 0), &Room::tug1KirkFinishedUsingWelderInLeftSpot }, + { Action(ACTION_LOOK, -1, 0, 0), &Room::tug1LookAnywhere }, + { Action(ACTION_LOOK, OBJECT_MCCOY, 0, 0), &Room::tug1LookAtMccoy }, + { Action(ACTION_LOOK, OBJECT_SPOCK, 0, 0), &Room::tug1LookAtSpock }, + { Action(ACTION_LOOK, OBJECT_REDSHIRT, 0, 0), &Room::tug1LookAtRedshirt }, + { Action(ACTION_TALK, OBJECT_MCCOY, 0, 0), &Room::tug1TalkToMccoy }, + { Action(ACTION_TALK, OBJECT_REDSHIRT, 0, 0), &Room::tug1TalkToRedshirt }, + { Action(ACTION_LOOK, 0x23, 0, 0), &Room::tug1LookAtTerminal }, + { Action(ACTION_LOOK, 0x24, 0, 0), &Room::tug1LookAtDebris }, + { Action(ACTION_LOOK, 0x25, 0, 0), &Room::tug1LookAtBrigDoor }, + { Action(ACTION_USE, OBJECT_ISTRICOR, 0x25, 0), &Room::tug1UseSTricorderOnBrigDoor }, + { Action(ACTION_TALK, OBJECT_KIRK, 0, 0), &Room::tug1TalkToKirk }, + { Action(ACTION_USE, OBJECT_ICOMM, -1, 0), &Room::tug1UseCommunicator }, + { Action(ACTION_WALK, 0x21, 0, 0), &Room::tug1WalkToBridgeDoor }, + { Action(ACTION_FINISHED_WALKING, 10, 0, 0), &Room::tug1KirkReachedBridgeDoor }, + { Action(ACTION_FINISHED_ANIMATION, 11, 0, 0), &Room::tug1BridgeDoorOpened }, + { Action(ACTION_WALK, 0x25, 0, 0), &Room::tug1WalkToBrigDoor }, + { Action(ACTION_USE, OBJECT_IMTRICOR, -1, 0), &Room::tug1UseMTricorderAnywhere }, + { Action(ACTION_USE, OBJECT_IMTRICOR, 0x21, 0), &Room::tug1UseMTricorderOnBridgeDoor }, + { Action(ACTION_USE, OBJECT_IMTRICOR, 0x20, 0), &Room::tug1UseMTricorderOnBridgeDoor }, + { Action(ACTION_USE, OBJECT_IMTRICOR, 0x22, 0), &Room::tug1UseMTricorderOnBridgeDoor }, + { Action(ACTION_USE, OBJECT_IMTRICOR, 0x25, 0), &Room::tug1UseMTricorderOnBrigDoor }, + { Action(ACTION_USE, OBJECT_SPOCK, 0x20, 0), &Room::tug1UseSpockOnBridgeDoor }, + { Action(ACTION_USE, OBJECT_SPOCK, 0x21, 0), &Room::tug1UseSpockOnBridgeDoor }, + { Action(ACTION_USE, OBJECT_SPOCK, 0x22, 0), &Room::tug1UseSpockOnBridgeDoor }, + { Action(ACTION_USE, OBJECT_REDSHIRT, 0x20, 0), &Room::tug1UseRedshirtOnBridgeDoor }, + { Action(ACTION_USE, OBJECT_REDSHIRT, 0x21, 0), &Room::tug1UseRedshirtOnBridgeDoor }, + { Action(ACTION_USE, OBJECT_REDSHIRT, 0x22, 0), &Room::tug1UseRedshirtOnBridgeDoor }, + { Action(ACTION_USE, OBJECT_IMEDKIT, 0x20, 0), &Room::tug1UseMedkitOnBridgeDoor }, + { Action(ACTION_USE, OBJECT_IMEDKIT, 0x21, 0), &Room::tug1UseMedkitOnBridgeDoor }, + { Action(ACTION_USE, OBJECT_IMEDKIT, 0x22, 0), &Room::tug1UseMedkitOnBridgeDoor }, + +}; + } #endif diff --git a/engines/startrek/rooms/tug0.cpp b/engines/startrek/rooms/tug0.cpp index 016bbbbef2..e90544d57e 100644 --- a/engines/startrek/rooms/tug0.cpp +++ b/engines/startrek/rooms/tug0.cpp @@ -212,6 +212,10 @@ void Room::tug0UsePhaserOnWelder() { loseItem(OBJECT_IPWE); giveItem(OBJECT_IPWF); showText(TX_TUG0N006); + + // BUGFIX: this following line didn't exist, despite it existing in TUG1; meaning this + // was supposed to give points, but it only did in a specific room. + _vm->_awayMission.tug.missionScore += 3; } void Room::tug0UseWelderOnWireScraps() { diff --git a/engines/startrek/rooms/tug1.cpp b/engines/startrek/rooms/tug1.cpp new file mode 100644 index 0000000000..467d496646 --- /dev/null +++ b/engines/startrek/rooms/tug1.cpp @@ -0,0 +1,311 @@ +/* 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 { + +#define OBJECT_JUNKPILE 8 +#define OBJECT_PHASERSHOT 9 + +#define HOTSPOT_BRIDGEDOOR 0x21 +#define HOTSPOT_BRIDGEARCH 0x22 +#define HOTSPOT_TERMINAL 0x23 +#define HOTSPOT_DEBRIS 0x24 +#define HOTSPOT_BRIGDOOR 0x25 + +void Room::tug1Tick1() { + playVoc("TUG1LOOP"); + + if (!_vm->_awayMission.tug.gotJunkPile) + loadActorAnim2(OBJECT_JUNKPILE, "jnkpil", 0xfd, 0xa0, 0); +} + +void Room::tug1UseSTricorderOnAnything() { + _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_N; + loadActorAnim2(OBJECT_SPOCK, "sscann", -1, -1, 0); + playSoundEffectIndex(SND_TRICORDER); + showText(TX_SPEAKER_SPOCK, TX_TUG1_014); + + // NOTE: this action has a second implementation (which is never called). It displayed + // TX_TUG1_006. Was this meant to be displayed after the force field is down? +} + +void Room::tug1LookAtBridgeDoor() { + if (_vm->_awayMission.tug.forceFieldDown) + return; + showText(TX_TUG1N005); +} + +void Room::tug1UseSTricorderOnBridgeDoor() { + if (_vm->_awayMission.tug.forceFieldDown) + return; + + _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_N; + loadActorAnim2(OBJECT_SPOCK, "sscann", -1, -1, 0); + playSoundEffectIndex(SND_TRICORDER); + showText(TX_SPEAKER_SPOCK, TX_TUG1_002); +} + +void Room::tug1UsePhaserOnBridgeDoor() { + if (_vm->_awayMission.tug.forceFieldDown) + showText(TX_TUG1N007); + else { + _vm->_awayMission.disableInput = true; + _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_KIRK] = DIR_N; + walkCrewman(OBJECT_KIRK, 0xbe, 0x78, 3); + } +} + +void Room::tug1KirkReachedFiringPosition() { + loadActorAnim2(OBJECT_KIRK, "kfiren", -1, -1, 4); +} + +void Room::tug1KirkPulledOutPhaser() { + loadActorAnim2(OBJECT_PHASERSHOT, "t1phas", 0, 0, 5); + playSoundEffectIndex(SND_PHASSHOT); +} + +void Room::tug1KirkFinishedFiringPhaser() { + _vm->_awayMission.disableInput = false; + loadActorStandAnim(OBJECT_KIRK); + loadActorStandAnim(OBJECT_PHASERSHOT); +} + +void Room::tug1TalkToSpock() { + if (!_vm->_awayMission.tug.forceFieldDown) + showText(TX_SPEAKER_SPOCK, TX_TUG1_010); +} + +void Room::tug1UseSTricorderOnJunkPile() { + _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_N; + loadActorAnim2(OBJECT_SPOCK, "sscann", -1, -1, 0); + playSoundEffectIndex(SND_TRICORDER); + showText(TX_SPEAKER_SPOCK, TX_TUG1_009); +} + +void Room::tug1LookAtJunkPile() { + showText(TX_TUG1N000); +} + +void Room::tug1GetJunkPile() { + walkCrewman(OBJECT_KIRK, 0xe1, 0xaa, 1); +} + +void Room::tug1KirkReachedJunkPile() { + loadActorAnim2(OBJECT_KIRK, "kpicke", 0xe1, 0xaa, 2); +} + +void Room::tug1KirkFinishedTakingJunkPile() { + _vm->_awayMission.tug.gotJunkPile = true; + giveItem(OBJECT_IDEADPH); + giveItem(OBJECT_IPWE); + _vm->_awayMission.tug.missionScore++; + giveItem(OBJECT_IWIRSCRP); + giveItem(OBJECT_IJNKMETL); + + loadActorStandAnim(OBJECT_JUNKPILE); + loadActorStandAnim(OBJECT_KIRK); +} + +void Room::tug1UsePhaserOnWelder() { + loseItem(OBJECT_IPWE); + giveItem(OBJECT_IPWF); + showText(TX_TUG1N004); + + _vm->_awayMission.tug.missionScore += 3; +} + +void Room::tug1UseWelderOnWireScraps() { + showText(TX_TUG1N009); + loseItem(OBJECT_IWIRSCRP); +} + +void Room::tug1UseWelderOnMetalScraps() { + showText(TX_SPEAKER_SPOCK, TX_TUG1_012); + loseItem(OBJECT_IJNKMETL); + giveItem(OBJECT_ICOMBBIT); +} + +void Room::tug1UseCombBitOnTransmogrifier() { + showText(TX_SPEAKER_SPOCK, TX_TUG1_017); + loseItem(OBJECT_ICOMBBIT); + loseItem(OBJECT_IRT); + giveItem(OBJECT_IRTWB); +} + +void Room::tug1UsePhaserWelderOnBridgeDoor() { + if (_vm->_awayMission.tug.forceFieldDown) + showText(TX_TUG1N008); + else { + _vm->_awayMission.disableInput = true; + _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_KIRK] = DIR_N; + walkCrewman(OBJECT_KIRK, 0xc2, 0x6a, 6); + } +} + +void Room::tug1UsePhaserWelderOnBridgeDoorInLeftSpot() { + if (_vm->_awayMission.tug.forceFieldDown) + showText(TX_TUG1N007); + else { + _vm->_awayMission.disableInput = true; + _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_KIRK] = DIR_N; + walkCrewman(OBJECT_KIRK, 0xb1, 0x6a, 8); + } +} + +void Room::tug1KirkReachedBridgeDoorWithWelder() { + playVoc("MUR4E9S"); + loadActorAnim2(OBJECT_KIRK, "kusemn", -1, -1, 0); + loadActorAnim2(OBJECT_PHASERSHOT, "t1weld", 0, 0, 7); +} + +void Room::tug1KirkFinishedUsingWelder() { + loadActorStandAnim(OBJECT_PHASERSHOT); + showText(TX_SPEAKER_SPOCK, TX_TUG1_016); + _vm->_awayMission.disableInput = false; +} + +void Room::tug1KirkReachedBridgeDoorWithWelderInLeftSpot() { + playVoc("MUR4E9S"); + loadActorAnim2(OBJECT_KIRK, "kuseln", -1, -1, 0); + loadActorAnim2(OBJECT_PHASERSHOT, "t1weld", 0, 0, 9); +} + +void Room::tug1KirkFinishedUsingWelderInLeftSpot() { + loadActorStandAnim(OBJECT_PHASERSHOT); + showText(TX_SPEAKER_SPOCK, TX_TUG1_015); + _vm->_awayMission.tug.forceFieldDown = true; + _vm->_awayMission.disableInput = false; + _vm->_awayMission.tug.missionScore++; +} + +void Room::tug1LookAnywhere() { + showText(TX_TUG1N013); +} + +void Room::tug1LookAtMccoy() { + showText(TX_TUG1N003); +} + +void Room::tug1LookAtSpock() { + showText(TX_TUG1N006); +} + +void Room::tug1LookAtRedshirt() { + showText(TX_TUG1N002); +} + +void Room::tug1TalkToMccoy() { + showText(TX_SPEAKER_MCCOY, TX_SIN3_012); // NOTE: uses "SIN3" text? +} + +void Room::tug1TalkToRedshirt() { + showText(TX_SPEAKER_CHRISTENSEN, TX_TUG1L005); +} + +void Room::tug1LookAtTerminal() { + showText(TX_TUG1N010); +} + +void Room::tug1LookAtDebris() { + showText(TX_TUG1N011); +} + +void Room::tug1LookAtBrigDoor() { + showText(TX_TUG1N001); +} + +void Room::tug1UseSTricorderOnBrigDoor() { + _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_N; + loadActorAnim2(OBJECT_SPOCK, "sscann", -1, -1, 0); + playSoundEffectIndex(SND_TRICORDER); + showText(TX_SPEAKER_SPOCK, TX_TUG1_018); +} + +void Room::tug1TalkToKirk() { + showText(TX_SPEAKER_KIRK, TX_TUG1_001); + showText(TX_SPEAKER_MCCOY, TX_TUG1_008); +} + +// FIXME: not working +void Room::tug1UseCommunicator() { + showText(TX_SPEAKER_SPOCK, TX_TUG1_011); +} + +void Room::tug1WalkToBridgeDoor() { + if (!_vm->_awayMission.tug.forceFieldDown) + return; + _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_KIRK] = DIR_N; + walkCrewman(OBJECT_KIRK, 0xc2, 0x6e, 10); +} + +void Room::tug1KirkReachedBridgeDoor() { + _vm->_awayMission.disableInput = true; + loadActorAnim2(OBJECT_PHASERSHOT, "h1do", 0, 0, 11); +} + +void Room::tug1BridgeDoorOpened() { + walkCrewman(OBJECT_KIRK, 0xc2, 0x63, 0); +} + +void Room::tug1WalkToBrigDoor() { + walkCrewman(OBJECT_KIRK, 0xe9, 0x81, 0); +} + +void Room::tug1UseMTricorderAnywhere() { + _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_MCCOY] = DIR_N; + loadActorAnim2(OBJECT_MCCOY, "mscann", -1, -1, 0); + playSoundEffectIndex(SND_TRICORDER); + showText(TX_SPEAKER_MCCOY, TX_TUG1_003); +} + +void Room::tug1UseMTricorderOnBridgeDoor() { + _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_MCCOY] = DIR_N; + loadActorAnim2(OBJECT_MCCOY, "mscann", -1, -1, 0); + playSoundEffectIndex(SND_TRICORDER); + showText(TX_SPEAKER_MCCOY, TX_TUG1_007); +} + +void Room::tug1UseMTricorderOnBrigDoor() { + _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_MCCOY] = DIR_N; + loadActorAnim2(OBJECT_MCCOY, "mscann", -1, -1, 0); + playSoundEffectIndex(SND_TRICORDER); + showText(TX_SPEAKER_MCCOY, TX_TUG1_005); +} + +void Room::tug1UseSpockOnBridgeDoor() { + if (!_vm->_awayMission.tug.forceFieldDown) + showText(TX_SPEAKER_SPOCK, TX_TUG1_013); +} + +void Room::tug1UseRedshirtOnBridgeDoor() { + if (!_vm->_awayMission.tug.forceFieldDown) + showText(TX_SPEAKER_CHRISTENSEN, TX_TUG1L000); +} + +void Room::tug1UseMedkitOnBridgeDoor() { + if (!_vm->_awayMission.tug.forceFieldDown) + showText(TX_SPEAKER_MCCOY, TX_TUG1_004); +} + +} diff --git a/engines/startrek/text.h b/engines/startrek/text.h index dba4babb7d..2dc686a6dc 100644 --- a/engines/startrek/text.h +++ b/engines/startrek/text.h @@ -533,6 +533,42 @@ enum GameStringIDs { TX_TUG0N014, + TX_SIN3_012, + TX_TUG1_001, + TX_TUG1_002, + TX_TUG1_003, + TX_TUG1_004, + TX_TUG1_005, + TX_TUG1_006, + TX_TUG1_007, + TX_TUG1_008, + TX_TUG1_009, + TX_TUG1_010, + TX_TUG1_011, + TX_TUG1_012, + TX_TUG1_013, + TX_TUG1_014, + TX_TUG1_015, + TX_TUG1_016, + TX_TUG1_017, + TX_TUG1_018, + TX_TUG1L000, + TX_TUG1L005, + TX_TUG1N000, + TX_TUG1N001, + TX_TUG1N002, + TX_TUG1N003, + TX_TUG1N004, + TX_TUG1N005, + TX_TUG1N006, + TX_TUG1N007, + TX_TUG1N008, + TX_TUG1N009, + TX_TUG1N010, + TX_TUG1N011, + TX_TUG1N013, + + TX_END }; @@ -1042,6 +1078,42 @@ const char * const g_gameStrings[] = { "#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.", + + + "#SIN3\\SIN3_012#Can't say I like the decor.", // FIXME + "#TUG1\\TUG1_001#This is a mess now, isn't it?", + "#TUG1\\TUG1_002#A forcefield of unusual configurations has been erected in front of the doorway which leads into the bridge. I don't think it would be healthy to approach too closely, Captain.", + "#TUG1\\TUG1_003#I'm getting life readings both on the bridge and in the brig, Jim.", + "#TUG1\\TUG1_004#Jim, I can only perform medical miracles not engineering ones.", + "#TUG1\\TUG1_005#Jim, I'm picking up 11 life forms in the brig. That accounts for over half the crew. I don't like what that indicates.", + "#TUG1\\TUG1_006#Nothing unusual is detected.", + "#TUG1\\TUG1_007#The force field is interfering too much to get an accurate reading, Jim", + "#TUG1\\TUG1_008#My daddy would have sent me to bed without supper if I'd done something like this.", + "#TUG1\\TUG1_009#Five phasers without power packs, a drained phaser welder, insulation and bits of wire, and droplets of cooled molten metal.", + "#TUG1\\TUG1_010#I don't think we can bring down that forcefield, Captain. If we could, though, it might be less risky than trying to transport onto the bridge.", + "#TUG1\\TUG1_011#I strongly recommend that we keep our silence, Captain. The Elasi are quite capable of tracing any communication from within this vessel.", + "#TUG1\\TUG1_012#I think that does it -- a Comb Bit for the transmogrifier. Now I can continue repairs on the transporter controls. ", + "#TUG1\\TUG1_013#If we could find a point to interrupt the flow of power to the field we could gain access to the bridge, Captain.", + "#TUG1\\TUG1_014#Strong electromagnetic readings come from the doorway at the far end of the hallway.", + "#TUG1\\TUG1_015#That did it. The field is deactivated, Captain.", + "#TUG1\\TUG1_016#The field is absorbing the energy.", + "#TUG1\\TUG1_017#he parts fit together satisfactorily.", + "#TUG1\\TUG1_018#Tricorder readings indicate an indeterminate number of people in the brig. At least 2 are armed with phasers. I recommend caution when entering.", + "#TUG1\\TUG1L000#I doubt that our phasers could get through that, Captain.", + "#TUG1\\TUG1L005#This corridor provides access to the transporter room, Captain. It is secure.", + "#TUG1\\TUG1N000#A tangle of mangled equipment, reduced to junk. There are the remains of five phasers without power packs, a drained phaser welder, and scraps of wire and uncertain bits of metal junk.", + "#TUG1\\TUG1N001#According to the deckplans of this class of Starship, this is the entrance to the ship's brig.", + "#TUG1\\TUG1N002#Lt. Christensen is carefully watching the hallway", + "#TUG1\\TUG1N003#McCoy is fidgeting around.", + "#TUG1\\TUG1N004#Phaser Welder is now charged.", + "#TUG1\\TUG1N005#Some kind of forcefield appears to cover the door. ", + "#TUG1\\TUG1N006#Spock is analyzing the surroundings.", + "#TUG1\\TUG1N007#The field has already been deactivated.", + "#TUG1\\TUG1N008#The field has already been deactivated", + "#TUG1\\TUG1N009#The wire scraps are too small, they melt instead of fusing together, and you're left with nothing. ", + "#TUG1\\TUG1N010#This viewscreen/ communication terminal has been damaged beyond repair.", + "#TUG1\\TUG1N011#Twisted debris has been scattered along the side of the corridor.", + "#TUG1\\TUG1N013#You are in a typical starship corridor.", }; } |