aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMatthew Stewart2018-08-07 23:56:59 -0400
committerEugene Sandulenko2018-08-09 08:37:30 +0200
commit1a12a25b54b2c19225b44892db972707a413c31c (patch)
tree04e41739817ad0f6999decd8c52d17e23ee77e17 /engines
parentebc6f194c27f23b74df1fb8a8fb8aed43fcdd050 (diff)
downloadscummvm-rg350-1a12a25b54b2c19225b44892db972707a413c31c.tar.gz
scummvm-rg350-1a12a25b54b2c19225b44892db972707a413c31c.tar.bz2
scummvm-rg350-1a12a25b54b2c19225b44892db972707a413c31c.zip
STARTREK: VENG4
Diffstat (limited to 'engines')
-rw-r--r--engines/startrek/awaymission.h10
-rw-r--r--engines/startrek/room.h44
-rw-r--r--engines/startrek/rooms/veng2.cpp2
-rw-r--r--engines/startrek/rooms/veng3.cpp4
-rw-r--r--engines/startrek/rooms/veng4.cpp315
-rw-r--r--engines/startrek/text.cpp41
-rw-r--r--engines/startrek/text.h37
7 files changed, 444 insertions, 9 deletions
diff --git a/engines/startrek/awaymission.h b/engines/startrek/awaymission.h
index 835a2b72f1..abfa00fd71 100644
--- a/engines/startrek/awaymission.h
+++ b/engines/startrek/awaymission.h
@@ -620,6 +620,10 @@ struct AwayMission {
} sins;
struct {
+ bool usedMedkitOnBrittany; // 0x29
+ bool talkedToBrittany; // 0x2a
+ bool brittanyDead; // 0x2b
+ bool lookedAtBrittany; // 0x2c
bool enteredRoom0FirstTime; // 0x2d
int16 missionScore; // 0x2e
bool bridgeCrewmanDead; // 0x30
@@ -668,14 +672,16 @@ struct AwayMission {
bool putSupportBeamInSickbayHallway; // 0x53
bool clearedDebris; // 0x54
bool lookedAtTurbolift2Door; // 0x55
- bool kirkSuggestedReestablishingPower; // 0x56
+ bool kirkShouldSuggestReestablishingPower; // 0x56
+ bool tookHypoFromSickbay; // 0x57
+ bool tookDrillFromSickbay; // 0x58
bool havePowerPack; // 0x5a
bool tookCableFromSickbayHallway; // 0x5f
bool tookMolecularSaw; // 0x60
bool readEngineeringJournal; // 0x61
bool examinedTorpedoControl; // 0x66
bool field68; // 0x68
- bool field69; // 0x69
+ bool getPointsForHealingBrittany; // 0x69
bool readAllLogs; // 0x6a
bool field6b; // 0x6b
bool field6c; // 0x6c
diff --git a/engines/startrek/room.h b/engines/startrek/room.h
index 78fbe2b19c..0f85f720e9 100644
--- a/engines/startrek/room.h
+++ b/engines/startrek/room.h
@@ -2638,9 +2638,46 @@ public:
void veng3ReachedCable();
void veng3PickedUpCable();
void veng3UseMccoyOnDeadGuy();
+ // TODO: Common code
// VENG4
void veng4Tick1();
+ void veng4TalkToKirk();
+ void veng4TalkToMccoy();
+ void veng4TalkToSpock();
+ void veng4TalkToRedshirt();
+ void veng4UseMccoyOnDeadGuy();
+ void veng4UseHypoOnBrittany();
+ void veng4UseMedkitOnBrittany();
+ void veng4UseMTricorderOnBrittany();
+ void veng4UseMccoyOnBrittany();
+ void veng4MccoyReachedBrittany();
+ void veng4UsedMedkitOnBrittany();
+ void veng4MccoyScannedBrittany();
+ void veng4TalkToBrittany();
+ void veng4LookAtDeadGuy();
+ void veng4LookAtRightBedReadings();
+ void veng4LookAtDoorHotspot();
+ void veng4LookAtKirk();
+ void veng4LookAtSpock();
+ void veng4LookAtMccoy();
+ void veng4LookAtRedshirt();
+ void veng4LookAtLeftBed();
+ void veng4LookAtLeftBedReadings();
+ void veng4LookAtBrittany();
+ void veng4LookAtDrill();
+ void veng4LookAtHypo();
+ void veng4LookAtDoorObject();
+ void veng4LookAnywhere();
+ void veng4GetHypo();
+ void veng4ReachedHypo();
+ void veng4PickedUpHypo();
+ void veng4GetDrill();
+ void veng4ReachedDrill();
+ void veng4PickedUpDrill();
+ void veng4TouchedHotspot0();
+ void veng4WalkToDoor();
+ // TODO: common code
// VENG5
void veng5Tick1();
@@ -2970,10 +3007,15 @@ public:
struct {
// veng1
byte doorOpenCounter; // 0xca
- bool walkingToDoor; // 0xcb
// veng2
byte numCrewmenReadyToBeamOut; // 0xca
+
+ // veng4
+ bool usingMedkitOnBrittany;
+
+ // venga (common)
+ bool walkingToDoor; // 0xcb (veng1), 0xca (veng4)
} veng;
} _roomVar;
diff --git a/engines/startrek/rooms/veng2.cpp b/engines/startrek/rooms/veng2.cpp
index d473e588ac..c00c346543 100644
--- a/engines/startrek/rooms/veng2.cpp
+++ b/engines/startrek/rooms/veng2.cpp
@@ -599,7 +599,7 @@ void Room::veng2CrewmanInPositionToBeamOut() {
_awayMission->veng.missionScore = 16;
if (_awayMission->veng.field68)
_awayMission->veng.missionScore += 1;
- if (_awayMission->veng.field69)
+ if (_awayMission->veng.getPointsForHealingBrittany)
_awayMission->veng.missionScore += 1;
if (_awayMission->veng.readAllLogs)
_awayMission->veng.missionScore += 1;
diff --git a/engines/startrek/rooms/veng3.cpp b/engines/startrek/rooms/veng3.cpp
index f4a6a95c1d..649288be66 100644
--- a/engines/startrek/rooms/veng3.cpp
+++ b/engines/startrek/rooms/veng3.cpp
@@ -121,9 +121,9 @@ void Room::veng3Tick1() {
}
void Room::veng3Tick15() {
- if (_awayMission->veng.kirkSuggestedReestablishingPower && !_awayMission->veng.impulseEnginesOn) {
+ if (_awayMission->veng.kirkShouldSuggestReestablishingPower && !_awayMission->veng.impulseEnginesOn) {
showText(TX_SPEAKER_KIRK, TX_VEN0_010);
- _awayMission->veng.kirkSuggestedReestablishingPower = true;
+ _awayMission->veng.kirkShouldSuggestReestablishingPower = false;
}
}
diff --git a/engines/startrek/rooms/veng4.cpp b/engines/startrek/rooms/veng4.cpp
index 836fcceb62..2c3f8f2319 100644
--- a/engines/startrek/rooms/veng4.cpp
+++ b/engines/startrek/rooms/veng4.cpp
@@ -22,20 +22,331 @@
#include "startrek/room.h"
-#define OBJECT_DOOR 8
+#define OBJECT_BRITTANY 8
+#define OBJECT_DOOR 9
+#define OBJECT_HYPO 10
+#define OBJECT_DRILL 11
+#define OBJECT_LEFT_READINGS 12
-#define HOTSPOT_20 0x20
+#define HOTSPOT_DOOR 0x20
+#define HOTSPOT_LEFT_BED 0x21
+#define HOTSPOT_RIGHT_BED 0x22
+#define HOTSPOT_LEFT_READINGS 0x23
+#define HOTSPOT_RIGHT_READINGS 0x24
namespace StarTrek {
extern const RoomAction veng4ActionList[] = {
{ {ACTION_TICK, 1, 0, 0}, &Room::veng4Tick1 },
+
+ { {ACTION_TALK, OBJECT_KIRK, 0, 0}, &Room::veng4TalkToKirk },
+ { {ACTION_TALK, OBJECT_MCCOY, 0, 0}, &Room::veng4TalkToMccoy },
+ { {ACTION_TALK, OBJECT_SPOCK, 0, 0}, &Room::veng4TalkToSpock },
+ { {ACTION_TALK, OBJECT_REDSHIRT, 0, 0}, &Room::veng4TalkToRedshirt },
+
+ { {ACTION_USE, OBJECT_IMEDKIT, HOTSPOT_RIGHT_BED, 0}, &Room::veng4UseMccoyOnDeadGuy },
+ { {ACTION_USE, OBJECT_IMTRICOR, HOTSPOT_RIGHT_BED, 0}, &Room::veng4UseMccoyOnDeadGuy },
+ { {ACTION_USE, OBJECT_MCCOY, HOTSPOT_RIGHT_BED, 0}, &Room::veng4UseMccoyOnDeadGuy },
+
+ { {ACTION_USE, OBJECT_IHYPO, OBJECT_BRITTANY, 0}, &Room::veng4UseHypoOnBrittany },
+ { {ACTION_USE, OBJECT_IMEDKIT, OBJECT_BRITTANY, 0}, &Room::veng4UseMedkitOnBrittany },
+ { {ACTION_USE, OBJECT_IMTRICOR, OBJECT_BRITTANY, 0}, &Room::veng4UseMTricorderOnBrittany },
+ { {ACTION_USE, OBJECT_MCCOY, OBJECT_BRITTANY, 0}, &Room::veng4UseMTricorderOnBrittany },
+ { {ACTION_DONE_WALK, 5, 0, 0}, &Room::veng4MccoyReachedBrittany },
+ { {ACTION_DONE_ANIM, 6, 0, 0}, &Room::veng4UsedMedkitOnBrittany },
+ { {ACTION_DONE_ANIM, 7, 0, 0}, &Room::veng4MccoyScannedBrittany },
+
+ { {ACTION_TALK, OBJECT_BRITTANY, 0, 0}, &Room::veng4TalkToBrittany },
+ { {ACTION_LOOK, HOTSPOT_RIGHT_BED, 0, 0}, &Room::veng4LookAtDeadGuy },
+ { {ACTION_LOOK, HOTSPOT_RIGHT_READINGS, 0, 0}, &Room::veng4LookAtRightBedReadings },
+ { {ACTION_LOOK, HOTSPOT_DOOR, 0, 0}, &Room::veng4LookAtDoorHotspot },
+ { {ACTION_LOOK, OBJECT_KIRK, 0, 0}, &Room::veng4LookAtKirk },
+ { {ACTION_LOOK, OBJECT_SPOCK, 0, 0}, &Room::veng4LookAtSpock },
+ { {ACTION_LOOK, OBJECT_MCCOY, 0, 0}, &Room::veng4LookAtMccoy },
+ { {ACTION_LOOK, OBJECT_REDSHIRT, 0, 0}, &Room::veng4LookAtRedshirt },
+ { {ACTION_LOOK, HOTSPOT_LEFT_BED, 0, 0}, &Room::veng4LookAtLeftBed },
+ { {ACTION_LOOK, HOTSPOT_LEFT_READINGS, 0, 0}, &Room::veng4LookAtLeftBedReadings },
+ { {ACTION_LOOK, OBJECT_BRITTANY, 0, 0}, &Room::veng4LookAtBrittany },
+
+ { {ACTION_USE, OBJECT_ISTRICOR, OBJECT_DRILL, 0}, &Room::veng4LookAtDrill },
+ { {ACTION_LOOK, OBJECT_DRILL, 0, 0}, &Room::veng4LookAtDrill },
+ { {ACTION_USE, OBJECT_ISTRICOR, OBJECT_HYPO, 0}, &Room::veng4LookAtHypo },
+ { {ACTION_LOOK, OBJECT_HYPO, 0, 0}, &Room::veng4LookAtHypo },
+ { {ACTION_LOOK, OBJECT_DOOR, 0, 0}, &Room::veng4LookAtDoorObject },
+ { {ACTION_LOOK, 0xff, 0, 0}, &Room::veng4LookAnywhere },
+
+ { {ACTION_GET, OBJECT_HYPO, 0, 0}, &Room::veng4GetHypo },
+ { {ACTION_DONE_WALK, 1, 0, 0}, &Room::veng4ReachedHypo },
+ { {ACTION_DONE_ANIM, 2, 0, 0}, &Room::veng4PickedUpHypo },
+
+ { {ACTION_GET, OBJECT_DRILL, 0, 0}, &Room::veng4GetDrill },
+ { {ACTION_DONE_WALK, 3, 0, 0}, &Room::veng4ReachedDrill },
+ { {ACTION_DONE_ANIM, 4, 0, 0}, &Room::veng4PickedUpDrill },
+
+ { {ACTION_TOUCHED_HOTSPOT, 0, 0, 0}, &Room::veng4TouchedHotspot0 },
+ { {ACTION_WALK, OBJECT_DOOR, 0, 0}, &Room::veng4WalkToDoor },
+ { {ACTION_WALK, HOTSPOT_DOOR, 0, 0}, &Room::veng4WalkToDoor },
+
+ // ENHANCEMENT (let object count for the "look" action, not just the hotspot)
+ { {ACTION_LOOK, OBJECT_LEFT_READINGS, 0, 0}, &Room::veng4LookAtLeftBedReadings },
};
extern const int veng4NumActions = ARRAYSIZE(veng4ActionList);
+#define DOOR_X 0x13f
+#define DOOR_Y 0xab
+
+#define BRITTANY_X 0x5a
+#define BRITTANY_Y 0xa5
+
+#define LEFT_READINGS_X 0x5c
+#define LEFT_READINGS_Y 0x75
+
void Room::veng4Tick1() {
+ playMidiMusicTracks(MIDITRACK_31);
+
+ loadActorAnim2(OBJECT_DOOR, "s9r1dc", DOOR_X, DOOR_Y);
+ loadActorAnim2(OBJECT_LEFT_READINGS, "s7r4m2", LEFT_READINGS_X, LEFT_READINGS_Y);
+
+ if (!_awayMission->veng.usedMedkitOnBrittany) {
+ loadActorAnim2(OBJECT_BRITTANY, "s9r1bm", BRITTANY_X, BRITTANY_Y);
+ playVoc("VEN4LOOP");
+ } else {
+ playVoc("VE42LOOP");
+ loadActorAnim2(OBJECT_BRITTANY, "s9r1bh", BRITTANY_X, BRITTANY_Y);
+ }
+
+ if (!_awayMission->veng.tookHypoFromSickbay)
+ loadActorAnim2(OBJECT_HYPO, "s7r4h1", 0xea, 0x8b);
+ if (!_awayMission->veng.tookDrillFromSickbay)
+ loadActorAnim2(OBJECT_DRILL, "s7r4dl", 0xea, 0x87);
+
+ if (_awayMission->veng.brittanyDead) {
+ loadActorAnim2(OBJECT_BRITTANY, "s7r4bd", BRITTANY_X, BRITTANY_Y);
+ loadActorAnim2(OBJECT_LEFT_READINGS, "s7r4m1d", LEFT_READINGS_X, LEFT_READINGS_Y);
+ }
+}
+
+void Room::veng4TalkToKirk() {
+ showText(TX_SPEAKER_KIRK, TX_VEN4_002);
+}
+
+void Room::veng4TalkToMccoy() {
+ showText(TX_SPEAKER_MCCOY, TX_VEN4_015);
+}
+
+void Room::veng4TalkToSpock() {
+ showText(TX_SPEAKER_SPOCK, TX_VEN4_017);
+}
+
+void Room::veng4TalkToRedshirt() {
+ showText(TX_SPEAKER_KIJE, TX_VEN4_022);
+}
+
+void Room::veng4UseMccoyOnDeadGuy() {
+ showText(TX_SPEAKER_MCCOY, TX_VEN4_007);
+}
+
+void Room::veng4UseHypoOnBrittany() {
+ showText(TX_SPEAKER_MCCOY, TX_VEN4_008);
+}
+
+void Room::veng4UseMedkitOnBrittany() {
+ _roomVar.veng.usingMedkitOnBrittany = true;
+ veng4UseMccoyOnBrittany();
+}
+
+void Room::veng4UseMTricorderOnBrittany() {
+ _roomVar.veng.usingMedkitOnBrittany = false;
+ veng4UseMccoyOnBrittany();
+}
+
+void Room::veng4UseMccoyOnBrittany() {
+ if (_awayMission->veng.brittanyDead)
+ showText(TX_SPEAKER_MCCOY, TX_VEN4_013);
+ else if (_awayMission->veng.usedMedkitOnBrittany)
+ showText(TX_SPEAKER_MCCOY, TX_VEN4_009);
+ else {
+ if (!_awayMission->veng.lookedAtBrittany) {
+ _awayMission->veng.lookedAtBrittany = true;
+ showText(TX_SPEAKER_KIRK, TX_VEN4_005);
+ }
+ _awayMission->crewDirectionsAfterWalk[OBJECT_MCCOY] = DIR_E;
+ walkCrewmanC(OBJECT_MCCOY, 0x3c, 0xa0, &Room::veng4MccoyReachedBrittany);
+ }
+}
+
+void Room::veng4MccoyReachedBrittany() {
+ if (!_roomVar.veng.usingMedkitOnBrittany) {
+ loadActorAnimC(OBJECT_MCCOY, "mscane", -1, -1, &Room::veng4MccoyScannedBrittany);
+ playSoundEffectIndex(SND_TRICORDER);
+ } else {
+ loadActorAnimC(OBJECT_MCCOY, "museme", -1, -1, &Room::veng4UsedMedkitOnBrittany);
+ }
+}
+
+void Room::veng4UsedMedkitOnBrittany() {
+ loadActorAnim2(OBJECT_BRITTANY, "s9r1bh");
+ _awayMission->veng.getPointsForHealingBrittany = true;
+ _awayMission->veng.usedMedkitOnBrittany = true;
+ _awayMission->veng.kirkShouldSuggestReestablishingPower = true;
+ showText(TX_SPEAKER_MCCOY, TX_VEN4_009);
+}
+
+void Room::veng4MccoyScannedBrittany() {
+ showText(TX_SPEAKER_MCCOY, TX_VEN4_011);
+ showText(TX_SPEAKER_KIRK, TX_VEN4_001);
+
+ _roomVar.veng.usingMedkitOnBrittany = true;
+ veng4UseMccoyOnBrittany();
+}
+
+void Room::veng4TalkToBrittany() {
+ if (_awayMission->veng.talkedToBrittany)
+ showText(TX_SPEAKER_MCCOY, TX_VEN4_012);
+ else if (!_awayMission->veng.usedMedkitOnBrittany)
+ showText(TX_SPEAKER_MCCOY, TX_VEN4_010);
+ else {
+ _awayMission->veng.talkedToBrittany = true;
+ showText(TX_SPEAKER_BRITTANY_MARATA, TX_VEN4_019);
+ showText(TX_SPEAKER_KIRK, TX_VEN4_004);
+ showText(TX_SPEAKER_BRITTANY_MARATA, TX_VEN4_020);
+ showText(TX_SPEAKER_KIRK, TX_VEN4_006);
+ showText(TX_SPEAKER_BRITTANY_MARATA, TX_VEN4_021);
+ showText(TX_SPEAKER_KIRK, TX_VEN4_003);
+
+ loadActorAnim2(OBJECT_BRITTANY, "s9r1bm", BRITTANY_X, BRITTANY_Y);
+ showText(TX_SPEAKER_MCCOY, TX_VEN4_016);
+ loadActorAnim2(OBJECT_LEFT_READINGS, "s7r4m1", LEFT_READINGS_X, LEFT_READINGS_Y);
+ loadActorAnim2(OBJECT_BRITTANY, "s7r4bd", BRITTANY_X, BRITTANY_Y);
+ _awayMission->veng.brittanyDead = true;
+ stopAllVocSounds();
+ playVoc("VE42LOOP");
+ }
+}
+
+void Room::veng4LookAtDeadGuy() {
+ showText(TX_VEN4N014);
+}
+
+void Room::veng4LookAtRightBedReadings() {
+ showText(TX_VEN4N013);
+}
+
+void Room::veng4LookAtDoorHotspot() {
+ showText(TX_VEN4N008);
+}
+
+void Room::veng4LookAtKirk() {
+ showText(TX_VEN4N002);
+}
+
+void Room::veng4LookAtSpock() {
+ showText(TX_SPEAKER_SPOCK, TX_VEN4N003);
+}
+
+void Room::veng4LookAtMccoy() {
+ showText(TX_SPEAKER_MCCOY, TX_VEN4N000);
+}
+
+void Room::veng4LookAtRedshirt() {
+ showText(TX_SPEAKER_KIJE, TX_VEN4N001);
+}
+
+void Room::veng4LookAtLeftBed() {
+ if (_awayMission->veng.brittanyDead) {
+ // ENHANCEMENT: Original game showed a string with no corresponding audio ("This
+ // bed contains the body of a recently deceaced crewman." Yes that's a typo.)
+ // Instead, show some appropriate voiced text.
+ showText(TX_VEN4N017);
+ } else
+ showText(TX_VEN4N007);
+}
+
+void Room::veng4LookAtLeftBedReadings() {
+ if (!_awayMission->veng.brittanyDead)
+ showText(TX_VEN4N006);
+ else
+ showText(TX_VEN4N005);
+}
+
+void Room::veng4LookAtBrittany() {
+ if (_awayMission->veng.brittanyDead)
+ showText(TX_VEN4N017);
+ else if (!_awayMission->veng.lookedAtBrittany) {
+ _awayMission->veng.lookedAtBrittany = true;
+ showText(TX_SPEAKER_KIRK, TX_VEN4_005);
+ showText(TX_SPEAKER_MCCOY, TX_VEN4_014);
+ } else if (_awayMission->veng.talkedToBrittany)
+ showText(TX_VEN4N017);
+ else
+ showText(TX_VEN4N004);
+}
+
+void Room::veng4LookAtDrill() {
+ showText(TX_VEN4N012);
+}
+
+void Room::veng4LookAtHypo() {
+ showText(TX_VEN4N010);
+}
+
+void Room::veng4LookAtDoorObject() {
+ showText(TX_VEN4N009);
+}
+
+void Room::veng4LookAnywhere() {
+ showText(TX_VEN4N011);
+}
+
+void Room::veng4GetHypo() {
+ _awayMission->disableInput = true;
+ walkCrewmanC(OBJECT_KIRK, 0xea, 0xae, &Room::veng4ReachedHypo);
+}
+
+void Room::veng4ReachedHypo() {
+ loadActorAnimC(OBJECT_KIRK, "kusemn", -1, -1, &Room::veng4PickedUpHypo);
+}
+
+void Room::veng4PickedUpHypo() {
+ giveItem(OBJECT_IHYPO);
+ _awayMission->veng.tookHypoFromSickbay = true;
+ loadActorStandAnim(OBJECT_HYPO);
+ showText(TX_VEN4N015);
+ walkCrewman(OBJECT_KIRK, 0xcd, 0xc2);
+ _awayMission->disableInput = false;
+}
+
+void Room::veng4GetDrill() {
+ _awayMission->disableInput = true;
+ walkCrewmanC(OBJECT_KIRK, 0xea, 0xae, &Room::veng4ReachedDrill);
+}
+
+void Room::veng4ReachedDrill() {
+ loadActorAnimC(OBJECT_KIRK, "kusemn", -1, -1, &Room::veng4PickedUpDrill);
+}
+
+void Room::veng4PickedUpDrill() {
+ giveItem(OBJECT_IDRILL);
+ _awayMission->veng.tookDrillFromSickbay = true;
+ loadActorStandAnim(OBJECT_DRILL);
+ showText(TX_VEN4N016);
+ walkCrewman(OBJECT_KIRK, 0xcd, 0xc2);
+ _awayMission->disableInput = false;
+}
+
+void Room::veng4TouchedHotspot0() { // Trigger door opening
+ if (_roomVar.veng.walkingToDoor) {
+ playSoundEffectIndex(SND_DOOR1);
+ loadActorAnim(OBJECT_DOOR, "s9r1do", DOOR_X, DOOR_Y);
+ }
+}
+
+void Room::veng4WalkToDoor() {
+ _roomVar.veng.walkingToDoor = true;
+ _awayMission->disableInput = true;
+ walkCrewman(OBJECT_KIRK, 0x12e, 0xab);
}
}
diff --git a/engines/startrek/text.cpp b/engines/startrek/text.cpp
index e7822700db..4ad34eeb44 100644
--- a/engines/startrek/text.cpp
+++ b/engines/startrek/text.cpp
@@ -69,6 +69,7 @@ extern const char *const g_gameStrings[] = {
"Elasi Captain",
"Elasi Weapons Master",
"Elasi Crewman",
+ "Brittany Marata",
"#BRID\\BRIDU146#Nothing to report, Captain.",
@@ -2979,10 +2980,48 @@ extern const char *const g_gameStrings[] = {
"#VEN3\\VEN3N014#You have taken the cable.",
- "#VEN4\\VEN4_016#There's nothing more I can do.", // TYPO
+ "#VEN4\\VEN4_001#Do what you can, Bones. I need to find out what happened here.",
+ "#VEN4\\VEN4_002#You always hope the instruments are wrong...that you'll find someone alive.",
+ "#VEN4\\VEN4_003#It wasn't the Enterprise, Marata!",
+ "#VEN4\\VEN4_004#Marata, what happened?",
+ "#VEN4\\VEN4_005#I can't believe it. That's Brittany Marata. I knew her from my Academy days. We studied alien history together.",
+ "#VEN4\\VEN4_006#What about the Enterprise?",
+ "#VEN4\\VEN4_007#He's dead, Jim. I can't bring him back.",
+ "#VEN4\\VEN4_008#That will accomplish nothing, Jim.",
+ "#VEN4\\VEN4_009#She's in bad shape, Jim. I've tried to stabilize her, but it doesn't look good.",
+ "#VEN4\\VEN4_010#She's in no condition to talk right now.",
+ "#VEN4\\VEN4_011#She's suffering from severe trauma and internal bleeding. I'll see what I can do.",
+ "#VEN4\\VEN4_012#That won't bring her back. She's gone.",
+ "#VEN4\\VEN4_013#There's nothing more I can do for her, Jim.",
+ "#VEN4\\VEN4_014#At least she's still alive, although just barely.",
+ "#VEN4\\VEN4_015#Life support must have gone down during the fight. Most of the people died from shock before the back-up systems came on line.",
+ "#VEN4\\VEN4_016#There's nothing more I can do.", // TYPO (in some rooms, this has "Jim..." at the start of the text, though not in VENG4 itself)
"#VEN4\\VEN4_017#I believe nothing needs to be said, Captain.",
+ "#VEN4\\VEN4_018#An interesting hypothesis, doctor. Had Mr. Scott been present, he might have been able to verify it.",
+ "#VEN4\\VEN4_019#No... you won't get us...",
+ "#VEN4\\VEN4_020#They said it was the Enterprise...They had visual confirmation...",
+ "#VEN4\\VEN4_021#You killed us, Jim. We were friends for... I trusted ...",
+ "#VEN4\\VEN4_022#Captain, did I ever mention how much I hate hospitals?",
+ "#VEN4\\VEN4N000#A very concerned Doctor Leonard McCoy.",
+ "#VEN4\\VEN4N001#A very unhappy looking Ensign Kije.",
+ "#VEN4\\VEN4N002#James T. Kirk, in total confusion at the moment.",
+ "#VEN4\\VEN4N003#Mr. Spock, looking pensive as usual.",
+ "#VEN4\\VEN4N004#Seeing Brittany in this condition stirs you on to find the culprits responsible for this injustice.",
+ "#VEN4\\VEN4N005#The medical scanner has registered the death of Brittany Marata.",
+ "#VEN4\\VEN4N006#The medical scanner is monitoring the woman's condition.",
+ "#VEN4\\VEN4N007#The woman in this sickbed is alive, barely.",
+ "#VEN4\\VEN4N008#This door leads back to the corridor and turbolifts.",
+ "#VEN4\\VEN4N009#This door leads back to the corridor, and turbolifts 1 and 2.",
"#VEN4\\VEN4N010#This is an empty hypodermic injector.",
+ "#VEN4\\VEN4N011#This is the Republic's sickbay. Fortunately, power is still functioning here.",
+ "#VEN4\\VEN4N012#This medical drill fires a microscopic phaser beam.",
+ "#VEN4\\VEN4N013#This monitor has recorded the death of a patient.",
"#VEN4\\VEN4N014#Yet another crewman of the Republic whose life was unfairly abbreviated.",
+ "#VEN4\\VEN4N015#You pick up the empty hypodermic injector.",
+ "#VEN4\\VEN4N016#You retrieve the medical drill.",
+ "#VEN4\\VEN4N017#You see the dead body of Brittany. Her life was cut short and you won't stop until you find the persons responsible.",
+
+ "#VEN4\\VEN4_017#I believe nothing needs to be said, Captain.",
"#VEN6\\VEN6N007#The hypo is now filled with multipurpose oil.",
diff --git a/engines/startrek/text.h b/engines/startrek/text.h
index 634d000337..9cd6376f81 100644
--- a/engines/startrek/text.h
+++ b/engines/startrek/text.h
@@ -127,6 +127,7 @@ enum GameStringIDs {
TX_SPEAKER_ELASI_CAPTAIN,
TX_SPEAKER_ELASI_WEAPONS_MASTER,
TX_SPEAKER_ELASI_CREWMAN,
+ TX_SPEAKER_BRITTANY_MARATA,
TX_BRIDU146,
@@ -3100,10 +3101,46 @@ enum GameStringIDs {
TX_VEN3N014,
+ TX_VEN4_001,
+ TX_VEN4_002,
+ TX_VEN4_003,
+ TX_VEN4_004,
+ TX_VEN4_005,
+ TX_VEN4_006,
+ TX_VEN4_007,
+ TX_VEN4_008,
+ TX_VEN4_009,
+ TX_VEN4_010,
+ TX_VEN4_011,
+ TX_VEN4_012,
+ TX_VEN4_013,
+ TX_VEN4_014,
+ TX_VEN4_015,
TX_VEN4_016,
TX_VEN4_017,
+ TX_VEN4_018, // UNUSED
+ TX_VEN4_019,
+ TX_VEN4_020,
+ TX_VEN4_021,
+ TX_VEN4_022,
+ TX_VEN4N000,
+ TX_VEN4N001,
+ TX_VEN4N002,
+ TX_VEN4N003,
+ TX_VEN4N004,
+ TX_VEN4N005,
+ TX_VEN4N006,
+ TX_VEN4N007,
+ TX_VEN4N008,
+ TX_VEN4N009,
TX_VEN4N010,
+ TX_VEN4N011,
+ TX_VEN4N012,
+ TX_VEN4N013,
TX_VEN4N014,
+ TX_VEN4N015,
+ TX_VEN4N016,
+ TX_VEN4N017,
TX_VEN6N007,