[Scummvm-git-logs] scummvm master -> c4c5c1d45320db44fab6ecb9b811bb61167a3c43
bluegr
bluegr at gmail.com
Fri Jan 18 09:28:25 CET 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:
c4c5c1d453 SCI32: Fix QFG4 castle door lockup
Commit: c4c5c1d45320db44fab6ecb9b811bb61167a3c43
https://github.com/scummvm/scummvm/commit/c4c5c1d45320db44fab6ecb9b811bb61167a3c43
Author: Vhati (tvtronix at yahoo.com)
Date: 2019-01-18T10:28:20+02:00
Commit Message:
SCI32: Fix QFG4 castle door lockup
Fixes doors when rogues attempt to open them, bug #10874
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 17dc496..17e6eba 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -162,6 +162,7 @@ static const char *const selectorNameTable[] = {
"cue", // QFG4
"heading", // QFG4
"moveSpeed", // QFG4
+ "sayMessage", // QFG4
"setLooper", // QFG4
"setSpeed", // QFG4
"value", // QFG4
@@ -251,6 +252,7 @@ enum ScriptPatcherSelectors {
SELECTOR_cue,
SELECTOR_heading,
SELECTOR_moveSpeed,
+ SELECTOR_sayMessage,
SELECTOR_setLooper,
SELECTOR_setSpeed,
SELECTOR_value
@@ -9604,6 +9606,47 @@ static const uint16 qfg4EffectDisposalPatch[] = {
PATCH_END
};
+// In the room (644) attached to the lower door of the bat-infested stairway,
+// a rogue will get stuck when attempting to open either door. Unlike in other
+// castle rooms, the door Tellers here aren't arranging to be cued after the
+// "It won't budge" message. Without the cue, a Teller won't clean() and return
+// control to the player.
+//
+// We follow the style of other rooms and replace gloryMessager::say() with
+// super::sayMessage(), which implicitly cues.
+//
+// Applies to at least: English CD, English floppy, German floppy
+// Responsible method: leftDoorTeller::sayMessage(), rightDoorTeller::sayMessage() in script 644
+// Fixes bug: #10874
+static const uint16 qfg4StuckDoorSignature[] = {
+ 0x38, SIG_SELECTOR16(say), // pushi say
+ 0x38, SIG_UINT16(0x0006), // pushi 6d
+ 0x39, 0x03, // pushi 3d
+ SIG_MAGICDWORD,
+ 0x39, 0x06, // pushi 6d
+ 0x39, 0x09, // pushi 9d
+ 0x78, // push1
+ 0x76, // push0
+ 0x38, SIG_UINT16(0x0280), // pushi 640d
+ 0x81, 0x5b, // lag global[91]
+ 0x4a, SIG_UINT16(0x0010), // send 16d
+ SIG_ADDTOOFFSET(+89), // ...
+ 0x57, SIG_ADDTOOFFSET(+1), SIG_UINT16(0x0004), // super 4d (Teller)
+ SIG_END
+};
+
+static const uint16 qfg4StuckDoorPatch[] = {
+ 0x38, PATCH_SELECTOR16(sayMessage), // pushi sayMessage
+ 0x39, 0x03, // pushi 3d
+ 0x3c, // dup
+ 0x39, 0x06, // pushi 6d
+ 0x39, 0x09, // pushi 9d
+ 0x59, 0x01, // &rest 1d
+ 0x57, PATCH_GETORIGINALBYTE(112), PATCH_UINT16(0x000a), // super 10d (Teller)
+ 0x32, PATCH_UINT16(0x0003), // jmp 3d [skip waste bytes]
+ PATCH_END
+};
+
// script, description, signature patch
static const SciScriptPatcherEntry qfg4Signatures[] = {
{ true, 0, "prevent autosave from deleting save games", 1, qfg4AutosaveSignature, qfg4AutosavePatch },
@@ -9641,6 +9684,7 @@ static const SciScriptPatcherEntry qfg4Signatures[] = {
{ true, 633, "fix stairway pathfinding", 1, qfg4StairwayPathfindingSignature, qfg4StairwayPathfindingPatch },
{ true, 643, "fix iron safe's east door sending hero west", 1, qfg4SafeDoorEastSignature, qfg4SafeDoorEastPatch },
{ true, 643, "fix iron safe's door oil flags", 1, qfg4SafeDoorOilSignature, qfg4SafeDoorOilPatch },
+ { true, 644, "fix castle door open message for rogue", 2, qfg4StuckDoorSignature, qfg4StuckDoorPatch },
{ true, 645, "fix extraneous door sound in the castle", 1, qfg4DoubleDoorSoundSignature, qfg4DoubleDoorSoundPatch },
{ false, 663, "CD: fix crest bookshelf", 1, qfg4CrestBookshelfCDSignature, qfg4CrestBookshelfCDPatch },
{ false, 663, "Floppy: fix crest bookshelf", 1, qfg4CrestBookshelfFloppySignature, qfg4CrestBookshelfFloppyPatch },
More information about the Scummvm-git-logs
mailing list