From bb3fd747d4a6e504a9beafe32484ff197f4a40b3 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Wed, 12 Jan 2011 23:53:14 +0000 Subject: SCI: Fixed bug #3155550 - "SQ4 Russian: Script error in Scate-o-rama" svn-id: r55218 --- engines/sci/engine/workarounds.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'engines/sci/engine/workarounds.cpp') diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp index 478b487027..0ac6c85dea 100644 --- a/engines/sci/engine/workarounds.cpp +++ b/engines/sci/engine/workarounds.cpp @@ -505,11 +505,20 @@ SciWorkaroundSolution trackOriginAndFindWorkaround(int index, const SciWorkaroun do { workaround = workaroundList; while (workaround->methodName) { + bool objectNameMatches = (workaround->objectName == NULL) || + (workaround->objectName == g_sci->getSciLanguageString(searchObjectName.c_str(), K_LANG_ENGLISH)); + + // Special case: in the fanmade Russian translation of SQ4, all + // of the object names have been deleted or renamed to Russian, + // thus we disable checking of the object name. Fixes bug #3155550. + if (g_sci->getLanguage() == Common::RU_RUS && g_sci->getGameId() == GID_SQ4) + objectNameMatches = true; + if (workaround->gameId == gameId && ((workaround->scriptNr == -1) || (workaround->scriptNr == curScriptNr)) && ((workaround->roomNr == -1) || (workaround->roomNr == curRoomNumber)) && ((workaround->inheritanceLevel == -1) || (workaround->inheritanceLevel == inheritanceLevel)) - && ((workaround->objectName == NULL) || (workaround->objectName == g_sci->getSciLanguageString(searchObjectName.c_str(), K_LANG_ENGLISH))) + && objectNameMatches && workaround->methodName == g_sci->getSciLanguageString(curMethodName.c_str(), K_LANG_ENGLISH) && workaround->localCallOffset == lastCall->debugLocalCallOffset && ((workaround->index == -1) || (workaround->index == index))) { -- cgit v1.2.3