diff options
| -rw-r--r-- | engines/sci/engine/kernel.cpp | 16 | 
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++)  | 
