diff options
author | Matthew Stewart | 2018-07-04 22:06:59 -0400 |
---|---|---|
committer | Eugene Sandulenko | 2018-08-09 08:37:30 +0200 |
commit | 5863f515f72904ab17f976a55264fc5a342fc90c (patch) | |
tree | 01d5c6819992026711d7b8fa5f2772c50a59f316 /engines/startrek/rooms | |
parent | 8aef8c453918a583e1d804bf371437fef3b08e8c (diff) | |
download | scummvm-rg350-5863f515f72904ab17f976a55264fc5a342fc90c.tar.gz scummvm-rg350-5863f515f72904ab17f976a55264fc5a342fc90c.tar.bz2 scummvm-rg350-5863f515f72904ab17f976a55264fc5a342fc90c.zip |
STARTREK: FEATHER5
Diffstat (limited to 'engines/startrek/rooms')
-rw-r--r-- | engines/startrek/rooms/feather4.cpp | 10 | ||||
-rw-r--r-- | engines/startrek/rooms/feather5.cpp | 389 | ||||
-rw-r--r-- | engines/startrek/rooms/function_map.h | 6 |
3 files changed, 394 insertions, 11 deletions
diff --git a/engines/startrek/rooms/feather4.cpp b/engines/startrek/rooms/feather4.cpp index 7629353afe..69d3f37842 100644 --- a/engines/startrek/rooms/feather4.cpp +++ b/engines/startrek/rooms/feather4.cpp @@ -24,7 +24,7 @@ #define HOTSPOT_EYES 0x20 #define HOTSPOT_MUSHROOM 0x21 -#define HOTSPOT_BUSH 0x22 +#define HOTSPOT_FERN 0x22 #define HOTSPOT_LIGHT_1 0x23 #define HOTSPOT_LIGHT_2 0x24 #define HOTSPOT_LIGHT_3 0x25 @@ -40,7 +40,7 @@ extern const RoomAction feather4ActionList[] = { { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_LIGHT_2, 0}, &Room::feather4UseSTricorderOnLight }, { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_LIGHT_3, 0}, &Room::feather4UseSTricorderOnLight }, { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_MUSHROOM, 0},&Room::feather4UseSTricorderOnMushroom }, - { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_BUSH, 0}, &Room::feather4UseSTricorderOnBush }, + { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_FERN, 0}, &Room::feather4UseSTricorderOnFern }, { {ACTION_USE, OBJECT_ISTRICOR, 0xff, 0}, &Room::feather4UseSTricorderAnywhere }, { {ACTION_USE, OBJECT_IMTRICOR, HOTSPOT_LIGHT_1, 0}, &Room::feather4UseMTricorderOnLight }, { {ACTION_USE, OBJECT_IMTRICOR, HOTSPOT_LIGHT_2, 0}, &Room::feather4UseMTricorderOnLight }, @@ -54,7 +54,7 @@ extern const RoomAction feather4ActionList[] = { { {ACTION_LOOK, HOTSPOT_EYES, 0, 0}, &Room::feather4LookAtEyes }, { {ACTION_LOOK, 0xff, 0, 0}, &Room::feather4LookAnywhere }, { {ACTION_LOOK, HOTSPOT_MUSHROOM, 0, 0}, &Room::feather4LookAtMushroom }, - { {ACTION_LOOK, HOTSPOT_BUSH, 0, 0}, &Room::feather4LookAtBush }, + { {ACTION_LOOK, HOTSPOT_FERN, 0, 0}, &Room::feather4LookAtFern }, { {ACTION_LOOK, HOTSPOT_LIGHT_1, 0, 0}, &Room::feather4LookAtLight }, { {ACTION_LOOK, HOTSPOT_LIGHT_2, 0, 0}, &Room::feather4LookAtLight }, { {ACTION_LOOK, HOTSPOT_LIGHT_3, 0, 0}, &Room::feather4LookAtLight }, @@ -88,7 +88,7 @@ void Room::feather4UseSTricorderOnMushroom() { spockScan(DIR_W, TX_FEA4_012); } -void Room::feather4UseSTricorderOnBush() { +void Room::feather4UseSTricorderOnFern() { spockScan(DIR_W, TX_FEA4_009); } @@ -136,7 +136,7 @@ void Room::feather4LookAtMushroom() { showText(TX_FEA4N001); } -void Room::feather4LookAtBush() { +void Room::feather4LookAtFern() { showText(TX_FEA4N000); } diff --git a/engines/startrek/rooms/feather5.cpp b/engines/startrek/rooms/feather5.cpp index f7a2cd1597..843604d65c 100644 --- a/engines/startrek/rooms/feather5.cpp +++ b/engines/startrek/rooms/feather5.cpp @@ -22,14 +22,399 @@ #include "startrek/room.h" -#define OBJECT_8 8 +#define OBJECT_MONSTER 8 +#define OBJECT_THROWN_FERN 10 -#define HOTSPOT_20 0x20 +// The log in the middle of this room has odd "hitboxes". The top half is hotspot 0x20, +// while the bottom half is hotspot 0x22. You need to use the redshirt on the top half to +// cross over. Not sure why this is. + +#define HOTSPOT_LEFT_EXIT 0x20 +#define HOTSPOT_FERN 0x21 +#define HOTSPOT_LOG 0x22 +#define HOTSPOT_WATER 0x23 +#define HOTSPOT_INSECTS_1 0x24 +#define HOTSPOT_INSECTS_2 0x25 +#define HOTSPOT_CAVE 0x26 namespace StarTrek { +extern const RoomAction feather5ActionList[] = { + { {ACTION_TICK, 1, 0, 0}, &Room::feather5Tick1 }, + { {ACTION_TOUCHED_HOTSPOT, 0, 0, 0}, &Room::feather5TouchedHotspot0 }, + { {ACTION_USE, OBJECT_SPOCK, HOTSPOT_FERN, 0}, &Room::feather5UseSpockOnFern }, + { {ACTION_USE, OBJECT_MCCOY, HOTSPOT_FERN, 0}, &Room::feather5UseMccoyOnFern }, + { {ACTION_USE, OBJECT_REDSHIRT, HOTSPOT_FERN, 0}, &Room::feather5UseRedshirtOnFern }, + + { {ACTION_USE, OBJECT_REDSHIRT, HOTSPOT_LEFT_EXIT, 0}, &Room::feather5UseRedshirtOnLeftExit }, + { {ACTION_DONE_WALK, 8, 0, 0}, &Room::feather5RedshirtReachedLog }, + { {ACTION_DONE_ANIM, 8, 0, 0}, &Room::feather5RedshirtDeathFinished }, + + { {ACTION_USE, OBJECT_SPOCK, HOTSPOT_LEFT_EXIT, 0}, &Room::feather5UseSpockOnLeftExit }, + { {ACTION_USE, OBJECT_MCCOY, HOTSPOT_LEFT_EXIT, 0}, &Room::feather5UseMccoyOnLeftExit }, + { {ACTION_USE, OBJECT_ISNAKE, OBJECT_KIRK, 0}, &Room::feather5UseSnakeOnKirk }, + { {ACTION_USE, OBJECT_ISNAKE, OBJECT_SPOCK, 0}, &Room::feather5UseSnakeOnSpock }, + { {ACTION_USE, OBJECT_ISNAKE, OBJECT_MCCOY, 0}, &Room::feather5UseSnakeOnMccoy }, + { {ACTION_USE, OBJECT_ISNAKE, OBJECT_REDSHIRT, 0}, &Room::feather5UseSnakeOnRedshirt }, + { {ACTION_USE, OBJECT_ISNAKE, HOTSPOT_WATER, 0}, &Room::feather5UseSnakeOnWater }, + { {ACTION_USE, OBJECT_IKNIFE, OBJECT_KIRK, 0}, &Room::feather5UseKnifeOnKirk }, + { {ACTION_USE, OBJECT_IKNIFE, OBJECT_SPOCK, 0}, &Room::feather5UseKnifeOnSpock }, + { {ACTION_USE, OBJECT_IKNIFE, OBJECT_MCCOY, 0}, &Room::feather5UseKnifeOnMccoy }, + { {ACTION_USE, OBJECT_IKNIFE, OBJECT_REDSHIRT, 0}, &Room::feather5UseKnifeOnRedshirt }, + { {ACTION_USE, OBJECT_IKNIFE, HOTSPOT_WATER, 0}, &Room::feather5UseKnifeOnWater }, + { {ACTION_USE, OBJECT_IKNIFE, OBJECT_MONSTER, 0}, &Room::feather5UseKnifeOnMonster }, + { {ACTION_GET, HOTSPOT_FERN, 0, 0}, &Room::feather5GetFern }, + + { {ACTION_USE, OBJECT_IKNIFE, HOTSPOT_FERN, 0}, &Room::feather5UseKnifeOnFern }, + { {ACTION_DONE_WALK, 1, 0, 0}, &Room::feather5ReachedFern }, + { {ACTION_DONE_ANIM, 1, 0, 0}, &Room::feather5PickedUpFern }, + + { {ACTION_USE, OBJECT_IFERN, OBJECT_MONSTER, 0}, &Room::feather5UseFernOnMonster }, + { {ACTION_USE, OBJECT_IFERN, HOTSPOT_WATER, 0}, &Room::feather5UseFernOnMonster }, + { {ACTION_DONE_WALK, 2, 0, 0}, &Room::feather5ReachedPositionToUseFern }, + { {ACTION_DONE_ANIM, 2, 0, 0}, &Room::feather5DoneThrowingFern }, + { {ACTION_DONE_ANIM, 3, 0, 0}, &Room::feather5FernFellIntoWater }, + { {ACTION_TIMER_EXPIRED, 1, 0, 0}, &Room::feather5Timer1Expired }, + + { {ACTION_USE, OBJECT_IROCK, OBJECT_SPOCK, 0}, &Room::feather5UseRockOnSpock }, + { {ACTION_USE, OBJECT_IROCK, OBJECT_MCCOY, 0}, &Room::feather5UseRockOnMccoy }, + { {ACTION_USE, OBJECT_IROCK, OBJECT_REDSHIRT, 0}, &Room::feather5UseRockOnRedshirt }, + { {ACTION_USE, OBJECT_SPOCK, OBJECT_THROWN_FERN, 0}, &Room::feather5UseCrewmanOnThrownFern }, + { {ACTION_USE, OBJECT_MCCOY, OBJECT_THROWN_FERN, 0}, &Room::feather5UseCrewmanOnThrownFern }, + { {ACTION_USE, OBJECT_REDSHIRT, OBJECT_THROWN_FERN, 0},&Room::feather5UseCrewmanOnThrownFern }, + { {ACTION_USE, OBJECT_SPOCK, OBJECT_MONSTER, 0}, &Room::feather5UseSpockOnMonster }, + { {ACTION_USE, OBJECT_MCCOY, OBJECT_MONSTER, 0}, &Room::feather5UseMccoyOnMonster }, + { {ACTION_USE, OBJECT_REDSHIRT, OBJECT_MONSTER, 0}, &Room::feather5UseRedshirtOnMonster }, + { {ACTION_USE, OBJECT_IPHASERS, 0xff, 0}, &Room::feather5UsePhaser }, + { {ACTION_USE, OBJECT_IPHASERK, 0xff, 0}, &Room::feather5UsePhaser }, + { {ACTION_LOOK, 0xff, 0, 0}, &Room::feather5LookAnywhere }, + { {ACTION_LOOK, HOTSPOT_LOG, 0, 0}, &Room::feather5LookAtLog }, + { {ACTION_LOOK, HOTSPOT_WATER, 0, 0}, &Room::feather5LookAtWater }, + { {ACTION_LOOK, HOTSPOT_FERN, 0, 0}, &Room::feather5LookAtFern }, + { {ACTION_LOOK, HOTSPOT_INSECTS_1, 0, 0}, &Room::feather5LookAtInsects }, + { {ACTION_LOOK, HOTSPOT_INSECTS_2, 0, 0}, &Room::feather5LookAtInsects }, + { {ACTION_LOOK, HOTSPOT_CAVE, 0, 0}, &Room::feather5LookAtCave }, + { {ACTION_LOOK, OBJECT_MONSTER, 0, 0}, &Room::feather5LookAtMonster }, + { {ACTION_LOOK, OBJECT_SPOCK, 0, 0}, &Room::feather5LookAtSpock }, + { {ACTION_LOOK, OBJECT_KIRK, 0, 0}, &Room::feather5LookAtKirk }, + { {ACTION_LOOK, OBJECT_MCCOY, 0, 0}, &Room::feather5LookAtMccoy }, + { {ACTION_LOOK, OBJECT_REDSHIRT, 0, 0}, &Room::feather5LookAtRedshirt }, + { {ACTION_TALK, OBJECT_MCCOY, 0, 0}, &Room::feather5TalkToMccoy }, + { {ACTION_TALK, OBJECT_SPOCK, 0, 0}, &Room::feather5TalkToSpock }, + { {ACTION_TALK, OBJECT_REDSHIRT, 0, 0}, &Room::feather5TalkToRedshirt }, + { {ACTION_USE, OBJECT_IMTRICOR, HOTSPOT_WATER, 0}, &Room::feather5UseMTricorderOnWater }, + { {ACTION_USE, OBJECT_IMTRICOR, OBJECT_MONSTER, 0}, &Room::feather5UseMTricorderOnMonster }, + { {ACTION_USE, OBJECT_ISTRICOR, OBJECT_MONSTER, 0}, &Room::feather5UseSTricorderOnMonster }, + { {ACTION_USE, OBJECT_ISTRICOR, 0xff, 0}, &Room::feather5UseSTricorderAnywhere }, + { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_WATER, 0}, &Room::feather5UseSTricorderOnWater }, + { {ACTION_USE, OBJECT_ISTRICOR, HOTSPOT_FERN, 0}, &Room::feather5UseSTricorderOnFern }, + { {ACTION_USE, OBJECT_IMEDKIT, 0xff, 0}, &Room::feather5UseMedkitAnywhere }, +}; + +extern const int feather5NumActions = sizeof(feather5ActionList) / sizeof(RoomAction); + + void Room::feather5Tick1() { + playVoc("FEA5LOOP"); + playMidiMusicTracks(29); + + if (!_vm->_awayMission.feather.waterMonsterRetreated) + loadActorAnim(OBJECT_MONSTER, "s5r5os", 0x4e, 0xa4); + else + loadMapFile("feath5b"); +} + +void Room::feather5TouchedHotspot0() { // Approached the log + if (!_vm->_awayMission.feather.waterMonsterRetreated) { + showText(TX_SPEAKER_SPOCK, TX_FEA5_005); + if (!_vm->_awayMission.redshirtDead) + showText(TX_SPEAKER_STRAGEY, TX_FEA5_033); + } +} + +void Room::feather5UseSpockOnFern() { + showText(TX_SPEAKER_SPOCK, TX_FEA5_004); +} + +void Room::feather5UseMccoyOnFern() { + showText(TX_SPEAKER_MCCOY, TX_FEA5_009); +} + +void Room::feather5UseRedshirtOnFern() { + showText(TX_SPEAKER_STRAGEY, TX_FEA5_035); +} + +void Room::feather5UseRedshirtOnLeftExit() { + if (!_vm->_awayMission.feather.waterMonsterRetreated) { + showText(TX_SPEAKER_STRAGEY, TX_FEA5_034); + _vm->_awayMission.disableInput = true; + loadMapFile("feath5b"); + walkCrewmanC(OBJECT_REDSHIRT, 0x8f, 0x64, &Room::feather5RedshirtReachedLog); + } +} + +void Room::feather5RedshirtReachedLog() { + playMidiMusicTracks(2); + playVoc("TENTICL2"); + loadActorAnim(OBJECT_MONSTER, "s5r5oh", 0x4e, 0xa4); + loadActorAnimC(OBJECT_REDSHIRT, "s5r5ol", 0x8f, 0x64, &Room::feather5RedshirtDeathFinished); + _vm->_awayMission.feather.waterMonsterRetreated = true; + _vm->_awayMission.redshirtDead = true; +} + +void Room::feather5RedshirtDeathFinished() { + loadActorStandAnim(OBJECT_REDSHIRT); + _vm->_awayMission.disableInput = false; +} + +void Room::feather5UseSpockOnLeftExit() { + if (!_vm->_awayMission.feather.waterMonsterRetreated) + showText(TX_SPEAKER_SPOCK, TX_FEA5_002); +} + +void Room::feather5UseMccoyOnLeftExit() { + if (!_vm->_awayMission.feather.waterMonsterRetreated) + showText(TX_SPEAKER_MCCOY, TX_FEA5_015); +} + +void Room::feather5UseSnakeOnKirk() { + showText(TX_SPEAKER_KIRK, TX_FEA5N010); +} + +void Room::feather5UseSnakeOnSpock() { + showText(TX_SPEAKER_SPOCK, TX_FEA5_032); +} + +void Room::feather5UseSnakeOnMccoy() { + showText(TX_SPEAKER_MCCOY, TX_FEA5_020); +} + +void Room::feather5UseSnakeOnRedshirt() { + showText(TX_SPEAKER_STRAGEY, TX_FEA5_040); +} + +void Room::feather5UseSnakeOnWater() { + showText(TX_FEA5N011); + loseItem(OBJECT_ISNAKE); +} + +void Room::feather5UseKnifeOnKirk() { + // ENHANCEMENT: Originally showed TX_DEM0_020 here ("Jim, are you out of your mind?") + // However, there is an unused audio file for text that otherwise only appears in the + // mac version. (DOS floppy version has yet another variation for this text.) + // We'll use that unused audio file here... + showText(TX_SPEAKER_KIRK, TX_FEA5_001); +} + +void Room::feather5UseKnifeOnSpock() { + showText(TX_SPEAKER_SPOCK, TX_FEA5_029); +} + +void Room::feather5UseKnifeOnMccoy() { + showText(TX_SPEAKER_MCCOY, TX_FEA5_008); +} + +void Room::feather5UseKnifeOnRedshirt() { + showText(TX_SPEAKER_STRAGEY, TX_FEA5_039); +} + +void Room::feather5UseKnifeOnWater() { + showText(TX_SPEAKER_MCCOY, TX_FEA5_018); +} + +void Room::feather5UseKnifeOnMonster() { + showText(TX_SPEAKER_SPOCK, TX_FEA5_006); +} + +void Room::feather5GetFern() { + showText(TX_FEA5N008); +} + +void Room::feather5UseKnifeOnFern() { + if (_vm->_awayMission.feather.gotFern) + showText(TX_FEA5N015); + else { + walkCrewmanC(OBJECT_KIRK, 0x106, 0x8a, &Room::feather5ReachedFern); + _vm->_awayMission.disableInput = true; + } +} + +void Room::feather5ReachedFern() { + loadActorAnimC(OBJECT_KIRK, "s5r5kf", -1, -1, &Room::feather5PickedUpFern); +} + +void Room::feather5PickedUpFern() { + _vm->_awayMission.disableInput = false; + loadActorStandAnim(OBJECT_KIRK); + giveItem(OBJECT_IFERN); + _vm->_awayMission.feather.gotFern = true; +} + + +void Room::feather5UseFernOnMonster() { + // BUG: Infinite score mechanism. Just keep throwing ferns into the water. + _vm->_awayMission.feather.missionScore += 2; + walkCrewmanC(OBJECT_KIRK, 0x106, 0x8a, &Room::feather5ReachedPositionToUseFern); + _vm->_awayMission.disableInput = true; +} + +void Room::feather5ReachedPositionToUseFern() { + loadActorAnimC(OBJECT_KIRK, "s5r5kt", -1, -1, &Room::feather5DoneThrowingFern); + loadActorAnimC(OBJECT_THROWN_FERN, "s5r5pt", 0xe6, 0x52, &Room::feather5FernFellIntoWater); +} + +void Room::feather5DoneThrowingFern() { + _vm->_awayMission.disableInput = false; + loadActorStandAnim(OBJECT_KIRK); + loseItem(OBJECT_IFERN); + _vm->_awayMission.feather.gotFern = false; +} + +void Room::feather5FernFellIntoWater() { + if (!_vm->_awayMission.feather.waterMonsterRetreated) { + _vm->_awayMission.feather.waterMonsterRetreated = true; + _vm->_awayMission.timers[1] = 20; + loadActorStandAnim(OBJECT_MONSTER); + loadMapFile("feath5b"); + } +} + +void Room::feather5Timer1Expired() { // Spock explains that the creature retreated + showText(TX_SPEAKER_SPOCK, TX_FEA5_025); +} + + +void Room::feather5UseRockOnSpock() { + showText(TX_SPEAKER_SPOCK, TX_FEA5_027); +} + +void Room::feather5UseRockOnMccoy() { + showText(TX_SPEAKER_MCCOY, TX_FEA5_019); +} + +void Room::feather5UseRockOnRedshirt() { + showText(TX_SPEAKER_STRAGEY, TX_FEA5_038); +} + +void Room::feather5UseCrewmanOnThrownFern() { + // This might be unused? The object in question (OBJECT_THROWN_FERN) shouldn't be + // visible while player control is active. + showText(TX_FEA5N003); +} + +void Room::feather5UseSpockOnMonster() { + showText(TX_SPEAKER_SPOCK, TX_FEA5_003); +} + +void Room::feather5UseMccoyOnMonster() { + showText(TX_SPEAKER_MCCOY, TX_FEA5_016); +} + +void Room::feather5UseRedshirtOnMonster() { + showText(TX_SPEAKER_STRAGEY, TX_FEA5_037); +} + +void Room::feather5UsePhaser() { + showText(TX_SPEAKER_SPOCK, TX_FEA5_028); +} + +void Room::feather5LookAnywhere() { + showText(TX_FEA5N012); +} + +void Room::feather5LookAtLog() { + showText(TX_FEA5N007); +} + +void Room::feather5LookAtWater() { + showText(TX_FEA5N009); +} + +void Room::feather5LookAtFern() { + showText(TX_FEA5N014); +} + +void Room::feather5LookAtInsects() { + showText(TX_FEA5N005); +} + +void Room::feather5LookAtCave() { + showText(TX_FEA5N013); +} + +void Room::feather5LookAtMonster() { + showText(TX_FEA5N000); +} + +void Room::feather5LookAtSpock() { + showText(TX_FEA5N006); +} + +void Room::feather5LookAtKirk() { + if (!_vm->_awayMission.feather.waterMonsterRetreated) + showText(TX_FEA5N001); + else // ENHANCEMENT: Fall back to default behaviour instead of doing nothing + _vm->_awayMission.rdfStillDoDefaultAction = true; +} + +void Room::feather5LookAtMccoy() { + if (!_vm->_awayMission.feather.waterMonsterRetreated) + showText(TX_FEA5N002); + else // ENHANCEMENT: Fall back to default behaviour instead of doing nothing + _vm->_awayMission.rdfStillDoDefaultAction = true; +} + +void Room::feather5LookAtRedshirt() { + if (!_vm->_awayMission.feather.waterMonsterRetreated) + showText(TX_FEA5N004); + else // ENHANCEMENT: Fall back to default behaviour instead of doing nothing + _vm->_awayMission.rdfStillDoDefaultAction = true; +} + +void Room::feather5TalkToMccoy() { + showText(TX_SPEAKER_MCCOY, TX_FEA5_007); +} + +void Room::feather5TalkToSpock() { + showText(TX_SPEAKER_SPOCK, TX_FEA5_022); +} + +void Room::feather5TalkToRedshirt() { + showText(TX_SPEAKER_STRAGEY, TX_FEA5_036); +} + +void Room::feather5UseMTricorderOnWater() { + if (_vm->_awayMission.feather.waterMonsterRetreated) + mccoyScan(DIR_W, TX_FEA5_011); + else + mccoyScan(DIR_W, TX_FEA5_014); +} + +void Room::feather5UseMTricorderOnMonster() { + mccoyScan(DIR_W, TX_FEA5_013); +} + +void Room::feather5UseSTricorderOnMonster() { + spockScan(DIR_W, TX_FEA5_024); +} + +void Room::feather5UseSTricorderAnywhere() { + spockScan(DIR_W, TX_FEA5_026); +} + +void Room::feather5UseSTricorderOnWater() { + if (_vm->_awayMission.feather.waterMonsterRetreated) + spockScan(DIR_W, TX_FEA5_031); + else + spockScan(DIR_W, TX_FEA5_030); +} + +void Room::feather5UseSTricorderOnFern() { + spockScan(DIR_N, TX_FEA5_023); +} +void Room::feather5UseMedkitAnywhere() { + showText(TX_SPEAKER_MCCOY, TX_FEA5_010); } } diff --git a/engines/startrek/rooms/function_map.h b/engines/startrek/rooms/function_map.h index e0996f3b86..ab53a11159 100644 --- a/engines/startrek/rooms/function_map.h +++ b/engines/startrek/rooms/function_map.h @@ -1782,10 +1782,8 @@ RoomAction feather0ActionList[] = { extern const RoomAction feather1ActionList[], feather2ActionList[], feather3ActionList[], feather4ActionList[]; extern const int feather1NumActions, feather2NumActions, feather3NumActions, feather4NumActions; - -RoomAction feather5ActionList[] = { - { {ACTION_TICK, 1, 0, 0}, &Room::feather5Tick1 }, -}; +extern const RoomAction feather5ActionList[]; +extern const int feather5NumActions; RoomAction feather6ActionList[] = { { {ACTION_TICK, 1, 0, 0}, &Room::feather6Tick1 }, |