Opened 4 years ago

Last modified 4 years ago

#6872 new defect

SCUMM: ZAK - 'I can't reach it" when using reservations terminal in airports

Reported by: SF/uka7 Owned by: Kirben
Priority: normal Component: Engine: SCUMM
Keywords: Cc:
Game: Zak McKracken

Description

Zak McKracken: After using reservations terminal in airports, if you try to use anything just after that, like 'use reservations terminal' or 'use newsstand', the message is "I can't reach it"! After that message, I can use anything again the right way, but then - 4th. 6th etc. time the same bug repeats.

There is no such bug if launching the game via Dos / DosBox.

Save file is enloced. I use latest GIT (1.8.0), Win32, English, Floppy (EGA enhanced), checked on GOG version as well.

Ticket imported from: bugs/6872.

Attachments (1)

zak-fdd.s00 (7.0 KB ) - added by SF/uka7 4 years ago.

Download all attachments as: .zip

Change History (8)

by SF/uka7, 4 years ago

Attachment: zak-fdd.s00 added

comment:1 by digitall, 4 years ago

uka7: Thank you for this bug report. Can you please confirm whether this bug occurs in the latest stable release i.e. v1.7.0 when starting from a new game?

If it does occur there as well, could you try v1.6.0 and earlier versions to see when this bug was introduced or if this has always occurred.

comment:2 by digitall, 4 years ago

Summary: Zak McKracken: 'I can't reach it" when using reservations terminal in airportsSCUMM: ZAK - 'I can't reach it" when using reservations terminal in airports

comment:3 by SF/uka7, 4 years ago

OK, I have checked latest stable 1.7.0 and older versions 1.6.0, 1.2.0 and 0.10 - the bug is still there!

Anything in the airport can be used on 1st, 3rd, 5th etc. use only, not on 2nd, 4th etc. where Zak says 'I can't reach it' for anything. As I have noted I can even say 'Use newsstand' and Zak will say 'I can't reach it' - while on usual (1,3,5...) use, 'Use newsstand' is not allowed to be executed but turns into 'Use newsstand with' instead.

comment:4 by digitall, 4 years ago

Owner: set to Kirben

comment:5 by digitall, 4 years ago

uka7: Thanks for confirming this, so this looks to be a long standing glitch.

@kirben: Any ideas?

comment:6 by eriktorbjorn, 4 years ago

This is the script fragment from script-2 that I think is being used:

[01EA] (F4) VAR_RESULT = getDist(Var[137],Var[22]);
[01EE] (44) if (VAR_RESULT > 2) {
[01F4] (C9) faceActor(Var[137],Var[22]);
[01F7] (BB) waitForActor(Var[137]);
[01F9] (D8) printEgo("I can't reach it.");
[0209] (19) doSentence(RESET);
[020B] (AC) drawSentence();
[020C] (19) doSentence(STOP);
[020E] (62) stopScript(0);
[0210] (**) }

When I use the terminal and it works, the game calls getObjActToObjActDist(1, 194) to figure out - I think - how close the player is to the terminal. I believe 1 is the player object.

When it doesn't work, the game calls getObjActToObjActDist(1, 658) instead. The game can't find object 658, so it will return 255 (the maximum value?) as the distance to it.

This is where I'm starting to reach the limits of my understanding of the bug...

comment:7 by eriktorbjorn, 4 years ago

It seems that VAR_ACTIVEOBJECT1 is set to 658 when I press the "Cancel" button in the terminal. So that's probably where that comes from.

Note: See TracTickets for help on using tickets.