aboutsummaryrefslogtreecommitdiff
path: root/sky
diff options
context:
space:
mode:
Diffstat (limited to 'sky')
-rw-r--r--sky/logic.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/sky/logic.cpp b/sky/logic.cpp
index 2eb9cd7879..e10a155ad7 100644
--- a/sky/logic.cpp
+++ b/sky/logic.cpp
@@ -1372,6 +1372,21 @@ bool Logic::fnDrawScreen(uint32 a, uint32 b, uint32 c) {
debug(5, "Call: fnDrawScreen(%X, %X)",a,b);
SkyEngine::_systemVars.currentPalette = a;
_skyScreen->fnDrawScreen(a, b);
+
+ if (Logic::_scriptVariables[SCREEN] == 32) {
+ /* workaround for script bug #786482
+ Under certain circumstances, which never got completely cleared,
+ the gardener can get stuck in an animation, waiting for a sync
+ signal from foster.
+ This is most probably caused by foster leaving the screen before
+ sending the sync.
+ To work around that, we simply send a sync to the gardener every time
+ we enter the screen. If he isn't stuck (and thus not waiting for sync)
+ it will be ignored anyways */
+
+ debug(1, "sending gardener sync");
+ fnSendSync(ID_SC32_GARDENER, 1, 0);
+ }
return true;
}