mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-23 19:16:21 +00:00
STARTREK: LOVE4
This commit is contained in:
parent
08ead492d8
commit
43a0a574ff
@ -41,7 +41,7 @@ void StarTrekEngine::initAwayMission() {
|
||||
_roomIndexToLoad = -1;
|
||||
|
||||
// Load crew positions for beaming in
|
||||
initAwayCrewPositions(1);
|
||||
initAwayCrewPositions(0);
|
||||
}
|
||||
|
||||
void StarTrekEngine::runAwayMission() {
|
||||
|
@ -162,7 +162,8 @@ struct AwayMission {
|
||||
bool field3c; // 0x3c
|
||||
bool grateRemoved; // 0x3d
|
||||
bool insulationOnGround; // 0x3e
|
||||
bool field3f; // 0x3f
|
||||
bool visitedRoomWithRomulans; // 0x3f
|
||||
bool romulansCured; // 0x40
|
||||
bool romulansUnconsciousFromVirus; // 0x41
|
||||
bool spockAccessedConsole; // 0x49
|
||||
bool mccoyAccessedConsole; // 0x4a
|
||||
@ -171,6 +172,7 @@ struct AwayMission {
|
||||
bool gotPointsForOpeningGrate; // 0x4d
|
||||
bool gotPointsForGassingRomulans; // 0x4e
|
||||
bool gotCure; // 0x4f
|
||||
bool gotPointsForHydratingRomulans; // 0x51
|
||||
int16 missionScore; // 0x52
|
||||
} love;
|
||||
};
|
||||
|
@ -97,10 +97,10 @@ private:
|
||||
|
||||
|
||||
// Interface for room-specific code
|
||||
void loadActorAnim(int actorIndex, Common::String anim, int16 x, int16 y, uint16 field66); // Cmd 0x00
|
||||
void loadActorAnim(int actorIndex, Common::String anim, int16 x, int16 y, uint16 field66 = 0); // Cmd 0x00
|
||||
void loadActorAnimC(int actorIndex, Common::String anim, int16 x, int16 y, void (Room::*funcPtr)());// Cmd 0x00
|
||||
void loadActorStandAnim(int actorIndex); // Cmd 0x01
|
||||
void loadActorAnim2(int actorIndex, Common::String anim, int16 x, int16 y, uint16 field66);// Cmd 0x02
|
||||
void loadActorAnim2(int actorIndex, Common::String anim, int16 x, int16 y, uint16 field66 = 0);// Cmd 0x02
|
||||
int showRoomSpecificText(const char **textAddr); // (Deprecated, use function below) // Cmd 0x03
|
||||
int showText(const int *text); // Cmd 0x03
|
||||
int showText(int speaker, int text); // Cmd 0x03
|
||||
@ -1014,6 +1014,42 @@ public:
|
||||
|
||||
// LOVE4
|
||||
void love4Tick1();
|
||||
void love4Tick10();
|
||||
void love4WalkToDoor();
|
||||
void love4TouchedHotspot0();
|
||||
void love4DoorOpenedOrReached();
|
||||
void love4UseKirkOnLadder();
|
||||
void love4ReachedLadder();
|
||||
void love4UseStunPhaserOnRomulan();
|
||||
void love4LookAnywhere();
|
||||
void love4LookAtLadder();
|
||||
void love4LookAtDoor();
|
||||
void love4LookAtKirk();
|
||||
void love4LookAtMccoy();
|
||||
void love4LookAtSpock();
|
||||
void love4LookAtRedshirt();
|
||||
void love4LookAtRomulan();
|
||||
void love4TalkToKirk();
|
||||
void love4TalkToMccoy();
|
||||
void love4TalkToRedshirt();
|
||||
void love4TalkToSpock();
|
||||
void love4TalkToRomulan();
|
||||
void love4UseMTricorderOnRomulan();
|
||||
void love4UseMTricorderAnywhere();
|
||||
void love4UseSTricorderAnywhere();
|
||||
void love4UseCureOnRomulan();
|
||||
void love4MccoyReachedRomulan4();
|
||||
void love4MccoyCuredRomulan4();
|
||||
void love4MccoyReachedRomulan3();
|
||||
void love4MccoyCuredRomulan3();
|
||||
void love4MccoyReachedRomulan2();
|
||||
void love4MccoyCuredRomulan2();
|
||||
void love4MccoyReachedRomulan1();
|
||||
void love4MccoyCuredRomulan1();
|
||||
void love4UseWaterOnRomulan();
|
||||
void love4UseMedkitOnRomulan();
|
||||
void love4UseCureSampleOnRomulan();
|
||||
void love4UseAnythingOnRomulan();
|
||||
|
||||
// LOVE5
|
||||
void love5Tick1();
|
||||
@ -1132,6 +1168,12 @@ private:
|
||||
byte _188f; // 0x188f
|
||||
} love3;
|
||||
|
||||
struct {
|
||||
bool gaveWaterToRomulans; // 0xca
|
||||
byte doorOpenCounter; // 0xcb
|
||||
bool walkingToDoor; // 0xcc
|
||||
} love4;
|
||||
|
||||
|
||||
} _roomVar;
|
||||
};
|
||||
|
@ -1141,6 +1141,60 @@ RoomAction love3ActionList[] = {
|
||||
|
||||
RoomAction love4ActionList[] = {
|
||||
{ Action(ACTION_TICK, 1, 0, 0), &Room::love4Tick1 },
|
||||
{ Action(ACTION_TICK, 10, 0, 0), &Room::love4Tick10 },
|
||||
{ Action(ACTION_WALK, 8, 0, 0), &Room::love4WalkToDoor },
|
||||
{ Action(ACTION_WALK, 0x20, 0, 0), &Room::love4WalkToDoor },
|
||||
{ Action(ACTION_TOUCHED_HOTSPOT, 0, 0, 0), &Room::love4TouchedHotspot0 },
|
||||
{ Action(ACTION_USE, OBJECT_KIRK, 0x21, 0), &Room::love4UseKirkOnLadder },
|
||||
{ Action(ACTION_USE, OBJECT_IPHASERS, 9, 0), &Room::love4UseStunPhaserOnRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_IPHASERS, 10, 0), &Room::love4UseStunPhaserOnRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_IPHASERS, 11, 0), &Room::love4UseStunPhaserOnRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_IPHASERS, 12, 0), &Room::love4UseStunPhaserOnRomulan },
|
||||
{ Action(ACTION_LOOK, -1, 0, 0), &Room::love4LookAnywhere },
|
||||
{ Action(ACTION_LOOK, 0x21, 0, 0), &Room::love4LookAtLadder },
|
||||
{ Action(ACTION_LOOK, 8, 0, 0), &Room::love4LookAtDoor },
|
||||
{ Action(ACTION_LOOK, OBJECT_KIRK, 0, 0), &Room::love4LookAtKirk },
|
||||
{ Action(ACTION_LOOK, OBJECT_MCCOY, 0, 0), &Room::love4LookAtMccoy },
|
||||
{ Action(ACTION_LOOK, OBJECT_SPOCK, 0, 0), &Room::love4LookAtSpock },
|
||||
{ Action(ACTION_LOOK, OBJECT_REDSHIRT, 0, 0), &Room::love4LookAtRedshirt },
|
||||
{ Action(ACTION_LOOK, 9, 0, 0), &Room::love4LookAtRomulan },
|
||||
{ Action(ACTION_LOOK, 10, 0, 0), &Room::love4LookAtRomulan },
|
||||
{ Action(ACTION_LOOK, 11, 0, 0), &Room::love4LookAtRomulan },
|
||||
{ Action(ACTION_LOOK, 12, 0, 0), &Room::love4LookAtRomulan },
|
||||
{ Action(ACTION_TALK, OBJECT_KIRK, 0, 0), &Room::love4TalkToKirk },
|
||||
{ Action(ACTION_TALK, OBJECT_MCCOY, 0, 0), &Room::love4TalkToMccoy },
|
||||
{ Action(ACTION_TALK, OBJECT_REDSHIRT, 0, 0), &Room::love4TalkToRedshirt },
|
||||
{ Action(ACTION_TALK, OBJECT_SPOCK, 0, 0), &Room::love4TalkToSpock },
|
||||
{ Action(ACTION_TALK, 9, 0, 0), &Room::love4TalkToRomulan },
|
||||
{ Action(ACTION_TALK, 10, 0, 0), &Room::love4TalkToRomulan },
|
||||
{ Action(ACTION_TALK, 11, 0, 0), &Room::love4TalkToRomulan },
|
||||
{ Action(ACTION_TALK, 12, 0, 0), &Room::love4TalkToRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_IMTRICOR, 9, 0), &Room::love4UseMTricorderOnRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_IMTRICOR, 10, 0), &Room::love4UseMTricorderOnRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_IMTRICOR, 11, 0), &Room::love4UseMTricorderOnRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_IMTRICOR, 12, 0), &Room::love4UseMTricorderOnRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_IMTRICOR, -1, 0), &Room::love4UseMTricorderAnywhere },
|
||||
{ Action(ACTION_USE, OBJECT_ISTRICOR, -1, 0), &Room::love4UseSTricorderAnywhere },
|
||||
{ Action(ACTION_USE, OBJECT_ICURE, 9, 0), &Room::love4UseCureOnRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_ICURE, 10, 0), &Room::love4UseCureOnRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_ICURE, 11, 0), &Room::love4UseCureOnRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_ICURE, 12, 0), &Room::love4UseCureOnRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_IH2O, 9, 0), &Room::love4UseWaterOnRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_IH2O, 10, 0), &Room::love4UseWaterOnRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_IH2O, 11, 0), &Room::love4UseWaterOnRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_IH2O, 12, 0), &Room::love4UseWaterOnRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_IMEDKIT, 9, 0), &Room::love4UseMedkitOnRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_IMEDKIT, 10, 0), &Room::love4UseMedkitOnRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_IMEDKIT, 11, 0), &Room::love4UseMedkitOnRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_IMEDKIT, 12, 0), &Room::love4UseMedkitOnRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_ISAMPLE, 9, 0), &Room::love4UseCureSampleOnRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_ISAMPLE, 10, 0), &Room::love4UseCureSampleOnRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_ISAMPLE, 11, 0), &Room::love4UseCureSampleOnRomulan },
|
||||
{ Action(ACTION_USE, OBJECT_ISAMPLE, 12, 0), &Room::love4UseCureSampleOnRomulan },
|
||||
{ Action(ACTION_USE, -1, 9, 0), &Room::love4UseAnythingOnRomulan },
|
||||
{ Action(ACTION_USE, -1, 10, 0), &Room::love4UseAnythingOnRomulan },
|
||||
{ Action(ACTION_USE, -1, 11, 0), &Room::love4UseAnythingOnRomulan },
|
||||
{ Action(ACTION_USE, -1, 12, 0), &Room::love4UseAnythingOnRomulan },
|
||||
};
|
||||
|
||||
RoomAction love5ActionList[] = {
|
||||
|
@ -61,7 +61,6 @@ void Room::love3Tick1() {
|
||||
_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;
|
||||
@ -69,7 +68,7 @@ void Room::love3Tick1() {
|
||||
}
|
||||
|
||||
void Room::love3Tick80() {
|
||||
if (!_vm->_awayMission.love.field3f && haveItem(OBJECT_IRLG)) {
|
||||
if (!_vm->_awayMission.love.visitedRoomWithRomulans && haveItem(OBJECT_IRLG)) {
|
||||
showText(TX_SPEAKER_MCCOY, TX_LOV3_010);
|
||||
showText(TX_SPEAKER_SPOCK, TX_LOV3_020);
|
||||
}
|
||||
@ -145,9 +144,9 @@ void Room::love3TalkToKirk() {
|
||||
}
|
||||
|
||||
void Room::love3TalkToSpock() {
|
||||
if (_vm->_awayMission.love.field3f)
|
||||
if (_vm->_awayMission.love.visitedRoomWithRomulans)
|
||||
showText(TX_SPEAKER_SPOCK, TX_LOV3_003);
|
||||
if (_vm->_awayMission.love.romulansUnconsciousFromLaughingGas)
|
||||
else if (_vm->_awayMission.love.romulansUnconsciousFromLaughingGas)
|
||||
showText(TX_SPEAKER_SPOCK, TX_LOV3_017);
|
||||
else if (haveItem(OBJECT_IRLG))
|
||||
showText(TX_SPEAKER_SPOCK, TX_LOV3_004);
|
||||
|
@ -22,14 +22,275 @@
|
||||
|
||||
#include "startrek/room.h"
|
||||
|
||||
#define OBJECT_DOOR1 8
|
||||
#define OBJECT_DOOR 8
|
||||
#define OBJECT_ROMULAN_1 9
|
||||
#define OBJECT_ROMULAN_2 10
|
||||
#define OBJECT_ROMULAN_3 11
|
||||
#define OBJECT_ROMULAN_4 12
|
||||
|
||||
#define HOTSPOT_CONSOLE 0x20
|
||||
#define HOTSPOT_DOOR 0x20
|
||||
#define HOTSPOT_LADDER 0x21
|
||||
|
||||
namespace StarTrek {
|
||||
|
||||
void Room::love4Tick1() {
|
||||
playVoc("LOV4LOOP");
|
||||
|
||||
if (_vm->_awayMission.love.romulansCured) {
|
||||
loadActorAnim2(OBJECT_ROMULAN_1, "s3r5r1b", 0x36, 0xb3, 0);
|
||||
loadActorAnim2(OBJECT_ROMULAN_2, "s3r5r2b", 0xb9, 0xbb, 0);
|
||||
loadActorAnim2(OBJECT_ROMULAN_3, "s3r5r3b", 0xef, 0xc4, 0);
|
||||
loadActorAnim2(OBJECT_ROMULAN_4, "s3r5r4b", 0x12a, 0xaa, 0);
|
||||
}
|
||||
else {
|
||||
loadActorAnim2(OBJECT_ROMULAN_1, "s3r5r1a", 0x36, 0xb3, 0);
|
||||
loadActorAnim2(OBJECT_ROMULAN_2, "s3r5r2a", 0xb9, 0xbb, 0);
|
||||
loadActorAnim2(OBJECT_ROMULAN_3, "s3r5r3a", 0xef, 0xc4, 0);
|
||||
loadActorAnim2(OBJECT_ROMULAN_4, "s3r5r4a", 0x12a, 0xaa, 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;
|
||||
|
||||
loadActorAnim(OBJECT_DOOR, "s3r5d1a", 0x90, 0x99, 0);
|
||||
}
|
||||
|
||||
void Room::love4Tick10() {
|
||||
if (!_vm->_awayMission.love.visitedRoomWithRomulans) {
|
||||
playMidiMusicTracks(1, -1);
|
||||
_vm->_awayMission.love.visitedRoomWithRomulans = true;
|
||||
}
|
||||
}
|
||||
|
||||
void Room::love4WalkToDoor() {
|
||||
_vm->_awayMission.disableInput = true;
|
||||
_roomVar.love4.walkingToDoor = true;
|
||||
walkCrewmanC(OBJECT_KIRK, 0x91, 0x9c, &Room::love4DoorOpenedOrReached);
|
||||
}
|
||||
|
||||
// Triggers the door opening
|
||||
void Room::love4TouchedHotspot0() {
|
||||
if (_roomVar.love4.walkingToDoor) {
|
||||
loadActorAnimC(OBJECT_DOOR, "s3r5d1", 0x90, 0x99, &Room::love4DoorOpenedOrReached);
|
||||
playSoundEffectIndex(SND_DOOR1);
|
||||
}
|
||||
}
|
||||
|
||||
void Room::love4DoorOpenedOrReached() {
|
||||
_roomVar.love4.doorOpenCounter++;
|
||||
if (_roomVar.love4.doorOpenCounter == 2)
|
||||
loadRoomIndex(5, 1);
|
||||
}
|
||||
|
||||
void Room::love4UseKirkOnLadder() {
|
||||
walkCrewmanC(OBJECT_KIRK, 0xf6, 0xac, &Room::love4ReachedLadder);
|
||||
}
|
||||
|
||||
void Room::love4ReachedLadder() {
|
||||
loadRoomIndex(1, 2);
|
||||
}
|
||||
|
||||
void Room::love4UseStunPhaserOnRomulan() {
|
||||
showText(TX_SPEAKER_MCCOY, TX_LOV4_007);
|
||||
}
|
||||
|
||||
void Room::love4LookAnywhere() {
|
||||
showText(TX_LOV4N009);
|
||||
}
|
||||
|
||||
void Room::love4LookAtLadder() {
|
||||
showText(TX_LOV4N010);
|
||||
}
|
||||
|
||||
void Room::love4LookAtDoor() {
|
||||
showText(TX_LOV4N008);
|
||||
}
|
||||
|
||||
void Room::love4LookAtKirk() {
|
||||
showText(TX_LOV4N002);
|
||||
}
|
||||
|
||||
void Room::love4LookAtMccoy() {
|
||||
// BUGFIX: original game plays audio "LOV4/LOV4_025". This is mccoy saying something.
|
||||
// It doesn't match up with the actual text, which is the narrator saying that mccoy
|
||||
// is thinking it.
|
||||
// Not sure if this was an intentional decision, but there is another unused audio
|
||||
// file which matches with the text more accurately, so I'm using that instead.
|
||||
showText(TX_LOV4N012);
|
||||
}
|
||||
|
||||
void Room::love4LookAtSpock() {
|
||||
showText(TX_LOV4N003);
|
||||
}
|
||||
|
||||
void Room::love4LookAtRedshirt() {
|
||||
showText(TX_LOV4N001);
|
||||
}
|
||||
|
||||
void Room::love4LookAtRomulan() {
|
||||
if (!_vm->_awayMission.love.romulansCured)
|
||||
showText(TX_LOV4N006);
|
||||
else
|
||||
showText(TX_LOV4N011);
|
||||
}
|
||||
|
||||
void Room::love4TalkToKirk() {
|
||||
showText(TX_SPEAKER_KIRK, TX_LOV4_005);
|
||||
showText(TX_SPEAKER_MCCOY, TX_LOV4_024);
|
||||
showText(TX_SPEAKER_KIRK, TX_LOV4_002);
|
||||
}
|
||||
|
||||
void Room::love4TalkToMccoy() {
|
||||
if (_vm->_awayMission.love.romulansCured)
|
||||
showText(TX_SPEAKER_MCCOY, TX_LOV4_022);
|
||||
else
|
||||
showText(TX_SPEAKER_MCCOY, TX_LOV4_010);
|
||||
}
|
||||
|
||||
void Room::love4TalkToRedshirt() {
|
||||
showText(TX_SPEAKER_FERRIS, TX_LOV4_028);
|
||||
}
|
||||
|
||||
void Room::love4TalkToSpock() {
|
||||
showText(TX_SPEAKER_SPOCK, TX_LOV4_027);
|
||||
showText(TX_SPEAKER_KIRK, TX_LOV4_003);
|
||||
}
|
||||
|
||||
void Room::love4TalkToRomulan() {
|
||||
if (_vm->_awayMission.love.romulansCured)
|
||||
showText(TX_LOV4N007); // BUGFIX: original didn't play audio
|
||||
}
|
||||
|
||||
void Room::love4UseMTricorderOnRomulan() {
|
||||
if (_vm->_awayMission.love.romulansCured)
|
||||
mccoyScan(DIR_S, TX_LOV4_018, false);
|
||||
else
|
||||
mccoyScan(DIR_S, TX_LOV4_015, false);
|
||||
}
|
||||
|
||||
void Room::love4UseMTricorderAnywhere() {
|
||||
if (_vm->_awayMission.love.romulansCured)
|
||||
mccoyScan(DIR_S, TX_LOV4_019, false);
|
||||
else if (_vm->_awayMission.love.romulansUnconsciousFromLaughingGas)
|
||||
mccoyScan(DIR_S, TX_LOV4_020, false);
|
||||
else
|
||||
mccoyScan(DIR_S, TX_LOV4_021, false);
|
||||
}
|
||||
|
||||
void Room::love4UseSTricorderAnywhere() {
|
||||
spockScan(DIR_S, TX_LOV4_006, false);
|
||||
}
|
||||
|
||||
|
||||
// Mccoy walks around to all romulans, giving each the cure
|
||||
void Room::love4UseCureOnRomulan() {
|
||||
if (_vm->_awayMission.love.romulansCured)
|
||||
showText(TX_SPEAKER_MCCOY, TX_LOV4_013);
|
||||
else {
|
||||
_vm->_awayMission.love.missionScore += 2;
|
||||
_vm->_awayMission.love.romulansCured = true;
|
||||
_vm->_awayMission.disableInput = true;
|
||||
walkCrewmanC(OBJECT_MCCOY, 0x10e, 0xb1, &Room::love4MccoyReachedRomulan4);
|
||||
}
|
||||
}
|
||||
|
||||
void Room::love4MccoyReachedRomulan4() {
|
||||
loadActorAnimC(OBJECT_MCCOY, "museme", -1, -1, &Room::love4MccoyCuredRomulan4);
|
||||
}
|
||||
|
||||
void Room::love4MccoyCuredRomulan4() {
|
||||
loadActorAnim2(OBJECT_ROMULAN_4, "s3r5r4", 0x12a, 0xaa);
|
||||
walkCrewmanC(OBJECT_MCCOY, 0xeb, 0xc4, &Room::love4MccoyReachedRomulan3);
|
||||
}
|
||||
|
||||
void Room::love4MccoyReachedRomulan3() {
|
||||
loadActorAnimC(OBJECT_MCCOY, "musele", -1, -1, &Room::love4MccoyCuredRomulan3);
|
||||
}
|
||||
|
||||
void Room::love4MccoyCuredRomulan3() {
|
||||
loadActorAnim2(OBJECT_ROMULAN_3, "s3r5r3", 0xef, 0xc4);
|
||||
walkCrewmanC(OBJECT_MCCOY, 0xb9, 0xc3, &Room::love4MccoyReachedRomulan2);
|
||||
}
|
||||
|
||||
void Room::love4MccoyReachedRomulan2() {
|
||||
loadActorAnimC(OBJECT_MCCOY, "musemn", -1, -1, &Room::love4MccoyCuredRomulan2);
|
||||
}
|
||||
|
||||
void Room::love4MccoyCuredRomulan2() {
|
||||
loadActorAnim2(OBJECT_ROMULAN_2, "s3r5r2", 0xb9, 0xbb);
|
||||
walkCrewmanC(OBJECT_MCCOY, 0x36, 0xba, &Room::love4MccoyReachedRomulan1);
|
||||
}
|
||||
|
||||
void Room::love4MccoyReachedRomulan1() {
|
||||
loadActorAnimC(OBJECT_MCCOY, "musemn", -1, -1, &Room::love4MccoyCuredRomulan1);
|
||||
}
|
||||
|
||||
void Room::love4MccoyCuredRomulan1() {
|
||||
loadActorAnim2(OBJECT_ROMULAN_1, "s3r5r1", 0x36, 0xb3, 0);
|
||||
|
||||
showText(TX_LOV4N005);
|
||||
if (!_roomVar.love4.gaveWaterToRomulans)
|
||||
showText(TX_LOV4_023);
|
||||
|
||||
_vm->_awayMission.disableInput = false;
|
||||
}
|
||||
|
||||
|
||||
void Room::love4UseWaterOnRomulan() {
|
||||
// BUGFIX: If the romulans are unconscious, you can't use water on them.
|
||||
// In the original, you could use water on them, but there would be no corresponding
|
||||
// narration, you'd get no points for it, and you'd lose the water anyway.
|
||||
if (!_vm->_awayMission.love.romulansCured)
|
||||
showText(TX_SPEAKER_MCCOY, TX_LOV4_009);
|
||||
else {
|
||||
_roomVar.love4.gaveWaterToRomulans = true;
|
||||
if (_vm->_awayMission.love.romulansCured) {
|
||||
showText(TX_LOV4N013);
|
||||
showText(TX_SPEAKER_MCCOY, TX_LOV4_026);
|
||||
showText(TX_SPEAKER_KIRK, TX_LOV4_001);
|
||||
if (!_vm->_awayMission.love.gotPointsForHydratingRomulans) {
|
||||
_vm->_awayMission.love.gotPointsForHydratingRomulans = true;
|
||||
_vm->_awayMission.love.missionScore += 2;
|
||||
}
|
||||
}
|
||||
|
||||
loseItem(OBJECT_IH2O);
|
||||
}
|
||||
|
||||
// Note the following unused block of code, an alternative implementation of the
|
||||
// function? If they succumbed to the virus from taking too long, McCoy doesn't let
|
||||
// you hydrate them, saying it's dangerous. Otherwise, the romulans get up even
|
||||
// without receiving the cure. (At least the narration says they do.)
|
||||
// These events don't make too much sense, probably cut in the original release, but
|
||||
// they did get voice acted anyway.
|
||||
if (false) {
|
||||
if (_vm->_awayMission.love.romulansUnconsciousFromVirus)
|
||||
showText(TX_SPEAKER_MCCOY, TX_LOV4_009);
|
||||
else {
|
||||
showText(TX_LOV4N004);
|
||||
if (!_vm->_awayMission.redshirtDead) {
|
||||
showText(TX_SPEAKER_FERRIS, TX_LOV4_029);
|
||||
showText(TX_SPEAKER_KIRK, TX_LOV4_004);
|
||||
}
|
||||
showText(TX_SPEAKER_MCCOY, TX_LOV4_011);
|
||||
loseItem(OBJECT_IH2O);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Room::love4UseMedkitOnRomulan() {
|
||||
showText(TX_SPEAKER_MCCOY, TX_LOV4_012);
|
||||
}
|
||||
|
||||
void Room::love4UseCureSampleOnRomulan() {
|
||||
showText(TX_SPEAKER_MCCOY, TX_LOV4_014);
|
||||
}
|
||||
|
||||
void Room::love4UseAnythingOnRomulan() {
|
||||
showText(TX_SPEAKER_MCCOY, TX_LOV4_017);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -84,7 +84,7 @@ StarTrekEngine::StarTrekEngine(OSystem *syst, const StarTrekGameDescription *gam
|
||||
_textboxHasMultipleChoices = false;
|
||||
|
||||
_missionToLoad = "LOVE";
|
||||
_roomIndexToLoad = 3;
|
||||
_roomIndexToLoad = 4;
|
||||
|
||||
for (int i = 0; i < NUM_OBJECTS; i++)
|
||||
_itemList[i] = g_itemList[i];
|
||||
|
@ -1030,6 +1030,49 @@ enum GameStringIDs {
|
||||
TX_LOV3NJ32,
|
||||
|
||||
|
||||
TX_LOV4_001,
|
||||
TX_LOV4_002,
|
||||
TX_LOV4_003,
|
||||
TX_LOV4_004,
|
||||
TX_LOV4_005,
|
||||
TX_LOV4_006,
|
||||
TX_LOV4_007,
|
||||
TX_LOV4_009,
|
||||
TX_LOV4_010,
|
||||
TX_LOV4_011,
|
||||
TX_LOV4_012,
|
||||
TX_LOV4_013,
|
||||
TX_LOV4_014,
|
||||
TX_LOV4_015,
|
||||
TX_LOV4_016,
|
||||
TX_LOV4_017,
|
||||
TX_LOV4_018,
|
||||
TX_LOV4_019,
|
||||
TX_LOV4_020,
|
||||
TX_LOV4_021,
|
||||
TX_LOV4_022,
|
||||
TX_LOV4_023,
|
||||
TX_LOV4_024,
|
||||
TX_LOV4_025,
|
||||
TX_LOV4_026,
|
||||
TX_LOV4_027,
|
||||
TX_LOV4_028,
|
||||
TX_LOV4_029,
|
||||
TX_LOV4N000,
|
||||
TX_LOV4N001,
|
||||
TX_LOV4N002,
|
||||
TX_LOV4N003,
|
||||
TX_LOV4N004,
|
||||
TX_LOV4N005,
|
||||
TX_LOV4N006,
|
||||
TX_LOV4N007,
|
||||
TX_LOV4N008,
|
||||
TX_LOV4N009,
|
||||
TX_LOV4N010,
|
||||
TX_LOV4N011,
|
||||
TX_LOV4N012,
|
||||
TX_LOV4N013,
|
||||
|
||||
|
||||
TX_END
|
||||
};
|
||||
@ -2006,6 +2049,50 @@ const char * const g_gameStrings[] = {
|
||||
"#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.",
|
||||
|
||||
|
||||
"#LOV4\\LOV4_001#We aren't barbarians, in spite of what some people think.",
|
||||
"#LOV4\\LOV4_002#Being surrounded by Romulans and not at gun point.",
|
||||
"#LOV4\\LOV4_003#I know Mr. Spock. But we'll get through this.",
|
||||
"#LOV4\\LOV4_004#Lt. Ferris, collect their weapons.",
|
||||
"#LOV4\\LOV4_005#Well, there's a first time for everything.",
|
||||
"#LOV4\\LOV4_006#Except for the Romulans, I can detect no other lifeforms in this room.",
|
||||
"#LOV4\\LOV4_007#Are you crazy, Jim! That's not going to help in the least!",
|
||||
"#LOV4\\LOV4_009#Careful there! They're suffering from dehydration but it's dangerous to give water to someone while they're unconscious. These men need serum or they're going to die!",
|
||||
"#LOV4\\LOV4_010#Dammit, Jim, I'm a doctor, not a diplomat. I've got to try and save these men.",
|
||||
"#LOV4\\LOV4_011#Dammit, Jim, these men are sick! They need my help!",
|
||||
"#LOV4\\LOV4_012#I don't have the proper medicine to cure them, Jim.",
|
||||
"#LOV4\\LOV4_013#I don't think they need another shot, Jim.",
|
||||
"#LOV4\\LOV4_014#Jim, we need to synthesize more before we can use it.",
|
||||
"#LOV4\\LOV4_015#Jim, we've got to help these men before they die.",
|
||||
"#LOV4\\LOV4_016#Ouch!",
|
||||
"#LOV4\\LOV4_017#That's not working, Jim.",
|
||||
"#LOV4\\LOV4_018#The Romulans have been cured of the Oroborus virus, but they are severely dehydrated and need some rest.",
|
||||
"#LOV4\\LOV4_019#The Romulans have been cured of the Oroborus virus.",
|
||||
"#LOV4\\LOV4_020#The laughing gas did the trick, Jim, but these Romulans are still very, very sick -- they've only got hours left.",
|
||||
"#LOV4\\LOV4_021#These Romulans will die soon if we can't cure them.",
|
||||
"#LOV4\\LOV4_022#They'll be fine now, Jim. They just need some rest.",
|
||||
"#LOV4\\LOV4_023#They're severely dehydrated, but they'll live. We got to them in time.",
|
||||
"#LOV4\\LOV4_024#First time for what?",
|
||||
"#LOV4\\LOV4_025#McCoy thinks to himself: 'Dammit, I'm a doctor, not a diplomat!'",
|
||||
"#LOV4\\LOV4_026#Take it easy now... You'll feel better in a few minutes. Good thing we had the water available, Jim.",
|
||||
"#LOV4\\LOV4_027#I have been in more comfortable situations, Captain.",
|
||||
"#LOV4\\LOV4_028#These Romulans appear to be a negligible threat, sir.",
|
||||
"#LOV4\\LOV4_029#Freeze, Romulans! You're covered!",
|
||||
"#LOV4\\LOV4N000#Door Opens.",
|
||||
"#LOV4\\LOV4N001#Ensign Ferris is looking at the Romulans, in case one of them decides to try something.",
|
||||
"#LOV4\\LOV4N002#James Kirk views the scene with concern.",
|
||||
"#LOV4\\LOV4N003#Mr. Spock is his usual stoic self.",
|
||||
"#LOV4\\LOV4N004#The Romulans come to weakly, reaching for their weapons.",
|
||||
"#LOV4\\LOV4N005#The Romulans stir weakly, then begin to get up... they've all been cured!",
|
||||
"#LOV4\\LOV4N006#These Romulans are totally out of it.",
|
||||
"#LOV4\\LOV4N007#They are in no condition to talk right now.",
|
||||
"#LOV4\\LOV4N008#This door leads into another section of the base.",
|
||||
"#LOV4\\LOV4N009#This is the ARK7's crew quarters. There are only Romulans here.",
|
||||
"#LOV4\\LOV4N010#This ladder leads back to the research lab.",
|
||||
"#LOV4\\LOV4N011#This Romulan is groggy, but conscious.",
|
||||
"#LOV4\\LOV4N012#McCoy thinks to himself: 'Dammit, I'm a doctor, not a diplomat!'",
|
||||
"#LOV4\\LOV4N013#The Romulans drink thirstily and empty the container.",
|
||||
};
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user