aboutsummaryrefslogtreecommitdiff
path: root/engines/sci
diff options
context:
space:
mode:
authorFilippos Karapetis2011-01-12 23:53:14 +0000
committerFilippos Karapetis2011-01-12 23:53:14 +0000
commitbb3fd747d4a6e504a9beafe32484ff197f4a40b3 (patch)
treec634b7aab2ac0113774d10749e9e69850f90359c /engines/sci
parentc215d85c33b1a983e0cbf860373fbd1b5f2d6000 (diff)
downloadscummvm-rg350-bb3fd747d4a6e504a9beafe32484ff197f4a40b3.tar.gz
scummvm-rg350-bb3fd747d4a6e504a9beafe32484ff197f4a40b3.tar.bz2
scummvm-rg350-bb3fd747d4a6e504a9beafe32484ff197f4a40b3.zip
SCI: Fixed bug #3155550 - "SQ4 Russian: Script error in Scate-o-rama"
svn-id: r55218
Diffstat (limited to 'engines/sci')
-rw-r--r--engines/sci/engine/workarounds.cpp11
1 files changed, 10 insertions, 1 deletions
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))) {