diff options
-rw-r--r-- | scumm/script_v5.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/scumm/script_v5.cpp b/scumm/script_v5.cpp index 4c5c602194..6f1458c900 100644 --- a/scumm/script_v5.cpp +++ b/scumm/script_v5.cpp @@ -1303,6 +1303,14 @@ void Scumm_v5::o5_loadRoom() { // and others. OTOH, it seems to cause a problem in newer games. if (!(_features & GF_SMALL_HEADER) || room != _currentRoom) startScene(room, 0, 0); + + // FIXME: Incredibly nasty evil hack to fix bug #770699 (During meeting + // with Guru, script 42 changes between room 0 and room 19 to create + // 'some time later' effects. On switching back to room 19, the camera + // reverts to 0,0 - Added for 0.5.0, should be fixed properly + if (_gameId == GID_ZAK && (vm.slot[_currentScript].number == 42) && (room == 19)) + setCameraAt(480, 0); + _fullRedraw = 1; } @@ -2130,6 +2138,16 @@ void Scumm_v5::o5_stopScript() { int script; script = getVarOrDirectByte(0x80); + + if ((_gameId == GID_ZAK) && (_roomResource == 7) && (vm.slot[_currentScript].number == 10001)) { + // FIXME: Nasty hack for bug #771499 + // Don't let the exit script for room 7 stop the buy script (24), + // switching to the number selection keypad (script 15) + if ((script == 24) && isScriptRunning(15)) + return; + } + + if (!script) stopObjectCode(); else |