aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/sci/engine/script_patches.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index c1e13218eb..6db0222e1a 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -1435,12 +1435,36 @@ static const uint16 ecoquest2PatchRoom500Items[] = {
PATCH_END
};
+// The Ecorder cursor only highlights over one of the four Victoria lilies, even
+// though they all respond to Ecorder clicks. Each lily has a doit method that
+// highlights the cursor but three of them never execute because they are
+// added to the room pic. This removes them from the cast and prevents doit.
+//
+// We fix this by removing the addToPic calls so the lilies remain in the cast.
+//
+// Applies to: All versions
+// Responsible methods: lilly1:init, lilly2:init, lilly3:init
+// Fixes bug: #5552
+static const uint16 ecoquest2SignatureEcorderLily[] = {
+ 0x38, SIG_MAGICDWORD, // pushi addToPic
+ SIG_SELECTOR16(addToPic),
+ 0x76, // push0
+ 0x54, 0x04, // self 04 [ self addToPic: ]
+ SIG_END
+};
+
+static const uint16 ecoquest2PatchEcorderLily[] = {
+ 0x32, PATCH_UINT16(0x0003), // jmp 0003
+ PATCH_END
+};
+
// script, description, signature patch
static const SciScriptPatcherEntry ecoquest2Signatures[] = {
{ true, 0, "icon bar tutorial", 10, ecoquest2SignatureIconBarTutorial, ecoquest2PatchIconBarTutorial },
{ true, 50, "initial text not removed on ecorder", 1, ecoquest2SignatureEcorder, ecoquest2PatchEcorder },
{ true, 333, "initial text not removed on ecorder tutorial", 1, ecoquest2SignatureEcorderTutorial, ecoquest2PatchEcorderTutorial },
{ true, 500, "room 500 items reappear", 1, ecoquest2SignatureRoom500Items, ecoquest2PatchRoom500Items },
+ { true, 702, "ecorder not highlighting lilies", 3, ecoquest2SignatureEcorderLily, ecoquest2PatchEcorderLily },
SCI_SIGNATUREENTRY_TERMINATOR
};