Opened 19 years ago

Closed 9 years ago

Last modified 9 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
Version: 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- 19 years ago.
maniac64.s05 (4.7 KB ) - added by Kirben 17 years ago.
V1 Maniac saved game

Download all attachments as: .zip

Change History (13)

comment:1 by sev-, 19 years ago

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.

by sev-, 19 years ago

Attachment: maniac.s10 added

comment:2 by sev-, 19 years ago

Forgot to mention is that savegame is for English v1 Maniac

comment:3 by Kirben, 18 years ago

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 by fingolfin, 18 years ago

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

comment:5 by fingolfin, 17 years ago

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.

by Kirben, 17 years ago

Attachment: maniac64.s05 added

V1 Maniac saved game

comment:6 by Kirben, 17 years ago

File Added: maniac64.s05

comment:7 by Kirben, 16 years ago

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 by SF/tobigun, 14 years ago

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 by fingolfin, 13 years ago

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

comment:10 by Kirben, 9 years ago

Owner: set to Kirben
Resolution: fixed
Status: newclosed

comment:11 by Kirben, 9 years ago

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.