Opened 14 years ago

Closed 9 years ago

Last modified 12 months ago

#2524 closed defect (fixed)

MANIAC: Invalid actor 255 in o5_putActorInRoom

Reported by: SF/adiro69 Owned by: fingolfin
Priority: low Component: Engine: SCUMM
Keywords: original Cc:
Game: Maniac Mansion

Description

Platform: WinCE ScummVM 0.8.2
Game: Maniac Mansion german/DOS (The one included in
the german DOTT)
Bug description: (Please see the attached saved game)
Playing Razor, after some time I try to enter Ted's
room (The one with the hamster). He is there and he
wants to catch me and bring me to the basement. But on
this moment his package arrives and, instead of bring
me to the basement he say "Not again!" and goes down
(exit the room). After 2-3 seconds, the debug console
apears with the message:

Error: (26:89:0x14): Invalid actor 255 in o5_putActorInRoom

and I can type exit and exit PocketScummVM with the
same message in a popup window. There is no error log
generated.
I can avoid this problem by waiting for this action to
happened and than entering Ted's room.

Sorry about my english.

Regards
Adi

Ticket imported from: #1447058. Ticket imported from: bugs/2524.

Attachments (1)

maniac.s02 (7.5 KB ) - added by SF/adiro69 14 years ago.
Save game

Download all attachments as: .zip

Change History (13)

by SF/adiro69, 14 years ago

Attachment: maniac.s02 added

Save game

comment:1 by SF/adiro69, 14 years ago

Using the savegame I have reproduced the problem with the
Windows 0.8.2 and 0.9 svn builds.

Regards

comment:2 by fingolfin, 14 years ago

Summary: Maniac Mansion: script errorMANIAC: Invalid actor 255 in o5_putActorInRoom

comment:3 by fingolfin, 14 years ago

I can't reproduce the issue over here. Please provide
detailed (step-by-step) instructions as to how to reproduce
the issue.

For reference: This the german V2 MM, with MD5 =
183d7464902d40d00800e8ee1f04117c

comment:4 by fingolfin, 14 years ago

Script 89 starts like as follows:

...
[0000] (40) cutscene
[0001] (58) beginOverride()
[0002] (18) goto 0057;
[0005] (07) setState08(159)
[0008] (9A) Var[109] = Var[113];
[000B] (42) startScript(146)
[000D] (AD) putActorInRoom(Var[113],4)
[0010] (C1) putActor(Var[113],Var[110],63)
[0014] (91) animateActor(Var[113],249)
[0017] (2D) putActorInRoom(11,4)
...

The error you posted here means that Var[113] is equal -1.

While I was not (yet?) able to reproduce the issue you
described, it sounds like a typical race conditions between
two cutscenes. It's likely a scripting bug already present
in the original. It's possible that it slipped through in
the original engine, since that was for more lenient when it
comes to invalid actor ids being used and stuff like that.
We probably could add a dedicated workaround for this issue,
if required. But for that we first have to be able to
reproduce the issue.

comment:5 by SF/adiro69, 14 years ago

Hi,

I am using the following versions of ScummVM:

- 0.8.2 Windows
- 0.9 svn Windows
- 0.8.2 Windows CE port by Arisme

The steps to reproduce this issue are:

1. Start the game
2. Load the previously attached save game (maniac.s02). You
are playing Razor and you stay near the door to Ted's
room.(the first closed one on the left)
3. Enter that room. Ted is there and than the following are
happening:
- He tells you to stop
- He says "Not again"
- He leaves the room (He goes down to pick up the post)
- You remain into the room.
- After 2-3 seconds the debug console appear...

I have been able to reproduce it any time with the save game.

Regards
Adi

comment:6 by fingolfin, 13 years ago

Ah. The trick to reproduce is to wait with entering the door to Ted's room until
the door bell chimed once. If you enter it before that, the bug won't happen.
Which is yet another indicator that this is a bug in the original script. A classical
race condition.

comment:7 by fingolfin, 13 years ago

Lowering priority, since a simple workaround exists (just either be quick, or wait
until the door-bell cutscene is finished).

comment:8 by fingolfin, 13 years ago

Priority: normallow

comment:9 by fingolfin, 10 years ago

Testing tracker monitoring feature -- please ignore & sorry for the annoyance.

comment:10 by fingolfin, 9 years ago

Fixed in SVN after only 4.5 years :)
To be precise, I added a workaround for this script bug which makes Ted ignore the door bell if he is currently busy with imprisoning the player.

comment:11 by fingolfin, 9 years ago

Keywords: original added
Owner: set to fingolfin
Resolution: fixed
Status: newclosed

comment:12 by digitall, 12 months ago

Component: Engine: SCUMM
Game: Maniac Mansion
Note: See TracTickets for help on using tickets.