diff options
author | Matthew Stewart | 2018-07-27 23:27:43 -0400 |
---|---|---|
committer | Eugene Sandulenko | 2018-08-09 08:37:30 +0200 |
commit | 93ca6a7b489fc1f382f963f09e291497b4aa8ece (patch) | |
tree | 3c487e62f7b948c207e24a17bbb68a44f564cded /engines/startrek | |
parent | bf1e125fa3af95027c9504dcc80bbb9e991bcefc (diff) | |
download | scummvm-rg350-93ca6a7b489fc1f382f963f09e291497b4aa8ece.tar.gz scummvm-rg350-93ca6a7b489fc1f382f963f09e291497b4aa8ece.tar.bz2 scummvm-rg350-93ca6a7b489fc1f382f963f09e291497b4aa8ece.zip |
STARTREK: SINS2
Diffstat (limited to 'engines/startrek')
-rw-r--r-- | engines/startrek/awaymission.h | 8 | ||||
-rw-r--r-- | engines/startrek/room.h | 38 | ||||
-rw-r--r-- | engines/startrek/rooms/sins0.cpp | 4 | ||||
-rw-r--r-- | engines/startrek/rooms/sins1.cpp | 20 | ||||
-rw-r--r-- | engines/startrek/rooms/sins2.cpp | 300 | ||||
-rw-r--r-- | engines/startrek/text.cpp | 66 | ||||
-rw-r--r-- | engines/startrek/text.h | 71 |
7 files changed, 489 insertions, 18 deletions
diff --git a/engines/startrek/awaymission.h b/engines/startrek/awaymission.h index ad3206f255..16473d9f8a 100644 --- a/engines/startrek/awaymission.h +++ b/engines/startrek/awaymission.h @@ -524,12 +524,14 @@ struct AwayMission { byte field32; // 0x32 bool field33; // 0x33 bool doorLaserFiredOnce; // 0x34 + bool gotPointsForAccessingTerminal; // 0x35 byte field39; // 0x39 - bool openedDoor; // 0x3d - bool field3e; // 0x3e + bool openedOuterDoor; // 0x3d + bool openedInnerDoor; // 0x3e bool enteredRoom0FirstTime; // 0x42 bool scottyInformedKirkAboutVirus; // 0x43 - bool field44; // 0x44 + bool enteredRoom2FirstTime; // 0x44 + bool field46; // 0x46 bool gotPointsForScanningStatue; // 0x48 bool enteredRoom1FirstTime; // 0x50 int16 missionScore; // 0x52 diff --git a/engines/startrek/room.h b/engines/startrek/room.h index 53c0b07f04..581f9aa361 100644 --- a/engines/startrek/room.h +++ b/engines/startrek/room.h @@ -2228,6 +2228,44 @@ public: // SINS2 void sins2Tick1(); + void sins2UsePhaserOnDoor(); + void sins2UseSTricorderAnywhere(); + void sins2UseKirkOnTerminal(); + void sins2UseSpockOnTerminal(); + void sins2SpockReachedTerminal(); + void sins2SpockUsedTerminal(); + void sins2UseMccoyOnTerminal(); + void sins2UseRedshirtOnTerminal(); + void sins2UseSTricorderOnTerminal(); + void sins2UseSTricorderOnKeypad(); + void sins2UseSTricorderOnDoor(); + void sins2UseKirkOnKeypad(); + void sins2UseSpockOnKeypad(); + void sins2SpockReachedKeypad(); + void sins2EnteredCorrectCode(); + void sins2EnteredIncorrectCode(); + void sins2DoorFinishedOpening(); + void sins2Tick40(); + void sins2LookAnywhere(); + void sins2LookAtOpenDoor(); + void sins2LookAtTerminal(); + void sins2LookAtKeypad(); + void sins2LookAtKirk(); + void sins2LookAtSpock(); + void sins2LookAtMccoy(); + void sins2LookAtRedshirt(); + void sins2TalkToKirk(); + void sins2TalkToSpock(); + void sins2TalkToMccoy(); + void sins2TalkToRedshirt(); + void sins2LookAtDoor(); + void sins2UseSpockOnDoor(); + void sins2UseCommunicator(); + void sins2UseMedkitOnCrewman(); + void sins2UseMTricorderOnCrewman(); + void sins2UseMccoyOnKeypad(); + void sins2UseRedshirtOnKeypad(); + void sins2WalkToDoor(); // SINS3 void sins3Tick1(); diff --git a/engines/startrek/rooms/sins0.cpp b/engines/startrek/rooms/sins0.cpp index 7fb4f08e32..04a931d562 100644 --- a/engines/startrek/rooms/sins0.cpp +++ b/engines/startrek/rooms/sins0.cpp @@ -84,9 +84,9 @@ void Room::sins0Tick1() { if (!_awayMission->sins.enteredRoom0FirstTime) _awayMission->disableInput = 2; - if (_awayMission->sins.field3e) + if (_awayMission->sins.openedInnerDoor) loadActorAnim2(OBJECT_DOOR, "s0dr2", 0, 0); - if (_awayMission->sins.openedDoor) + else if (_awayMission->sins.openedOuterDoor) loadActorAnim2(OBJECT_DOOR, "s0dr1", 0, 0); playMidiMusicTracks(MIDITRACK_27, -3); diff --git a/engines/startrek/rooms/sins1.cpp b/engines/startrek/rooms/sins1.cpp index 76a959f513..356a99c429 100644 --- a/engines/startrek/rooms/sins1.cpp +++ b/engines/startrek/rooms/sins1.cpp @@ -96,13 +96,13 @@ void Room::sins1Tick1() { // BUGFIX: Set this to 2, not 1 (disable input even after walking animation is done) _awayMission->disableInput = 2; - if (_awayMission->sins.openedDoor) { + if (_awayMission->sins.openedOuterDoor) { loadActorAnim2(OBJECT_DOOR, "s1dro", 0, 0); loadMapFile("sins12"); } else loadMapFile("sins1"); - if (_awayMission->sins.field3e) + if (_awayMission->sins.openedInnerDoor) loadActorAnim2(OBJECT_DOOR, "s1ndro", 0, 0); _awayMission->sins.field32 = 1; @@ -153,7 +153,7 @@ void Room::sins1UseSTricorderOnLock() { } void Room::sins1UseSTricorderOnDoor() { - if (!_awayMission->sins.openedDoor) + if (!_awayMission->sins.openedOuterDoor) spockScan(DIR_N, TX_SIN1_019); } @@ -173,24 +173,24 @@ void Room::sins1UseRockOnDoor() { } void Room::sins1UseRedshirtOnKeypad() { - if (!_awayMission->sins.openedDoor) + if (!_awayMission->sins.openedOuterDoor) showText(TX_SPEAKER_MOSHER, TX_SIN1_028); } void Room::sins1UseMccoyOnKeypad() { - if (!_awayMission->sins.openedDoor) + if (!_awayMission->sins.openedOuterDoor) showText(TX_SPEAKER_MCCOY, TX_SIN1_012); } void Room::sins1UseKirkOnKeypad() { - if (!_awayMission->sins.openedDoor) { + if (!_awayMission->sins.openedOuterDoor) { showText(TX_SPEAKER_KIRK, TX_SIN1_001); sins1UseSpockOnKeypad(); } } void Room::sins1UseSpockOnKeypad() { - if (!_awayMission->sins.openedDoor) { + if (!_awayMission->sins.openedOuterDoor) { _awayMission->crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_N; walkCrewmanC(OBJECT_SPOCK, 0xfd, 0xad, &Room::sins1SpockReachedKeypad); } @@ -221,7 +221,7 @@ void Room::sins1SpockReachedKeypad() { void Room::sins1EnteredCorrectCode() { _awayMission->crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_W; walkCrewman(OBJECT_SPOCK, 0xf3, 0xad); - _awayMission->sins.openedDoor = true; + _awayMission->sins.openedOuterDoor = true; loadMapFile("sins12"); loadActorAnimC(OBJECT_DOOR, "s1door", 0, 0, &Room::sins1DoorDoneOpening); playVoc("HUGEDOO2"); @@ -318,7 +318,7 @@ void Room::sins1LookAtLens() { } void Room::sins1UseCommunicator() { - if (!_awayMission->sins.field44) { + if (!_awayMission->sins.enteredRoom2FirstTime) { showText(TX_SPEAKER_KIRK, TX_SIN1_008); showText(TX_SPEAKER_SCOTT, TX_SIN1_S51); showText(TX_SPEAKER_KIRK, TX_SIN1_002); @@ -337,7 +337,7 @@ void Room::sins1UseMTricorderOnCrewman() { } void Room::sins1WalkToDoor() { - if (_awayMission->sins.openedDoor) + if (_awayMission->sins.openedOuterDoor) walkCrewman(OBJECT_KIRK, 0x98, 0x9e, 5); // NOTE: Callback 5 not defined } diff --git a/engines/startrek/rooms/sins2.cpp b/engines/startrek/rooms/sins2.cpp index 976814acab..42102230ff 100644 --- a/engines/startrek/rooms/sins2.cpp +++ b/engines/startrek/rooms/sins2.cpp @@ -22,20 +22,314 @@ #include "startrek/room.h" -#define OBJECT_8 8 +#define OBJECT_DOOR 8 -#define HOTSPOT_20 0x20 +#define HOTSPOT_TERMINAL 0x20 +#define HOTSPOT_DOOR 0x21 +#define HOTSPOT_KEYPAD 0x22 namespace StarTrek { extern const RoomAction sins2ActionList[] = { - { {ACTION_TICK, 1, 0, 0}, &Room::sins2Tick1 }, + { {ACTION_TICK, 1, 0, 0}, &Room::sins2Tick1 }, + { {ACTION_USE, OBJECT_IPHASERK, HOTSPOT_DOOR, 0}, &Room::sins2UsePhaserOnDoor }, + { {ACTION_USE, OBJECT_IPHASERS, HOTSPOT_DOOR, 0}, &Room::sins2UsePhaserOnDoor }, + { {ACTION_USE, OBJECT_ISTRICOR, 0xff, 0}, &Room::sins2UseSTricorderAnywhere }, + + { {ACTION_USE, OBJECT_KIRK, HOTSPOT_TERMINAL, 0}, &Room::sins2UseKirkOnTerminal }, + { {ACTION_USE, OBJECT_SPOCK, HOTSPOT_TERMINAL, 0}, &Room::sins2UseSpockOnTerminal }, + { {ACTION_DONE_WALK, 5, 0, 0}, &Room::sins2SpockReachedTerminal }, + { {ACTION_DONE_ANIM, 6, 0, 0}, &Room::sins2SpockUsedTerminal }, + { {ACTION_USE, OBJECT_MCCOY, HOTSPOT_TERMINAL, 0}, &Room::sins2UseMccoyOnTerminal }, + { {ACTION_USE, OBJECT_REDSHIRT, HOTSPOT_TERMINAL, 0}, &Room::sins2UseRedshirtOnTerminal }, + { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_TERMINAL, 0}, &Room::sins2UseSTricorderOnTerminal }, + { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_KEYPAD, 0}, &Room::sins2UseSTricorderOnKeypad }, + { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_DOOR, 0}, &Room::sins2UseSTricorderOnDoor }, + { {ACTION_USE, OBJECT_KIRK, HOTSPOT_KEYPAD, 0}, &Room::sins2UseKirkOnKeypad }, + { {ACTION_USE, OBJECT_SPOCK, HOTSPOT_KEYPAD, 0}, &Room::sins2UseSpockOnKeypad }, + { {ACTION_DONE_WALK, 2, 0, 0}, &Room::sins2SpockReachedKeypad }, + { {ACTION_DONE_ANIM, 3, 0, 0}, &Room::sins2EnteredCorrectCode }, + { {ACTION_DONE_ANIM, 4, 0, 0}, &Room::sins2EnteredIncorrectCode }, + { {ACTION_DONE_ANIM, 1, 0, 0}, &Room::sins2DoorFinishedOpening }, + + { {ACTION_TICK, 40, 0, 0}, &Room::sins2Tick40 }, + { {ACTION_LOOK, 0xff, 0, 0}, &Room::sins2LookAnywhere }, + { {ACTION_LOOK, OBJECT_DOOR, 0, 0}, &Room::sins2LookAtOpenDoor }, + { {ACTION_LOOK, HOTSPOT_TERMINAL, 0, 0}, &Room::sins2LookAtTerminal }, + { {ACTION_LOOK, HOTSPOT_KEYPAD, 0, 0}, &Room::sins2LookAtKeypad }, + { {ACTION_LOOK, OBJECT_KIRK, 0, 0}, &Room::sins2LookAtKirk }, + { {ACTION_LOOK, OBJECT_SPOCK, 0, 0}, &Room::sins2LookAtSpock }, + { {ACTION_LOOK, OBJECT_MCCOY, 0, 0}, &Room::sins2LookAtMccoy }, + { {ACTION_LOOK, OBJECT_REDSHIRT, 0, 0}, &Room::sins2LookAtRedshirt }, + { {ACTION_TALK, OBJECT_KIRK, 0, 0}, &Room::sins2TalkToKirk }, + { {ACTION_TALK, OBJECT_SPOCK, 0, 0}, &Room::sins2TalkToSpock }, + { {ACTION_TALK, OBJECT_MCCOY, 0, 0}, &Room::sins2TalkToMccoy }, + { {ACTION_TALK, OBJECT_REDSHIRT, 0, 0}, &Room::sins2TalkToRedshirt }, + { {ACTION_LOOK, HOTSPOT_DOOR, 0, 0}, &Room::sins2LookAtDoor }, + + { {ACTION_USE, OBJECT_SPOCK, HOTSPOT_DOOR, 0}, &Room::sins2UseSpockOnDoor }, + { {ACTION_USE, OBJECT_ICOMM, 0xff, 0}, &Room::sins2UseCommunicator }, + { {ACTION_USE, OBJECT_IMEDKIT, OBJECT_KIRK, 0}, &Room::sins2UseMedkitOnCrewman }, + { {ACTION_USE, OBJECT_IMEDKIT, OBJECT_SPOCK, 0}, &Room::sins2UseMedkitOnCrewman }, + { {ACTION_USE, OBJECT_IMEDKIT, OBJECT_MCCOY, 0}, &Room::sins2UseMedkitOnCrewman }, + { {ACTION_USE, OBJECT_IMEDKIT, OBJECT_REDSHIRT, 0}, &Room::sins2UseMedkitOnCrewman }, + { {ACTION_USE, OBJECT_IMTRICOR, OBJECT_KIRK, 0}, &Room::sins2UseMTricorderOnCrewman }, + { {ACTION_USE, OBJECT_IMTRICOR, OBJECT_SPOCK, 0}, &Room::sins2UseMTricorderOnCrewman }, + { {ACTION_USE, OBJECT_IMTRICOR, OBJECT_MCCOY, 0}, &Room::sins2UseMTricorderOnCrewman }, + { {ACTION_USE, OBJECT_IMTRICOR, OBJECT_REDSHIRT, 0}, &Room::sins2UseMTricorderOnCrewman }, + { {ACTION_USE, OBJECT_MCCOY, HOTSPOT_KEYPAD, 0}, &Room::sins2UseMccoyOnKeypad }, + { {ACTION_USE, OBJECT_REDSHIRT, HOTSPOT_KEYPAD, 0}, &Room::sins2UseRedshirtOnKeypad }, + + { {ACTION_WALK, HOTSPOT_DOOR, 0, 0}, &Room::sins2WalkToDoor }, + { {ACTION_WALK, OBJECT_DOOR, 0, 0}, &Room::sins2WalkToDoor }, }; extern const int sins2NumActions = sizeof(sins2ActionList) / sizeof(RoomAction); void Room::sins2Tick1() { + playVoc("SIN2LOOP"); + playMidiMusicTracks(MIDITRACK_27, -3); + + if (!_awayMission->sins.enteredRoom2FirstTime) + _awayMission->disableInput = 2; + + if (_awayMission->sins.openedInnerDoor) { + // NOTE: callback is never called, since animation never finishes? + loadActorAnimC(OBJECT_DOOR, "s2dro", 0, 0, &Room::sins2DoorFinishedOpening); + loadMapFile("sins22"); + } else { + loadMapFile("sins2"); + } +} + +void Room::sins2UsePhaserOnDoor() { + showText(TX_SPEAKER_SPOCK, TX_SIN2_025); +} + +void Room::sins2UseSTricorderAnywhere() { + spockScan(DIR_S, TX_SIN2_026); +} + +void Room::sins2UseKirkOnTerminal() { + showText(TX_SPEAKER_KIRK, TX_SIN2_002); + sins2UseSpockOnTerminal(); +} + +void Room::sins2UseSpockOnTerminal() { + _awayMission->crewDirectionsAfterWalk[OBJECT_SPOCK] = DIR_W; + walkCrewmanC(OBJECT_SPOCK, 0x5f, 0xa7, &Room::sins2SpockReachedTerminal); +} + +void Room::sins2SpockReachedTerminal() { + playVoc("EFX14S"); + loadActorAnimC(OBJECT_SPOCK, "susehw", -1, -1, &Room::sins2SpockUsedTerminal); +} + +void Room::sins2SpockUsedTerminal() { + showText(TX_SPEAKER_SPOCK, TX_SIN2_042); + showText(TX_SPEAKER_SPOCK, TX_SIN2_044); + + if (!_awayMission->sins.gotPointsForAccessingTerminal) { + _awayMission->sins.missionScore += 2; + _awayMission->sins.gotPointsForAccessingTerminal = true; + } + + showText(TX_SPEAKER_MCCOY, TX_SIN2_015); + showText(TX_SPEAKER_SPOCK, TX_SIN2_032); + showText(TX_SPEAKER_MOSHER, TX_SIN2_050); + showText(TX_SPEAKER_SPOCK, TX_SIN2_035); + showText(TX_SPEAKER_SPOCK, TX_SIN2_043); + showText(TX_SPEAKER_SPOCK, TX_SIN2_041); + showText(TX_SPEAKER_SPOCK, TX_SIN2_040); + showText(TX_SPEAKER_MCCOY, TX_SIN2_021); + showText(TX_SPEAKER_SPOCK, TX_SIN2_034); + showText(TX_SPEAKER_SPOCK, TX_SIN2_031); + showText(TX_SPEAKER_SPOCK, TX_SIN2_038); + showText(TX_SPEAKER_MCCOY, TX_SIN2_020); + showText(TX_SPEAKER_SPOCK, TX_SIN2_033); + showText(TX_SPEAKER_KIRK, TX_SIN2_007); + showText(TX_SPEAKER_SPOCK, TX_SIN2_037); + showText(TX_SPEAKER_MCCOY, TX_SIN2_022); + showText(TX_SPEAKER_SPOCK, TX_SIN2_029); +} + +void Room::sins2UseMccoyOnTerminal() { + showText(TX_SPEAKER_MCCOY, TX_SIN2_012); +} + +void Room::sins2UseRedshirtOnTerminal() { + showText(TX_SPEAKER_MOSHER, TX_SIN2_045); +} + +void Room::sins2UseSTricorderOnTerminal() { + spockScan(DIR_W, TX_SIN2_009); +} + +void Room::sins2UseSTricorderOnKeypad() { + spockScan(DIR_N, TX_SIN2_028); +} + +void Room::sins2UseSTricorderOnDoor() { + spockScan(DIR_N, TX_SIN2_027); +} + +void Room::sins2UseKirkOnKeypad() { + if (!_awayMission->sins.openedInnerDoor) { + showText(TX_SPEAKER_KIRK, TX_SIN2_001); + sins2UseSpockOnKeypad(); + } +} + +void Room::sins2UseSpockOnKeypad() { + if (!_awayMission->sins.openedInnerDoor) { + walkCrewmanC(OBJECT_SPOCK, 0xc3, 0x9b, &Room::sins2SpockReachedKeypad); + } +} + +void Room::sins2SpockReachedKeypad() { + const char *codes[] = { + "122", nullptr + }; + + int ans = showCodeInputBox(codes); + + if (ans == -1) { // ENHANCEMENT: if nothing was entered, do nothing. + } else if (ans == 1) { + playVoc("EFX28S"); + loadActorAnimC(OBJECT_SPOCK, "susehe", -1, -1, &Room::sins2EnteredCorrectCode); + } else { // Incorrect answer + playVoc("EFX28S"); + loadActorAnimC(OBJECT_SPOCK, "susehe", -1, -1, &Room::sins2EnteredIncorrectCode); + } +} + +void Room::sins2EnteredCorrectCode() { + _awayMission->sins.openedInnerDoor = true; + loadMapFile("sins22"); + playVoc("BIGDOOR3"); + loadActorAnimC(OBJECT_DOOR, "s2door", 0, 0, &Room::sins2DoorFinishedOpening); +} + +void Room::sins2EnteredIncorrectCode() { + showText(TX_SPEAKER_SPOCK, TX_SIN2_024); // BUGFIX: Speaker is spock, not "none" +} + +void Room::sins2DoorFinishedOpening() { + showText(TX_SPEAKER_SPOCK, TX_SIN2_010); +} + +void Room::sins2Tick40() { + if (!_awayMission->sins.enteredRoom2FirstTime) { + _awayMission->disableInput = false; + + showText(TX_SPEAKER_KIRK, TX_SIN2_005); + showText(TX_SPEAKER_SCOTT, TX_SIN2_S05); + showText(TX_SPEAKER_UHURA, TX_SIN2U085); + showText(TX_SPEAKER_KIRK, TX_SIN2_008); + showText(TX_SPEAKER_UHURA, TX_SIN2U097); + showText(TX_SPEAKER_MCCOY, TX_SIN2_F26); + showText(TX_SPEAKER_UHURA, TX_SIN2U096); + showText(TX_SPEAKER_MCCOY, TX_SIN2_019); + showText(TX_SPEAKER_KIRK, TX_SIN2_004); + + _awayMission->sins.enteredRoom2FirstTime = true; + } +} + +void Room::sins2LookAnywhere() { + showText(TX_SIN2N006); +} + +void Room::sins2LookAtOpenDoor() { + showText(TX_SIN2N007); +} + +void Room::sins2LookAtTerminal() { + showText(TX_SIN2N000); +} + +void Room::sins2LookAtKeypad() { + showText(TX_SIN2N001); +} + +void Room::sins2LookAtKirk() { + showText(TX_SIN2N003); +} + +void Room::sins2LookAtSpock() { + showText(TX_SIN2N005); +} + +void Room::sins2LookAtMccoy() { + showText(TX_SIN2N004); +} + +void Room::sins2LookAtRedshirt() { + showText(TX_SIN2N002); +} + +void Room::sins2TalkToKirk() { + showText(TX_SPEAKER_KIRK, TX_SIN2_003); +} + +void Room::sins2TalkToSpock() { + showText(TX_SPEAKER_SPOCK, TX_SIN2_039); + showText(TX_SPEAKER_MCCOY, TX_SIN2_016); +} + +void Room::sins2TalkToMccoy() { + showText(TX_SPEAKER_MCCOY, TX_SIN2_023); + showText(TX_SPEAKER_MOSHER, TX_SIN2_049); +} + +void Room::sins2TalkToRedshirt() { + showText(TX_SPEAKER_MOSHER, TX_SIN2_047); +} + +void Room::sins2LookAtDoor() { + if (!_awayMission->sins.openedInnerDoor) + showText(TX_SIN2N008); +} + +void Room::sins2UseSpockOnDoor() { + if (!_awayMission->sins.openedInnerDoor) { + showText(TX_SPEAKER_SPOCK, TX_SIN2_F12); + showText(TX_SPEAKER_MOSHER, TX_SIN2_048); + showText(TX_SPEAKER_SPOCK, TX_SIN2_030); + } +} + +void Room::sins2UseCommunicator() { + if (!_awayMission->sins.field46) { + showText(TX_SPEAKER_KIRK, TX_SIN2_006); + showText(TX_SPEAKER_SCOTT, TX_SIN2_S16); + showText(TX_SPEAKER_MCCOY, TX_SIN2_017); + } else + showText(TX_SPEAKER_UHURA, TX_SIN1U070); +} + +void Room::sins2UseMedkitOnCrewman() { + showText(TX_SPEAKER_MCCOY, TX_SIN2_014); +} + +void Room::sins2UseMTricorderOnCrewman() { + mccoyScan(DIR_S, TX_SIN3_008); // BUGFIX: original game had wrong audio file path +} + +void Room::sins2UseMccoyOnKeypad() { + if (!_awayMission->sins.openedInnerDoor) + showText(TX_SPEAKER_MCCOY, TX_SIN2_013); +} + +void Room::sins2UseRedshirtOnKeypad() { + if (!_awayMission->sins.openedInnerDoor) + showText(TX_SPEAKER_MOSHER, TX_SIN2_046); +} + +void Room::sins2WalkToDoor() { + if (_awayMission->sins.openedInnerDoor) + walkCrewman(OBJECT_KIRK, 0x9c, 0x8b); } } diff --git a/engines/startrek/text.cpp b/engines/startrek/text.cpp index 676279443a..ec1963d539 100644 --- a/engines/startrek/text.cpp +++ b/engines/startrek/text.cpp @@ -2433,6 +2433,72 @@ extern const char *const g_gameStrings[] = { "#SIN1\\SIN1U070#Nothing new to report Captain.", + "#SIN2\\SIN2_001#Spock, see what you can do with that lock.", + "#SIN2\\SIN2_002#Spock, see what you can do with this.", + "#SIN2\\SIN2_003#The Lucrs did not seem to have a problem with security.", + "#SIN2\\SIN2_004#Keep working at it, Uhura. Kirk out.", + "#SIN2\\SIN2_005#Report, Scotty. How are things going?", + "#SIN2\\SIN2_006#Scotty, any progress on the phasers?", + "#SIN2\\SIN2_007#Spock is right, Bones. Spock, what are the chances that we could decode the transmission and send a stop code to the base?", + "#SIN2\\SIN2_008#Well done, Uhura.", + "#SIN2\\SIN2_009#A computer terminal, Captain. It uses the lucr alphabet. I think I can decipher it.", + "#SIN2\\SIN2_010#Fascinating. If the Federation language studies were correct, the ideograph for the word \"Scythe\" in the Lucrs language is the 17th symbol in their alphabet. That corresponds with 122 in base 3.", + "#SIN2\\SIN2_012#Damn it Jim, I'm a surgeon not a alien computer science specialist.", + "#SIN2\\SIN2_013#I think Spock would have a better chance at cracking that, Jim.", + "#SIN2\\SIN2_014#We're safe from the cosmic radiation, Jim.", + "#SIN2\\SIN2_015#22%? That's very low -- hardly something to brag about.", + "#SIN2\\SIN2_016#At least we won't have to worry about suffocating.", + "#SIN2\\SIN2_017#By then, Proxtrey could be a dead planet.", + "#SIN2\\SIN2_019#Finally, someone who appreciates me!", + "#SIN2\\SIN2_020#Jim, let's return to the ship and blast this place to destroy its weapons.", + "#SIN2\\SIN2_021#So why has the base been activated again?", + "#SIN2\\SIN2_022#Spock!", + "#SIN2\\SIN2_023#This place does seem to provide protection against cosmic rays.", + "#SIN2\\SIN2_024#That did not work, Captain. It is probable this lock also uses a number of some significance.", + "#SIN2\\SIN2_025#The door will easily withstand our phasers, Captain.", + "#SIN2\\SIN2_026#The interior of the security lock is unremarkable and well preserved.", + "#SIN2\\SIN2_027#This door is similar to the one on the outside of the securelock except that it has not weathered over the years. Electrical panels indicate the keypad on the right controls the door.", + "#SIN2\\SIN2_028#This keypad is fully functional and controls the door. Its entry code is in base three.", + "#SIN2\\SIN2_029#1.327 million to one, provided the archaeological studies about Lucrs languages are correct. Our other option is to get into this base and see if we can bring the computers down.", + "#SIN2\\SIN2_030#Actually, Ensign, they differ from your culture only in that their language was explicit in their expressions of dominance and submission, rather than implied.", + "#SIN2\\SIN2_031#Because it does not recognize them, it assumes the Sofs are still active.", + "#SIN2\\SIN2_032#Doctor, in base 3, 22/100 is equivalent to 8 out of 9 or 88%. I would think that quite satisfactory given this base's probable mission of destroying the Sof forces on Proxtrey.", + "#SIN2\\SIN2_033#Doctor, this moon is a god to the people down there. If we destroy it we will violate the Prime Directive.", + "#SIN2\\SIN2_034#Given the damage to the moon, its slow rotation and orbit, it has never realized the war is over. On this pass, for the first time, it has detected radio-wave transmissions from Proxtrey.", + "#SIN2\\SIN2_035#If the Lucrs built this base with a clock that told the time by measuring the moon's rotational speed or the gravitational forces generated by Proxtrey and the sun, the computer may have calculated only a week of time has passed since its first action. I might be able to learn more with another look at the console.", + "#SIN2\\SIN2_037#In Trinary or Decimal?", + "#SIN2\\SIN2_038#Its transmission to the planet, I would assume, was some sort of a check beacon to see if it should continue its mission.", + "#SIN2\\SIN2_039#My tricorder is picking up large supplies of frozen oxygen, nitrogen, and carbon dioxide beneath the surface. Enough to last many centuries.", + "#SIN2\\SIN2_040#One Sof strike did, in fact, hit the moon and deflected it from its orbit. It has been dormant since then.", + "#SIN2\\SIN2_041#The Sofs managed to infiltrate the base. however, their actions triggered Scythe's auto-attack mechanisms, and initiated a holocaust that nearly annihilated the planet. ", + "#SIN2\\SIN2_042#The console reports the following: ", + "#SIN2\\SIN2_043#There is a substantial amount of data here, but in summary, Scythe was created by the Lucrs as a launching platform for missiles to keep the Sofs subjugated to their influence.", + "#SIN2\\SIN2_044#Welcome to Orbital Missile Base. Codename: Scythe. This base has been operational for the past week. It has completed 1 successful fire mission. Estimation of success is at 22/100.", + "#SIN2\\SIN2_045#I think Mr. Spock would have a better idea of how to operate that, Captain.", + "#SIN2\\SIN2_046#I'm just a security officer, Sir.", + "#SIN2\\SIN2_047#We appear to be in some type of Security Lock. No defensive systems are apparent here, but considering the size of the doors, they probably don't need them!", + "#SIN2\\SIN2_048#Dominance seemed to be very important to these people. No wonder the Lucr were so war-like.", + "#SIN2\\SIN2_049#I don't see why they bothered putting an atmosphere here, Captain. There hasn't even been bacteria here in centuries, let alone humanoids.", + "#SIN2\\SIN2_050#It says the base has been operational for a week, but this has been here for a thousand years.", + "#SIN2\\SIN2_F12#This says: \"Dominant People only to dominate things beyond >,<these Submissive Walls\". My guess is that only authorized personnel were allowed beyond this door.", + "#SIN2\\SIN2_F26#Computer science sounds more like medicine every day.", + "#SIN2\\SIN2_S05#About as badly as a kilt in a blast furnace, Captain. Wait a minute, Lieutenant Uhura has some news for you.", + "#SIN2\\SIN2_S16#Sorry Captain, but we cannot do that. We don't have phasers for at least eight more hours.", + "#SIN2\\SIN2N000#A computer terminal. Each word in the Lucr language has three aspects, Submissive, Neutral, and Aggressive, to supply connotation to their language.", + "#SIN2\\SIN2N001#A keypad, in base three.", + "#SIN2\\SIN2N002#Ensign Mosher is scanning the area for potentially hostile lifeforms.", + "#SIN2\\SIN2N003#James Kirk. The burden of command is quite heavy at times.", + "#SIN2\\SIN2N004#McCoy wishes this place was less... technological.", + "#SIN2\\SIN2N005#Spock looks at the equipment and raises an eyebrow.", + "#SIN2\\SIN2N006#This looks like some kind of security lock with heavy duty doors on both ends.", + "#SIN2\\SIN2N007#You see another chamber.", + "#SIN2\\SIN2N008#The door has some strange writing on it.", + "#SIN2\\SIN2U085#The virus came from our sensor sweep of the moon's computers. We believe we have analyzed the memory sectors it attacked.", + "#SIN2\\SIN2U096#If we had a doctor as good with computers as you are with patients, we would be having a lot fewer problems.", + "#SIN2\\SIN2U097#I wish I could take credit for it. It was Mr. Kyle who found the pattern. We are attacking it with anti-virus programs.", + + + "#SIN2\\SIN3_008#All readings are normal. The structure seems to be protecting us from the cosmic rays.", "#SIN3\\SIN3_012#Can't say I like the decor.", diff --git a/engines/startrek/text.h b/engines/startrek/text.h index 558162baa4..46b3c843c5 100644 --- a/engines/startrek/text.h +++ b/engines/startrek/text.h @@ -2529,6 +2529,77 @@ enum GameStringIDs { TX_SIN1U070, + TX_SIN2_001, + TX_SIN2_002, + TX_SIN2_003, + TX_SIN2_004, + TX_SIN2_005, + TX_SIN2_006, + TX_SIN2_007, + TX_SIN2_008, + TX_SIN2_009, + TX_SIN2_010, + // MISSING + TX_SIN2_012, + TX_SIN2_013, + TX_SIN2_014, + TX_SIN2_015, + TX_SIN2_016, + TX_SIN2_017, + // MISSING + TX_SIN2_019, + TX_SIN2_020, + TX_SIN2_021, + TX_SIN2_022, + TX_SIN2_023, + TX_SIN2_024, + TX_SIN2_025, + TX_SIN2_026, + TX_SIN2_027, + TX_SIN2_028, + TX_SIN2_029, + TX_SIN2_030, + TX_SIN2_031, + TX_SIN2_032, + TX_SIN2_033, + TX_SIN2_034, + TX_SIN2_035, + // UNUSED (036) + TX_SIN2_037, + TX_SIN2_038, + TX_SIN2_039, + TX_SIN2_040, + TX_SIN2_041, + TX_SIN2_042, + TX_SIN2_043, + TX_SIN2_044, + TX_SIN2_045, + TX_SIN2_046, + TX_SIN2_047, + TX_SIN2_048, + TX_SIN2_049, + TX_SIN2_050, + // UNUSED (051 -> 054; uhura voice substitute) + TX_SIN2_F12, + TX_SIN2_F26, + TX_SIN2_S05, + TX_SIN2_S16, + TX_SIN2N000, + TX_SIN2N001, + TX_SIN2N002, + TX_SIN2N003, + TX_SIN2N004, + TX_SIN2N005, + TX_SIN2N006, + TX_SIN2N007, + TX_SIN2N008, + TX_SIN2U085, + TX_SIN2U096, + TX_SIN2U097, + // UNUSED: sin2_b35.voc (same as 036) + + + TX_SIN3_008, TX_SIN3_012, |