Opened 20 years ago
Closed 20 years ago
Last modified 20 years ago
#733 closed defect (fixed)
DIG: Can't exit room!
|Reported by:||SF/pwigren||Owned by:||eriktorbjorn|
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.
Change History (9)
comment:1 by , 20 years ago
|Priority:||normal → blocker|
by , 20 years ago
comment:2 by , 20 years ago
|Priority:||blocker → high|
comment:3 by , 20 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 , 20 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 , 20 years ago
Savegame at the guard dogs
comment:5 by , 20 years ago
|Status:||new → closed|
comment:6 by , 20 years ago
comment:7 by , 20 years ago
Fixed by Erik in CVS (note: the windows daily builds won't reflect this till roughly monday/tuesday).