Skip to content

Commit

Permalink
PEGASUS: Fix gas canister removal not stopping the air timer
Browse files Browse the repository at this point in the history
This bug was also in the original
  • Loading branch information
Matthew Hoops committed Jul 28, 2013
1 parent 8320a55 commit d969b1b
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 3 deletions.
Expand Up @@ -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 {
Expand Down
2 changes: 1 addition & 1 deletion engines/pegasus/neighborhood/norad/alpha/noradalpha.cpp
Expand Up @@ -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);
}
Expand Down
4 changes: 3 additions & 1 deletion engines/pegasus/neighborhood/norad/norad.cpp
Expand Up @@ -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);
Expand Down

0 comments on commit d969b1b

Please sign in to comment.