diff options
author | Torbjörn Andersson | 2018-06-30 16:54:39 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2018-07-29 09:48:19 +0200 |
commit | 2982792eb1498962db855f7213bc2306d24e73cb (patch) | |
tree | f6dd0ab47887bdb18b5baa0c456554d8b3818dd2 | |
parent | 8120a22a40ae0ae330c3306bf6543bb8895551bd (diff) | |
download | scummvm-rg350-2982792eb1498962db855f7213bc2306d24e73cb.tar.gz scummvm-rg350-2982792eb1498962db855f7213bc2306d24e73cb.tar.bz2 scummvm-rg350-2982792eb1498962db855f7213bc2306d24e73cb.zip |
ZVISION: Add workaround for bug #10604
It was possible to render the game unplayable simply by looking at
Jack's cigar box while waiting for him to return to examine the
lamp. Note that this bug is only present in the DVD version. For
whatever reason, it adds a dummy location for playing the cutscene.
Applying the bugfix in the CD version actually breaks the game.
-rw-r--r-- | engines/zvision/detection_tables.h | 2 | ||||
-rw-r--r-- | engines/zvision/scripting/scr_file_handling.cpp | 17 | ||||
-rw-r--r-- | engines/zvision/zvision.h | 4 |
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); |