aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/zvision/detection_tables.h2
-rw-r--r--engines/zvision/scripting/scr_file_handling.cpp17
-rw-r--r--engines/zvision/zvision.h4
3 files changed, 22 insertions, 1 deletions
diff --git a/engines/zvision/detection_tables.h b/engines/zvision/detection_tables.h
index cb813e6d5b..32c51040b7 100644
--- a/engines/zvision/detection_tables.h
+++ b/engines/zvision/detection_tables.h
@@ -246,7 +246,7 @@ static const ZVisionGameDescription gameDescriptions[] = {
AD_ENTRY1s("SCRIPTS.ZFS", "03157a3399513bfaaf8dc6d5ab798b36", 8433326),
Common::EN_ANY,
Common::kPlatformWindows,
- ADGF_NO_FLAGS,
+ GF_DVD,
GUIO4(GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_DOUBLE_FPS, GAMEOPTION_DISABLE_ANIM_WHILE_TURNING, GAMEOPTION_USE_HIRES_MPEG_MOVIES)
},
GID_GRANDINQUISITOR
diff --git a/engines/zvision/scripting/scr_file_handling.cpp b/engines/zvision/scripting/scr_file_handling.cpp
index c8952cde01..cc845424c7 100644
--- a/engines/zvision/scripting/scr_file_handling.cpp
+++ b/engines/zvision/scripting/scr_file_handling.cpp
@@ -95,6 +95,23 @@ void ScriptManager::parsePuzzle(Puzzle *puzzle, Common::SeekableReadStream &stre
// Fixes bug #6803.
if (_engine->getGameId() == GID_NEMESIS && puzzle->key == 19398)
puzzle->resultActions.push_back(new ActionAssign(_engine, 11, "19397, 0"));
+
+ // WORKAROUND for bug #10604. If the player is looking at the
+ // cigar box when Antharia Jack returns to examine the lamp,
+ // pp1f_video_flag remains 1. Later, when the player returns
+ // to pick up the lantern, the game will try to play the
+ // cutscene again, but since that script has already been
+ // run the player gets stuck in a dark room instead. We have
+ // to add the assignment action to the front, or it won't be
+ // reached because changing the location terminates the script.
+ //
+ // Fixing it this way only keeps the bug from happening. It
+ // will not repair old savegames.
+ //
+ // Note that the bug only affects the DVD version. The CD
+ // version doesn't have a separate room for the cutscene.
+ else if (_engine->getGameId() == GID_GRANDINQUISITOR && (_engine->getFeatures() & GF_DVD) && puzzle->key == 10836)
+ puzzle->resultActions.push_front(new ActionAssign(_engine, 11, "10803, 0"));
} else if (line.matchString("flags {", true)) {
setStateFlag(puzzle->key, parseFlags(stream));
}
diff --git a/engines/zvision/zvision.h b/engines/zvision/zvision.h
index 5df8e820c3..2ada66c45d 100644
--- a/engines/zvision/zvision.h
+++ b/engines/zvision/zvision.h
@@ -92,6 +92,10 @@ enum ZVisionGameId {
GID_GRANDINQUISITOR = 2
};
+enum ZVisionFeatures {
+ GF_DVD = (1 << 0) // ZGI DVD version
+};
+
class ZVision : public Engine {
public:
ZVision(OSystem *syst, const ZVisionGameDescription *gameDesc);