[Scummvm-git-logs] scummvm master -> a16a1e57e2249deefa37394eef331699fac89b9e
bluegr
noreply at scummvm.org
Sat Oct 8 21:22:09 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:
a16a1e57e2 SCUMM: Make Dig crypt subtitle workaround an optional waitForActor()
Commit: a16a1e57e2249deefa37394eef331699fac89b9e
https://github.com/scummvm/scummvm/commit/a16a1e57e2249deefa37394eef331699fac89b9e
Author: Donovan Watteau (contrib at dwatteau.fr)
Date: 2022-10-09T00:22:05+03:00
Commit Message:
SCUMM: Make Dig crypt subtitle workaround an optional waitForActor()
When Low finds the meaning of the crypt inside the tomb, subtitles are
not printed because of a missing waitForActor() call. This also happens
in the original interpreters.
In Trac#4410 and commit 3b05a52588fc92885d7cae0c96be7eb516d27e5c, this
was implemented as an actor.cpp workaround, but doing it this way make
Low glide on the floor instead of having his usual walking animation.
Having him wait finishing his sentence before he moves to the crypt may
feel a bit odd too, but Low already does that in some other parts of the
game, and he just reacts at a very slow pace in general.
Moving this to o6_talkActor() also means that it's next to the other
waitForActor() workarounds, where we try to only target the impacted
lines when we can.
Also make this workaround use `_enableEnhancements` while there.
Changed paths:
engines/scumm/actor.cpp
engines/scumm/detection_tables.h
engines/scumm/script_v6.cpp
diff --git a/engines/scumm/actor.cpp b/engines/scumm/actor.cpp
index 07fd09c647c..e219e1b92c8 100644
--- a/engines/scumm/actor.cpp
+++ b/engines/scumm/actor.cpp
@@ -2915,11 +2915,8 @@ void ScummEngine_v7::actorTalk(const byte *msg) {
playSpeech((byte *)_lastStringTag);
if (!usingOldSystem) {
- if (VAR(VAR_HAVE_MSG)) {
- if (_game.id == GID_DIG && _roomResource == 58 && msg[0] == ' ' && !msg[1])
- return;
+ if (VAR(VAR_HAVE_MSG))
stopTalk();
- }
} else {
if (!_keepText)
stopTalk();
diff --git a/engines/scumm/detection_tables.h b/engines/scumm/detection_tables.h
index eeade59d195..aa2f6226dfc 100644
--- a/engines/scumm/detection_tables.h
+++ b/engines/scumm/detection_tables.h
@@ -218,9 +218,9 @@ static const GameSettings gameVariantsTable[] = {
{"ft", "", 0, GID_FT, 7, 0, MDT_NONE, 0, UNK, GUIO2(GUIO_NOMIDI, GUIO_ORIGINALGUI)},
{"ft", "Demo", 0, GID_FT, 7, 0, MDT_NONE, GF_DEMO, UNK, GUIO2(GUIO_NOMIDI, GUIO_ORIGINALGUI)},
- {"dig", "", 0, GID_DIG, 7, 0, MDT_NONE, 0, UNK, GUIO2(GUIO_NOMIDI, GUIO_ORIGINALGUI)},
+ {"dig", "", 0, GID_DIG, 7, 0, MDT_NONE, 0, UNK, GUIO3(GUIO_NOMIDI, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"dig", "Demo", 0, GID_DIG, 7, 0, MDT_NONE, GF_DEMO, UNK, GUIO2(GUIO_NOMIDI, GUIO_ORIGINALGUI)},
- {"dig", "Steam", "steam", GID_DIG, 7, 0, MDT_NONE, 0, UNK, GUIO2(GUIO_NOMIDI, GUIO_ORIGINALGUI)},
+ {"dig", "Steam", "steam", GID_DIG, 7, 0, MDT_NONE, 0, UNK, GUIO3(GUIO_NOMIDI, GUIO_ENHANCEMENTS, GUIO_ORIGINALGUI)},
{"comi", "", 0, GID_CMI, 8, 0, MDT_NONE, 0, Common::kPlatformWindows, GUIO3(GUIO_NOMIDI, GUIO_NOASPECT, GUIO_ORIGINALGUI)},
{"comi", "Demo", 0, GID_CMI, 8, 0, MDT_NONE, GF_DEMO, Common::kPlatformWindows, GUIO3(GUIO_NOMIDI, GUIO_NOASPECT, GUIO_ORIGINALGUI)},
diff --git a/engines/scumm/script_v6.cpp b/engines/scumm/script_v6.cpp
index 1dbb9604d30..7a5e3a8a877 100644
--- a/engines/scumm/script_v6.cpp
+++ b/engines/scumm/script_v6.cpp
@@ -2443,6 +2443,24 @@ void ScummEngine_v6::o6_talkActor() {
return;
}
}
+
+ // WORKAROUND bug #4410: Restore a missing subtitle when Low is inside the
+ // tomb and he finds the purpose of the crypt ("/TOMB.022/Now that I know
+ // what I'm looking for"...). Also happens in the original interpreters.
+ // We used to do this in actorTalk(), but then Low's proper walking
+ // animation was lost and he would just glide over the floor. Having him
+ // wait before he moves is less disturbing, since that's something he
+ // already does in the game.
+ if (_game.id == GID_DIG && _roomResource == 58 && vm.slot[_currentScript].number == 402
+ && _actorToPrintStrFor == 3 && vm.localvar[_currentScript][0] == 0
+ && readVar(0x8000 + 94) && readVar(0x8000 + 78) && !readVar(0x8000 + 97)
+ && _scummVars[269] == 3 && getState(388) == 2 && _enableEnhancements) {
+ _forcedWaitForMessage = true;
+ _scriptPointer--;
+
+ return;
+ }
+
_scriptPointer += resStrLen(_scriptPointer) + 1;
}
More information about the Scummvm-git-logs
mailing list