aboutsummaryrefslogtreecommitdiff
path: root/engines/startrek/rooms
diff options
context:
space:
mode:
authorMatthew Stewart2018-07-04 00:32:34 -0400
committerEugene Sandulenko2018-08-09 08:37:30 +0200
commitae3be7b40730387707bf4c104ea4f2ff8b588523 (patch)
treeacd6f32b6dc77cdf65d06139b3c7710618b2845c /engines/startrek/rooms
parent007960e85eeaeb0f1ab45914936a917cb40af808 (diff)
downloadscummvm-rg350-ae3be7b40730387707bf4c104ea4f2ff8b588523.tar.gz
scummvm-rg350-ae3be7b40730387707bf4c104ea4f2ff8b588523.tar.bz2
scummvm-rg350-ae3be7b40730387707bf4c104ea4f2ff8b588523.zip
STARTREK: FEATHER2
Diffstat (limited to 'engines/startrek/rooms')
-rw-r--r--engines/startrek/rooms/feather2.cpp116
-rw-r--r--engines/startrek/rooms/function_map.h8
2 files changed, 115 insertions, 9 deletions
diff --git a/engines/startrek/rooms/feather2.cpp b/engines/startrek/rooms/feather2.cpp
index d28e26c7fe..160302f000 100644
--- a/engines/startrek/rooms/feather2.cpp
+++ b/engines/startrek/rooms/feather2.cpp
@@ -22,14 +22,124 @@
#include "startrek/room.h"
-#define OBJECT_8 8
-
-#define HOTSPOT_20 0x20
+#define HOTSPOT_EYES_1 0x20
+#define HOTSPOT_EYES_2 0x21
+#define HOTSPOT_EYES_3 0x22
+#define HOTSPOT_BIG_TREE 0x23
+#define HOTSPOT_TREES 0x24
+#define HOTSPOT_VINES 0x25
+#define HOTSPOT_LEFT_EXIT 0x26
namespace StarTrek {
+extern const RoomAction feather2ActionList[] = {
+ { {ACTION_TICK, 1, 0, 0}, &Room::feather2Tick1 },
+ { {ACTION_USE, OBJECT_ICOMM, 0xff, 0}, &Room::feather2UseCommunicator },
+ { {ACTION_USE, OBJECT_IPHASERS, 0xff, 0}, &Room::feather2UsePhaser },
+ { {ACTION_USE, OBJECT_IPHASERK, 0xff, 0}, &Room::feather2UsePhaser },
+ { {ACTION_USE, OBJECT_ISTRICOR, 0xff, 0}, &Room::feather2UseSTricorderAnywhere },
+ { {ACTION_USE, OBJECT_IMTRICOR, 0xff, 0}, &Room::feather2UseMTricorderAnywhere },
+ { {ACTION_TALK, OBJECT_MCCOY, 0, 0}, &Room::feather2TalkToMccoy },
+ { {ACTION_TALK, OBJECT_SPOCK, 0, 0}, &Room::feather2TalkToSpock },
+ { {ACTION_TALK, OBJECT_REDSHIRT, 0, 0}, &Room::feather2TalkToRedshirt },
+ { {ACTION_LOOK, HOTSPOT_VINES, 0, 0}, &Room::feather2LookAtVines },
+ { {ACTION_USE, OBJECT_IMEDKIT, 0xff, 0}, &Room::feather2UseMedkit },
+ { {ACTION_WALK, HOTSPOT_LEFT_EXIT, 0, 0}, &Room::feather2WalkToLeftExit },
+ { {ACTION_LOOK, HOTSPOT_EYES_1, 0, 0}, &Room::feather2LookAtEyes },
+ { {ACTION_LOOK, HOTSPOT_EYES_2, 0, 0}, &Room::feather2LookAtEyes },
+ { {ACTION_LOOK, HOTSPOT_EYES_3, 0, 0}, &Room::feather2LookAtEyes },
+ { {ACTION_LOOK, HOTSPOT_BIG_TREE, 0, 0}, &Room::feather2LookAtBigTree },
+ { {ACTION_LOOK, HOTSPOT_TREES, 0, 0}, &Room::feather2LookAtTrees },
+ { {ACTION_LOOK, 0xff, 0, 0}, &Room::feather2LookAnywhere },
+ { {ACTION_LOOK, OBJECT_KIRK, 0, 0}, &Room::feather2LookAtKirk },
+ { {ACTION_LOOK, OBJECT_SPOCK, 0, 0}, &Room::feather2LookAtSpock },
+ { {ACTION_LOOK, OBJECT_MCCOY, 0, 0}, &Room::feather2LookAtMccoy },
+ { {ACTION_LOOK, OBJECT_REDSHIRT, 0, 0}, &Room::feather2LookAtRedshirt },
+};
+
+extern const int feather2NumActions = sizeof(feather2ActionList) / sizeof(RoomAction);
+
+
void Room::feather2Tick1() {
+ playVoc("FEA2LOOP");
+ playMidiMusicTracks(27);
+}
+
+void Room::feather2UseCommunicator() {
+ showText(TX_SPEAKER_SPOCK, TX_FEA2_006);
+}
+
+void Room::feather2UsePhaser() {
+ // FIXME: Why does McCoy say "They're dead, Jim"?
+ showText(TX_SPEAKER_MCCOY, TX_FEA2_003);
+}
+
+void Room::feather2UseSTricorderAnywhere() {
+ spockScan(DIR_S, TX_FEA2_007);
+}
+
+void Room::feather2UseMTricorderAnywhere() {
+ // ENHANCEMENT: Original didn't play tricorder sound, etc
+ mccoyScan(DIR_S, TX_FEA2_002);
+}
+
+void Room::feather2TalkToMccoy() {
+ showText(TX_SPEAKER_MCCOY, TX_FEA2_004);
+}
+
+void Room::feather2TalkToSpock() {
+ showText(TX_SPEAKER_SPOCK, TX_FEA2_008);
+}
+
+void Room::feather2TalkToRedshirt() {
+ showText(TX_SPEAKER_STRAGEY, TX_FEA2_009);
+}
+
+void Room::feather2LookAtVines() {
+ // NOTE: This might be unused? I can't find where HOTSPOT_VINES is supposed to be.
+ showText(TX_FEA2N000);
+ showText(TX_SPEAKER_STRAGEY, TX_FEA2_010);
+ showText(TX_SPEAKER_MCCOY, TX_FEA2_005);
+}
+
+void Room::feather2UseMedkit() {
+ showText(TX_SPEAKER_MCCOY, TX_FEA2_001);
+}
+
+void Room::feather2WalkToLeftExit() {
+ walkCrewman(OBJECT_KIRK, 0x14, 0x96);
+}
+
+void Room::feather2LookAtEyes() {
+ showText(TX_FEA2N001);
+}
+
+void Room::feather2LookAtBigTree() {
+ showText(TX_FEA2N006);
+}
+
+void Room::feather2LookAtTrees() {
+ showText(TX_FEA2N007);
+}
+
+void Room::feather2LookAnywhere() {
+ showText(TX_FEA2N008);
+}
+
+void Room::feather2LookAtKirk() {
+ showText(TX_FEA2N002);
+}
+
+void Room::feather2LookAtSpock() {
+ showText(TX_FEA2N005);
+}
+
+void Room::feather2LookAtMccoy() {
+ showText(TX_FEA2N004);
+}
+void Room::feather2LookAtRedshirt() {
+ showText(TX_FEA2N003);
}
}
diff --git a/engines/startrek/rooms/function_map.h b/engines/startrek/rooms/function_map.h
index 203043ba58..cca19c46f7 100644
--- a/engines/startrek/rooms/function_map.h
+++ b/engines/startrek/rooms/function_map.h
@@ -1782,12 +1782,8 @@ RoomAction feather0ActionList[] = {
{ {ACTION_USE, OBJECT_IMTRICOR, 8, 0}, &Room::feather0UseMTricorderOnQuetzecoatl },
};
-extern const RoomAction feather1ActionList[];
-extern const int feather1NumActions;
-
-RoomAction feather2ActionList[] = {
- { {ACTION_TICK, 1, 0, 0}, &Room::feather2Tick1 },
-};
+extern const RoomAction feather1ActionList[], feather2ActionList[];
+extern const int feather1NumActions, feather2NumActions;
RoomAction feather3ActionList[] = {
{ {ACTION_TICK, 1, 0, 0}, &Room::feather3Tick1 },