aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/scumm/script_v2.cpp11
-rw-r--r--engines/scumm/scumm.cpp8
2 files changed, 8 insertions, 11 deletions
diff --git a/engines/scumm/script_v2.cpp b/engines/scumm/script_v2.cpp
index c35ddea64d..6f6138d411 100644
--- a/engines/scumm/script_v2.cpp
+++ b/engines/scumm/script_v2.cpp
@@ -1433,17 +1433,6 @@ void ScummEngine_v2::o2_delay() {
delay |= fetchScriptByte() << 16;
delay = 0xFFFFFF - delay;
- // WORKAROUND: walking speed in the original v0/v1 interpreter
- // is sometimes slower (e.g. during scrolling) than in ScummVM.
- // Hence, the delay for the door-closing action in the dungeon
- // is to long, so a single kid is able to escape -> shorten delay.
- int script = vm.slot[_currentScript].number;
- if ((_game.version == 0 && script == 132) ||
- (_game.version == 1 && script == 137)) {
- if (delay == 180)
- delay = 120;
- }
-
vm.slot[_currentScript].delay = delay;
vm.slot[_currentScript].status = ssPaused;
o5_breakHere();
diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp
index f2db5ad6ba..61d38dc593 100644
--- a/engines/scumm/scumm.cpp
+++ b/engines/scumm/scumm.cpp
@@ -1964,6 +1964,14 @@ Common::Error ScummEngine::go() {
if (delta < 1) // Ensure we don't get into an endless loop
delta = 1; // by not decreasing sleepers.
+ // WORKAROUND: walking speed in the original v0/v1 interpreter
+ // is sometimes slower (e.g. during scrolling) than in ScummVM.
+ // This is important for the door-closing action in the dungeon,
+ // otherwise (delta < 6) a single kid is able to escape.
+ if ((_game.version == 0 && isScriptRunning(132)) ||
+ (_game.version == 1 && isScriptRunning(137)))
+ delta = 6;
+
// Wait...
waitForTimer(delta * 1000 / 60 - diff);