[Scummvm-cvs-logs] scummvm master -> 3a2b629a178f669c60b33e361bb1d6a15e553b4d

bluegr bluegr at gmail.com
Mon Aug 19 11:41:01 CEST 2013


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:
3a2b629a17 SCI: Fix script bug #3604939 - "SCI: QFG1VGA: Game hangs when meeting Baron while sneaking"


Commit: 3a2b629a178f669c60b33e361bb1d6a15e553b4d
    https://github.com/scummvm/scummvm/commit/3a2b629a178f669c60b33e361bb1d6a15e553b4d
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2013-08-19T02:31:37-07:00

Commit Message:
SCI: Fix script bug #3604939 - "SCI: QFG1VGA: Game hangs when meeting Baron while sneaking"

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 20c5c52..d4dddb6 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -953,10 +953,10 @@ const uint16 qfg1vgaPatchDialogHeader[] = {
 
 // When clicking on the crusher in room 331, Ego approaches him to talk to him,
 // an action that is handled by moveToCrusher::changeState in script 331. The
-// scripts set Ego to move close to the crusher, but when Ego is running instead
+// scripts set Ego to move close to the crusher, but when Ego is sneaking instead
 // of walking, the target coordinates specified by script 331 are never reached,
 // as Ego is making larger steps, and never reaches the required spot. This is an
-// edge case that can occur when Ego is set to run. Normally, when clicking on
+// edge case that can occur when Ego is set to sneak. Normally, when clicking on
 // the crusher, ego is supposed to move close to position 79, 165. We change it
 // to 85, 165, which is not an edge case thus the freeze is avoided.
 // Fixes bug #3585189.
@@ -976,6 +976,25 @@ const uint16 qfg1vgaPatchMoveToCrusher[] = {
 	PATCH_END
 };
 
+// Same pathfinding bug as above, where Ego is set to move to an impossible
+// spot when sneaking. In GuardsTrumpet::changeState, we change the final
+// location where Ego is moved from 111, 111 to 114, 114. Fixes bug #3604939.
+const byte qfg1vgaSignatureMoveToCastleGate[] = {
+	7,
+	0x51, 0x1f,       // class MoveTo
+	0x36,             // push
+	0x39, 0x6f,       // pushi 6f (111 - x)
+	0x3c,             // dup (111 - y)
+	0x7c,             // pushSelf
+	0
+};
+
+const uint16 qfg1vgaPatchMoveToCastleGate[] = {
+	PATCH_ADDTOOFFSET | +3,
+	0x39, 0x72,       // pushi 72 (114 - x)
+	PATCH_END
+};
+
 //    script, description,                                      magic DWORD,                                  adjust
 const SciScriptSignature qfg1vgaSignatures[] = {
 	{    215, "fight event issue",                           1, PATCH_MAGICDWORD(0x6d, 0x76, 0x51, 0x07),    -1, qfg1vgaSignatureFightEvents,       qfg1vgaPatchFightEvents },
@@ -983,6 +1002,7 @@ const SciScriptSignature qfg1vgaSignatures[] = {
 	{    814, "window text temp space",                      1, PATCH_MAGICDWORD(0x3f, 0xba, 0x87, 0x00),     0, qfg1vgaSignatureTempSpace,         qfg1vgaPatchTempSpace },
 	{    814, "dialog header offset",                        3, PATCH_MAGICDWORD(0x5b, 0x04, 0x80, 0x36),     0, qfg1vgaSignatureDialogHeader,      qfg1vgaPatchDialogHeader },
 	{    331, "moving to crusher",                           1, PATCH_MAGICDWORD(0x51, 0x1f, 0x36, 0x39),     0, qfg1vgaSignatureMoveToCrusher,     qfg1vgaPatchMoveToCrusher },
+	{     41, "moving to castle gate",                       1, PATCH_MAGICDWORD(0x51, 0x1f, 0x36, 0x39),     0, qfg1vgaSignatureMoveToCastleGate,  qfg1vgaPatchMoveToCastleGate },
 	SCI_SIGNATUREENTRY_TERMINATOR
 };
 






More information about the Scummvm-git-logs mailing list