diff options
Diffstat (limited to 'engines/pegasus')
-rw-r--r-- | engines/pegasus/neighborhood/norad/delta/globegame.cpp | 10 | ||||
-rw-r--r-- | engines/pegasus/neighborhood/norad/delta/noraddelta.cpp | 5 | ||||
-rw-r--r-- | engines/pegasus/neighborhood/tsa/fulltsa.cpp | 1 | ||||
-rw-r--r-- | engines/pegasus/neighborhood/tsa/tinytsa.cpp | 1 | ||||
-rw-r--r-- | engines/pegasus/neighborhood/wsc/wsc.cpp | 13 |
5 files changed, 21 insertions, 9 deletions
diff --git a/engines/pegasus/neighborhood/norad/delta/globegame.cpp b/engines/pegasus/neighborhood/norad/delta/globegame.cpp index 1416c51c8d..0b95e9bc2b 100644 --- a/engines/pegasus/neighborhood/norad/delta/globegame.cpp +++ b/engines/pegasus/neighborhood/norad/delta/globegame.cpp @@ -905,6 +905,11 @@ void GlobeGame::clickGlobe(const Input &input) { _monitorMovie.start(); _owner->requestSpotSound(kMaximumDeactivationIn, kMaximumDeactivationOut, kFilterNoInput, kSpotSoundCompletedFlag); + + // This sound was left out of the original. + _owner->requestSpotSound(kAllSilosDeactivatedIn, kAllSilosDeactivatedOut, + kFilterNoInput, kSpotSoundCompletedFlag); + _gameState = kPlayerWon1; } else { _owner->requestDelay(2, 1, kFilterNoInput, kDelayCompletedFlag); @@ -1060,12 +1065,13 @@ void GlobeGame::doSolve() { _upperNamesMovie.hide(); _lowerNamesMovie.hide(); _countdown.hide(); - _monitorMovie.setSegment(kMaxDeactivatedStart * _monitorMovie.getScale(), kMaxDeactivatedStop * _monitorMovie.getScale()); - _monitorMovie.setTime(kMaxDeactivatedStart * _monitorMovie.getScale()); + _monitorMovie.setSegment(kMaxDeactivatedStart * _monitorMovie.getScale() + (kSiloDeactivatedOut - kSiloDeactivatedIn), kMaxDeactivatedStop * _monitorMovie.getScale()); + _monitorMovie.setTime(kMaxDeactivatedStart * _monitorMovie.getScale() + (kSiloDeactivatedOut - kSiloDeactivatedIn)); _monitorCallBack.setCallBackFlag(kMaxDeactivatedFinished); _monitorCallBack.scheduleCallBack(kTriggerAtStop, 0, 0); _monitorMovie.start(); _owner->requestSpotSound(kMaximumDeactivationIn, kMaximumDeactivationOut, kFilterNoInput, kSpotSoundCompletedFlag); + _owner->requestSpotSound(kAllSilosDeactivatedIn, kAllSilosDeactivatedOut, kFilterNoInput, kSpotSoundCompletedFlag); _gameState = kPlayerWon1; } diff --git a/engines/pegasus/neighborhood/norad/delta/noraddelta.cpp b/engines/pegasus/neighborhood/norad/delta/noraddelta.cpp index f2ea53ff89..1eea2f0156 100644 --- a/engines/pegasus/neighborhood/norad/delta/noraddelta.cpp +++ b/engines/pegasus/neighborhood/norad/delta/noraddelta.cpp @@ -565,6 +565,11 @@ void NoradDelta::activateHotspots() { } else if (GameState.getCurrentRoomAndView() == MakeRoomView(kNorad59, kWest)) { if (GameState.isCurrentDoorOpen()) _vm->getAllHotspots().deactivateOneHotspot(kNorad59WestSpotID); + } else if (GameState.getCurrentRoomAndView() == MakeRoomView(kNorad68, kWest)) { + // WORKAROUND: Make sure the retinal hotspot is disabled after the door opens. + // Fixes a bug in the original. + if (GameState.isCurrentDoorOpen()) + _vm->getAllHotspots().deactivateOneHotspot(kNorad68WestSpotID); } } diff --git a/engines/pegasus/neighborhood/tsa/fulltsa.cpp b/engines/pegasus/neighborhood/tsa/fulltsa.cpp index 9b843da5d6..99efe10272 100644 --- a/engines/pegasus/neighborhood/tsa/fulltsa.cpp +++ b/engines/pegasus/neighborhood/tsa/fulltsa.cpp @@ -2653,7 +2653,6 @@ void FullTSA::receiveNotification(Notification *notification, const Notification GameState.setWSCAnalyzerOn(false); GameState.setWSCDartInAnalyzer(false); GameState.setWSCAnalyzedDart(false); - GameState.setWSCPickedUpAntidote(false); GameState.setWSCSawMorph(false); GameState.setWSCDesignedAntidote(false); GameState.setWSCOfficeMessagesOpen(false); diff --git a/engines/pegasus/neighborhood/tsa/tinytsa.cpp b/engines/pegasus/neighborhood/tsa/tinytsa.cpp index 4f109620c1..0d11f5d904 100644 --- a/engines/pegasus/neighborhood/tsa/tinytsa.cpp +++ b/engines/pegasus/neighborhood/tsa/tinytsa.cpp @@ -337,7 +337,6 @@ void TinyTSA::receiveNotification(Notification *notification, const Notification GameState.setWSCRemovedDart(false); GameState.setWSCAnalyzerOn(false); GameState.setWSCAnalyzedDart(false); - GameState.setWSCPickedUpAntidote(false); GameState.setWSCSawMorph(false); GameState.setWSCDesignedAntidote(false); GameState.setWSCOfficeMessagesOpen(false); diff --git a/engines/pegasus/neighborhood/wsc/wsc.cpp b/engines/pegasus/neighborhood/wsc/wsc.cpp index 50b7774da4..09e2a48a52 100644 --- a/engines/pegasus/neighborhood/wsc/wsc.cpp +++ b/engines/pegasus/neighborhood/wsc/wsc.cpp @@ -2336,13 +2336,16 @@ Hotspot *WSC::getItemScreenSpot(Item *item, DisplayElement *element) { void WSC::pickedUpItem(Item *item) { switch (item->getObjectID()) { case kAntidote: + // WORKAROUND: Make sure the poison is cleared separately from deactivating + // the synthesizer video. + GameState.setWSCPoisoned(false); + GameState.setWSCRemovedDart(false); + _privateFlags.setFlag(kWSCDraggingAntidoteFlag, false); + playSpotSoundSync(kDrinkAntidoteIn, kDrinkAntidoteOut); + setUpPoison(); + if (!GameState.getWSCPickedUpAntidote()) { - GameState.setWSCPoisoned(false); - GameState.setWSCRemovedDart(false); GameState.setWSCPickedUpAntidote(true); - _privateFlags.setFlag(kWSCDraggingAntidoteFlag, false); - playSpotSoundSync(kDrinkAntidoteIn, kDrinkAntidoteOut); - setUpPoison(); startExtraSequence(kW03SouthDeactivate, kExtraCompletedFlag, kFilterNoInput); } break; |