Opened 9 years ago
Closed 3 years ago
#6872 closed defect (fixed)
SCUMM: ZAK - 'I can't reach it" when using reservations terminal in airports
Reported by: | SF/uka7 | Owned by: | athrxx |
---|---|---|---|
Priority: | normal | Component: | Engine: SCUMM |
Version: | 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)
Change History (9)
by , 9 years ago
Attachment: | zak-fdd.s00 added |
---|
comment:1 by , 9 years ago
comment:2 by , 9 years ago
Summary: | Zak McKracken: 'I can't reach it" when using reservations terminal in airports → SCUMM: ZAK - 'I can't reach it" when using reservations terminal in airports |
---|
comment:3 by , 9 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 , 9 years ago
Owner: | set to |
---|
comment:5 by , 9 years ago
uka7: Thanks for confirming this, so this looks to be a long standing glitch.
@kirben: Any ideas?
comment:6 by , 9 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 , 9 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.
comment:8 by , 3 years ago
Owner: | changed from | to
---|---|
Resolution: | → fixed |
Status: | new → closed |
This has now been fixed.
Thanks for your patience ;-)
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.