Opened 18 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 18 years ago.
dig.s03.gz
dig.s22.gz (22.1 KB ) - added by eriktorbjorn 18 years ago.
Savegame at the guard dogs

Download all attachments as: .zip

Change History (9)

comment:1 by SF/pwigren, 18 years ago

Priority: normalblocker

by SF/pwigren, 18 years ago

Attachment: dig.s03.gz added

dig.s03.gz

comment:2 by fingolfin, 18 years ago

Priority: blockerhigh

comment:3 by eriktorbjorn, 18 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, 18 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, 18 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.