[Scummvm-cvs-logs] scummvm master -> d969b1b11b7c5d95d933b34f99f14b59f7de4bbb

clone2727 clone2727 at gmail.com
Sun Jul 28 20:34:51 CEST 2013


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
d969b1b11b PEGASUS: Fix gas canister removal not stopping the air timer


Commit: d969b1b11b7c5d95d933b34f99f14b59f7de4bbb
    https://github.com/scummvm/scummvm/commit/d969b1b11b7c5d95d933b34f99f14b59f7de4bbb
Author: Matthew Hoops (clone2727 at gmail.com)
Date: 2013-07-28T11:32:23-07:00

Commit Message:
PEGASUS: Fix gas canister removal not stopping the air timer

This bug was also in the original

Changed paths:
    engines/pegasus/neighborhood/norad/alpha/fillingstation.cpp
    engines/pegasus/neighborhood/norad/alpha/noradalpha.cpp
    engines/pegasus/neighborhood/norad/norad.cpp



diff --git a/engines/pegasus/neighborhood/norad/alpha/fillingstation.cpp b/engines/pegasus/neighborhood/norad/alpha/fillingstation.cpp
index 169f75f..3491f16 100644
--- a/engines/pegasus/neighborhood/norad/alpha/fillingstation.cpp
+++ b/engines/pegasus/neighborhood/norad/alpha/fillingstation.cpp
@@ -201,7 +201,7 @@ void NoradAlphaFillingStation::showIntakeInProgress(uint16 numSeconds) {
 
 		if (item->getObjectID() == kGasCanister) {
 			GameState.setNoradGassed(true);
-			((NoradAlpha *)getOwner())->loadAmbientLoops();
+			((NoradAlpha *)getOwner())->checkAirMask();
 			getOwner()->restoreStriding(kNorad03, kEast, kAltNoradAlphaNormal);
 		}
 	} else {
diff --git a/engines/pegasus/neighborhood/norad/alpha/noradalpha.cpp b/engines/pegasus/neighborhood/norad/alpha/noradalpha.cpp
index e4a5e26..6a24113 100644
--- a/engines/pegasus/neighborhood/norad/alpha/noradalpha.cpp
+++ b/engines/pegasus/neighborhood/norad/alpha/noradalpha.cpp
@@ -576,7 +576,7 @@ void NoradAlpha::takeItemFromRoom(Item *item) {
 		if (_fillingStationItem == item) {
 			_fillingStationItem = 0;
 			GameState.setNoradGassed(false);
-			loadAmbientLoops();
+			checkAirMask();
 			((NoradAlphaFillingStation *)_currentInteraction)->newFillingItem(0);
 			forceStridingStop(kNorad03, kEast, kAltNoradAlphaNormal);
 		}
diff --git a/engines/pegasus/neighborhood/norad/norad.cpp b/engines/pegasus/neighborhood/norad/norad.cpp
index 578f062..53b3ff9 100644
--- a/engines/pegasus/neighborhood/norad/norad.cpp
+++ b/engines/pegasus/neighborhood/norad/norad.cpp
@@ -241,7 +241,9 @@ void Norad::setUpAirMask() {
 }
 
 void Norad::checkAirMask() {
-	if (g_airMask && g_airMask->isAirFilterOn()) {
+	// WORKAROUND: The original game forgot to handle the case where the canister would
+	// be removed, leading to the timer remaining active.
+	if (!GameState.getNoradGassed() || (g_airMask && g_airMask->isAirFilterOn())) {
 		_airMaskTimer.stop();
 	} else if (GameState.getNoradGassed() && !_airMaskTimer.isRunning()) {
 		_airMaskTimer.setTime(0);






More information about the Scummvm-git-logs mailing list