Opened 14 years ago

Closed 4 years ago

Last modified 4 years ago

#2034 closed defect (fixed)

MANIAC V2: Early collision with Green Tentacle

Reported by: SF/quietust Owned by: Kirben
Priority: normal Component: Engine: SCUMM
Keywords: script Cc:
Game: Maniac Mansion

Description

Running ScummVM 0.8.0CVS (May 20 2005 13:16:51)

Whenever a kid walks up the stairs from the 2nd floor
to the 3rd floor while Green Tentacle is still waiting
for food+drink, (s)he will say "Oomph!" and the
'tentacle' sound will be played (unless the kid runs
away in fear). Happens with PC V1/V2 and Amiga versions
(but not the NES version) and does not occur in the
original Amiga interpreter (currently not able to test
others).

Ticket imported from: #1205445. Ticket imported from: bugs/2034.

Attachments (2)

maniac.s10 (6.1 KB) - added by sev- 14 years ago.
maniac64.s05 (4.7 KB) - added by Kirben 12 years ago.
V1 Maniac saved game

Download all attachments as: .zip

Change History (13)

comment:1 Changed 14 years ago by sev-

Also while testing bug #862245. I found that it is possible
to walk over bath in bathroom. Just click on it near corner.
Moreover when curtain is open and you click on the mummy,
Dave walks over it and actors priority puts him behind the
mummy. See attached savegame.

Changed 14 years ago by sev-

Attachment: maniac.s10 added

comment:2 Changed 14 years ago by sev-

Forgot to mention is that savegame is for English v1 Maniac

comment:3 Changed 13 years ago by Kirben

The problem occurs in script 161:
[0000] (A3) Var[72] = getActorY(Var[114])
[0003] (43) Var[109] = getActorX(14)
[0006] (5A) Var[109] += 2;
[000A] (C3) Var[1] = getActorX(Var[114])
[000D] (84) if (Var[1] <= Var[109]) {
[0012] (1A) Var[71] = 35;
[0016] (5A) Var[71] += 3;
[001A] (9B) setBitVar(2952,Var[114],1)
[001F] (19) doSentence(STOP)
[0021] (FE) walkActorTo(Var[114],Var[71],Var[72])
[0025] (1C) startSound(36)
[0027] (48) if (VAR_HAVE_MSG == 0) {
[002D] (D8) printEgo("Oomph!")
[0035] (**) }
[0035] (BB) waitForActor(Var[114])
[0037] (91) animateActor(Var[114],244)
[003A] (9B) setBitVar(2952,Var[114],0)
[003F] (**) }
[003F] (3E) walkActorTo(14,32,Var[72])
[0043] (80) breakHere()
[0044] (80) breakHere()
[0045] (18) goto 0000;
[0048] (A0) stopObjectCode()
END

Var[114] is set to VAR_EGO at this point, the script
compares the X position of kid and Green Tentacle. For some
reason the kid is been reported as already been past Green
Tentacle, causing the "Oomph!" message to be triggered.

The kid is been reported at 7, while Green Tentacle is been
reported at 17, when I climb the stairs.

comment:4 Changed 13 years ago by fingolfin

So... does Var[114] contain a wrong value? Or should script 161 not be running?
Or what else is going wrong?

comment:5 Changed 12 years ago by fingolfin

I am a bit confused -- what does the attached savegame have to do with the bug reported here?

The walk behavior in the bathroom is still buggy, though, even after my walk code changes. The actors won't walk "onto" the bath tube anymore, but they will "walk on the spot". So it might be a good idea to (re)open a (new?) issue for that one, with the savegame attached here.

Changed 12 years ago by Kirben

Attachment: maniac64.s05 added

V1 Maniac saved game

comment:6 Changed 12 years ago by Kirben

File Added: maniac64.s05

comment:7 Changed 11 years ago by Kirben

To clarify my earlier message:
Script 161, is started by script 51, which is started by the entry script for room 12.

Script 161 should be running, and controls Green Tenacle at this point of game.

The problem is the player actor's x position is reported incorrectly, when script 161 is first started, causing the 'Oomph!' to be said.

The initial player actor's x position doesn't seem to be set correctly, when first set via the showActors() in startScene(). And doesn't get corrected until the later part of loadRoomWithEgo opcode.

comment:8 Changed 9 years ago by SF/tobigun

This bug has already been fixed by segra for the V0 engine with patch #2970176 (V0: MM Verb + Anim Fix).

Quote:
*Fixes the Oompf script problem where green tentacle could be easily bypass
ed, and how the script executes the moment you enter the room (this is beca
use the original interpreter sets the actors X/Y to the previous X/Y before
it starts the rooms scripts, after the script is running the actors proper
x/y is set)

Maybe that part of the patch is applicable for the other engines, too.

comment:9 Changed 8 years ago by fingolfin

Summary: MANIAC: Early collision with Green TentacleMANIAC V2: Early collision with Green Tentacle

comment:10 Changed 4 years ago by Kirben

Owner: set to Kirben
Resolution: fixed
Status: newclosed

comment:11 Changed 4 years ago by Kirben

Fixed in ScummVM GiT, thanks to patch from segrax.

Use the next daily snapshot of ScummVM GiT.

Note: See TracTickets for help on using tickets.