Opened 6 years ago

Closed 5 years ago

#6357 closed defect (fixed)

DRACI: Object lost from inventory after saving

Reported by: SF/greencis Owned by: sev-
Priority: normal Component: Engine: Draci
Keywords: Cc:
Game: Dragon History

Description

WinXP 32bit, ScummVM 1.7.0git540-g49ec202 (Jun 15 2013 07:44:11)
Android 2.3.6, ScummVM 1.7.0git540-g49ec202 (Jun 15 2013 06:13:14)

In Dragon History, you can lose an object from the inventory. That makes the game not completable.

How to replicate:
1) choose one object in the inventory and exit from the inventory;
2) call Global Main Menu and save the game;
3) quit from the game;
4) launch ScummVM again and load the savegame you made before.
You'll see that the object you had selected before disappeared. And the game is not completable now!

I've attached savegames from English Dragon History. The first savegame was made before choosing an object (in my occasion - a cigar), the second one was made after choosing a cigar (there's no more cigar in the inventory).

Ticket imported from: #3614551. Ticket imported from: bugs/6357.

Attachments (2)

draci.s00 (20.9 KB ) - added by SF/greencis 6 years ago.
Savegame before choosing a cigar…
draci.s01 (21.0 KB ) - added by SF/greencis 6 years ago.
Savegame after disappearance of the cigar

Download all attachments as: .zip

Change History (8)

by SF/greencis, 6 years ago

Attachment: draci.s00 added

Savegame before choosing a cigar...

by SF/greencis, 6 years ago

Attachment: draci.s01 added

Savegame after disappearance of the cigar

comment:1 by digitall, 6 years ago

Replicated with latest git master on Linux x86_64 with attached savegames.

I think the issues is that the cursor object is not being saved/restored, or forced back to the inventory upon saving, thus it is lost. This is probably a bug present in the original, but would need to try the original interpreter under DOSBox to be sure.

comment:2 by digitall, 6 years ago

Checked the Draci engine code and I think this is because _currentItem is not saved...
https://github.com/scummvm/scummvm/blob/master/engines/draci/game.h#L362

Neither is there a check for NULL/empty and if not, a force to inventory prior to save as I indicated or a save (sync) here:
https://github.com/scummvm/scummvm/blob/master/engines/draci/game.cpp#L1526

A patch should be possible, though not sure of the best solution here.

comment:3 by digitall, 6 years ago

Owner: set to rspalek

comment:4 by lukaslw, 6 years ago

Pull request for this bug: https://github.com/scummvm/scummvm/pull/445

comment:5 by sev-, 5 years ago

Pull request has been accepted, so this is now fixed.

comment:6 by sev-, 5 years ago

Owner: changed from rspalek to sev-
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.