[Scummvm-git-logs] scummvm master -> 8de5d3e0ca3a19079dddfe2c7fd45acd38696196

eriktorbjorn noreply at scummvm.org
Fri Apr 8 04:42:22 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:
8de5d3e0ca SCUMM: Work around Loom script bug to show correct sleeping Rusty close-up


Commit: 8de5d3e0ca3a19079dddfe2c7fd45acd38696196
    https://github.com/scummvm/scummvm/commit/8de5d3e0ca3a19079dddfe2c7fd45acd38696196
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2022-04-08T06:42:16+02:00

Commit Message:
SCUMM: Work around Loom script bug to show correct sleeping Rusty close-up

Some versions of Loom will always show the close-up of sleeping Rusty
where he's wearing his own clothes. Later versions (e.g. FM Towns and
VGA) will show different close-ups depending on if you've used the
Reflection draft on him. So this adds that check to the older versions
as well.

The original fixed versions will look at a variable to determine if
you've  used the Reflection draft on Rusty. Unfortunately, it's not the
same variable across all versions - there are even different EGA
versions with different variables! - so instead we check if the Bobbin
actor has a different costume. That seems to work across all versions so
far.

Changed paths:
    engines/scumm/script_v5.cpp


diff --git a/engines/scumm/script_v5.cpp b/engines/scumm/script_v5.cpp
index 200574d0a39..fa7ab92bada 100644
--- a/engines/scumm/script_v5.cpp
+++ b/engines/scumm/script_v5.cpp
@@ -1496,6 +1496,25 @@ void ScummEngine_v5::o5_loadRoom() {
 		putState(25, 1);
 	}
 
+	// WORKAROUND: The first time you examine Rusty while he's sleeping,
+	// you will get a close-up of him. Which one should depend on whether
+	// or not you've used the Reflection draft on him. But in some, you
+	// will always get the close-up where he's wearing his own clothes.
+
+	if (_game.id == GID_LOOM && _game.version == 3 && room == 29 &&
+		vm.slot[_currentScript].number == 112 && _enableEnhancements) {
+		Actor *a = derefActorSafe(VAR(VAR_EGO), "o5_loadRoom");
+
+		// Bobbin's normal costume is number 1. If he's wearing anything
+		// else, he's presumably disguised as Rusty. The game also sets
+		// a variable, but uses different ones for different versions of
+		// the game. You can't even assume that every English version
+		// uses the same one!
+
+		if (a && a->_costume != 1)
+			room = 68;
+	}
+
 	// For small header games, we only call startScene if the room
 	// actually changed. This avoid unwanted (wrong) fades in Zak256
 	// and others. OTOH, it seems to cause a problem in newer games.




More information about the Scummvm-git-logs mailing list