Permalink
Browse files

STARTREK: VENG7

  • Loading branch information...
Drenn1 committed Aug 8, 2018
1 parent dc6f4da commit 0aa4fc67bb3b5bf142031db4fe8e0b51cc415809
Showing with 209 additions and 2 deletions.
  1. +1 −0 engines/startrek/awaymission.h
  2. +23 −0 engines/startrek/room.h
  3. +149 −2 engines/startrek/rooms/veng7.cpp
  4. +17 −0 engines/startrek/text.cpp
  5. +19 −0 engines/startrek/text.h
@@ -684,6 +684,7 @@ struct AwayMission {
// junction box in engineering.
byte junctionCablesConnected; // 0x5d

bool tookCableFromTransporterRoomHallway; // 0x5e
bool tookCableFromSickbayHallway; // 0x5f
bool tookMolecularSaw; // 0x60
bool readEngineeringJournal; // 0x61
@@ -2772,6 +2772,29 @@ class Room {

// VENG7
void veng7Tick1();
void veng7WalkToDoor();
void veng7ReachedDoor();
void veng7DoorOpened();
void veng7TouchedTurboliftDoor();
void veng7LookAtCollapsedSection();
void veng7LookAtDeadGuy();
void veng7LookAtDoor();
void veng7LookAtCable();
void veng7LookAtKirk();
void veng7LookAtSpock();
void veng7LookAtMccoy();
void veng7LookAtRedshirt();
void veng7LookAnywhere();
void veng7TalkToKirk();
void veng7TalkToSpock();
void veng7TalkToMccoy();
void veng7TalkToRedshirt();
void veng7UseSTricorderOnCollapsedSection();
void veng7TouchedHotspot0();
void veng7GetCable();
void veng7ReachedCable();
void veng7PickedUpCable();
// TODO: common code

// VENG8
void veng8Tick1();
@@ -22,20 +22,167 @@

#include "startrek/room.h"

#define OBJECT_DOOR 8
#define OBJECT_CABLE 8
#define OBJECT_DEAD_GUY 9
#define OBJECT_DOOR 10

#define HOTSPOT_20 0x20
#define HOTSPOT_DOOR 0x20
#define HOTSPOT_COLLAPSED_SECTION 0x21

namespace StarTrek {

extern const RoomAction veng7ActionList[] = {
{ {ACTION_TICK, 1, 0, 0}, &Room::veng7Tick1 },

{ {ACTION_WALK, OBJECT_DOOR, 0, 0}, &Room::veng7WalkToDoor },
{ {ACTION_WALK, HOTSPOT_DOOR, 0, 0}, &Room::veng7WalkToDoor },
{ {ACTION_DONE_WALK, 2, 0, 0}, &Room::veng7ReachedDoor },
{ {ACTION_DONE_ANIM, 1, 0, 0}, &Room::veng7DoorOpened },
{ {ACTION_TOUCHED_WARP, 1, 0, 0}, &Room::veng7TouchedTurboliftDoor },

{ {ACTION_LOOK, HOTSPOT_COLLAPSED_SECTION, 0, 0}, &Room::veng7LookAtCollapsedSection },
{ {ACTION_LOOK, OBJECT_DEAD_GUY, 0, 0}, &Room::veng7LookAtDeadGuy },
{ {ACTION_LOOK, OBJECT_DOOR, 0, 0}, &Room::veng7LookAtDoor },
{ {ACTION_LOOK, HOTSPOT_DOOR, 0, 0}, &Room::veng7LookAtDoor },
{ {ACTION_LOOK, OBJECT_CABLE, 0, 0}, &Room::veng7LookAtCable },
{ {ACTION_LOOK, OBJECT_KIRK, 0, 0}, &Room::veng7LookAtKirk },
{ {ACTION_LOOK, OBJECT_SPOCK, 0, 0}, &Room::veng7LookAtSpock },
{ {ACTION_LOOK, OBJECT_MCCOY, 0, 0}, &Room::veng7LookAtMccoy },
{ {ACTION_LOOK, OBJECT_REDSHIRT, 0, 0}, &Room::veng7LookAtRedshirt },
{ {ACTION_LOOK, 0xff, 0, 0}, &Room::veng7LookAnywhere },
{ {ACTION_TALK, OBJECT_KIRK, 0, 0}, &Room::veng7TalkToKirk },
{ {ACTION_TALK, OBJECT_SPOCK, 0, 0}, &Room::veng7TalkToSpock },
{ {ACTION_TALK, OBJECT_MCCOY, 0, 0}, &Room::veng7TalkToMccoy },
{ {ACTION_TALK, OBJECT_REDSHIRT, 0, 0}, &Room::veng7TalkToRedshirt },

{ {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_COLLAPSED_SECTION, 0}, &Room::veng7UseSTricorderOnCollapsedSection },

{ {ACTION_TOUCHED_HOTSPOT, 0, 0, 0}, &Room::veng7TouchedHotspot0 },
{ {ACTION_GET, OBJECT_CABLE, 0, 0}, &Room::veng7GetCable },
{ {ACTION_DONE_WALK, 3, 0, 0}, &Room::veng7ReachedCable },
{ {ACTION_DONE_ANIM, 4, 0, 0}, &Room::veng7PickedUpCable },

// Common code
{ {ACTION_USE, OBJECT_IMEDKIT, OBJECT_DEAD_GUY, 0}, &Room::vengaUseMccoyOnDeadGuy },
{ {ACTION_USE, OBJECT_IMTRICOR, OBJECT_DEAD_GUY, 0}, &Room::vengaUseMccoyOnDeadGuy },
{ {ACTION_USE, OBJECT_MCCOY, OBJECT_DEAD_GUY, 0}, &Room::vengaUseMccoyOnDeadGuy },
};

extern const int veng7NumActions = ARRAYSIZE(veng7ActionList);


void Room::veng7Tick1() {
playVoc("VEN7LOOP");

loadActorAnim(OBJECT_DOOR, "s7r7d1c", 0x59, 0x72);

if (!_awayMission->veng.tookCableFromTransporterRoomHallway)
loadActorAnim(OBJECT_CABLE, "s7r7ca", 0xac, 0x8a);

loadActorAnim(OBJECT_DEAD_GUY, "s7r7c1", 0xa6, 0x49);
}

void Room::veng7WalkToDoor() {
walkCrewmanC(OBJECT_KIRK, 0x66, 0x76, &Room::veng7ReachedDoor);
}

void Room::veng7ReachedDoor() {
_awayMission->disableInput = true;
playSoundEffectIndex(SND_DOOR1);
loadActorAnimC(OBJECT_DOOR, "s7r7d1", 0x59, 0x72, &Room::veng7DoorOpened);
}

void Room::veng7DoorOpened() {
walkCrewman(OBJECT_KIRK, 0x5b, 0x76);
}

void Room::veng7TouchedTurboliftDoor() {
playSoundEffectIndex(SND_DOOR1);
showRepublicMap(7, 1);
}

void Room::veng7LookAtCollapsedSection() {
showText(TX_VEN7N001);
}

void Room::veng7LookAtDeadGuy() {
// ENHANCEMENT: Original played TX_VEN0N016. This is reused and boring, and there is
// a more interesting unused audio file, so use that instead.
showText(TX_VEN7N000);
}

void Room::veng7LookAtDoor() {
showText(TX_VEN7N007);
}

void Room::veng7LookAtCable() {
showText(TX_VEN7N008);
}

void Room::veng7LookAtKirk() {
showText(TX_VEN7N003);
}

void Room::veng7LookAtSpock() {
showText(TX_VEN7N005);
}

void Room::veng7LookAtMccoy() {
showText(TX_VEN7N004);
}

void Room::veng7LookAtRedshirt() {
showText(TX_VEN7N002);
}

void Room::veng7LookAnywhere() {
showText(TX_VEN7N006);
}

void Room::veng7TalkToKirk() {
showText(TX_SPEAKER_KIRK, TX_VEN7_001);
}

void Room::veng7TalkToSpock() {
showText(TX_SPEAKER_SPOCK, TX_VEN7_005);
}

void Room::veng7TalkToMccoy() {
// NOTE: TX_VEN7_007 could also fit here. It might be more fitting since it's not
// reused. However, it mentions that McCoy gave up medical practice in Georgia. Maybe
// they removed this for continuity reasons or something. I don't want to be
// responsible for creating any possible confusion over his backstory.
showText(TX_SPEAKER_MCCOY, TX_VEN1_004);
}

void Room::veng7TalkToRedshirt() {
showText(TX_SPEAKER_KIJE, TX_VEN7_007);
}

void Room::veng7UseSTricorderOnCollapsedSection() {
spockScan(DIR_S, TX_VEN7_006);
}

void Room::veng7TouchedHotspot0() { // Got too close to the collapsed section
showText(TX_SPEAKER_SPOCK, TX_VEN7_003);
}

void Room::veng7GetCable() {
_awayMission->disableInput = true;
walkCrewmanC(OBJECT_KIRK, 0xac, 0x8b, &Room::veng7ReachedCable);
}

void Room::veng7ReachedCable() {
loadActorAnimC(OBJECT_KIRK, "kusehn", -1, -1, &Room::veng7PickedUpCable);
playVoc("MUR4E6");
}

void Room::veng7PickedUpCable() {
loadActorStandAnim(OBJECT_CABLE);
showText(TX_VEN7N009);
giveItem(OBJECT_ICABLE1);
_awayMission->veng.tookCableFromTransporterRoomHallway = true;
_awayMission->disableInput = false;
}

}
@@ -3102,6 +3102,23 @@ extern const char *const g_gameStrings[] = {
"#VEN6\\VEN6N025#This is a library of engineering technical journals.",


"#VEN7\\VEN7_001#I haven't seen anything this bad since I was aboard the Farragut, and this vampire cloud...",
"#VEN7\\VEN7_003#Captain, please be careful. The floor in that area is very unstable and might collapse from our added weight.",
"#VEN7\\VEN7_005#I do not see the need for conversation, Captain. Humans have an irrational enjoyment of endless discourse.",
"#VEN7\\VEN7_006#It appears to be a section from a coolant exhaust port. I would not recommend too close of an inspection, Captain. The floor could collapse from our added weight.",
"#VEN7\\VEN7_007#It does get better than this, doesn't it Captain?",
"#VEN7\\VEN7N000#A corpse is half-buried under the debris.",
"#VEN7\\VEN7N001#A large piece of equipment has fallen through the ceiling. The area looks extremely unstable. fortunately, the entry to the transporter room is near.",
"#VEN7\\VEN7N002#Ensign Kije.",
"#VEN7\\VEN7N003#James T. Kirk.",
"#VEN7\\VEN7N004#Leonard McCoy.",
"#VEN7\\VEN7N005#Mister Spock.",
"#VEN7\\VEN7N006#This corridor leads to the transporter room.",
"#VEN7\\VEN7N007#This door leads to the transporter room.",
"#VEN7\\VEN7N008#This is a length of heavy duty insulated power cable.",
"#VEN7\\VEN7N009#You pick up a length of cable.",


"#VENA\\VENA_F32#The landing party has been taken captive by the Elasi, and you know Starfleet does not negotiate with terrorists. As you look forward to a long captivity you wonder who will take command of the Enterprise. Better luck next time.",
"#VENA\\VENA_F34#Captain, it would be unwise to use your phaser considering the already extensive damage sustained by the Republic.",
"#VENA\\VENA_F40#The Elasi fire photon torpedoes. The Republic has been destroyed.",
@@ -3230,6 +3230,25 @@ enum GameStringIDs {
TX_VEN6N025,


TX_VEN7_001,
// UNUSED
TX_VEN7_003,
// UNUSED
TX_VEN7_005,
TX_VEN7_006,
TX_VEN7_007,
TX_VEN7N000,
TX_VEN7N001,
TX_VEN7N002,
TX_VEN7N003,
TX_VEN7N004,
TX_VEN7N005,
TX_VEN7N006,
TX_VEN7N007,
TX_VEN7N008,
TX_VEN7N009,


TX_VENA_F32,
TX_VENA_F34,
TX_VENA_F40,

0 comments on commit 0aa4fc6

Please sign in to comment.