Opened 17 years ago

Closed 17 years ago

Last modified 17 years ago

#733 closed defect (fixed)

DIG: Can't exit room!

Reported by: SF/pwigren Owned by: eriktorbjorn
Priority: high Component: Engine: SCUMM
Keywords: Cc:
Game: The Dig

Description

I was just playing through The Dig using CVS snapshot
from 6th April. After I've talked to the alien in the
pyramid and Maggie has been kidnapped there is no way
to get away from the pyramid.. It seems that the
rightmost isn't right enough... ;)

Attaching a savegame...

Ticket imported from: #716350. Ticket imported from: bugs/733.

Attachments (2)

dig.s03.gz (34.7 KB ) - added by SF/pwigren 17 years ago.
dig.s03.gz
dig.s22.gz (22.1 KB ) - added by eriktorbjorn 17 years ago.
Savegame at the guard dogs

Download all attachments as: .zip

Change History (9)

comment:1 by SF/pwigren, 17 years ago

Priority: normalblocker

by SF/pwigren, 17 years ago

Attachment: dig.s03.gz added

dig.s03.gz

comment:2 by fingolfin, 17 years ago

Priority: blockerhigh

comment:3 by eriktorbjorn, 17 years ago

This is odd. I have an older (late March) savegame at the
same point, and there the camera is following actor 3
(Boston). In your savegame it doesn't.

I think something must be happening in or after the scene
with the guard "dogs". When I replayed it, the camera
sometimes kept following Boston, but sometimes it just
stopped and I don't know what I did differently. I'll have
to take a closer look at this...

Oh, and the reason the rightmost edge isn't enough to leave
the room is that the room goes on further to the right. If
the camera was following, you'd see.

comment:4 by eriktorbjorn, 17 years ago

This is what seems to be happening:

When you resurrect the second guard dog, the camera is moved
with panCameraTo(). This will set camera._follows to 0, and
when moveCamera() is called it will set the
VAR_CAMERA_FOLLOWED_ACTOR variable to 0 as well.

Afterwards, setCameraFollows() sets camera._follows to 3
(Boston), but since the camera position remains unchanged
the VAR_CAMERA_FOLLOWED_ACTOR variable remains 0.

When the inventory window is displayed, camera._follows is
temporarily set to 0 by setCameraAt(), and then restored by
setCameraFollows() to the value of the
VAR_CAMERA_FOLLOWED_ACTOR variable when the inventory window
is dismissed. (This is done by script 64, which does a lot
of stuff that I don't quite understand yet.)

So if I open the inventory window at this point,
camera._follows will be restored to 0. I believe this is
what has happened to you.

If I instead move Boston before opening the inventory
window, thus forcing the camera position to change,
moveCamera() will set the VAR_CAMERA_FOLLOWED_ACTOR to 3,
and everything will be just fine.

I'm a bit uncertain what the correct fix is, but I have a
feeling this is also the source of some camera oddities I've
seen, when the camera has panned to somewhere silly after
dismissing the inventory window.

by eriktorbjorn, 17 years ago

Attachment: dig.s22.gz added

Savegame at the guard dogs

comment:5 by fingolfin, 17 years ago

Status: newclosed

comment:6 by fingolfin, 17 years ago

Owner: set to eriktorbjorn
Resolution: fixed

comment:7 by fingolfin, 17 years ago

Fixed by Erik in CVS (note: the windows daily builds won't reflect this
till roughly monday/tuesday).

Note: See TracTickets for help on using tickets.