aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsluicebox2019-07-01 14:16:26 -0700
committerFilippos Karapetis2019-07-02 01:10:42 +0300
commite5ee875b2b4eac9f9428c9509bcafcb5b52d5470 (patch)
tree98cbafb33aa76d3baeb664b7333f33273fab3aff
parentd8efb64debc4af7cb0144135b6f3bebfe368a1e0 (diff)
downloadscummvm-rg350-e5ee875b2b4eac9f9428c9509bcafcb5b52d5470.tar.gz
scummvm-rg350-e5ee875b2b4eac9f9428c9509bcafcb5b52d5470.tar.bz2
scummvm-rg350-e5ee875b2b4eac9f9428c9509bcafcb5b52d5470.zip
SCI32: Fix QFG4 Look-Dungeon Message
-rw-r--r--engines/sci/engine/script_patches.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index 60262903db..617f8fc56a 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -12092,6 +12092,36 @@ static const uint16 qfg4CharacterSelectPatch[] = {
PATCH_END
};
+// Clicking Look in the dungeon (room 670) responds with the dungeon description
+// followed by the generic message for not seeing anything. rm670:doVerb is
+// missing a return statement and so it proceeds with generic verb handling.
+//
+// Applies to: All versions
+// Responsible method: rm670:doVerb
+static const uint16 qfg4LookDungeonSignature[] = {
+ 0x38, SIG_SELECTOR16(say), // pushi say
+ 0x38, SIG_UINT16(0x0006), // pushi 0006
+ SIG_MAGICDWORD,
+ 0x76, // push0
+ 0x78, // push1
+ 0x76, // push0
+ 0x76, // push0
+ 0x76, // push0
+ 0x38, SIG_UINT16(0x029e), // pushi 029e
+ 0x81, 0x5b, // lag 5b
+ 0x4a, SIG_UINT16(0x0010), // send 10 [ gloryMessager say: 0 1 0 0 0 670 ]
+ SIG_END
+};
+
+static const uint16 qfg4LookDungeonPatch[] = {
+ PATCH_ADDTOOFFSET(+11),
+ 0x89, 0x0b, // lsg 0b [ room number, saves a byte ]
+ 0x81, 0x5b, // lag 5b
+ 0x4a, PATCH_UINT16(0x0010), // send 10 [ gloryMessager say: 0 1 0 0 0 670 ]
+ 0x48, // ret
+ PATCH_END
+};
+
// script, description, signature patch
static const SciScriptPatcherEntry qfg4Signatures[] = {
{ true, 0, "prevent autosave from deleting save games", 1, qfg4AutosaveSignature, qfg4AutosavePatch },
@@ -12153,6 +12183,7 @@ static const SciScriptPatcherEntry qfg4Signatures[] = {
{ true, 663, "CD/Floppy: fix peer bats, upper door (1/2)", 1, qfg4UpperPeerBatsSignature1, qfg4UpperPeerBatsPatch1 },
{ false, 663, "CD: fix peer bats, upper door (2/2)", 1, qfg4UpperPeerBatsCDSignature2, qfg4UpperPeerBatsCDPatch2 },
{ false, 663, "Floppy: fix peer bats, upper door (2/2)", 1, qfg4UpperPeerBatsFloppySignature2, qfg4UpperPeerBatsFloppyPatch2 },
+ { true, 670, "fix look dungeon message", 1, qfg4LookDungeonSignature, qfg4LookDungeonPatch },
{ true, 710, "fix tentacle wriggle cycler", 1, qfg4TentacleWriggleSignature, qfg4TentacleWrigglePatch },
{ true, 710, "fix tentacle retraction for fighter", 1, qfg4PitRopeFighterSignature, qfg4PitRopeFighterPatch },
{ true, 710, "fix tentacle retraction for mage (1/2)", 1, qfg4PitRopeMageSignature1, qfg4PitRopeMagePatch1 },