[Scummvm-git-logs] scummvm master -> 9bbdec165c3a3cb1009b9bd193ae968eaaa9048d
sluicebox
noreply at scummvm.org
Thu Sep 1 17:44:28 UTC 2022
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:
9bbdec165c SCI: Fix QFG3 Laibon Teller options
Commit: 9bbdec165c3a3cb1009b9bd193ae968eaaa9048d
https://github.com/scummvm/scummvm/commit/9bbdec165c3a3cb1009b9bd193ae968eaaa9048d
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2022-09-01T09:44:05-08:00
Commit Message:
SCI: Fix QFG3 Laibon Teller options
This is a follow-up to the script patches for the dead-end event
bugs in the Laibon's hut: 6e743a97efe438b638b3f27e39b853a5b011ff61
Those patches had the unintended side effect of allowing two dialogue
options during an event where they shouldn't be available. Now their
logic is updated to match the other patches so that they only appear
during their intended event.
Fixes bug #13748
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 b31138d0b04..86fb2d6d6f1 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -14792,6 +14792,49 @@ static const uint16 qfg3PatchLaibonHutEntrance2[] = {
PATCH_END // ne? [ Haven't paid Laibon the bride price ]
};
+// The Laibon's Teller needs updating to be compatible with the above script
+// patches for the events in his hut. There are two options that should only
+// appear in Event 6 before paying the bride's price: a "Leopardman" option and
+// "Marriage". The script enforces this by simply testing that Johari's state
+// is 2, which is the value for having entered the hut with all of the items.
+// This assumes that this can only happen in Event 6, but that was one of the
+// logic problems that we fixed, so this global can now also be 2 in Event 5.
+//
+// We fix this by only showing these Teller options when Johari's state is 2 and
+// the room is Event 6.
+//
+// Applies to: All versions
+// Responsible method: laibonTell:showDialog
+// Fixes bug: #13748
+static const uint16 qfg3SignatureLaibonTeller[] = {
+ 0x88, SIG_UINT16(0x0188), // lsg 0188 [ johari state ]
+ SIG_MAGICDWORD,
+ 0x35, 0x02, // ldi 02
+ 0x1a, // eq? [ entered with bride price? ]
+ 0x36, // push
+ 0x39, 0xcf, // pushi cf [ Marriage cond 49 ]
+ 0x88, SIG_UINT16(0x0188), // lsg 0188 [ johari state ]
+ 0x35, 0x02, // ldi 02
+ 0x1a, // eq? [ entered with bride price? ]
+ 0x36, // push
+ SIG_END
+};
+
+static const uint16 qfg3PatchLaibonTeller[] = {
+ 0x80, PATCH_UINT16(0x0188), // lag 0188 [ johari state ]
+ 0x7a, // push2
+ 0x1a, // eq? [ entered with bride price? ]
+ 0x36, // push
+ 0x83, 0x0b, // lal 0b [ room event ]
+ 0x39, 0x06, // pushi 06
+ 0x1a, // eq? [ is room event 6? ]
+ 0x12, // and
+ 0x36, // push
+ 0x39, 0xcf, // pushi cf [ Marriage cond 49 ]
+ 0x36, // push
+ PATCH_END
+};
+
// script, description, signature patch
static const SciScriptPatcherEntry qfg3Signatures[] = {
{ true, 944, "import dialog continuous calls", 1, qfg3SignatureImportDialog, qfg3PatchImportDialog },
@@ -14810,6 +14853,7 @@ static const SciScriptPatcherEntry qfg3Signatures[] = {
{ true, 450, "laibon hut events (2/3)", 1, qfg3SignatureLaibonHutEvents2, qfg3PatchLaibonHutEvents2 },
{ true, 450, "laibon hut events (3/3)", 1, qfg3SignatureLaibonHutEvents3, qfg3PatchLaibonHutEvents3 },
{ true, 450, "NRS: laibon hut events (3/3)", 1, qfg3SignatureNrsLaibonHutEvents3, qfg3PatchNrsLaibonHutEvents3 },
+ { true, 450, "laibon teller", 1, qfg3SignatureLaibonTeller, qfg3PatchLaibonTeller },
{ true, 460, "NRS: floating spears", 1, qfg3SignatureNrsFloatingSpears, qfg3PatchNrsFloatingSpears },
{ true, 510, "ring rope prize", 1, qfg3SignatureRingRopePrize, qfg3PatchRingRopePrize },
{ true, 550, "combat speed throttling script", 1, qfg3SignatureCombatSpeedThrottling1, qfg3PatchCombatSpeedThrottling1 },
More information about the Scummvm-git-logs
mailing list