[Scummvm-git-logs] scummvm master -> 60515e873b9a21a3785b655db284c1713854fc19
eriktorbjorn
noreply at scummvm.org
Tue Mar 22 13:24:20 UTC 2022
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:
60515e873b SCUMM: Don't allow Bobbin to escape through a closed door (bug #13367)
Commit: 60515e873b9a21a3785b655db284c1713854fc19
https://github.com/scummvm/scummvm/commit/60515e873b9a21a3785b655db284c1713854fc19
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2022-03-22T14:24:01+01:00
Commit Message:
SCUMM: Don't allow Bobbin to escape through a closed door (bug #13367)
This was a script bug in the EGA DOS, Amiga and Atari ST versions, where
the open door object was left clickable after the door closed. Later
versions fixed it in two different ways: Either by making sure it wasn't
clickable, or by checking that the door really was open in the object
script.
We use the first fix, even though it becomes a bit inconsistent when the
object is later made unclickable. The second fix is only used by the FM
Towns and TurboGrafx-16 versions, as far as I can tell.
Changed paths:
engines/scumm/script_v5.cpp
diff --git a/engines/scumm/script_v5.cpp b/engines/scumm/script_v5.cpp
index ba5545ccd01..c52363e682b 100644
--- a/engines/scumm/script_v5.cpp
+++ b/engines/scumm/script_v5.cpp
@@ -1056,7 +1056,30 @@ void ScummEngine_v5::o5_findObject() {
getResultPos();
int x = getVarOrDirectByte(PARAM_1);
int y = getVarOrDirectByte(PARAM_2);
- setResult(findObject(x, y));
+ int obj = findObject(x, y);
+
+ // WORKAROUND bug #13367: In some versions of Loom, it's possible to
+ // walk right through the closed cell door if you allowed Stoke to lead
+ // you into the cell rather than skipping the cutscene. This is because
+ // the open door (object 623) isn't made non-touchable when the door
+ // closes at the end of the cutscene.
+ //
+ // The FM Towns and TurboGrafx-16 versions fix this by making sure the
+ // object is untouchable at the end of the cutscene. The Macintosh and
+ // VGA talkie versions make sure the object script checks if the door
+ // is open. This makes the script identical to the script for the wall
+ // to the left of the door (object 609).
+ //
+ // These fixes produce subtly different behavior, but since the VGA
+ // talkie version (sadly) is the most readily available these days,
+ // let's go with that fix. But we do it by redirecting the click to the
+ // wall object instead.
+
+ if (_game.id == GID_LOOM && _game.version == 3 && (_game.platform == Common::kPlatformDOS || _game.platform == Common::kPlatformAmiga || _game.platform == Common::kPlatformAtariST) && _currentRoom == 38 && obj == 623) {
+ obj = 609;
+ }
+
+ setResult(obj);
}
void ScummEngine_v5::o5_freezeScripts() {
More information about the Scummvm-git-logs
mailing list