[Scummvm-git-logs] scummvm master -> 72c50d38ae3aa748dfa15ee24971e80162797d1b
bluegr
bluegr at gmail.com
Thu Aug 1 13:43:03 CEST 2019
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:
72c50d38ae SCI: Fix ICEMAN 'Climb down hatch'
Commit: 72c50d38ae3aa748dfa15ee24971e80162797d1b
https://github.com/scummvm/scummvm/commit/72c50d38ae3aa748dfa15ee24971e80162797d1b
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2019-08-01T14:42:58+03:00
Commit Message:
SCI: Fix ICEMAN 'Climb down hatch'
Fixes bug #11039
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 fe547cb..2dd3bbb 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -2988,8 +2988,44 @@ static const uint16 icemanDestroyerTimer2Patch[] = {
PATCH_END
};
+// At the pier in Honolulu, room 23, "climb down" causes ego to bypass boarding
+// procedure, walk through the air, climb down the hatch, and get stuck in the
+// submarine without triggering a room change. There is no "climb up" command.
+//
+// Boarding requires asking the officer permission. comeAboardScript gives him
+// the orders, runs downTheHatchScript, and changes to room 31 when finished.
+// downTheHatchScript only walks ego to the hatch and runs the climb animation.
+// "climb down" simply runs downTheHatchScript and nothing else, leaving the
+// room in a broken state by running this intermediate script out of context.
+//
+// We patch "climb down" to respond with the message for other hatch commands.
+//
+// Applies to: All versions
+// Responsible method: hatch:handleEvent
+// Fixes bug #11039
+static const uint16 icemanClimbDownHatchSignature[] = {
+ 0x7a, // push2
+ SIG_MAGICDWORD,
+ 0x39, 0x17, // pushi 17
+ 0x39, 0x18, // pushi 18
+ 0x47, 0xff, 0x00, 0x04, // calle proc255_0 04 [ "You must follow proper boarding procedure." ]
+ 0x32, SIG_UINT16(0x0021), // jmp 0021 [ end of method ]
+ SIG_ADDTOOFFSET(+22),
+ 0x39, SIG_SELECTOR8(setScript), // pushi setScript
+ 0x78, // push1
+ 0x72, SIG_UINT16(0xfc24), // lofsa downTheHatchScript
+ SIG_END,
+};
+
+static const uint16 icemanClimbDownHatchPatch[] = {
+ PATCH_ADDTOOFFSET(+34),
+ 0x33, 0xdc, // jmp dc [ "You must follow proper boarding procedure." ]
+ PATCH_END
+};
+
// script, description, signature patch
static const SciScriptPatcherEntry icemanSignatures[] = {
+ { true, 23, "climb down hatch", 1, icemanClimbDownHatchSignature, icemanClimbDownHatchPatch },
{ true, 314, "destroyer timer (1/2)", 1, icemanDestroyerTimer1Signature, icemanDestroyerTimer1Patch },
{ true, 391, "destroyer timer (2/2)", 1, icemanDestroyerTimer2Signature, icemanDestroyerTimer2Patch },
SCI_SIGNATUREENTRY_TERMINATOR
More information about the Scummvm-git-logs
mailing list