ScummVM 0.12.0svn (Jul 12 2008 07:07:53)
Features compiled in: Vorbis FLAC MP3 zLib MPEG2
For a good laugh (as it looks really hillarious) load
the provided savegame, "Walk to upstairs" and
"Use Fork with Gum with a Dime stuck in it".
Bernard will start saying:
"I'm not chewing gum with shoemarks in it"
with LaVerne's voice :-)
Day of the Tentacle (CD/English)
AmigaOS4
gcc version 4.0.2 (AmigaOS build 20051012)
Walk upstairs
Logged In: YES
user_id=166507
Originator: NO
Raising priority. This bug is nice to get fixed before the release.
Logged In: YES
user_id=854801
Originator: NO
I confirm.
Also, clicking on the floor near the gum before using the fork on it plays the correct sound.
Logged In: YES
user_id=577918
Originator: NO
The problem happens with the original interpreter as well. The script is rather strange. Here's a fragment from it:
[01D2] (5D) } else if (dup[6] == 199) {
[01DD] (BA) talkActor(🔉"It's REALLY stuck to the floor.",1)
[0212] (73) /* jump 216; */
[0215] (**) }
[0215] (5D) if (VAR_EGO == 3) {
[0220] (68) beginCutscene([2])
[0227] (BA) talkActor(🔉"Way gross!",3)
[0246] (A9) wait.waitForMessage()
[0248] (67) endCutscene()
[0249] (BA) talkActor(🔉"I'm not chewin' that!",3)
[0273] (73) } else {
[0276] (BA) talkActor(🔉"I'm not chewing gum with shoe marks in it.",2)
[02B5] (**) }
So each time, it first requests to play "It's REALLY stuck ..." and then, *immediately* afterwards, "I'm not chewing gum ...". I haven't managed to figure out why it picks LaVerne's line sometimes, and in such a predictable way.
Logged In: YES
user_id=12935
Originator: NO
It might be nice to get fixed, but since it also occurs in the original, I don't think it deserves prio 7; rather, normally "nice to get fixed" stuff is more like prio 3.
Torbjörn: Indeed, that script is it... actor 1 = Bernhard, actor 2 = LaVerne, actor 3 = Hoagie. So the LaVerne line is missing an "if VAR_EGO == 3". Suggested workaround: If we detect that particular talkActor call, only execute it if VAR_EGO==2. Are you up to that? :)
Logged In: YES
user_id=577918
Originator: NO
Do we have any way of identifying that talkActor() call, other than by the text itself? If not, then I would only be able to do it for the English version.
Anyway, the odd thing is that the bug only seems to happen the *first* time you use the fork on the chewing gum, and only (?) if it's right after entering the room from the basement, or from upstairs. If I do something else to the gum first, or enter from another room, Bernard will say "It's REALLY stuck to the floor." in his own voice.
I don't know why it behaves this way.
Logged In: YES
user_id=12935
Originator: NO
OK, found the problem: The script is always doing 100% exactly the same: It firsts asks to print the text for Bernhard, then for Laverne. Normally, the first talkActor executes and thus blocks the second. However, in this particular savegame, what happens if you do "use fork on gum" is that Bernhard walks to the left, causing the camera to scroll. Then, when the first actorTalk is executed, the scrolling is not yet done. Then this code in CHARSET_1 aborts the talk:
if (_game.version >= 4 && _game.version <= 6) {
// Do nothing while the camera is moving
if ((camera._dest.x / 8) != (camera._cur.x / 8) || camera._cur.x != camera._last.x)
return;
}
which causes the second, normally hidden, actorTalk to take effect. It only happens when scrolling is involved.
So the bug really is that the script does not check for VAR_EGO==2 before issuing that second actorTalk. I commited a fix to the repos. It might not work in international versions if they changed the object numbering, but usually they don't; anyway, I'll check the german version later when I am back home.