Opened 8 months ago

Closed 6 months ago

Last modified 6 months ago

#15389 closed defect (fixed)

ADL: HIRES5: "GET ALL" fails where picking up individual objects doesn't

Reported by: eriktorbjorn Owned by: waltervn
Priority: normal Component: Engine: ADL
Version: Keywords:
Cc: Game: Hi-Res Adventure #5: Time Zone

Description

I'm trying to make myself an optimized walkthrough of Time Zone. (Don't ask!)

At some point, you will probably have to leave some objects to pick them up later. In my case, it was the oxygen mask, the skeleton key, and the iron bar. But when the time came to pick them up, "GET ALL" failed because the game claimed I was already carrying as much as I could.

However, picking the objects up one by one worked without problem. Is this a bug in "GET ALL", or is it a bug in regular "GET object"? It would be cruel indeed if you had to make several runs to the final time zone to get everything you needed there.

"GET ALL" will make calls to HiRes5Engine::isInventoryFull() while regular "GET object" apparently will not? I was also surprised that it uses item->description for the weight, but maybe that's just how it's designed.

I'm attaching my walkthrough file. The problem happens at line 718, at the comment where it says "GET ALL should work, but doesn't". The two "dummy" commands earlier in the file are there so that the file can be run using the run_script debug command.

Attachments (1)

timezone.txt (4.4 KB ) - added by eriktorbjorn 8 months ago.

Download all attachments as: .zip

Change History (9)

by eriktorbjorn, 8 months ago

Attachment: timezone.txt added

comment:1 by eriktorbjorn, 8 months ago

Please note that the walkthrough is still incomplete and contains errors. (It also exploits bugs.)

comment:2 by eriktorbjorn, 8 months ago

Looking at the description values, they do seem to make sense as weights. (And I should definitely get rid of the sword and the shield, not the tweezers! :-)

So if there is a bug, it's probably in "GET object", not "GET ALL".

comment:3 by eriktorbjorn, 8 months ago

Now that I know approximately what I'm looking for, here's a much shorter test case:

  1. N. GO MACHINE. GO MACHINE. SIT. SET BLUE. ASIA. SET ORANGE. 50BC. PUSH LEVER. LEAVE MACHINE. E. E. E. N. N. GET POLE. S. S. S. S. GO BOAT. E. LEAVE BOAT. N. N. N. N. E. N. W. GET SHOVEL. DIG. DIG. GET ALL. E. S. W. S. S. E. S. S. E. S. BUY RICE. WITH JADE. BUY ROPE. WITH JADE. W. W. N. GO BOAT. W. LEAVE BOAT. N. N. W. W. W. GO MACHINE. SIT. 1000AD. AFRICA. PUSH LEVER. LEAVE MACHINE. N. N. GET LOG. W. GET LOG. E. E. GET LOG. DROP SHOVEL. GET ALL. GET SHOVEL.

In the final two commands, "GET ALL" fails while "GET SHOVEL" does not.

I have not tried this in an Apple II emulator.

comment:4 by eriktorbjorn, 6 months ago

There is a possible fix for this in https://github.com/waltervn/scummvm/commits/adl-fixes/

comment:6 by waltervn, 6 months ago

In 3e03593c:

ADL: Check if inventory is full for dropped items

Fixes bug #15389

comment:7 by bluegr, 6 months ago

Owner: set to waltervn
Resolution: fixed
Status: newclosed

comment:8 by waltervn, 6 months ago

In 3ab70438:

ADL: Check if inventory is full for dropped items

Fixes bug #15389

Note: See TracTickets for help on using tickets.