mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-03 09:23:37 +00:00
SCUMM: Fix randomly unreachable fire in DOTT (WORKAROUND)
In DOTT, script 13-21 calls `startScript(1,106,[91,5])` when Jefferson builds the fire, but this script continuously changes the state of the fire object to a random value between 1 and 5 (this stops when you exit his room), and so if Hoagie tries interacting with it, he'll say "I can't reach it." instead of the intended "No. Fire bad." line, most of the time. This also happens with the original DOS interpreter, the 2002 Aaron Giles Windows interpreter, and the Remastered version. Ignoring this script fixes this problem and it doesn't seem to cause any regression with the fire itself. My hypothesis is that the game designers wanted to have an "early fire" animation when the fire has just been lit by Jefferson, but then they dropped the idea and used the same unique fire animation but forgot to turn off this script.
This commit is contained in:
parent
d988cd7398
commit
96a800ef5c
@ -739,6 +739,21 @@ void ScummEngine_v6::o6_startScript() {
|
||||
script = pop();
|
||||
flags = pop();
|
||||
|
||||
// WORKAROUND: In DOTT, when Jefferson builds the fire, `startScript(1,106,[91,5])`
|
||||
// is called, which randomly changes the state of the fire object between 1 and 5,
|
||||
// as long as Hoagie doesn't exit this room. This makes him randomly fail
|
||||
// interacting with it, saying "I can't reach it." instead of the intended "No.
|
||||
// Fire bad." line. It looks like the 1-5 states for the fire object are useless
|
||||
// leftovers which can be safely ignored in order to make sure that Hoagie's
|
||||
// comment is always available (maybe the fire was meant to be displayed
|
||||
// differently when it's just been lit, but then the idea was dropped?).
|
||||
// This also happens with the original interpreters and with the remaster.
|
||||
if (_game.id == GID_TENTACLE && _roomResource == 13 &&
|
||||
vm.slot[_currentScript].number == 21 && script == 106 &&
|
||||
args[0] == 91 && _enableEnhancements) {
|
||||
return;
|
||||
}
|
||||
|
||||
// WORKAROUND for a bug also present in the original EXE: After greasing (or oiling?)
|
||||
// the cannonballs in the Plunder Town Theater, during the juggling show, the game
|
||||
// cuts from room 18 (backstage) to room 19 (stage).
|
||||
|
Loading…
x
Reference in New Issue
Block a user