Opened 22 years ago

Closed 22 years ago

#370 closed defect

MI1VGA: freeing Otis

Reported by: SF/inguin Owned by: SF/ender
Priority: normal Component: Engine: SCUMM
Version: Keywords:
Cc: Game: Monkey Island 1

Description

I just tried to free Otis from his prison cell by carrying a mug of grog from the bar to the prison. Unfortunately I waited a little too long before filling the grog from the melting mug into a fresh one -- I tried it at the very moment when the mug dissolved completely. Suddenly ScummVM crashed, dropping this message:

Error(34:65:0xD2): Can't set name of object 375!

ScummVM did automatically save the game before crashing (see the attached file), but unfortunately I can't prevent it from crashing if I load that savegame. I'm gonna start all over to see if it's reproducable.

Ticket imported from: #587553. Ticket imported from: bugs/370.

Attachments (2)

monkeyvga.s00 (33.7 KB ) - added by SF/inguin 22 years ago.
Savegame - seconds before crash
monkeyvga.s07 (34.1 KB ) - added by SF/inguin 22 years ago.
Savegame - before filling the mug

Download all attachments as: .zip

Change History (8)

by SF/inguin, 22 years ago

Attachment: monkeyvga.s00 added

Savegame - seconds before crash

by SF/inguin, 22 years ago

Attachment: monkeyvga.s07 added

Savegame - before filling the mug

comment:1 by SF/inguin, 22 years ago

OK, I tried it and it is reproducible: Just fill a mug with grog, wait till it dissolves completely and ScummVM will crash. This time I saved the game before filling the mug.

comment:2 by SF/madm00se, 22 years ago

This is a consistent crash for me. But it doesn't crash if Guybrush is standing in the scumm bar when the mug disolves.

Here is the relevant part of script 65, which causes this crash:

... [009C] (2E) Delay(300); [00A0] (DD) SetClass(Local[0],[12]) [00A7] (D4) SetObjectName(Local[0],"pewter wad") [00B5] (2E) Delay(300); [00B9] (A9) SetOwnerOf(Local[0],0) [00BD] (A9) SetOwnerOf(Local[0],15) [00C1] (D4) SetObjectName(Local[0],"mug") [00C8] (0C) unlockScript(66) [00CB] (A0) StopScript()

The last call to SetObjectName is what fails with an Error(41:65:0xCA): Can't set name of object 374! when the mug has been destroyed and is being returned to the scumm bar.

This is most likely due to the calls SetOwnerOf but I have no idea how object ownership works.

comment:3 by SF/ender, 22 years ago

Anyone know if this bug is reproducable using the original interpreter? :)

comment:4 by SF/inguin, 22 years ago

I just tried the original .EXE in DosEmu: The game does not crash. Just to see if I get that right: The script removes the molten mug from the inventory and then tries to rename it? If it is so, then the original interpreter obviously just ignores the request while ScummVM errors out.

comment:5 by SF/ender, 22 years ago

Owner: set to SF/ender
Status: newclosed

comment:6 by SF/ender, 22 years ago

This should work now.

Note: See TracTickets for help on using tickets.