aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/startrek/module.mk8
-rw-r--r--engines/startrek/room.cpp32
-rw-r--r--engines/startrek/room.h47
-rw-r--r--engines/startrek/rooms/feather0.cpp224
-rw-r--r--engines/startrek/rooms/feather1.cpp35
-rw-r--r--engines/startrek/rooms/feather2.cpp35
-rw-r--r--engines/startrek/rooms/feather3.cpp35
-rw-r--r--engines/startrek/rooms/feather4.cpp35
-rw-r--r--engines/startrek/rooms/feather5.cpp35
-rw-r--r--engines/startrek/rooms/feather6.cpp35
-rw-r--r--engines/startrek/rooms/feather7.cpp35
-rw-r--r--engines/startrek/rooms/function_map.h65
-rw-r--r--engines/startrek/startrek.cpp2
-rw-r--r--engines/startrek/text.h99
14 files changed, 721 insertions, 1 deletions
diff --git a/engines/startrek/module.mk b/engines/startrek/module.mk
index 460e110ca2..5022abe7c5 100644
--- a/engines/startrek/module.mk
+++ b/engines/startrek/module.mk
@@ -44,6 +44,14 @@ MODULE_OBJS = \
rooms/mudd4.o \
rooms/mudd5.o \
rooms/mudda.o \
+ rooms/feather0.o \
+ rooms/feather1.o \
+ rooms/feather2.o \
+ rooms/feather3.o \
+ rooms/feather4.o \
+ rooms/feather5.o \
+ rooms/feather6.o \
+ rooms/feather7.o \
diff --git a/engines/startrek/room.cpp b/engines/startrek/room.cpp
index 6237cdda90..1c467d37c7 100644
--- a/engines/startrek/room.cpp
+++ b/engines/startrek/room.cpp
@@ -131,6 +131,38 @@ Room::Room(StarTrekEngine *vm, const Common::String &name) : _vm(vm) {
_roomActionList = mudd5ActionList;
_numRoomActions = sizeof(mudd5ActionList) / sizeof(RoomAction);
}
+ else if (name == "FEATHER0") {
+ _roomActionList = feather0ActionList;
+ _numRoomActions = sizeof(feather0ActionList) / sizeof(RoomAction);
+ }
+ else if (name == "FEATHER1") {
+ _roomActionList = feather1ActionList;
+ _numRoomActions = sizeof(feather1ActionList) / sizeof(RoomAction);
+ }
+ else if (name == "FEATHER2") {
+ _roomActionList = feather2ActionList;
+ _numRoomActions = sizeof(feather2ActionList) / sizeof(RoomAction);
+ }
+ else if (name == "FEATHER3") {
+ _roomActionList = feather3ActionList;
+ _numRoomActions = sizeof(feather3ActionList) / sizeof(RoomAction);
+ }
+ else if (name == "FEATHER4") {
+ _roomActionList = feather4ActionList;
+ _numRoomActions = sizeof(feather4ActionList) / sizeof(RoomAction);
+ }
+ else if (name == "FEATHER5") {
+ _roomActionList = feather5ActionList;
+ _numRoomActions = sizeof(feather5ActionList) / sizeof(RoomAction);
+ }
+ else if (name == "FEATHER6") {
+ _roomActionList = feather6ActionList;
+ _numRoomActions = sizeof(feather6ActionList) / sizeof(RoomAction);
+ }
+ else if (name == "FEATHER7") {
+ _roomActionList = feather7ActionList;
+ _numRoomActions = sizeof(feather7ActionList) / sizeof(RoomAction);
+ }
else {
warning("Room \"%s\" unimplemented", name.c_str());
_numRoomActions = 0;
diff --git a/engines/startrek/room.h b/engines/startrek/room.h
index d51442eda0..2b5f95cd17 100644
--- a/engines/startrek/room.h
+++ b/engines/startrek/room.h
@@ -1380,6 +1380,53 @@ public:
void muddaUseDegrimer();
void muddaTick();
+ // FEATHER0
+ void feather0Tick1();
+ void feather0Tick60();
+ void feather0TalkToQuetzecoatl();
+ void feather0Timer0Expired();
+ void feather0Timer1Expired();
+ void feather0UsePhaserOnQuetzecoatl();
+ void feather0UsePhaserOnMccoy();
+ void feather0UseMedkit();
+ void feather0LookAtQuetzecoatl();
+ void feather0LookAtMoon();
+ void feather0LookAtLog();
+ void feather0LookAtHut();
+ void feather0LookAnywhere();
+ void feather0LookAtEyes();
+ void feather0LookAtTree();
+ void feather0LookAtMccoy();
+ void feather0LookAtSpock();
+ void feather0LookAtRedshirt();
+ void feather0TalkToMccoy();
+ void feather0TalkToSpock();
+ void feather0TalkToRedshirt();
+ void feather0UseSTricorderOnQuetzecoatl();
+ void feather0UseSTricorderAnywhere();
+ void feather0UseMTricorderOnQuetzecoatl();
+
+ // FEATHER1
+ void feather1Tick1();
+
+ // FEATHER2
+ void feather2Tick1();
+
+ // FEATHER3
+ void feather3Tick1();
+
+ // FEATHER4
+ void feather4Tick1();
+
+ // FEATHER5
+ void feather5Tick1();
+
+ // FEATHER6
+ void feather6Tick1();
+
+ // FEATHER7
+ void feather7Tick1();
+
private:
// Room-specific variables. This is memset'ed to 0 when the room is initialized.
union {
diff --git a/engines/startrek/rooms/feather0.cpp b/engines/startrek/rooms/feather0.cpp
new file mode 100644
index 0000000000..a533af05bd
--- /dev/null
+++ b/engines/startrek/rooms/feather0.cpp
@@ -0,0 +1,224 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "startrek/room.h"
+
+#define OBJECT_QUETZECOATL 8
+
+#define HOTSPOT_MOON 0x20
+#define HOTSPOT_LOG 0x21
+#define HOTSPOT_HUT 0x22
+#define HOTSPOT_EYES_1 0x23
+#define HOTSPOT_EYES_2 0x24
+#define HOTSPOT_EYES_3 0x25
+#define HOTSPOT_EYES_4 0x26
+#define HOTSPOT_EYES_5 0x27
+#define HOTSPOT_EYES_6 0x28
+#define HOTSPOT_EYES_7 0x29
+#define HOTSPOT_EYES_8 0x2a
+#define HOTSPOT_EYES_9 0x2b
+#define HOTSPOT_TREE 0x2c
+
+namespace StarTrek {
+
+void Room::feather0Tick1() {
+ playVoc("FEA0LOOP");
+ loadActorAnim(OBJECT_QUETZECOATL, "s5r0qb", 0xbe, 0xa6);
+}
+
+void Room::feather0Tick60() {
+ playMidiMusicTracks(33);
+}
+
+void Room::feather0TalkToQuetzecoatl() {
+ const TextRef choices[] = {
+ TX_SPEAKER_KIRK,
+ TX_FEA0_006,
+ TX_FEA0_007,
+ TX_FEA0_011,
+ TX_BLANK
+ };
+
+ showText(TX_SPEAKER_QUETZECOATL, TX_FEA0_028);
+ int choice = showText(choices);
+ bool alreadyAngered = false;
+
+ if (choice == 0) {
+ const TextRef choices0[] = {
+ TX_SPEAKER_KIRK,
+ TX_FEA0_009,
+ TX_FEA0_004,
+ TX_BLANK
+ };
+ showText(TX_SPEAKER_QUETZECOATL, TX_FEA0_032);
+ choice = showText(choices0);
+ } else if (choice == 1) {
+ const TextRef choices0[] = {
+ TX_SPEAKER_KIRK,
+ TX_FEA0_002,
+ TX_FEA0_012,
+ TX_BLANK
+ };
+ showText(TX_SPEAKER_QUETZECOATL, TX_FEA0_031);
+ choice = showText(choices0);
+ } else if (choice == 2) {
+ const TextRef choices0[] = {
+ TX_SPEAKER_KIRK,
+ TX_FEA0_014,
+ TX_FEA0_008,
+ TX_BLANK
+ };
+ showText(TX_SPEAKER_QUETZECOATL, TX_FEA0_033);
+ choice = showText(choices0);
+
+ if (choice == 0) {
+ alreadyAngered = true;
+ showText(TX_SPEAKER_QUETZECOATL, TX_FEA0_024);
+ }
+ } else
+ showText(TX_DIALOG_ERROR);
+
+ if (!alreadyAngered) {
+ if (choice == 0)
+ showText(TX_SPEAKER_QUETZECOATL, TX_FEA0_030);
+ else // choice == 1
+ showText(TX_SPEAKER_QUETZECOATL, TX_FEA0_101);
+ showText(TX_SPEAKER_KIRK, TX_FEA0_010);
+ showText(TX_SPEAKER_QUETZECOATL, TX_FEA0_026);
+
+ const TextRef choices1[] = {
+ TX_SPEAKER_KIRK,
+ TX_FEA0_013,
+ TX_FEA0_005,
+ TX_BLANK
+ };
+ choice = showText(choices1);
+
+ if (choice == 0) {
+ showText(TX_SPEAKER_QUETZECOATL, TX_FEA0_029);
+ showText(TX_SPEAKER_KIRK, TX_FEA0_003);
+ }
+
+ showText(TX_SPEAKER_QUETZECOATL, TX_FEA0_027);
+ }
+
+ // Quetzecoatl ultimately warps the crew away no matter what
+ _vm->_awayMission.disableInput = true;
+ loadActorAnim(OBJECT_QUETZECOATL, "s5r0qt");
+ playMidiMusicTracks(1);
+ _vm->_awayMission.timers[0] = 50;
+ _vm->_awayMission.timers[1] = 64;
+}
+
+void Room::feather0Timer0Expired() {
+ playVoc("SE2BIGEN");
+
+ loadActorAnim2(OBJECT_KIRK, "ktele");
+ loadActorAnim2(OBJECT_SPOCK, "stele");
+ loadActorAnim2(OBJECT_MCCOY, "mtele");
+ loadActorAnim2(OBJECT_REDSHIRT, "rtele");
+}
+
+void Room::feather0Timer1Expired() {
+ _vm->_awayMission.disableInput = false;
+ loadRoomIndex(1, 5);
+}
+
+void Room::feather0UsePhaserOnQuetzecoatl() {
+ showText(TX_SPEAKER_QUETZECOATL, TX_FEA0_025);
+}
+
+void Room::feather0UsePhaserOnMccoy() {
+ showText(TX_SPEAKER_MCCOY, TX_FEA0_016);
+}
+
+void Room::feather0UseMedkit() {
+ showText(TX_SPEAKER_MCCOY, TX_FEA0_108);
+}
+
+void Room::feather0LookAtQuetzecoatl() {
+ showText(TX_FEA0N008);
+}
+
+void Room::feather0LookAtMoon() {
+ showText(TX_FEA0N007);
+}
+
+void Room::feather0LookAtLog() {
+ showText(TX_FEA0N006);
+}
+
+void Room::feather0LookAtHut() {
+ showText(TX_FEA0N001);
+}
+
+void Room::feather0LookAnywhere() {
+ showText(TX_FEA0N009);
+}
+
+void Room::feather0LookAtEyes() {
+ showText(TX_FEA0N000);
+}
+
+void Room::feather0LookAtTree() {
+ showText(TX_FEA0N003);
+}
+
+void Room::feather0LookAtMccoy() {
+ showText(TX_FEA0N004);
+}
+
+void Room::feather0LookAtSpock() {
+ showText(TX_FEA0N005);
+}
+
+void Room::feather0LookAtRedshirt() {
+ showText(TX_FEA0N002);
+}
+
+void Room::feather0TalkToMccoy() {
+ showText(TX_SPEAKER_MCCOY, TX_FEA0_017);
+ showText(TX_SPEAKER_SPOCK, TX_FEA0_021);
+}
+
+void Room::feather0TalkToSpock() {
+ showText(TX_SPEAKER_SPOCK, TX_FEA0_022);
+ showText(TX_SPEAKER_MCCOY, TX_FEA0_018);
+}
+
+void Room::feather0TalkToRedshirt() {
+ showText(TX_SPEAKER_STRAGEY, TX_FEA0_023);
+}
+
+void Room::feather0UseSTricorderOnQuetzecoatl() {
+ spockScan(DIR_S, TX_FEA0_020, false);
+}
+
+void Room::feather0UseSTricorderAnywhere() {
+ spockScan(DIR_S, TX_FEA0_019, false);
+}
+
+void Room::feather0UseMTricorderOnQuetzecoatl() {
+ mccoyScan(DIR_S, TX_FEA0_015, false);
+}
+
+}
diff --git a/engines/startrek/rooms/feather1.cpp b/engines/startrek/rooms/feather1.cpp
new file mode 100644
index 0000000000..ac4f147a6f
--- /dev/null
+++ b/engines/startrek/rooms/feather1.cpp
@@ -0,0 +1,35 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "startrek/room.h"
+
+#define OBJECT_8 8
+
+#define HOTSPOT_20 0x20
+
+namespace StarTrek {
+
+void Room::feather1Tick1() {
+
+}
+
+}
diff --git a/engines/startrek/rooms/feather2.cpp b/engines/startrek/rooms/feather2.cpp
new file mode 100644
index 0000000000..d28e26c7fe
--- /dev/null
+++ b/engines/startrek/rooms/feather2.cpp
@@ -0,0 +1,35 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "startrek/room.h"
+
+#define OBJECT_8 8
+
+#define HOTSPOT_20 0x20
+
+namespace StarTrek {
+
+void Room::feather2Tick1() {
+
+}
+
+}
diff --git a/engines/startrek/rooms/feather3.cpp b/engines/startrek/rooms/feather3.cpp
new file mode 100644
index 0000000000..0f5f3b3d44
--- /dev/null
+++ b/engines/startrek/rooms/feather3.cpp
@@ -0,0 +1,35 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "startrek/room.h"
+
+#define OBJECT_8 8
+
+#define HOTSPOT_20 0x20
+
+namespace StarTrek {
+
+void Room::feather3Tick1() {
+
+}
+
+}
diff --git a/engines/startrek/rooms/feather4.cpp b/engines/startrek/rooms/feather4.cpp
new file mode 100644
index 0000000000..b2e92df619
--- /dev/null
+++ b/engines/startrek/rooms/feather4.cpp
@@ -0,0 +1,35 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "startrek/room.h"
+
+#define OBJECT_8 8
+
+#define HOTSPOT_20 0x20
+
+namespace StarTrek {
+
+void Room::feather4Tick1() {
+
+}
+
+}
diff --git a/engines/startrek/rooms/feather5.cpp b/engines/startrek/rooms/feather5.cpp
new file mode 100644
index 0000000000..f7a2cd1597
--- /dev/null
+++ b/engines/startrek/rooms/feather5.cpp
@@ -0,0 +1,35 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "startrek/room.h"
+
+#define OBJECT_8 8
+
+#define HOTSPOT_20 0x20
+
+namespace StarTrek {
+
+void Room::feather5Tick1() {
+
+}
+
+}
diff --git a/engines/startrek/rooms/feather6.cpp b/engines/startrek/rooms/feather6.cpp
new file mode 100644
index 0000000000..227007ac0d
--- /dev/null
+++ b/engines/startrek/rooms/feather6.cpp
@@ -0,0 +1,35 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "startrek/room.h"
+
+#define OBJECT_8 8
+
+#define HOTSPOT_20 0x20
+
+namespace StarTrek {
+
+void Room::feather6Tick1() {
+
+}
+
+}
diff --git a/engines/startrek/rooms/feather7.cpp b/engines/startrek/rooms/feather7.cpp
new file mode 100644
index 0000000000..a932404e87
--- /dev/null
+++ b/engines/startrek/rooms/feather7.cpp
@@ -0,0 +1,35 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "startrek/room.h"
+
+#define OBJECT_8 8
+
+#define HOTSPOT_20 0x20
+
+namespace StarTrek {
+
+void Room::feather7Tick1() {
+
+}
+
+}
diff --git a/engines/startrek/rooms/function_map.h b/engines/startrek/rooms/function_map.h
index b2ecf1f919..c79b81e67a 100644
--- a/engines/startrek/rooms/function_map.h
+++ b/engines/startrek/rooms/function_map.h
@@ -1748,6 +1748,71 @@ RoomAction mudd5ActionList[] = {
{ Action(ACTION_TICK, -1, -1, -1), &Room::muddaTick },
};
+RoomAction feather0ActionList[] = {
+ { Action(ACTION_TICK, 1, 0, 0), &Room::feather0Tick1 },
+ { Action(ACTION_TICK, 60, 0, 0), &Room::feather0Tick60 },
+ { Action(ACTION_TALK, 8, 0, 0), &Room::feather0TalkToQuetzecoatl },
+ { Action(ACTION_TIMER_EXPIRED, 0, 0, 0), &Room::feather0Timer0Expired },
+ { Action(ACTION_TIMER_EXPIRED, 1, 0, 0), &Room::feather0Timer1Expired },
+ { Action(ACTION_USE, OBJECT_IPHASERS, 8, 0), &Room::feather0UsePhaserOnQuetzecoatl },
+ { Action(ACTION_USE, OBJECT_IPHASERK, 8, 0), &Room::feather0UsePhaserOnQuetzecoatl },
+ { Action(ACTION_USE, OBJECT_IPHASERS, OBJECT_MCCOY, 0), &Room::feather0UsePhaserOnMccoy },
+ { Action(ACTION_USE, OBJECT_IPHASERS, OBJECT_MCCOY, 0), &Room::feather0UsePhaserOnMccoy },
+ { Action(ACTION_USE, OBJECT_IMEDKIT, -1, 0), &Room::feather0UseMedkit },
+ { Action(ACTION_LOOK, 8, 0, 0), &Room::feather0LookAtQuetzecoatl },
+ { Action(ACTION_LOOK, 0x20, 0, 0), &Room::feather0LookAtMoon },
+ { Action(ACTION_LOOK, 0x21, 0, 0), &Room::feather0LookAtLog },
+ { Action(ACTION_LOOK, 0x22, 0, 0), &Room::feather0LookAtHut },
+ { Action(ACTION_LOOK, -1, 0, 0), &Room::feather0LookAnywhere },
+ { Action(ACTION_LOOK, 0x23, 0, 0), &Room::feather0LookAtEyes },
+ { Action(ACTION_LOOK, 0x24, 0, 0), &Room::feather0LookAtEyes },
+ { Action(ACTION_LOOK, 0x25, 0, 0), &Room::feather0LookAtEyes },
+ { Action(ACTION_LOOK, 0x26, 0, 0), &Room::feather0LookAtEyes },
+ { Action(ACTION_LOOK, 0x27, 0, 0), &Room::feather0LookAtEyes },
+ { Action(ACTION_LOOK, 0x28, 0, 0), &Room::feather0LookAtEyes },
+ { Action(ACTION_LOOK, 0x29, 0, 0), &Room::feather0LookAtEyes },
+ { Action(ACTION_LOOK, 0x2a, 0, 0), &Room::feather0LookAtEyes },
+ { Action(ACTION_LOOK, 0x2b, 0, 0), &Room::feather0LookAtEyes },
+ { Action(ACTION_LOOK, 0x2c, 0, 0), &Room::feather0LookAtTree },
+ { Action(ACTION_LOOK, OBJECT_MCCOY, 0, 0), &Room::feather0LookAtMccoy },
+ { Action(ACTION_LOOK, OBJECT_SPOCK, 0, 0), &Room::feather0LookAtSpock },
+ { Action(ACTION_LOOK, OBJECT_REDSHIRT, 0, 0), &Room::feather0LookAtRedshirt },
+ { Action(ACTION_TALK, OBJECT_MCCOY, 0, 0), &Room::feather0TalkToMccoy },
+ { Action(ACTION_TALK, OBJECT_SPOCK, 0, 0), &Room::feather0TalkToSpock },
+ { Action(ACTION_TALK, OBJECT_REDSHIRT, 0, 0), &Room::feather0TalkToRedshirt },
+ { Action(ACTION_USE, OBJECT_ISTRICOR, 8, 0), &Room::feather0UseSTricorderOnQuetzecoatl },
+ { Action(ACTION_USE, OBJECT_ISTRICOR, -1, 0), &Room::feather0UseSTricorderAnywhere },
+ { Action(ACTION_USE, OBJECT_IMTRICOR, 8, 0), &Room::feather0UseMTricorderOnQuetzecoatl },
+};
+
+RoomAction feather1ActionList[] = {
+ { Action(ACTION_TICK, 1, 0, 0), &Room::feather1Tick1 },
+};
+
+RoomAction feather2ActionList[] = {
+ { Action(ACTION_TICK, 1, 0, 0), &Room::feather2Tick1 },
+};
+
+RoomAction feather3ActionList[] = {
+ { Action(ACTION_TICK, 1, 0, 0), &Room::feather3Tick1 },
+};
+
+RoomAction feather4ActionList[] = {
+ { Action(ACTION_TICK, 1, 0, 0), &Room::feather4Tick1 },
+};
+
+RoomAction feather5ActionList[] = {
+ { Action(ACTION_TICK, 1, 0, 0), &Room::feather5Tick1 },
+};
+
+RoomAction feather6ActionList[] = {
+ { Action(ACTION_TICK, 1, 0, 0), &Room::feather6Tick1 },
+};
+
+RoomAction feather7ActionList[] = {
+ { Action(ACTION_TICK, 1, 0, 0), &Room::feather7Tick1 },
+};
+
}
#endif
diff --git a/engines/startrek/startrek.cpp b/engines/startrek/startrek.cpp
index cec83ab5ee..db664011fc 100644
--- a/engines/startrek/startrek.cpp
+++ b/engines/startrek/startrek.cpp
@@ -83,7 +83,7 @@ StarTrekEngine::StarTrekEngine(OSystem *syst, const StarTrekGameDescription *gam
_textboxVar6 = 0;
_textboxHasMultipleChoices = false;
- _missionToLoad = "MUDD";
+ _missionToLoad = "FEATHER";
_roomIndexToLoad = 0;
for (int i = 0; i < NUM_OBJECTS; i++)
diff --git a/engines/startrek/text.h b/engines/startrek/text.h
index cc257d2126..f0831877d1 100644
--- a/engines/startrek/text.h
+++ b/engines/startrek/text.h
@@ -103,6 +103,9 @@ enum GameStringIDs {
TX_SPEAKER_BUCHERT,
TX_SPEAKER_MUDD,
+ TX_SPEAKER_STRAGEY,
+ TX_SPEAKER_QUETZECOATL,
+
TX_BRIDU146,
TX_G_024,
@@ -1588,6 +1591,53 @@ enum GameStringIDs {
TX_MUD5N105,
+ // MISSING
+ TX_FEA0_002,
+ TX_FEA0_003,
+ TX_FEA0_004,
+ TX_FEA0_005,
+ TX_FEA0_006,
+ TX_FEA0_007,
+ TX_FEA0_008,
+ TX_FEA0_009,
+ TX_FEA0_010,
+ TX_FEA0_011,
+ TX_FEA0_012,
+ TX_FEA0_013,
+ TX_FEA0_014,
+ TX_FEA0_015,
+ TX_FEA0_016,
+ TX_FEA0_017,
+ TX_FEA0_018,
+ TX_FEA0_019,
+ TX_FEA0_020,
+ TX_FEA0_021,
+ TX_FEA0_022,
+ TX_FEA0_023,
+ TX_FEA0_024,
+ TX_FEA0_025,
+ TX_FEA0_026,
+ TX_FEA0_027,
+ TX_FEA0_028,
+ TX_FEA0_029,
+ TX_FEA0_030,
+ TX_FEA0_031,
+ TX_FEA0_032,
+ TX_FEA0_033,
+ TX_FEA0_101,
+ TX_FEA0_108,
+ TX_FEA0N000,
+ TX_FEA0N001,
+ TX_FEA0N002,
+ TX_FEA0N003,
+ TX_FEA0N004,
+ TX_FEA0N005,
+ TX_FEA0N006,
+ TX_FEA0N007,
+ TX_FEA0N008,
+ TX_FEA0N009,
+
+
TX_SIN3_012,
@@ -1642,6 +1692,9 @@ const char * const g_gameStrings[] = {
"Lt. Buchert",
"Harry Mudd",
+ "Lt. Stragey",
+ "Quetzecoatl",
+
"#BRID\\BRIDU146#Nothing to report, Captain.",
"#GENE\\G_024#Fascinating.",
@@ -3117,6 +3170,52 @@ const char * const g_gameStrings[] = {
"#MUD5\\MUD5N105#Life support fails completely and you fall unconscious.",
+ "#FEA0\\FEA0_002#And exactly what would you have done with them? Entering Klingon space for anything puts the peace in peril.",
+ "#FEA0\\FEA0_003#And then your followers were destroyed because when white men arrived on that continent, they were believed to be you in your promised return. Your people perverted your teachings, then were destroyed by it.",
+ "#FEA0\\FEA0_004#Damned right the results were swift. The Klingons have been raiding colonies looking for you.",
+ "#FEA0\\FEA0_005#Ha! You mean your followers love pieces! They slaughtered other believers hoping you'd return.",
+ "#FEA0\\FEA0_006#I am Captain James T. Kirk of the Starship Enterprise. Did you know the Klingons are looking for you?",
+ "#FEA0\\FEA0_007#I am Captain James T. Kirk of the Starship Enterprise. What did you do to get the Klingons so upset?",
+ "#FEA0\\FEA0_008#Listen, the Klingons are ripping colonies apart to find you, so stop this nonsense. This is serious.",
+ "#FEA0\\FEA0_009#Listen, Mister, any missions conducted within Klingon space fully jeopardize the peace.",
+ "#FEA0\\FEA0_010#Quetzecoatl? How fitting you would name yourself after one of the most bloody-handed gods in Earth's history.",
+ "#FEA0\\FEA0_011#We're not your children and we don't appreciate this wild goose chase you've forced us into.",
+ "#FEA0\\FEA0_012#Whatever you did has them very upset. They're raiding worlds looking for you.",
+ "#FEA0\\FEA0_013#Your followers regularly sacrificed other believers to you after you left, offering you their still-beating hearts.",
+ "#FEA0\\FEA0_014#Your people? We represent all of the Earth's people and we certainly do not recognize you.",
+ "#FEA0\\FEA0_015#He appears human... All life signs are normal, but I'm getting strange energy readings near the base of his pituitary gland.",
+ "#FEA0\\FEA0_016#Ouch!",
+ "#FEA0\\FEA0_017#Jim, that man is dressed in ancient Aztec clothing.",
+ "#FEA0\\FEA0_018#What do you know about Earth culture? He looks like an ancient Aztec!",
+ "#FEA0\\FEA0_019#I am picking up multiple life forms in the surrounding region, Captain.",
+ "#FEA0\\FEA0_020#I am picking up strange energy readings from the alien. Perhaps Doctor McCoy could provide better data.",
+ "#FEA0\\FEA0_021#I believe you are mistaken, doctor. His clothing bears a distinct resemblance to fashions of a much later period.",
+ "#FEA0\\FEA0_022#The humanoid's adornments appear similar to those worn by leaders of Earth's early 20th century inhabitants of the South American continent.",
+ "#FEA0\\FEA0_023#I'm just a security officer, sir.",
+ "#FEA0\\FEA0_024#I am Quetzecoatl. I elevated a civilization on your world from barbarism to sentience. You are a perversion of that process. Be gone!",
+ "#FEA0\\FEA0_025#You dare fire at a god?",
+ "#FEA0\\FEA0_026#Bloody-handed? My people love peace!",
+ "#FEA0\\FEA0_027#Foul lying creatures, my gift was wasted upon you! Begone.",
+ "#FEA0\\FEA0_028#Greetings, my children. I can barely imagine that you have come so far.",
+ "#FEA0\\FEA0_029#Impossible! You must be lying!",
+ "#FEA0\\FEA0_030#Jeopardize the peace? Hardly. Peace is what I preach. I am Quetzecoatl, as you well know from the proud history of your world.",
+ "#FEA0\\FEA0_031#Quaint expression. I have done nothing to anger them. I did with them what I have done with everyone.",
+ "#FEA0\\FEA0_032#The Klingons? Amazing! This is the first time one of my missions has produced results so swiftly.",
+ "#FEA0\\FEA0_033#Who are you? I know you come from Terrasol, but you are not of my people. What goes on here?",
+ "#FEA0\\FEA0_101#No, you must be lying. They could not be raiding if they are looking for me. Violence was not the message of any of my missions. I, Quetzecoatl, preach universal brotherhood and peace.",
+ "#FEA0\\FEA0_108#Everyone is healthy, Jim, there's no need for the medical kit here.",
+ "#FEA0\\FEA0N000#Feral red eyes glare out of the dark at you.",
+ "#FEA0\\FEA0N001#It looks like the jungle has grown up into a small hut.",
+ "#FEA0\\FEA0N002#Lt. Stragey is carefully eyeing the humanoid.",
+ "#FEA0\\FEA0N003#Luminescent insects swarm near a large tree.",
+ "#FEA0\\FEA0N004#McCoy is fidgeting around.",
+ "#FEA0\\FEA0N005#Spock is analyzing the surroundings.",
+ "#FEA0\\FEA0N006#The log appears sturdy enough to cross.",
+ "#FEA0\\FEA0N007#The moon of Digifal. Legend says that the gods of good and evil fortune live there and will glance back at those who look at them, and either a miracle or a catastrophe will soon befall those who gaze upon it.",
+ "#FEA0\\FEA0N008#There is a tall, slender, dark haired man looking intently at you.",
+ "#FEA0\\FEA0N009#You see dense vegetation in all directions.",
+
+
"#SIN3\\SIN3_012#Can't say I like the decor.",