diff options
-rw-r--r-- | engines/tinsel/tinsel.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
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; |