Opened 3 years ago

Closed 3 years ago

#12249 closed defect (fixed)

SCUMM: Script bug in kitchen in German CD-version

Reported by: GermanTribun Owned by: BenCastricum
Priority: normal Component: Engine: SCUMM
Version: Keywords:
Cc: Game: Sam and Max

Description

ScummVM: 2.2.0
Game: Sam & Max German CD-version

This actually is a script bug already present in the original interpreter and taken over into ScummVM.

In the scene were Bumpus corners Sam and Max in the kitchen, after Bumpus and Lee Harvey retreat into the freezer with the costume, any action should cause Bumpus to walk to the door and threaten Sam with his taser. However, due to some kind of script bug in the German version (at least the CD one) Bumpus just stands there when threatening Sam, not drawing his taser like he should do. Yet, the sound of the taser is still heard.

The broken behavior can be seen in this video at around 4:27:
https://www.youtube.com/watch?v=5y3wZEVBAW8&list=PL85A3E21E9BEA582F&index=16

The intended behavior can be seen in this video at 1:11:33:
https://www.youtube.com/watch?v=LvjqHbF9zR0&t=4301s

Can the script be fixed to work like in does the English version?

Attachments (2)

samnmax.s13 (43.7 KB ) - added by GermanTribun 3 years ago.
samnmax.s14 (45.1 KB ) - added by GermanTribun 3 years ago.

Download all attachments as: .zip

Change History (8)

comment:1 by BenCastricum, 3 years ago

I can try, I have both version so I should be able to compare the scripts and perhaps find a way to fix it. Do you happen to have save games for preferable both versions right before the bug?

by GermanTribun, 3 years ago

Attachment: samnmax.s13 added

by GermanTribun, 3 years ago

Attachment: samnmax.s14 added

comment:2 by GermanTribun, 3 years ago

Well, I do have two ScummVM-Saves right before Bumpus enters the kitchen and when he's standing in the cooler from the German CD-version. Sadly, I don't have the English version at hand. (I never knew about this bug until I saw the behavior of the original in a video).

comment:3 by BenCastricum, 3 years ago

This piece of code is located in room 56, script 200.

[00BC] (BA)     talkActor(sound(0xC6B99B8, 0xA) + "Hey!",10)
[00D5] (82)     animateActor(2,255)
[00DC] (7E)     walkActorTo(5,77,140)
[00E6] (A9)     wait.waitForMessage()
[00E8] (A9)     wait.waitForActor(-7,5)
[00EF] (9D)     actorOps.setCurActor(5)
[00F4] (9D)     actorOps.setAlwayZClip(1)
[00F9] (BA)     talkActor(sound(0xC6BD646, 0xA) + "Ich, an Deiner Stelle, w\x81rde mich jetzt NICHT bewegen.",5)
[0144] (B6)     printDebug.begin()
[0146] (B6)     printDebug.msg(sound(0x2F95ED, 0xA) + " ")
[015A] (7E)     walkActorTo(2,localvar0,localvar1)
[0164] (A9)     wait.waitForActor(-7,2)
[016B] (82)     animateActor(2,248)
[0172] (A9)     wait.waitForMessage()
[0174] (7E)     walkActorTo(5,20,130)
[017E] (BA)     talkActor(sound(0xC6CEBD4, 0xA) + "Genau.",10)

The english version:

+[00BD] (BA)     talkActor(sound(0x418BB74, 0xA) + "Hey!",10)
+[00D6] (82)     animateActor(2,255)
+[00DD] (7E)     walkActorTo(5,77,140)
+[00E7] (A9)     wait.waitForMessage()
+[00E9] (A9)     wait.waitForActor(-7,5)
+[00F0] (9D)     actorOps.setCurActor(5)
+[00F5] (9D)     actorOps.setAlwayZClip(1)
+[00FA] (BA)     talkActor(sound(0x418E39F, 0xA) + "I wouldn't move if I were you." + startAnim(14),5)
+[0131] (B6)     printDebug.begin()
+[0133] (B6)     printDebug.msg(sound(0x9EE7F8A, 0xA) + " ")
+[0147] (7E)     walkActorTo(2,localvar0,localvar1)
+[0151] (A9)     wait.waitForActor(-7,2)
+[0158] (82)     animateActor(2,248)
+[015F] (A9)     wait.waitForMessage()
+[0161] (7E)     walkActorTo(5,20,130)
+[016B] (BA)     talkActor(sound(0x419788A, 0xA) + "Yeah.",10)

So the startAnim(14) is missing in the German version.

Last edited 3 years ago by BenCastricum (previous) (diff)

comment:4 by BenCastricum, 3 years ago

I submitted PR3451 with a fix for this.

comment:5 by BenCastricum, 3 years ago

PR is merged

comment:6 by BenCastricum, 3 years ago

Owner: set to BenCastricum
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.