[Scummvm-cvs-logs] scummvm master -> 5691a40380653af1d76fcdd30d1ec2f5996abf11

bluegr bluegr at gmail.com
Thu Jan 24 22:24:43 CET 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:
5691a40380 SCI: Update documentation on bug #3585189 and remove an invalid TODO


Commit: 5691a40380653af1d76fcdd30d1ec2f5996abf11
    https://github.com/scummvm/scummvm/commit/5691a40380653af1d76fcdd30d1ec2f5996abf11
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2013-01-24T13:23:48-08:00

Commit Message:
SCI: Update documentation on bug #3585189 and remove an invalid TODO

Thanks wjp for pointing out some extra parameters related to pathfinding in SCI

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 f6e64bb..c928cf3 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -883,22 +883,15 @@ const uint16 qfg1vgaPatchDialogHeader[] = {
 	PATCH_END
 };
 
-// When clicking on the crusher in room 331, Ego approaches him to talk to him.
-// There is a block placed in front of the crusher, where Ego stops. Script 331
-// is responsible for moving Ego, in moveToCrusher::changeState. Apparently,
-// the script parameters are an edge case, since the script sets Ego to move
-// much closer to the crusher than is possible, because of the block in front of
-// him, thus the scripts wait forever for MoveTo to move Ego to the requested
-// location, which never happens, and the game freezes. Normally, the scripts
-// ask to move Ego close to 79, 165. We change that to 85, 165, which is
-// possible and prevents the freeze. Fixes bug #3585189.
-//
-// TODO: Our pathfinding algorithm stops Ego one step further away from the
-// crusher than where SSCI is placing him. Since this is an edge case, and since
-// it also happens in SSCI, it is easier to just patch the target coordinates.
-// However, we should investigate our movement related functions. In this case,
-// kInitBresen, kDoBresen, kGetAngle and kGetDistance are called, among others.
-// kAvoidPath is not used in this case.
+// 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
+// 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
+// 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.
 const byte qfg1vgaSignatureMoveToCrusher[] = {
 	9,
 	0x51, 0x1f,       // class Motion






More information about the Scummvm-git-logs mailing list