Opened 16 years ago

Closed 14 years ago

#1339 closed defect (fixed)

ZAK: "Oxygene-bug" on Mars

Reported by: SF/slc_ Owned by: fingolfin
Priority: low Component: Engine: SCUMM
Keywords: Cc:
Game: Zak McKracken

Description

Tested with a CVS-snapshot of the win32-build from 12th of December, 2003.

After turning on the "oxygene-machine" on Mars, I by mistake went outside with one of the girls. She said "I can't breathe" and I tried getting inside again by chosing "walk to chamber" (or something like that). Then she said "I can't reach it" until I put on the helmet again. Sometimes, if trying to walk towards it she will eventually get inside again.

Savegame attached.

Ticket imported from: #859513. Ticket imported from: bugs/1339.

Attachments (1)

zak256.s21 (8.4 KB ) - added by SF/slc_ 16 years ago.
In the great chambers…

Download all attachments as: .zip

Change History (11)

by SF/slc_, 16 years ago

Attachment: zak256.s21 added

In the great chambers...

comment:1 by fingolfin, 16 years ago

Summary: ZAK256: "Oxygene-bug" on MarsZAK256: "Oxygene-bug" on Mars

comment:2 by fingolfin, 15 years ago

Interesting! I think the problem is caused by the talk animation. This might be related to bug #771483.

To be precises: script 131 is responsible for printing the "I can't breathe" string. In particular it contains this: ... [0055] (91) animateCostume(VAR_EGO,246) ... [00BC] (D8) printEgo([Text("I can't breathe!")]); ...

So, the actor is told to turn around and face the player. That interfers with the player's commands (who tells the girl to walk back in); so she turns around, which stops all here other movements.

comment:3 by Kirben, 14 years ago

Summary: ZAK256: "Oxygene-bug" on MarsZAK: "Oxygene-bug" on Mars

comment:4 by Kirben, 14 years ago

This bug occurs in the PC versions of Zak McKracken too, not just the FM-TOWNS version.

comment:5 by fingolfin, 14 years ago

In order to fix this with the think-it-through-method (as opposed to the disassembling method :-), it would be very useful to know how the original interpreter behaves in this situation -- is it buggy, too? Is the turn command simply ignored? Is the turn exectued but then the walk continues? Hmmm...

comment:6 by Kirben, 14 years ago

I checked the original FM-TOWNS version of game under Unz emulator, and the exact same situation occurs in the original game, when without oxygen too.

So this isn't a ScummVM specific issue, although maybe we could add work around?

comment:7 by fingolfin, 14 years ago

Priority: normallow

comment:8 by fingolfin, 14 years ago

It's a relief to hear we are not doing anything wrong, phew.

Yes, we could add a workaround. One idea would be to ignore that particular
animateCostume() opcode (i.e. check for the game/script/room IDs or so, and if they match, ignore the opcode). Of course that's rather crude. More elegant would be to only ignore it while walking. Even more sophisticated approaches would be possible, up to rewriting that script and patching the game to use our modified script, but I don't think it would be worth the effort :-)

comment:9 by fingolfin, 14 years ago

Owner: set to fingolfin
Resolution: fixed
Status: newclosed

comment:10 by fingolfin, 14 years ago

I put a workaround into SVN (namely, I changed it to ignore that particular animation command).

Note: See TracTickets for help on using tickets.