diff options
-rw-r--r-- | engines/sherlock/journal.cpp | 3 | ||||
-rw-r--r-- | engines/sherlock/scalpel/scalpel_journal.cpp | 8 | ||||
-rw-r--r-- | engines/sherlock/scalpel/scalpel_journal.h | 5 | ||||
-rw-r--r-- | engines/sherlock/scalpel/scalpel_talk.cpp | 4 |
4 files changed, 20 insertions, 0 deletions
diff --git a/engines/sherlock/journal.cpp b/engines/sherlock/journal.cpp index 44b966f70b..d5d029589b 100644 --- a/engines/sherlock/journal.cpp +++ b/engines/sherlock/journal.cpp @@ -525,6 +525,9 @@ void Journal::loadJournalFile(bool alreadyLoaded) { else journalString += people._characters[c]._name; + if (IS_SERRATED_SCALPEL && _vm->getLanguage() == Common::DE_DEU) + Scalpel::ScalpelJournal::skipBadText(replyP); + const byte *strP = replyP; byte v; do { diff --git a/engines/sherlock/scalpel/scalpel_journal.cpp b/engines/sherlock/scalpel/scalpel_journal.cpp index 787d899aee..e068e3bc48 100644 --- a/engines/sherlock/scalpel/scalpel_journal.cpp +++ b/engines/sherlock/scalpel/scalpel_journal.cpp @@ -631,6 +631,14 @@ void ScalpelJournal::record(int converseNum, int statementNum, bool replyOnly) { Journal::record(converseNum, statementNum, replyOnly); } +void ScalpelJournal::skipBadText(const byte *&msgP) { + // WORKAROUND: Skip over bad text in the original game + const char *BAD_PHRASE1 = "Change Speaker to Sherlock Holmes "; + + if (!strncmp((const char *)msgP, BAD_PHRASE1, strlen(BAD_PHRASE1))) + msgP += strlen(BAD_PHRASE1); +} + } // End of namespace Scalpel } // End of namespace Sherlock diff --git a/engines/sherlock/scalpel/scalpel_journal.h b/engines/sherlock/scalpel/scalpel_journal.h index c8e9c01739..2f64141bb2 100644 --- a/engines/sherlock/scalpel/scalpel_journal.h +++ b/engines/sherlock/scalpel/scalpel_journal.h @@ -71,6 +71,11 @@ public: void drawInterface(); /** + * Handles skipping over bad text in conversations + */ + static void skipBadText(const byte *&msgP); + + /** * Handle events whilst the journal is being displayed */ bool handleEvents(int key); diff --git a/engines/sherlock/scalpel/scalpel_talk.cpp b/engines/sherlock/scalpel/scalpel_talk.cpp index 88a718ea4e..0458c309d7 100644 --- a/engines/sherlock/scalpel/scalpel_talk.cpp +++ b/engines/sherlock/scalpel/scalpel_talk.cpp @@ -22,6 +22,7 @@ #include "sherlock/scalpel/scalpel_talk.h" #include "sherlock/scalpel/scalpel_fixed_text.h" +#include "sherlock/scalpel/scalpel_journal.h" #include "sherlock/scalpel/scalpel_map.h" #include "sherlock/scalpel/scalpel_people.h" #include "sherlock/scalpel/scalpel_scene.h" @@ -189,6 +190,9 @@ void ScalpelTalk::talkInterface(const byte *&str) { ScalpelScreen &screen = *(ScalpelScreen *)_vm->_screen; UserInterface &ui = *_vm->_ui; + if (_vm->getLanguage() == Common::DE_DEU) + ScalpelJournal::skipBadText(str); + // If the window isn't yet open, draw the window before printing starts if (!ui._windowOpen && _noTextYet) { _noTextYet = false; |