From 5d3bef9c57ea4a56e6df42121b1ae52a94531420 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Sat, 31 May 2003 17:58:15 +0000 Subject: [PATCH] added hack to make The Dig work again, tbus might break all sorts of other things (though I don't really see how, but that won't stop the bugs :-) svn-id: r8189 --- scumm/scummvm.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/scumm/scummvm.cpp b/scumm/scummvm.cpp index e2a249db92f..e5031a118ed 100644 --- a/scumm/scummvm.cpp +++ b/scumm/scummvm.cpp @@ -1235,6 +1235,23 @@ void Scumm::startScene(int room, Actor * a, int objectNr) { a->moving = 0; } } else { + if (a) { + // FIXME: This hack mostly is there to fix the tomb/statue room + // in The Dig. What happens there is that when you enter, you are + // placed at object 399, coords (307,141), which is in box 25. + // But then the entry script locks that and other boxes. Hence + // after the entry script runs, you basically can only do one thing + // in that room, and that is to leave it - which means the game + // is unfinishable. + // By calling adjustActorPos, we can solve the problem in this case: + // there is a very close box (box 12) which contains point (307,144). + // If we call adjustActorPos, Commander Low is moved into that box, + // and we can go on. But aqudran looked this up in his IMB DB for + // The DIG; and nothing like this is done there. Also I am pretty + // sure this used to work in 0.3.1. So apparently something broke + // down here, and I have no clue what that might be :-/ + a-> adjustActorPos(); + } if (camera._follows) { a = derefActor(camera._follows, "startScene: follows"); setCameraAt(a->x, a->y);