diff options
author | sluicebox | 2019-07-01 14:16:26 -0700 |
---|---|---|
committer | Filippos Karapetis | 2019-07-02 01:10:42 +0300 |
commit | e5ee875b2b4eac9f9428c9509bcafcb5b52d5470 (patch) | |
tree | 98cbafb33aa76d3baeb664b7333f33273fab3aff | |
parent | d8efb64debc4af7cb0144135b6f3bebfe368a1e0 (diff) | |
download | scummvm-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.cpp | 31 |
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 }, |