aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSven Meier2018-06-17 17:08:27 +0200
committerAdrian Frühwirth2018-06-23 13:50:57 +0200
commit64c54591c356f41abe8df7de7afbd291279a99a5 (patch)
tree2dd64e4576b3487d43c8aca6bde48276bb07f798
parent18fd6f603d3a4efff7db704ceac37571dc083d25 (diff)
downloadscummvm-rg350-64c54591c356f41abe8df7de7afbd291279a99a5.tar.gz
scummvm-rg350-64c54591c356f41abe8df7de7afbd291279a99a5.tar.bz2
scummvm-rg350-64c54591c356f41abe8df7de7afbd291279a99a5.zip
SCUMM: Workaround erroneous AKC_JUMP in German SPY Fox 3
Fixes Trac#3813 and makes this version of the game completable.
-rw-r--r--NEWS2
-rw-r--r--engines/scumm/akos.cpp9
2 files changed, 11 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index 97fbdc290d..cb389d4b5c 100644
--- a/NEWS
+++ b/NEWS
@@ -27,6 +27,8 @@ For a more comprehensive changelog of the latest experimental code, see:
- Fixed original speech glitch on submarine in Indiana Jones and the Fate of Atlantis.
Users need to recompress their monster.sou using an up-to-date version of scummvm-tools
for this to take effect when using compressed audio.
+ - Fixed an issue in the wig maker room in the German version of SPY Fox 3: Operation Ozone
+ which makes the game completable.
Tinsel:
- Fix loading Discworld 1 savegames from the launcher where Rincewind had a held item
diff --git a/engines/scumm/akos.cpp b/engines/scumm/akos.cpp
index 6d80315ccb..3d98a7b9b2 100644
--- a/engines/scumm/akos.cpp
+++ b/engines/scumm/akos.cpp
@@ -1632,6 +1632,15 @@ bool ScummEngine_v6::akos_increaseAnim(Actor *a, int chan, const byte *aksq, con
case AKC_Jump:
curpos = GUW(2);
+
+ // WORKAROUND bug #3813: In the German version of SPY Fox 3: Operation Ozone
+ // the wig maker room 21 contains a costume animation 352 of an LED ticker
+ // with a jump to an erroneous position 846.
+ // To prevent an undefined 'uSweat token' the animation is reset to its start.
+ if (_game.id == GID_HEGAME && _language == Common::DE_DEU && \
+ _currentRoom == 21 && a->_costume == 352 && curpos == 846) {
+ curpos = a->_cost.start[chan];
+ }
break;
case AKC_Return: