[Scummvm-git-logs] scummvm master -> 28fa491707251912d9c7373e55369b26534fd80c

bluegr bluegr at gmail.com
Tue Jun 25 06:55:36 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:
28fa491707 SCI32: Fix QFG4 Rabbit combat getting stuck, bug #11000


Commit: 28fa491707251912d9c7373e55369b26534fd80c
    https://github.com/scummvm/scummvm/commit/28fa491707251912d9c7373e55369b26534fd80c
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2019-06-25T07:55:33+03:00

Commit Message:
SCI32: Fix QFG4 Rabbit combat getting stuck, bug #11000

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 a4abfc0..8a901e3 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -11764,6 +11764,34 @@ static const uint16 qfg4SearchRevenantPatch[] = {
 	PATCH_END
 };
 
+// During combat, if a rabbit is all the way to the right and attacks then it
+//  won't make any more moves, forcing the player to run away to end the fight.
+//  This is due to rabbitCombat failing to pass a caller to the rabbitAttack
+//  script and so it gets stuck. We pass the missing "self" parameter.
+//
+// Applies to: All versions
+// Responsible method: rabbitCombat:changeState(1)
+// Fixes bug: #11000
+static const uint16 qfg4RabbitCombatSignature[] = {
+	0x38, SIG_SELECTOR16(setScript),    // pushi setScript
+	0x78,                               // push1
+	0x72, SIG_ADDTOOFFSET(+2),          // lofsa rabbitAttack
+	0X36,                               // push
+	SIG_MAGICDWORD,
+	0x54, SIG_UINT16(0x0006),           // self 06 [ self setScript: rabbitAttack ]
+	0x32, SIG_UINT16(0x014b),           // jmp 014b
+	SIG_END
+};
+
+static const uint16 qfg4RabbitCombatPatch[] = {
+	PATCH_ADDTOOFFSET(+3),
+	0x7a,                               // push2
+	0x74, PATCH_ADDTOOFFSET(+2),        // lofss rabbitAttack
+	0x7c,                               // pushSelf
+	0x54, PATCH_UINT16(0x0008),         // self 08 [ self setScript: rabbitAttack self ]
+	PATCH_END
+};
+
 // Attempting to open the monastery door in room 250 while Igor is present
 //  randomly locks up the game. sHectapusDeath stands Igor up, but this can be
 //  interrupted by sIgorCarves animating him at random intervals, leaving
@@ -11888,6 +11916,7 @@ static const SciScriptPatcherEntry qfg4Signatures[] = {
 	{  true,   801, "fix runes puzzle (1/2)",                      1, qfg4RunesPuzzleSignature1,     qfg4RunesPuzzlePatch1 },
 	{  true,   801, "fix runes puzzle (2/2)",                      1, qfg4RunesPuzzleSignature2,     qfg4RunesPuzzlePatch2 },
 	{  true,   803, "fix sliding down slope",                      1, qfg4SlidingDownSlopeSignature, qfg4SlidingDownSlopePatch },
+	{  true,   820, "fix rabbit combat",                           1, qfg4RabbitCombatSignature,     qfg4RabbitCombatPatch },
 	{  true,   810, "fix conditional void calls",                  1, qfg4ConditionalVoidSignature,  qfg4ConditionalVoidPatch },
 	{  true,   830, "fix conditional void calls",                  2, qfg4ConditionalVoidSignature,  qfg4ConditionalVoidPatch },
 	{  true,   835, "fix conditional void calls",                  3, qfg4ConditionalVoidSignature,  qfg4ConditionalVoidPatch },





More information about the Scummvm-git-logs mailing list