From 16042faa655f53553ec26ef908e5528871e046ce Mon Sep 17 00:00:00 2001 From: Matthew Stewart Date: Thu, 21 Jun 2018 05:50:32 -0400 Subject: STARTREK: Start on LOVE3 --- engines/startrek/awaymission.cpp | 2 +- engines/startrek/awaymission.h | 9 +- engines/startrek/room.h | 42 ++++++ engines/startrek/rooms/function_map.h | 38 ++++++ engines/startrek/rooms/love1.cpp | 4 +- engines/startrek/rooms/love3.cpp | 245 +++++++++++++++++++++++++++++++++- engines/startrek/startrek.cpp | 2 +- engines/startrek/text.h | 136 +++++++++++++++++++ 8 files changed, 471 insertions(+), 7 deletions(-) (limited to 'engines') diff --git a/engines/startrek/awaymission.cpp b/engines/startrek/awaymission.cpp index 83e16c9ac3..1526e6a182 100644 --- a/engines/startrek/awaymission.cpp +++ b/engines/startrek/awaymission.cpp @@ -41,7 +41,7 @@ void StarTrekEngine::initAwayMission() { _roomIndexToLoad = -1; // Load crew positions for beaming in - initAwayCrewPositions(0); + initAwayCrewPositions(1); } void StarTrekEngine::runAwayMission() { diff --git a/engines/startrek/awaymission.h b/engines/startrek/awaymission.h index 9114bb9edf..c827d7a1cb 100644 --- a/engines/startrek/awaymission.h +++ b/engines/startrek/awaymission.h @@ -142,7 +142,7 @@ struct AwayMission { struct { bool alreadyStartedMission; // 0x29 bool knowAboutVirus; // 0x2a - bool field2b; // 0x2b + bool putLaughingGasInVent; // 0x2b bool field2c; // 0x2c bool field2d; // 0x2d bool chamberHasCure; // 0x2e @@ -155,6 +155,13 @@ struct AwayMission { byte field35; // 0x35 byte canister1; // 0x36 byte canister2; // 0x37 + bool servicePanelOpen; // 0x38 + bool gasTankUnscrewed; // 0x39 + bool wrenchTaken; // 0x3a + bool tookN2TankFromServicePanel; // 0x3b + bool grateRemoved; // 0x3d + bool field3e; // 0x3e + bool field3f; // 0x3f bool field41; // 0x41 bool spockAccessedConsole; // 0x49 bool mccoyAccessedConsole; // 0x4a diff --git a/engines/startrek/room.h b/engines/startrek/room.h index 371d57fd19..3ab458a84a 100644 --- a/engines/startrek/room.h +++ b/engines/startrek/room.h @@ -938,6 +938,42 @@ public: // LOVE3 void love3Tick1(); + void love3Tick80(); + void love3TouchedWarp1(); + void love3Timer3Expired(); + void love3LookAtServicePanel(); + void love3LookAtMonitor(); + void love3LookAtWrench(); + void love3LookAtKirk(); + void love3LookAtMccoy(); + void love3LookAtSpock(); + void love3LookAtRedshirt(); + void love3LookAnywhere(); + void love3LookAtShaft(); + void love3LookAtPanel(); + void love3LookAtGasTank(); + void love3LookAtTurbines(); + void love3TalkToKirk(); + void love3TalkToSpock(); + void love3TalkToMccoy(); + void love3TalkToRedshirt(); + void love3UseMTricorderAnywhere(); + void love3UseSTricorderOnTurbines(); + void love3UseSTricorderOnInsulation(); + void love3UseSTricorderAnywhere(); + void love3UseKirkOnServicePanel(); + void love3UseSpockOnServicePanel(); + void love3UseMccoyOnServicePanel(); + void love3UseRedshirtOnServicePanel(); + void love3CrewmanReachedServicePanel(); + void love3OpenedOrClosedServicePanel(); + void love3UseWrenchOnGasTank(); + void love3ReachedGasTankToUnscrew(); + void love3ScrewedOrUnscrewedGasTank(); + void love3UseWrenchOnO2OrH2Gas(); + void love3UseWrenchOnN2Gas(); + void love3ReachedGasTankToPutDown(); + void love3PutN2TankBack(); // LOVE4 void love4Tick1(); @@ -1053,6 +1089,12 @@ private: byte _2967; // 0x2967 } love2; + struct { + byte activeCrewman; + byte _188e; // 0x188e + byte _188f; // 0x188f + } love3; + } _roomVar; }; diff --git a/engines/startrek/rooms/function_map.h b/engines/startrek/rooms/function_map.h index b16dbff5f8..dab82aaac5 100644 --- a/engines/startrek/rooms/function_map.h +++ b/engines/startrek/rooms/function_map.h @@ -1063,6 +1063,44 @@ RoomAction love2ActionList[] = { RoomAction love3ActionList[] = { { Action(ACTION_TICK, 1, 0, 0), &Room::love3Tick1 }, + { Action(ACTION_TICK, 80, 0, 0), &Room::love3Tick80 }, + { Action(ACTION_TOUCHED_WARP, 1, 0, 0), &Room::love3TouchedWarp1 }, + { Action(ACTION_TIMER_EXPIRED, 3, 0, 0), &Room::love3Timer3Expired }, + { Action(ACTION_LOOK, 8, 0, 0), &Room::love3LookAtServicePanel }, + { Action(ACTION_LOOK, 0x21, 0, 0), &Room::love3LookAtMonitor }, + { Action(ACTION_LOOK, 10, 0, 0), &Room::love3LookAtWrench }, + { Action(ACTION_LOOK, OBJECT_KIRK, 0, 0), &Room::love3LookAtKirk }, + { Action(ACTION_LOOK, OBJECT_MCCOY, 0, 0), &Room::love3LookAtMccoy }, + { Action(ACTION_LOOK, OBJECT_SPOCK, 0, 0), &Room::love3LookAtSpock }, + { Action(ACTION_LOOK, OBJECT_REDSHIRT, 0, 0), &Room::love3LookAtRedshirt }, + { Action(ACTION_LOOK, -1, 0, 0), &Room::love3LookAnywhere }, + { Action(ACTION_LOOK, 0x22, 0, 0), &Room::love3LookAtShaft }, + { Action(ACTION_LOOK, 9, 0, 0), &Room::love3LookAtPanel }, + { Action(ACTION_LOOK, 0x20, 0, 0), &Room::love3LookAtPanel }, + { Action(ACTION_LOOK, 12, 0, 0), &Room::love3LookAtGasTank }, + { Action(ACTION_LOOK, 0x23, 0, 0), &Room::love3LookAtTurbines }, + { Action(ACTION_TALK, OBJECT_KIRK, 0, 0), &Room::love3TalkToKirk }, + { Action(ACTION_TALK, OBJECT_SPOCK, 0, 0), &Room::love3TalkToSpock }, + { Action(ACTION_TALK, OBJECT_MCCOY, 0, 0), &Room::love3TalkToMccoy }, + { Action(ACTION_TALK, OBJECT_REDSHIRT, 0, 0), &Room::love3TalkToRedshirt }, + { Action(ACTION_USE, OBJECT_IMTRICOR, -1, 0), &Room::love3UseMTricorderAnywhere }, + { Action(ACTION_USE, OBJECT_ISTRICOR, 0x23, 0), &Room::love3UseSTricorderOnTurbines }, + { Action(ACTION_USE, OBJECT_ISTRICOR, 9, 0), &Room::love3UseSTricorderOnInsulation }, + { Action(ACTION_USE, OBJECT_ISTRICOR, -1, 0), &Room::love3UseSTricorderAnywhere }, + { Action(ACTION_USE, OBJECT_KIRK, 8, 0), &Room::love3UseKirkOnServicePanel }, + { Action(ACTION_USE, OBJECT_SPOCK, 8, 0), &Room::love3UseSpockOnServicePanel }, + { Action(ACTION_USE, OBJECT_MCCOY, 8, 0), &Room::love3UseMccoyOnServicePanel }, + { Action(ACTION_USE, OBJECT_REDSHIRT, 8, 0), &Room::love3UseRedshirtOnServicePanel }, + { Action(ACTION_FINISHED_WALKING, 1, 0, 0), &Room::love3CrewmanReachedServicePanel }, + { Action(ACTION_FINISHED_ANIMATION, 1, 0, 0), &Room::love3OpenedOrClosedServicePanel }, + { Action(ACTION_USE, OBJECT_IWRENCH, 12, 0), &Room::love3UseWrenchOnGasTank }, + { Action(ACTION_FINISHED_WALKING, 2, 0, 0), &Room::love3ReachedGasTankToUnscrew }, + { Action(ACTION_FINISHED_ANIMATION, 2, 0, 0), &Room::love3ScrewedOrUnscrewedGasTank }, + { Action(ACTION_USE, OBJECT_IWRENCH, OBJECT_IO2GAS, 0), &Room::love3UseWrenchOnO2OrH2Gas }, + { Action(ACTION_USE, OBJECT_IWRENCH, OBJECT_IH2GAS, 0), &Room::love3UseWrenchOnO2OrH2Gas }, + { Action(ACTION_USE, OBJECT_IWRENCH, OBJECT_IN2GAS, 0), &Room::love3UseWrenchOnN2Gas }, + { Action(ACTION_FINISHED_WALKING, 15, 0, 0), &Room::love3ReachedGasTankToPutDown }, + { Action(ACTION_FINISHED_ANIMATION, 3, 0, 0), &Room::love3PutN2TankBack }, }; RoomAction love4ActionList[] = { diff --git a/engines/startrek/rooms/love1.cpp b/engines/startrek/rooms/love1.cpp index 509f35f882..d2ffe2143c 100644 --- a/engines/startrek/rooms/love1.cpp +++ b/engines/startrek/rooms/love1.cpp @@ -624,7 +624,7 @@ void Room::love1CrewmanReachedLadder() { TX_SPEAKER_FERRIS }; - if (_vm->_awayMission.love.field2b || _vm->_awayMission.love.field41) // Romulans unconscious + if (_vm->_awayMission.love.putLaughingGasInVent || _vm->_awayMission.love.field41) // Romulans unconscious loadRoomIndex(4, 3); else { // Romulans still conscious, they shoot you loadActorAnim(OBJECT_PHASERSHOT, "s3r2s2", 0xf3, 0x89, 0); @@ -650,7 +650,7 @@ void Room::love1CrewmanDiedFromPhaser() { // Romulans fire a "warning shot" when you go to the right part of the room. void Room::love1TouchedHotspot0() { - if (_vm->_awayMission.love.field2b || _vm->_awayMission.love.field41) + if (_vm->_awayMission.love.putLaughingGasInVent || _vm->_awayMission.love.field41) return; loadActorAnim(OBJECT_PHASERSHOT, "s3r2s1", 0xf3, 0x89, 0); playSoundEffectIndex(SND_PHASSHOT); diff --git a/engines/startrek/rooms/love3.cpp b/engines/startrek/rooms/love3.cpp index 44203dfa2f..149c53c824 100644 --- a/engines/startrek/rooms/love3.cpp +++ b/engines/startrek/rooms/love3.cpp @@ -22,14 +22,255 @@ #include "startrek/room.h" -#define OBJECT_DOOR1 8 +#define OBJECT_SERVICE_PANEL 8 +#define OBJECT_INSULATION 9 +#define OBJECT_WRENCH 10 +#define OBJECT_GRATE 11 +#define OBJECT_GAS_TANK 12 -#define HOTSPOT_CONSOLE 0x20 +#define HOTSPOT_INSULATION 0x20 +#define HOTSPOT_MONITOR 0x21 +#define HOTSPOT_SHAFT 0x22 +#define HOTSPOT_TURBINES 0x23 namespace StarTrek { void Room::love3Tick1() { + playVoc("LOV3LOOP"); + if (!_vm->_awayMission.love.wrenchTaken) + loadActorAnim(OBJECT_WRENCH, "wrench", 0x10a, 0xb6, 0); + + if (_vm->_awayMission.love.grateRemoved) + loadActorAnim(OBJECT_GRATE, "s3r4g3", 0, 0, 0); + else + loadActorAnim(OBJECT_GRATE, "s3r4g1", 0x116, 0x8f, 0); + + if (_vm->_awayMission.love.field3e) + loadActorAnim(OBJECT_INSULATION, "s3r4p2", 0, 0, 0); + + if (!_vm->_awayMission.love.tookN2TankFromServicePanel) + loadActorAnim(OBJECT_GAS_TANK, "r4n2", 0, 0, 0); + + if (_vm->_awayMission.love.servicePanelOpen) + loadActorAnim(OBJECT_SERVICE_PANEL, "s3r4d1a", 1, 0, 0); + else + loadActorAnim(OBJECT_SERVICE_PANEL, "s3r4d2", 1, 0, 0); + + if (_vm->_awayMission.love.field2c) + _vm->_awayMission.timers[0] = getRandomWordInRange(200, 400); + if (_vm->_awayMission.love.field2d) + _vm->_awayMission.timers[1] = getRandomWordInRange(200, 400); + + _vm->_awayMission.timers[2] = 200; + + _roomVar.love3._188e = 0xb4; + _roomVar.love3._188f = 0xb7; +} + +void Room::love3Tick80() { + if (!_vm->_awayMission.love.field3f && haveItem(OBJECT_IRLG)) { + showText(TX_SPEAKER_MCCOY, TX_LOV3_010); + showText(TX_SPEAKER_SPOCK, TX_LOV3_020); + } +} + +void Room::love3TouchedWarp1() { + _vm->_awayMission.disableInput = true; + playSoundEffectIndex(SND_DOOR1); + _vm->_awayMission.timers[3] = 10; +} + +void Room::love3Timer3Expired() { + loadRoomIndex(1, 0); +} + +void Room::love3LookAtServicePanel() { + showText(TX_LOV3NA20); +} + +void Room::love3LookAtMonitor() { + showText(TX_LOV3N000); // BUGFIX: original didn't play the audio +} + +void Room::love3LookAtWrench() { + showText(TX_LOV3N002); +} + +void Room::love3LookAtKirk() { + showText(TX_LOV3N003); +} + +void Room::love3LookAtMccoy() { + showText(TX_LOV3N005); +} + +void Room::love3LookAtSpock() { + showText(TX_LOV3N008); +} + +void Room::love3LookAtRedshirt() { + showText(TX_LOV3N004); +} + +void Room::love3LookAnywhere() { + showText(TX_LOV3NA23); +} + +void Room::love3LookAtShaft() { + showText(TX_LOV3N019); +} + +void Room::love3LookAtPanel() { + if (_vm->_awayMission.love.field3e) + showText(TX_LOV3N017); + else + showText(TX_LOV3NA22); +} + +void Room::love3LookAtGasTank() { + showText(TX_LOV3N006); +} + +void Room::love3LookAtTurbines() { + showText(TX_LOV3N026); + showText(TX_SPEAKER_MCCOY, TX_LOV3_009); + showText(TX_SPEAKER_SPOCK, TX_LOV3_019); + if (!_vm->_awayMission.redshirtDead) + showText(TX_SPEAKER_FERRIS, TX_LOV3_026); +} + +void Room::love3TalkToKirk() { + showText(TX_SPEAKER_KIRK, TX_LOV3_001); +} + +void Room::love3TalkToSpock() { + if (_vm->_awayMission.love.field3f) + showText(TX_SPEAKER_SPOCK, TX_LOV3_003); + if (_vm->_awayMission.love.putLaughingGasInVent) + showText(TX_SPEAKER_SPOCK, TX_LOV3_017); + else if (haveItem(OBJECT_IRLG)) + showText(TX_SPEAKER_SPOCK, TX_LOV3_004); + else + showText(TX_SPEAKER_SPOCK, TX_LOV3_003); +} + +void Room::love3TalkToMccoy() { + showText(TX_SPEAKER_MCCOY, TX_LOV3_008); +} + +void Room::love3TalkToRedshirt() { + showText(TX_SPEAKER_FERRIS, TX_LOV3_024); +} + +void Room::love3UseMTricorderAnywhere() { + if (_vm->_awayMission.love.knowAboutVirus) + mccoyScan(DIR_S, TX_LOV3_005, false); + else + mccoyScan(DIR_S, TX_LOV3_006, false); +} + +void Room::love3UseSTricorderOnTurbines() { + spockScan(DIR_N, TX_LOV3_014, false); +} + +void Room::love3UseSTricorderOnInsulation() { + if (_vm->_awayMission.love.field3e) + spockScan(DIR_W, TX_LOV3_002, false); +} + +void Room::love3UseSTricorderAnywhere() { + spockScan(DIR_S, TX_LOV3_013, false); +} + +void Room::love3UseKirkOnServicePanel() { + _roomVar.love3.activeCrewman = OBJECT_KIRK; + walkCrewman(_roomVar.love3.activeCrewman, 0x104, 0xae, 1); +} + +void Room::love3UseSpockOnServicePanel() { + _roomVar.love3.activeCrewman = OBJECT_SPOCK; + walkCrewman(_roomVar.love3.activeCrewman, 0x104, 0xae, 1); +} + +void Room::love3UseMccoyOnServicePanel() { + _roomVar.love3.activeCrewman = OBJECT_MCCOY; + walkCrewman(_roomVar.love3.activeCrewman, 0x104, 0xae, 1); +} + +void Room::love3UseRedshirtOnServicePanel() { + _roomVar.love3.activeCrewman = OBJECT_REDSHIRT; + walkCrewman(_roomVar.love3.activeCrewman, 0x104, 0xae, 1); +} + +void Room::love3CrewmanReachedServicePanel() { + Common::String anim = _vm->getCrewmanAnimFilename(_roomVar.love3.activeCrewman, "usehe"); + loadActorAnim2(_roomVar.love3.activeCrewman, anim, -1, -1, 1); +} + +void Room::love3OpenedOrClosedServicePanel() { + if (_vm->_awayMission.love.servicePanelOpen) + loadActorAnim2(OBJECT_SERVICE_PANEL, "s3r4d1b", 1, 0, 0); + else + loadActorAnim2(OBJECT_SERVICE_PANEL, "s3r4d1", 1, 0, 0); + + playVoc("SMADOOR1"); + _vm->_awayMission.love.servicePanelOpen = !_vm->_awayMission.love.servicePanelOpen; + + if (_vm->_awayMission.love.servicePanelOpen) { + if (_vm->_awayMission.love.tookN2TankFromServicePanel) + showText(TX_LOV3N023); + else + showText(TX_LOV3N022); + } + else + showText(TX_LOV3N020); +} + +// Use wrench on gas tank, to screw or unscrew it in position +void Room::love3UseWrenchOnGasTank() { + walkCrewman(OBJECT_KIRK, 0x10e, 0xae, 2); +} + +void Room::love3ReachedGasTankToUnscrew() { + loadActorAnim2(OBJECT_KIRK, "kusehe", -1, -1, 2); + playVoc("MUR3E1S"); +} + +void Room::love3ScrewedOrUnscrewedGasTank() { + if (!_vm->_awayMission.love.gasTankUnscrewed) { + showText(TX_LOV3N012); + if (!_vm->_awayMission.redshirtDead) + showText(TX_SPEAKER_FERRIS, TX_LOV3_022); + _vm->_awayMission.love.gasTankUnscrewed = true; + } + else { + showText(TX_LOV3N015); + _vm->_awayMission.love.gasTankUnscrewed = false; + } +} + + +void Room::love3UseWrenchOnO2OrH2Gas() { + showText(TX_SPEAKER_SPOCK, TX_LOV3_016); +} + + +// Use wrench on N2 gas = putting it from the inventory back to the service panel +void Room::love3UseWrenchOnN2Gas() { + walkCrewman(OBJECT_KIRK, 0x10e, 0xae, 15); +} + +void Room::love3ReachedGasTankToPutDown() { + loadActorAnim2(OBJECT_KIRK, "kusehe", -1, -1, 3); + playVoc("MUR3E1S"); +} + +void Room::love3PutN2TankBack() { + showText(TX_LOV3N013); + _vm->_awayMission.love.tookN2TankFromServicePanel = false; + loseItem(OBJECT_IN2GAS); + loadActorAnim(OBJECT_GAS_TANK, "r4n2", 0, 0, 0); } } diff --git a/engines/startrek/startrek.cpp b/engines/startrek/startrek.cpp index 26c8c54393..16c5d206d1 100644 --- a/engines/startrek/startrek.cpp +++ b/engines/startrek/startrek.cpp @@ -84,7 +84,7 @@ StarTrekEngine::StarTrekEngine(OSystem *syst, const StarTrekGameDescription *gam _textboxHasMultipleChoices = false; _missionToLoad = "LOVE"; - _roomIndexToLoad = 2; + _roomIndexToLoad = 3; for (int i = 0; i < NUM_OBJECTS; i++) _itemList[i] = g_itemList[i]; diff --git a/engines/startrek/text.h b/engines/startrek/text.h index b6b1c0d1f8..53062fbe7b 100644 --- a/engines/startrek/text.h +++ b/engines/startrek/text.h @@ -962,6 +962,74 @@ enum GameStringIDs { TX_LOV2N051, + TX_LOV3_001, + TX_LOV3_002, + TX_LOV3_003, + TX_LOV3_004, + TX_LOV3_005, + TX_LOV3_006, + TX_LOV3_007, + TX_LOV3_008, + TX_LOV3_009, + TX_LOV3_010, + TX_LOV3_011, + TX_LOV3_012, + TX_LOV3_013, + TX_LOV3_014, + TX_LOV3_015, + TX_LOV3_016, + TX_LOV3_017, + TX_LOV3_018, + TX_LOV3_019, + TX_LOV3_020, + TX_LOV3_021, + TX_LOV3_022, + TX_LOV3_023, + TX_LOV3_024, + TX_LOV3_025, + TX_LOV3_026, + TX_LOV3N000, + TX_LOV3N001, + TX_LOV3N002, + TX_LOV3N003, + TX_LOV3N004, + TX_LOV3N005, + TX_LOV3N006, + TX_LOV3N007, + TX_LOV3N008, + TX_LOV3N009, + TX_LOV3N010, + TX_LOV3N011, + TX_LOV3N012, + TX_LOV3N013, + TX_LOV3N014, + TX_LOV3N015, + TX_LOV3N016, + TX_LOV3N017, + TX_LOV3N018, + TX_LOV3N019, + TX_LOV3N020, + TX_LOV3N021, + TX_LOV3N022, + TX_LOV3N023, + TX_LOV3N024, + TX_LOV3N025, + TX_LOV3N026, + TX_LOV3N027, + TX_LOV3N028, + TX_LOV3N029, + TX_LOV3N030, + TX_LOV3N031, + TX_LOV3N032, + TX_LOV3NA08, + TX_LOV3NA09, + TX_LOV3NA20, + TX_LOV3NA21, + TX_LOV3NA22, + TX_LOV3NA23, + TX_LOV3NJ32, + + TX_END }; @@ -1870,6 +1938,74 @@ const char * const g_gameStrings[] = { "#LOV2\\LOV2N049#The machine synthesizes a quantity of inert matter.", "#LOV2\\LOV2N050#The machine synthesizes a quantity of wet grey goo.", "#LOV2\\LOV2N051#The machine synthesizes a quantity of wet grey goo.", + + + "#LOV3\\LOV3_001#At least all this equipment appears to be operating.", + "#LOV3\\LOV3_002#A prime source of raw material for TLDTH gas.", + "#LOV3\\LOV3_003#Captain, the fusion reactor doesn't seem to have been tampered with. I suggest we leave the controls as they are.", + "#LOV3\\LOV3_004#Captain, we can introduce the Romulan Laughing Gas into the station's ventilation system from here.", + "#LOV3\\LOV3_005#Except for the Oroborus virus, I'm not picking up anything unusual.", + "#LOV3\\LOV3_006#I'm picking up some strange, airborne virus. I can't identify it without more information.", + "#LOV3\\LOV3_007#Ouch!", + "#LOV3\\LOV3_008#Ah. The station's fusion reactor. Very nice. What are we going to tour next, the ventilation system?", + "#LOV3\\LOV3_009#I didn't realize that they used these old fusion reactors anymore.", + "#LOV3\\LOV3_010#I don't suppose you'd enjoy the psychological release of a few good belly laughs, Spock? We could open the canister right here, if you like.", + "#LOV3\\LOV3_011#I think one application of gas is sufficient, Captain.", + "#LOV3\\LOV3_012#Nitrous oxide affects humans, but not Romulans. However, a similar effect can be produced by the gas TLTDH.", + "#LOV3\\LOV3_013#Nothing unusual is detected.", + "#LOV3\\LOV3_014#The fusion reactor is functioning at peak efficiency. There is no need to tamper with its current operation.", + "#LOV3\\LOV3_015#The unit cannot lift something fastened to the body of the station, Captain. The tank must be detached first.", + "#LOV3\\LOV3_016#This is not wise, Captain. I don't believe we can safely substitute a different gas in this location.", + "#LOV3\\LOV3_017#We should now be able to proceed safely to the lower level.", + "#LOV3\\LOV3_018#Captain, the instruments are far too delicate for such abuse. We may set off a chain reaction that would destroy the entire space station.", + "#LOV3\\LOV3_019#Actually, doctor, as Mr. Scott would tell you, the Cochrane-500 is renowned for its reliability and perfectly suited for a station of this size.", + "#LOV3\\LOV3_020#I would strongly recommend against it, Doctor.", + "#LOV3\\LOV3_021#Good thing the person who designed these stations built in safeguards against an accidental spill!", + "#LOV3\\LOV3_022#I guess this made it easier to replace the tank every so often, eh Captain?", + "#LOV3\\LOV3_023#It doesn't sound like it subdued them, Captain. If anything, it just made them angry.", + "#LOV3\\LOV3_024#Sir, I'll watch the door so we don't get cornered.", + "#LOV3\\LOV3_025#It sure beats hauling it around on our backs, sir.", + "#LOV3\\LOV3_026#Hey, this thing's real old, isn't it?", + "#LOV3\\LOV3N000#All readings are normal.", // TYPO: audio filename was wrong + "#LOV3\\LOV3N001#Cursing and coughing echo up the air shaft.", + "#LOV3\\LOV3N002#It's a standard adjustable metric socket wrench.", + "#LOV3\\LOV3N003#Kirk is looking closely at the equipment.", + "#LOV3\\LOV3N004#Lt. Ferris is carefully watching the hallway", + "#LOV3\\LOV3N005#McCoy is fidgeting around.", + "#LOV3\\LOV3N006#N gas tank.", // FIXME: N2 (with superscript) + "#LOV3\\LOV3N007#The tank is too heavy to move by muscle alone.", + "#LOV3\\LOV3N008#Spock is analyzing the surroundings.", + "#LOV3\\LOV3N009#The air vent becomes wet.", + "#LOV3\\LOV3N010#The antigrav unit hums and emits the stink of ozone before it failsafes.", + "#LOV3\\LOV3N011#The shaft is too small to crawl through.", + "#LOV3\\LOV3N012#The tank detaches easily.", + "#LOV3\\LOV3N013#The tank fits into place and is easy to reattach.", + "#LOV3\\LOV3N014#The tank is large and heavy, with its feed lines firmly attached.", + "#LOV3\\LOV3N015#The tank is now firmly attached to its feed lines.", + "#LOV3\\LOV3N016#The vent is now open. It leads to the lower deck.", + "#LOV3\\LOV3N017#There is a pile of stripped insulation that fell out of the Engineering access panel.", + "#LOV3\\LOV3N018#There seems to be no effect.", + "#LOV3\\LOV3N019#This is a screen and filter for the ventilation shaft.", + "#LOV3\\LOV3N020#The panel closes.", + "#LOV3\\LOV3N021#The panel is open. You see vast quantities of dust and stripped insulation from wiring repairs made to the console in the past.", + "#LOV3\\LOV3N022#The panel opens. You see a gas tank labeled N, with its feed lines running deeper into the wall.", // FIXME: N2 (with superscript) + "#LOV3\\LOV3N023#The panel opens.", + "#LOV3\\LOV3N024#This is the engineering room. All appears normal.", + "#LOV3\\LOV3N025#This vent is currently closed.", + "#LOV3\\LOV3N026#Turbines of a Cochrane-500 Class Fusion drive, manufactured over a century ago on Alpha Centuri.", + "#LOV3\\LOV3N027#You already have some insulation.", + "#LOV3\\LOV3N028#You already have the wrench.", + "#LOV3\\LOV3N029#You grab a handful of insulation.", + "#LOV3\\LOV3N030#You need something to pry this open.", + "#LOV3\\LOV3N031#You pick up a large wrench.", + "#LOV3\\LOV3N032#You replace the air vent cover.", + "#LOV3\\LOV3NA08#With a hiss, the Romulan Laughing Gas billows down the vent. Things are strangely quiet below.", + "#LOV3\\LOV3NA09#With a hiss, the Romulan Laughing Gas billows down the vent. You hear the muffled sounds through the vent of hearty Romulan laughter, followed by the dull thud of bodies hitting the deck.", + "#LOV3\\LOV3NA20#This is a service access panel, permitting used-up or worn materials to be replaced.", + "#LOV3\\LOV3NA21#This is a vent shaft that leads to the lower level.", + "#LOV3\\LOV3NA22#This is an engineering access panel, allowing repairs to be made to the interior wiring in the equipment.", + "#LOV3\\LOV3NA23#This is the engineering center for the ARK7 space station.", + "#LOV3\\LOV3NJ32#You attach the antigrav unit to the gas tank. It can be moved freely.", }; } -- cgit v1.2.3