[Scummvm-git-logs] scummvm master -> b30a14ea966b58ddbeb53254dee4f02cb01e5d50

bluegr noreply at scummvm.org
Sun Apr 26 16:50:54 UTC 2026


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
b30a14ea96 TOUCHE: Fix uncompletable game on some condition


Commit: b30a14ea966b58ddbeb53254dee4f02cb01e5d50
    https://github.com/scummvm/scummvm/commit/b30a14ea966b58ddbeb53254dee4f02cb01e5d50
Author: Gemba (uid0 at sdf-eu.org)
Date: 2026-04-26T19:50:50+03:00

Commit Message:
TOUCHE: Fix uncompletable game on some condition

This workaround prevents that the player leaves Rouen and navigates to
the Cardinal's castle unless all preconditions are met: The potion is
also needed to complete the game at the castle and the player cannot go
back to Rouen once having reached the castle.

Changed paths:
    engines/touche/touche.cpp


diff --git a/engines/touche/touche.cpp b/engines/touche/touche.cpp
index 35adc995b1c..31f1f7b9835 100644
--- a/engines/touche/touche.cpp
+++ b/engines/touche/touche.cpp
@@ -2458,6 +2458,35 @@ void ToucheEngine::removeFromTalkTable(int keyChar) {
 
 void ToucheEngine::addConversationChoice(int16 num) {
 	debugC(9, kDebugEngine, "ToucheEngine::addConversationChoice(%d)", num);
+	// Workaround for bug #6754 - Player may only ask for boat at Rouen river
+	// gate if and only if potion is in inventory and Juliette has been
+	// kidnapped by the Cardinal to his castle. When reaching the castle without potion
+	// the game can not be finished as there is no way back to Rouen river gate.
+
+	// 018d99d5  ; prginstruction  ; 1d 0001      ; getFlag(1: "puzzles solved progress")
+	// 018d99d8  ; prginstruction  ; 06           ; push
+	// 018d99d9  ; prginstruction  ; 13 000d      ; fetchScriptWord(13)
+	// 018d99dc  ; prginstruction  ; 12           ; testLower (13 < flag[1] ? t:0xffff, f:0x0000)
+	// 018d99dd  ; prginstruction  ; 02 018d99e3  ; jz 018d99e3
+	// 018d99e0  ; prginstruction  ; 3e 0004      ; addConversationChoice("We need a boat...")
+	// 018d99e3  ; prginstruction  ; 1c           ; stopScript
+	if (_currentEpisodeNum == 103  /* Rouen river gate episode */
+			&& _currentRoomNum == 67  /* Rouen river gate */
+			&& _flagsTable[1] == 14   /* Juliette kidnapped */
+			&& num == 4  /* "We need a boat..." */) {
+		bool havePotion = false;
+		int16 *p = _inventoryStateTable[0].itemsList;
+		for (; *p != -1; ++p) {
+			if (*p == 0x0009 /* potion */) {
+				havePotion = true;
+				break;
+			}
+		}
+		if (!havePotion) {
+			return;
+		}
+	}
+
 	_conversationChoicesUpdated = true;
 	int16 msg = _programConversationTable[_currentConversation + num].msg;
 	for (int i = 0; i < NUM_CONVERSATION_CHOICES; ++i) {




More information about the Scummvm-git-logs mailing list