diff options
author | Matthew Stewart | 2018-07-05 23:42:25 -0400 |
---|---|---|
committer | Eugene Sandulenko | 2018-08-09 08:37:30 +0200 |
commit | 092cf422cab8aaf21adf742bf4f0b8154f82b113 (patch) | |
tree | a631eba0ec4c4fcc61c7c9fd3a3234add0d936fd /engines/startrek/rooms | |
parent | 0c41f30f58b1e4c072b8ae695acc09ebcc3ae26b (diff) | |
download | scummvm-rg350-092cf422cab8aaf21adf742bf4f0b8154f82b113.tar.gz scummvm-rg350-092cf422cab8aaf21adf742bf4f0b8154f82b113.tar.bz2 scummvm-rg350-092cf422cab8aaf21adf742bf4f0b8154f82b113.zip |
STARTREK: FEATHER7
Diffstat (limited to 'engines/startrek/rooms')
-rw-r--r-- | engines/startrek/rooms/feather7.cpp | 135 | ||||
-rw-r--r-- | engines/startrek/rooms/function_map.h | 8 |
2 files changed, 134 insertions, 9 deletions
diff --git a/engines/startrek/rooms/feather7.cpp b/engines/startrek/rooms/feather7.cpp index a932404e87..3527014cda 100644 --- a/engines/startrek/rooms/feather7.cpp +++ b/engines/startrek/rooms/feather7.cpp @@ -22,14 +22,143 @@ #include "startrek/room.h" -#define OBJECT_8 8 - -#define HOTSPOT_20 0x20 +#define OBJECT_QUETZECOATL 8 namespace StarTrek { +extern const RoomAction feather7ActionList[] = { + { {ACTION_TICK, 1, 0, 0}, &Room::feather7Tick1 }, + { {ACTION_TICK, 40, 0, 0}, &Room::feather7Tick40 }, + { {ACTION_DONE_WALK, 1, 0, 0}, &Room::feather7KirkReachedSeat }, + { {ACTION_DONE_WALK, 2, 0, 0}, &Room::feather7SpockReachedSeat }, + { {ACTION_DONE_WALK, 3, 0, 0}, &Room::feather7MccoyReachedSeat }, + { {ACTION_DONE_ANIM, 4, 0, 0}, &Room::feather7QuetzecoatlReachedSeat }, + { {ACTION_DONE_ANIM, 1, 0, 0}, &Room::feather7KirkSatDown }, + { {ACTION_DONE_ANIM, 2, 0, 0}, &Room::feather7ReadyToBeamOut }, +}; + +extern const int feather7NumActions = sizeof(feather7ActionList) / sizeof(RoomAction); + + void Room::feather7Tick1() { + playVoc("FEA7LOOP"); + playMidiMusicTracks(33); + _vm->_awayMission.disableInput = 2; + loadActorAnim(OBJECT_QUETZECOATL, "s5r7qn", 0x106, 0x98); +} + +void Room::feather7Tick40() { + if (_vm->_awayMission.feather.diedFromStalactites) + showText(TX_SPEAKER_QUETZECOATL, TX_FEA7_017); + + showText(TX_SPEAKER_QUETZECOATL, TX_FEA7_022); + + if (_vm->_awayMission.redshirtDead) + showText(TX_SPEAKER_QUETZECOATL, TX_FEA7_021); + + // BUGFIX: Show this even if redshirt isn't dead (he wishes you wouldn't have knocked + // out Tlaoxac) + if (_vm->_awayMission.feather.knockedOutTlaoxac) + showText(TX_SPEAKER_QUETZECOATL, TX_FEA7_023); + + showText(TX_SPEAKER_QUETZECOATL, TX_FEA7_027); + + walkCrewmanC(OBJECT_KIRK, 0x6c, 0x93, &Room::feather7KirkReachedSeat); + walkCrewmanC(OBJECT_SPOCK, 0xbb, 0x8c, &Room::feather7SpockReachedSeat); + walkCrewmanC(OBJECT_MCCOY, 0x8d, 0x8c, &Room::feather7MccoyReachedSeat); + loadActorAnimC(OBJECT_QUETZECOATL, "s5r7qw", -1, -1, &Room::feather7QuetzecoatlReachedSeat); +} + +void Room::feather7KirkReachedSeat() { + loadActorAnimC(OBJECT_KIRK, "s5r7ks", -1, -1, &Room::feather7KirkSatDown); +} + +void Room::feather7SpockReachedSeat() { + loadActorAnim2(OBJECT_SPOCK, "s5r7ss"); +} + +void Room::feather7MccoyReachedSeat() { + loadActorAnim2(OBJECT_MCCOY, "s5r7ms"); +} + +void Room::feather7QuetzecoatlReachedSeat() { + loadActorAnim2(OBJECT_QUETZECOATL, "s5r7qn", 0x97, 0x98); +} + +void Room::feather7KirkSatDown() { + const TextRef choices1[] = { + TX_SPEAKER_KIRK, + TX_FEA7_005, TX_FEA7_006, TX_FEA7_010, + TX_BLANK + }; + int choice = showText(choices1); + + if (choice == 0) { + _roomVar.feather.insultedQuetzecoatl = true; + showText(TX_SPEAKER_QUETZECOATL, TX_FEA7_020); + } else if (choice == 1) + showText(TX_SPEAKER_QUETZECOATL, TX_FEA7_019); + else + showText(TX_SPEAKER_QUETZECOATL, TX_FEA7_016); + + showText(TX_SPEAKER_QUETZECOATL, TX_FEA7_029); + + const TextRef choices2[] = { + TX_SPEAKER_KIRK, + TX_FEA7_007, TX_FEA7_004, TX_FEA7_012, + TX_BLANK + }; + choice = showText(choices2); + + if (choice == 0) { + _roomVar.feather.insultedQuetzecoatl = true; + showText(TX_SPEAKER_QUETZECOATL, TX_FEA7_030); + } else if (choice == 1) + showText(TX_SPEAKER_QUETZECOATL, TX_FEA7_018); + else { + _roomVar.feather.insultedQuetzecoatl = true; + showText(TX_SPEAKER_QUETZECOATL, TX_FEA7_026); + } + + showText(TX_SPEAKER_SPOCK, TX_FEA7_014); + showText(TX_SPEAKER_QUETZECOATL, TX_FEA7_024); + + const TextRef choices3[] = { + TX_SPEAKER_KIRK, + TX_FEA7_008, TX_FEA7_009, TX_FEA7_011, + TX_BLANK + }; + choice = showText(choices3); + + if (choice == 0) { + _roomVar.feather.insultedQuetzecoatl = true; + showText(TX_SPEAKER_QUETZECOATL, TX_FEA7_025); + } else if (choice == 1) + showText(TX_SPEAKER_QUETZECOATL, TX_FEA7_028); + + showText(TX_SPEAKER_QUETZECOATL, TX_FEA7_015); + showText(TX_SPEAKER_MCCOY, TX_FEA7_013); + showText(TX_SPEAKER_KIRK, TX_FEA7_003); + + loadActorAnimC(OBJECT_KIRK, "s5r7ku", -1, -1, &Room::feather7ReadyToBeamOut); + loadActorAnim2(OBJECT_SPOCK, "s5r7su"); + loadActorAnim2(OBJECT_MCCOY, "s5r7mu"); +} + +void Room::feather7ReadyToBeamOut() { + if (_vm->_awayMission.redshirtDead) + showText(TX_SPEAKER_KIRK, TX_FEA7_002); + else { + _vm->_awayMission.feather.missionScore += 1; + showText(TX_SPEAKER_KIRK, TX_FEA7_001); + } + + if (!_roomVar.feather.insultedQuetzecoatl) + _vm->_awayMission.feather.missionScore += 2; + _vm->_awayMission.feather.missionScore += 4; + loadActorAnim2(OBJECT_QUETZECOATL, "s5r7qt"); + endMission(_vm->_awayMission.feather.missionScore, 0x13, 0); } } diff --git a/engines/startrek/rooms/function_map.h b/engines/startrek/rooms/function_map.h index 1bc32ff544..a00aa5603f 100644 --- a/engines/startrek/rooms/function_map.h +++ b/engines/startrek/rooms/function_map.h @@ -1782,12 +1782,8 @@ RoomAction feather0ActionList[] = { extern const RoomAction feather1ActionList[], feather2ActionList[], feather3ActionList[], feather4ActionList[]; extern const int feather1NumActions, feather2NumActions, feather3NumActions, feather4NumActions; -extern const RoomAction feather5ActionList[], feather6ActionList[]; -extern const int feather5NumActions, feather6NumActions; - -RoomAction feather7ActionList[] = { - { {ACTION_TICK, 1, 0, 0}, &Room::feather7Tick1 }, -}; +extern const RoomAction feather5ActionList[], feather6ActionList[], feather7ActionList[]; +extern const int feather5NumActions, feather6NumActions, feather7NumActions; } |