[Scummvm-git-logs] scummvm master -> 71f490e5500aa8bb1bc5eaf45e1f246e48648a52
sev-
sev at scummvm.org
Fri Apr 9 15:47:56 UTC 2021
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:
71f490e550 SCUMM: Add workaround for Pete Wheeler softlock
Commit: 71f490e5500aa8bb1bc5eaf45e1f246e48648a52
https://github.com/scummvm/scummvm/commit/71f490e5500aa8bb1bc5eaf45e1f246e48648a52
Author: Little Cat (toontownlittlecat at gmail.com)
Date: 2021-04-09T17:47:53+02:00
Commit Message:
SCUMM: Add workaround for Pete Wheeler softlock
This workaround fixes a script bug in Backyard Baseball 2001 and 2003 where bunting a foul ball as Pete Wheeler may softlock the game if the ball goes far left or right field.
The original Backyard Baseball 1997 release does not seem to have this bug in my testing.
Changed paths:
engines/scumm/script_v6.cpp
diff --git a/engines/scumm/script_v6.cpp b/engines/scumm/script_v6.cpp
index db7690bb1c..7573c7612f 100644
--- a/engines/scumm/script_v6.cpp
+++ b/engines/scumm/script_v6.cpp
@@ -1409,7 +1409,25 @@ void ScummEngine_v6::o6_getActorAnimCounter() {
void ScummEngine_v6::o6_getAnimateVariable() {
int var = pop();
Actor *a = derefActor(pop(), "o6_getAnimateVariable");
- push(a->getAnimVar(var));
+
+ // WORKAROUND: In Backyard Baseball 2001 and 2003,
+ // bunting a foul ball as Pete Wheeler may softlock the game
+ // with an animation loop if the ball goes way into
+ // the left or right field line.
+ //
+ // This is a script bug because Pete's actor variable never
+ // sets to 1 in this condition and script room-4-2105
+ // (or room-3-2105 in 2003) will always break.
+ // We fix that by forcing Pete to play the return animation
+ // regardless if the ball's foul or not.
+ if ((_game.id == GID_BASEBALL2001 || _game.id == GID_BASEBALL2003) && \
+ _currentRoom == ((_game.id == GID_BASEBALL2001) ? 4 : 3) && \
+ vm.slot[_currentScript].number == 2105 && \
+ a->_costume == ((_game.id == GID_BASEBALL2001) ? 107 : 99) && \
+ readVar(0x8000 + 5) != 0)
+ push(1);
+ else
+ push(a->getAnimVar(var));
}
void ScummEngine_v6::o6_isActorInBox() {
More information about the Scummvm-git-logs
mailing list