aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/sci/engine/kernel.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp
index 29d16ab753..44eb816a7d 100644
--- a/engines/sci/engine/kernel.cpp
+++ b/engines/sci/engine/kernel.cpp
@@ -905,6 +905,22 @@ Common::String Kernel::lookupText(reg_t address, int index) {
int textlen = textres->size();
const char *seeker = (const char *)textres->getUnsafeDataAt(0);
+ if (g_sci->getGameId() == GID_LONGBOW && address.getOffset() == 1535 && textlen == 2662) {
+ // WORKAROUND: Longbow 1.0's text resource 1535 is missing 8 texts for
+ // the pub. It appears that only the 5.25 floppy release was affected.
+ // This was fixed by Sierra's 1.0 patch.
+ if (index >= 41) {
+ // texts 41+ exist but with incorrect offsets
+ index -= 8;
+ } else if (index >= 33) {
+ // texts 33 through 40 are missing. they comprise two sequences of
+ // four messages. only one of the two can play, and only once in
+ // the specific circumstance that the player enters the pub as a
+ // merchant, changes beards, and re-enters.
+ return "** MISSING MESSAGE **";
+ }
+ }
+
int _index = index;
while (index--)
while (textlen-- && *seeker++)