[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