From b2213cac9b2766b62e29368394837fbe261233d3 Mon Sep 17 00:00:00 2001 From: Matthew Stewart Date: Thu, 26 Jul 2018 20:06:18 -0400 Subject: STARTREK: SINS1 --- engines/startrek/awaymission.h | 10 +- engines/startrek/room.cpp | 5 + engines/startrek/room.h | 41 ++++++ engines/startrek/rooms/sins0.cpp | 4 +- engines/startrek/rooms/sins1.cpp | 302 ++++++++++++++++++++++++++++++++++++++- engines/startrek/text.h | 103 +++++++++++++ 6 files changed, 458 insertions(+), 7 deletions(-) (limited to 'engines') diff --git a/engines/startrek/awaymission.h b/engines/startrek/awaymission.h index 8f3e83b2e5..e1ecc1ff6e 100644 --- a/engines/startrek/awaymission.h +++ b/engines/startrek/awaymission.h @@ -520,12 +520,18 @@ struct AwayMission { } trial; struct { + byte field31; // 0x31 + byte field32; // 0x32 + bool field33; // 0x33 + bool doorLaserFiredOnce; // 0x34 byte field39; // 0x39 - bool field3d; // 0x3d + bool openedDoor; // 0x3d bool field3e; // 0x3e bool enteredRoom0FirstTime; // 0x42 - bool field43; // 0x43 + bool scottyInformedKirkAboutVirus; // 0x43 + bool field44; // 0x44 bool gotPointsForScanningStatue; // 0x48 + bool enteredRoom1FirstTime; // 0x50 int16 missionScore; // 0x52 } sins; }; diff --git a/engines/startrek/room.cpp b/engines/startrek/room.cpp index bc2015f5d1..b5149b5ecf 100644 --- a/engines/startrek/room.cpp +++ b/engines/startrek/room.cpp @@ -475,6 +475,11 @@ void Room::showGameOverMenu() { // TODO: takes an optional parameter? // TODO: finish. Shouldn't do this within a room due to deletion of current room? } +int Room::showKeypad(const Common::String &code) { + // TODO + return 3; +} + void Room::playVoc(Common::String filename) { _vm->_sound->playVoc(filename); } diff --git a/engines/startrek/room.h b/engines/startrek/room.h index bcccf8fccf..bb1c8f1d5c 100644 --- a/engines/startrek/room.h +++ b/engines/startrek/room.h @@ -235,6 +235,10 @@ private: * Cmd 0x12 */ void showGameOverMenu(); + /** + * Cmd 0x13: Keypad used in "Than Old Devil Moon" (SINS mission) + */ + int showKeypad(const Common::String &code); /** * Cmd 0x15 */ @@ -2176,6 +2180,43 @@ public: // SINS1 void sins1Tick1(); + void sins1LookAnywhere(); + void sins1LookAtLock(); + void sins1LookAtDoor(); + void sins1LookAtPanel(); + void sins1LookAtKeypad(); + void sins1UseSTricorderOnPanel(); + void sins1UseSTricorderOnKeypad(); + void sins1UseSTricorderOnLock(); + void sins1UseSTricorderOnDoor(); + void sins1UseSTricorderAnywhere(); + void sins1UseSTricorderOnLens(); + void sins1UseRockOnDoor(); + void sins1UseRedshirtOnKeypad(); + void sins1UseMccoyOnKeypad(); + void sins1UseKirkOnKeypad(); + void sins1UseSpockOnKeypad(); + void sins1SpockReachedKeypad(); + void sins1EnteredCorrectCode(); + void sins1DoorDoneOpening(); + void sins1EnteredIncorrectCode(); + void sins1EnteredSacredSofNumber(); + void sins1UsePhaserOnDoor(); + void sins1DoorUsedLaser(); + void sins1Tick40(); + void sins1TalkToKirk(); + void sins1TalkToSpock(); + void sins1TalkToMccoy(); + void sins1TalkToRedshirt(); + void sins1LookAtKirk(); + void sins1LookAtSpock(); + void sins1LookAtMccoy(); + void sins1LookAtRedshirt(); + void sins1LookAtLens(); + void sins1UseCommunicator(); + void sins1UseMedkitOnCrewman(); + void sins1UseMTricorderOnCrewman(); + void sins1WalkToDoor(); // SINS2 void sins2Tick1(); diff --git a/engines/startrek/rooms/sins0.cpp b/engines/startrek/rooms/sins0.cpp index bd93f25033..8dfabdc73e 100644 --- a/engines/startrek/rooms/sins0.cpp +++ b/engines/startrek/rooms/sins0.cpp @@ -86,7 +86,7 @@ void Room::sins0Tick1() { if (_vm->_awayMission.sins.field3e) loadActorAnim2(OBJECT_DOOR, "s0dr2", 0, 0); - if (_vm->_awayMission.sins.field3d) + if (_vm->_awayMission.sins.openedDoor) loadActorAnim2(OBJECT_DOOR, "s0dr1", 0, 0); playMidiMusicTracks(MIDITRACK_27, -3); @@ -231,7 +231,7 @@ void Room::sins0UseMTricorderOnCrewman() { } void Room::sins0UseCommunicator() { - if (!_vm->_awayMission.sins.field43) { + if (!_vm->_awayMission.sins.scottyInformedKirkAboutVirus) { showText(TX_SPEAKER_KIRK, TX_SIN0_004); showText(TX_SPEAKER_SCOTT, TX_SIN0_S01); showText(TX_SPEAKER_KIRK, TX_SIN0_002); diff --git a/engines/startrek/rooms/sins1.cpp b/engines/startrek/rooms/sins1.cpp index fc7827a142..8d94b4aea5 100644 --- a/engines/startrek/rooms/sins1.cpp +++ b/engines/startrek/rooms/sins1.cpp @@ -22,20 +22,316 @@ #include "startrek/room.h" -#define OBJECT_8 8 +#define OBJECT_DOOR 8 +#define OBJECT_9 9 -#define HOTSPOT_20 0x20 +#define HOTSPOT_DOOR 0x20 +#define HOTSPOT_KEYPAD 0x21 +#define HOTSPOT_PANEL 0x22 +#define HOTSPOT_LENS 0x23 +#define HOTSPOT_24 0x24 // Unused hotspot; just a sliver on the right side of the door? namespace StarTrek { extern const RoomAction sins1ActionList[] = { - { {ACTION_TICK, 1, 0, 0}, &Room::sins1Tick1 }, + { {ACTION_TICK, 1, 0, 0}, &Room::sins1Tick1 }, + { {ACTION_LOOK, 0xff, 0, 0}, &Room::sins1LookAnywhere }, + { {ACTION_LOOK, OBJECT_DOOR, 0, 0}, &Room::sins1LookAtLock }, + { {ACTION_LOOK, HOTSPOT_DOOR, 0, 0}, &Room::sins1LookAtDoor }, + { {ACTION_LOOK, HOTSPOT_PANEL, 0, 0}, &Room::sins1LookAtPanel }, + { {ACTION_LOOK, HOTSPOT_KEYPAD, 0, 0}, &Room::sins1LookAtKeypad }, + { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_PANEL, 0}, &Room::sins1UseSTricorderOnPanel }, + { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_KEYPAD, 0}, &Room::sins1UseSTricorderOnKeypad }, + { {ACTION_USE, OBJECT_ISTRICOR, OBJECT_DOOR, 0}, &Room::sins1UseSTricorderOnLock }, + { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_DOOR, 0}, &Room::sins1UseSTricorderOnDoor }, + { {ACTION_USE, OBJECT_ISTRICOR, 0xff, 0}, &Room::sins1UseSTricorderAnywhere }, + { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_LENS, 0}, &Room::sins1UseSTricorderOnLens }, + { {ACTION_USE, OBJECT_IS8ROCKS, HOTSPOT_DOOR, 0}, &Room::sins1UseRockOnDoor }, + + { {ACTION_USE, OBJECT_REDSHIRT, HOTSPOT_KEYPAD, 0}, &Room::sins1UseRedshirtOnKeypad }, + { {ACTION_USE, OBJECT_MCCOY, HOTSPOT_KEYPAD, 0}, &Room::sins1UseMccoyOnKeypad }, + { {ACTION_USE, OBJECT_KIRK, HOTSPOT_KEYPAD, 0}, &Room::sins1UseKirkOnKeypad }, + { {ACTION_USE, OBJECT_SPOCK, HOTSPOT_KEYPAD, 0}, &Room::sins1UseSpockOnKeypad }, + { {ACTION_DONE_WALK, 6, 0, 0}, &Room::sins1SpockReachedKeypad }, + { {ACTION_DONE_ANIM, 8, 0, 0}, &Room::sins1EnteredCorrectCode }, + { {ACTION_DONE_ANIM, 1, 0, 0}, &Room::sins1DoorDoneOpening }, + { {ACTION_DONE_ANIM, 7, 0, 0}, &Room::sins1EnteredIncorrectCode }, + { {ACTION_DONE_ANIM, 9, 0, 0}, &Room::sins1EnteredSacredSofNumber }, + { {ACTION_USE, OBJECT_IPHASERS, HOTSPOT_DOOR, 0}, &Room::sins1UsePhaserOnDoor }, + { {ACTION_USE, OBJECT_IPHASERK, HOTSPOT_DOOR, 0}, &Room::sins1UsePhaserOnDoor }, + { {ACTION_DONE_ANIM, 2, 0, 0}, &Room::sins1DoorUsedLaser }, + + { {ACTION_TICK, 40, 0, 0}, &Room::sins1Tick40 }, + { {ACTION_TALK, OBJECT_KIRK, 0, 0}, &Room::sins1TalkToKirk }, + { {ACTION_TALK, OBJECT_SPOCK, 0, 0}, &Room::sins1TalkToSpock }, + { {ACTION_TALK, OBJECT_MCCOY, 0, 0}, &Room::sins1TalkToMccoy }, + { {ACTION_TALK, OBJECT_REDSHIRT, 0, 0}, &Room::sins1TalkToRedshirt }, + { {ACTION_LOOK, OBJECT_KIRK, 0, 0}, &Room::sins1LookAtKirk }, + { {ACTION_LOOK, OBJECT_SPOCK, 0, 0}, &Room::sins1LookAtSpock }, + { {ACTION_LOOK, OBJECT_MCCOY, 0, 0}, &Room::sins1LookAtMccoy }, + { {ACTION_LOOK, OBJECT_REDSHIRT, 0, 0}, &Room::sins1LookAtRedshirt }, + { {ACTION_LOOK, HOTSPOT_LENS, 0, 0}, &Room::sins1LookAtLens }, + + { {ACTION_USE, OBJECT_ICOMM, 0xff, 0}, &Room::sins1UseCommunicator }, + { {ACTION_USE, OBJECT_IMEDKIT, OBJECT_KIRK, 0}, &Room::sins1UseMedkitOnCrewman }, + { {ACTION_USE, OBJECT_IMEDKIT, OBJECT_SPOCK, 0}, &Room::sins1UseMedkitOnCrewman }, + { {ACTION_USE, OBJECT_IMEDKIT, OBJECT_MCCOY, 0}, &Room::sins1UseMedkitOnCrewman }, + { {ACTION_USE, OBJECT_IMEDKIT, OBJECT_REDSHIRT, 0}, &Room::sins1UseMedkitOnCrewman }, + { {ACTION_USE, OBJECT_IMTRICOR, OBJECT_KIRK, 0}, &Room::sins1UseMTricorderOnCrewman }, + { {ACTION_USE, OBJECT_IMTRICOR, OBJECT_SPOCK, 0}, &Room::sins1UseMTricorderOnCrewman }, + { {ACTION_USE, OBJECT_IMTRICOR, OBJECT_MCCOY, 0}, &Room::sins1UseMTricorderOnCrewman }, + { {ACTION_USE, OBJECT_IMTRICOR, OBJECT_REDSHIRT, 0}, &Room::sins1UseMTricorderOnCrewman }, + + { {ACTION_WALK, HOTSPOT_DOOR, 0, 0}, &Room::sins1WalkToDoor }, + { {ACTION_WALK, OBJECT_DOOR, 0, 0}, &Room::sins1WalkToDoor }, }; extern const int sins1NumActions = sizeof(sins1ActionList) / sizeof(RoomAction); void Room::sins1Tick1() { + playVoc("SIN1LOOP"); + + if (!_vm->_awayMission.sins.scottyInformedKirkAboutVirus) + // BUGFIX: Set this to 2, not 1 (disable input even after walking animation is done) + _vm->_awayMission.disableInput = 2; + + if (_vm->_awayMission.sins.openedDoor) { + loadActorAnim2(OBJECT_DOOR, "s1dro", 0, 0); + loadMapFile("sins12"); + } else + loadMapFile("sins1"); + + if (_vm->_awayMission.sins.field3e) + loadActorAnim2(OBJECT_DOOR, "s1ndro", 0, 0); + + _vm->_awayMission.sins.field32 = 1; + _vm->_awayMission.sins.field31 = 1; + + playMidiMusicTracks(MIDITRACK_27, -3); + + if (!_vm->_awayMission.sins.enteredRoom1FirstTime) { + playMidiMusicTracks(MIDITRACK_1, -2); + _vm->_awayMission.sins.enteredRoom1FirstTime = true; + } +} + +void Room::sins1LookAnywhere() { + showText(TX_SIN1N001); +} + +void Room::sins1LookAtLock() { + showText(TX_SIN1N009); +} + +void Room::sins1LookAtDoor() { + // NOTE: This function had two implementations (one unused). + if (true) + showText(TX_SIN1N010); + else + showText(TX_SIN1N008); +} + +void Room::sins1LookAtPanel() { + showText(TX_SIN1N003); +} + +void Room::sins1LookAtKeypad() { + showText(TX_SIN1N011); +} + +void Room::sins1UseSTricorderOnPanel() { + spockScan(DIR_N, TX_SIN1_010); +} + +void Room::sins1UseSTricorderOnKeypad() { + spockScan(DIR_N, TX_SIN1_021); +} + +void Room::sins1UseSTricorderOnLock() { + spockScan(DIR_N, TX_SIN1_009); +} + +void Room::sins1UseSTricorderOnDoor() { + if (!_vm->_awayMission.sins.openedDoor) + spockScan(DIR_N, TX_SIN1_019); +} + +void Room::sins1UseSTricorderAnywhere() { + spockScan(DIR_S, TX_SIN1_024); +} + +void Room::sins1UseSTricorderOnLens() { + if (!_vm->_awayMission.sins.doorLaserFiredOnce) + spockScan(DIR_N, TX_SIN1_022); + else // BUGFIX: Original didn't do the tricorder animation, etc. in this case + spockScan(DIR_N, TX_SIN1_023); +} + +void Room::sins1UseRockOnDoor() { + showText(TX_SIN1N007); +} + +void Room::sins1UseRedshirtOnKeypad() { + if (!_vm->_awayMission.sins.openedDoor) + showText(TX_SPEAKER_MOSHER, TX_SIN1_028); +} + +void Room::sins1UseMccoyOnKeypad() { + if (!_vm->_awayMission.sins.openedDoor) + showText(TX_SPEAKER_MCCOY, TX_SIN1_012); +} + +void Room::sins1UseKirkOnKeypad() { + if (!_vm->_awayMission.sins.openedDoor) { + showText(TX_SPEAKER_KIRK, TX_SIN1_001); + sins1UseSpockOnKeypad(); + } +} + +void Room::sins1UseSpockOnKeypad() { + if (!_vm->_awayMission.sins.openedDoor) { + _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_N; + walkCrewmanC(OBJECT_SPOCK, 0xfd, 0xad, &Room::sins1SpockReachedKeypad); + } +} + +void Room::sins1SpockReachedKeypad() { + int ans = showKeypad("01210"); + + if (ans == 1 || ans == 2) { + playVoc("EFX14S"); + loadActorAnimC(OBJECT_SPOCK, "susehn", -1, -1, &Room::sins1EnteredSacredSofNumber); + } else if (ans == 3) { + playVoc("EFX14S"); + loadActorAnimC(OBJECT_SPOCK, "susehn", -1, -1, &Room::sins1EnteredCorrectCode); + } else { + playVoc("EFX14S"); + loadActorAnimC(OBJECT_SPOCK, "susehn", -1, -1, &Room::sins1EnteredIncorrectCode); + } +} + +void Room::sins1EnteredCorrectCode() { + _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_W; + walkCrewman(OBJECT_SPOCK, 0xf3, 0xad); + _vm->_awayMission.sins.openedDoor = true; + loadMapFile("sins12"); + loadActorAnimC(OBJECT_DOOR, "s1door", 0, 0, &Room::sins1DoorDoneOpening); + playVoc("HUGEDOO2"); +} + +void Room::sins1DoorDoneOpening() { + showText(TX_SPEAKER_SPOCK, TX_SIN1_011); +} + +void Room::sins1EnteredIncorrectCode() { + _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_W; + walkCrewman(OBJECT_SPOCK, 0xf3, 0xad); + showText(TX_SPEAKER_SPOCK, TX_SIN1_017); +} + +void Room::sins1EnteredSacredSofNumber() { + // Entered a sacred Sof number, which is wrong since this is a Lucr base + _vm->_awayMission.crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_W; + walkCrewman(OBJECT_SPOCK, 0xf3, 0xad); + loadActorAnimC(OBJECT_9, "s1ph1", 0, 0, &Room::sins1DoorUsedLaser); + playSoundEffectIndex(SND_PHASSHOT); +} + +void Room::sins1UsePhaserOnDoor() { + showText(TX_SPEAKER_SPOCK, TX_SIN1_016); +} + +void Room::sins1DoorUsedLaser() { + loadActorStandAnim(OBJECT_9); + showText(TX_SPEAKER_SPOCK, TX_SIN1_018); + + _vm->_awayMission.sins.field33 = true; + _vm->_awayMission.sins.doorLaserFiredOnce = true; +} + +void Room::sins1Tick40() { + if (!_vm->_awayMission.sins.scottyInformedKirkAboutVirus) { + showText(TX_SPEAKER_SCOTT, TX_SIN1_S10); + showText(TX_SPEAKER_KIRK, TX_SIN1_007); + showText(TX_SPEAKER_SCOTT, TX_SIN1_S18); + showText(TX_SPEAKER_KIRK, TX_SIN1_005); + showText(TX_SPEAKER_SCOTT, TX_SIN1_S85); + showText(TX_SPEAKER_KIRK, TX_SIN1_003); + showText(TX_SPEAKER_SCOTT, TX_SIN1_S17); + + _vm->_awayMission.sins.scottyInformedKirkAboutVirus = true; + _vm->_awayMission.disableInput = false; + } +} + +void Room::sins1TalkToKirk() { + showText(TX_SPEAKER_KIRK, TX_SIN1_006); + showText(TX_SPEAKER_SPOCK, TX_SIN1_027); +} + +void Room::sins1TalkToSpock() { + // NOTE: This function has two implementations. The first (used) one talks about where + // the energy source is coming from. The second (unused) one says to "carefully + // consider what we know about this culture". + if (true) + showText(TX_SPEAKER_SPOCK, TX_SIN1_020); + else + showText(TX_SPEAKER_SPOCK, TX_SIN1_025); +} + +void Room::sins1TalkToMccoy() { + showText(TX_SPEAKER_MCCOY, TX_SIN1_015); +} + +void Room::sins1TalkToRedshirt() { + showText(TX_SPEAKER_MOSHER, TX_SIN1_030); + showText(TX_SPEAKER_SPOCK, TX_SIN1_026); + showText(TX_SPEAKER_MOSHER, TX_SIN1_029); +} + +void Room::sins1LookAtKirk() { + showText(TX_SIN1N005); +} + +void Room::sins1LookAtSpock() { + showText(TX_SIN1N004); +} + +void Room::sins1LookAtMccoy() { + showText(TX_SIN1N006); +} + +void Room::sins1LookAtRedshirt() { + showText(TX_SIN1N002); +} + +void Room::sins1LookAtLens() { + showText(TX_SIN1N000); +} + +void Room::sins1UseCommunicator() { + if (!_vm->_awayMission.sins.field44) { + showText(TX_SPEAKER_KIRK, TX_SIN1_008); + showText(TX_SPEAKER_SCOTT, TX_SIN1_S51); + showText(TX_SPEAKER_KIRK, TX_SIN1_002); + showText(TX_SPEAKER_SCOTT, TX_SIN1_S20); + showText(TX_SPEAKER_KIRK, TX_SIN1_004); + } else + showText(TX_SPEAKER_UHURA, TX_SIN1U070); +} + +void Room::sins1UseMedkitOnCrewman() { + showText(TX_SPEAKER_MCCOY, TX_SIN1_014); +} + +void Room::sins1UseMTricorderOnCrewman() { + mccoyScan(DIR_S, TX_SIN1_013); +} + +void Room::sins1WalkToDoor() { + if (_vm->_awayMission.sins.openedDoor) + walkCrewman(OBJECT_KIRK, 0x98, 0x9e, 5); // NOTE: Callback 5 not defined } } diff --git a/engines/startrek/text.h b/engines/startrek/text.h index a7e398fee7..03073efdaf 100644 --- a/engines/startrek/text.h +++ b/engines/startrek/text.h @@ -2480,6 +2480,58 @@ enum GameStringIDs { TX_SIN0U082, + TX_SIN1_001, + TX_SIN1_002, + TX_SIN1_003, + TX_SIN1_004, + TX_SIN1_005, + TX_SIN1_006, + TX_SIN1_007, + TX_SIN1_008, + TX_SIN1_009, + TX_SIN1_010, + TX_SIN1_011, + TX_SIN1_012, + TX_SIN1_013, + TX_SIN1_014, + TX_SIN1_015, + TX_SIN1_016, + TX_SIN1_017, + TX_SIN1_018, + TX_SIN1_019, + TX_SIN1_020, + TX_SIN1_021, + TX_SIN1_022, + TX_SIN1_023, + TX_SIN1_024, + TX_SIN1_025, + TX_SIN1_026, + TX_SIN1_027, + TX_SIN1_028, + TX_SIN1_029, + TX_SIN1_030, + // UNUSED: 031 + TX_SIN1_S10, + TX_SIN1_S17, + TX_SIN1_S18, + TX_SIN1_S20, + TX_SIN1_S51, + TX_SIN1_S85, + TX_SIN1N000, + TX_SIN1N001, + TX_SIN1N002, + TX_SIN1N003, + TX_SIN1N004, + TX_SIN1N005, + TX_SIN1N006, + TX_SIN1N007, + TX_SIN1N008, + TX_SIN1N009, + TX_SIN1N010, + TX_SIN1N011, + TX_SIN1U070, + + TX_SIN3_012, @@ -4871,6 +4923,57 @@ const char *const g_gameStrings[] = { "#SIN0\\SIN0U082#Captain, Mr. Scott wishes to speak with you.", + "#SIN1\\SIN1_001#Spock, see what you can do with that lock.", + "#SIN1\\SIN1_002#Check her record, Mr. Scott. She was in the top ten percent of her class in computer systems analysis.", + "#SIN1\\SIN1_003#Isolate that virus. That's your number one priority.", + "#SIN1\\SIN1_004#Just do your best, Scotty. Kirk out.", + "#SIN1\\SIN1_005#There goes our back-up plan. Do what you can, Mr. Scott.", + "#SIN1\\SIN1_006#Well, we won't be able to phaser any outbound missiles.", + "#SIN1\\SIN1_007#What is it, Scotty?", + "#SIN1\\SIN1_008#Your situation, Mr. Scott?", + "#SIN1\\SIN1_009#A security lock, Captain.", + "#SIN1\\SIN1_010#A working display panel, Captain.", + "#SIN1\\SIN1_011#Ah, that worked. I see you deduced that 10200, in the Lucrs base three was equal to their sacred number 99.", + "#SIN1\\SIN1_012#Damn it, Jim. I'm a doctor, not a locksmith!", + "#SIN1\\SIN1_013#No appreciable cosmic radiation damage. Yet.", + "#SIN1\\SIN1_014#There's not much I can do for cosmic radiation. It's best if we find some cover indoors.", + "#SIN1\\SIN1_015#We should stay inside as much as possible. We must try to protect ourselves from the cosmic radiation.", + "#SIN1\\SIN1_016#It would be useless Captain. The door could easily withstand our phaser fire.", + "#SIN1\\SIN1_017#That did not seem to work, Captain. Perhaps we should try a number that had some significance to them. Remember they were very superstitious.", + "#SIN1\\SIN1_018#That prompted a response, Captain. 01210 is 100 in base four, a number the Sofs regarded as sacred.", + "#SIN1\\SIN1_019#The door still appears to be in operating condition.", + "#SIN1\\SIN1_020#The origin point for the broadcast Uhura monitored was approximately fifty meters beyond this door.", + "#SIN1\\SIN1_021#There is power running to the keypad.", + "#SIN1\\SIN1_022#This appears to be a dust-covered lens of some sort.", + "#SIN1\\SIN1_023#This is the focal lense for an anti-intruder laser.", + "#SIN1\\SIN1_024#Unremarkable.", + "#SIN1\\SIN1_025#We should carefully consider everything we know about this culture before taking action.", + "#SIN1\\SIN1_026#From what we know about the Lucrs, they had an affinity for size. Their machines weren't just equipment; they were also monuments.", + "#SIN1\\SIN1_027#It appears that our mission has increased in importance.", + "#SIN1\\SIN1_028#I'm just a security officer, Sir.", + "#SIN1\\SIN1_029#I can believe that.", + "#SIN1\\SIN1_030#This door is huge. If they were humanoid, they could have been giants...", + "#SIN1\\SIN1_S10#Captain, I'm afraid we've got a wee problem here.", + "#SIN1\\SIN1_S17#That it is, Captain. We'll keep you informed. Scott out.", + "#SIN1\\SIN1_S18#There is some sort of virus in the main computer. Our phasers and tractor beams have been disabled, and there's no way we're getting them back in three hours.", + "#SIN1\\SIN1_S20#We'll find that virus soon Captain, or I'm an Englishman.", + "#SIN1\\SIN1_S51#We're still looking for the virus, Captain. I even have Lieutenant Uhura looking through the computer system. I never realized the lass was so good with them.", + "#SIN1\\SIN1_S85#Aye, I will Captain. I may yet have a trick or two that I can pull, but don't count on any miracles.", + "#SIN1\\SIN1N000#A lens sits above the doorway, but is it mere decoration?", + "#SIN1\\SIN1N001#Built into the rock is a very large door.", + "#SIN1\\SIN1N002#Ensign Mosher is glad to be a member of this landing party, at least for now.", + "#SIN1\\SIN1N003#It looks like some sort of display panel.", + "#SIN1\\SIN1N004#It never ceases to amaze you how passive Spock can be, even in the presence of extraordinary wonders.", + "#SIN1\\SIN1N005#James T. Kirk, A man with a problem. A big problem that is getting bigger.", + "#SIN1\\SIN1N006#McCoy is examining himself for cosmic radiation sickness symptoms.", + "#SIN1\\SIN1N007#Meteorites have hit this door and left it undamaged. What are you going to do with a rock?", + "#SIN1\\SIN1N008#The doorway into the complex is huge.", + "#SIN1\\SIN1N009#This appears to be some sort of security lock.", + "#SIN1\\SIN1N010#This heavy-duty door has taken numerous micrometeorite strikes but still appears solid.", + "#SIN1\\SIN1N011#This is a keypad that looks functional.", + "#SIN1\\SIN1U070#Nothing new to report Captain.", + + "#SIN3\\SIN3_012#Can't say I like the decor.", -- cgit v1.2.3