[Scummvm-git-logs] scummvm master -> c3bc9f80b5847eaa261d05fbc779675c99436f2c

bluegr bluegr at gmail.com
Fri Dec 14 20:13:01 CET 2018


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
c3bc9f80b5 SCI: Fix LONGBOW day 9 cobbler's hut, bug #10834 (#1444)


Commit: c3bc9f80b5847eaa261d05fbc779675c99436f2c
    https://github.com/scummvm/scummvm/commit/c3bc9f80b5847eaa261d05fbc779675c99436f2c
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2018-12-14T21:12:58+02:00

Commit Message:
SCI: Fix LONGBOW day 9 cobbler's hut, bug #10834 (#1444)

Fixes a script bug in the original

Changed paths:
    engines/sci/engine/script_patches.cpp


diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index 32be823..f3fb600 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -3561,6 +3561,34 @@ static const uint16 longbowPatchBerryBushFix[] = {
 	PATCH_END
 };
 
+// On day 9, room 350 outside the cobbler's hut is initialized incorrectly if
+//  disguised as a monk. The entrance to the hut is broken and several minor
+//  messages are incorrect. This is due to the room's script assuming that the
+//  only disguises that day are yeoman and merchant. A monk disguise causes some
+//  tests to pass and others to fail, leaving the room in an inconsistent state.
+//
+// We fix this by changing the yeoman disguise tests in the script to include
+//  the monk disguises. The disguise global is set to 4 for yeoman and 5 or 6
+//  for monk disguises so we patch the tests to be greater than or equals to.
+//
+// Applies to: English PC Floppy, German PC Floppy, English Amiga Floppy
+// Responsible methods: rm350:init, lobbsHut:doVerb, lobbsDoor:doVerb,
+//                      lobbsCover:doVerb, tailorDoor:doVerb
+// Fixes bug #10834
+static const uint16 longbowSignatureCobblerHut[] = {
+	SIG_MAGICDWORD,
+	0x89, 0x7e,                     // lsg 7e [ current disguise ]
+	0x35, 0x04,                     // ldi 04 [ yeoman ]
+	0x1a,                           // eq?    [ is current disguise yeoman? ]
+	SIG_END
+};
+
+static const uint16 longbowPatchCobblerHut[] = {
+	PATCH_ADDTOOFFSET(+4),
+	0x20,                           // ge? [ is current disguise yeoman or monk? ]
+	PATCH_END
+};
+
 // The Amiga version of room 530 adds a broken fDrunk:onMe method which prevents
 //  messages when clicking on the drunk on the floor of the pub and causes a
 //  signature mismatch on every click in the room. fDrunk:onMe passes an Event
@@ -3601,6 +3629,7 @@ static const uint16 longbowPatchAmigaPubFix[] = {
 static const SciScriptPatcherEntry longbowSignatures[] = {
 	{  true,   210, "hand code crash",                             5, longbowSignatureShowHandCode, longbowPatchShowHandCode },
 	{  true,   225, "arithmetic berry bush fix",                   1, longbowSignatureBerryBushFix, longbowPatchBerryBushFix },
+	{  true,   350, "day 9 cobbler hut fix",                      10, longbowSignatureCobblerHut,   longbowPatchCobblerHut },
 	{  true,   530, "amiga pub fix",                               1, longbowSignatureAmigaPubFix,  longbowPatchAmigaPubFix },
 	SCI_SIGNATUREENTRY_TERMINATOR
 };





More information about the Scummvm-git-logs mailing list