From be224386484793c519840cff0b752e9fd2a430b1 Mon Sep 17 00:00:00 2001 From: Fabio Battaglia Date: Sun, 31 May 2009 14:41:54 +0000 Subject: tinsel: workaround for "missing red dragon in Act IV" bug in Discworld PSX svn-id: r41068 --- engines/tinsel/tinsel.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'engines') diff --git a/engines/tinsel/tinsel.cpp b/engines/tinsel/tinsel.cpp index cdd6f1ffb7..47602b5862 100644 --- a/engines/tinsel/tinsel.cpp +++ b/engines/tinsel/tinsel.cpp @@ -521,6 +521,19 @@ void SetNewScene(SCNHANDLE scene, int entrance, int transition) { HookScene.scene = 0; } + + // Workaround for "Missing Red Dragon in square" bug in Discworld 1 PSX, act IV. + // This happens with the original interpreter on PSX too: the red dragon in Act IV + // doesn't show up inside the square at the right time. Original game required the + // player to go in and out the square until the dragon appears (wasting hours). + // I'm forcing the load of the right scene by checking that the player has (or has not) the + // right items: player must have Mambo the swamp dragon, and mustn't have fireworks (used on + // the swamp dragon previously to "load it up"). + if (TinselV1PSX && NextScene.scene == 0x1800000 && NextScene.entry == 2) { + if ((IsInInventory(261, INV_1) || IsInInventory(261, INV_2)) && + (!IsInInventory(232, INV_1) && !IsInInventory(232, INV_2))) + NextScene.entry = 1; + } } /** @@ -672,7 +685,7 @@ bool ChangeScene(bool bReset) { } else if (--CountOut == 0) { if (!TinselV2) ClearScreen(); - + StartNewScene(NextScene.scene, NextScene.entry); NextScene.scene = 0; -- cgit v1.2.3