aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/tinsel/tinsel.cpp15
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;