diff options
-rw-r--r-- | engines/prince/script.cpp | 11 | ||||
-rw-r--r-- | engines/prince/script.h | 1 |
2 files changed, 12 insertions, 0 deletions
diff --git a/engines/prince/script.cpp b/engines/prince/script.cpp index 1e50fe5ec4..4ed3cee6f3 100644 --- a/engines/prince/script.cpp +++ b/engines/prince/script.cpp @@ -722,6 +722,17 @@ void Interpreter::O_PUTBACKANIM() { _vm->_script->installSingleBackAnim(_vm->_backAnimList, slot, room->_backAnim); } delete room; + + // WALKAROUND: fix for turning on 'walking bird' background animation too soon, + // after completing 'throw a rock' mini-game in Silmaniona location. + // Second bird shouldn't appear when normal animation is still in use + // in script lines 13814 and 13848 + if (_currentInstruction == kSecondBirdAnimationScriptFix) { + if (_vm->_normAnimList[1]._state == 0) { + _vm->_backAnimList[0].backAnims[0]._state = 1; + } + } + debugInterpreter("O_PUTBACKANIM roomId %d, slot %d, animId %d", roomId, slot, animId); } diff --git a/engines/prince/script.h b/engines/prince/script.h index 23c0468d15..fe79cf5f96 100644 --- a/engines/prince/script.h +++ b/engines/prince/script.h @@ -242,6 +242,7 @@ private: static OpcodeFunc _opcodes[]; static const uint kGiveLetterScriptFix = 79002; + static const uint kSecondBirdAnimationScriptFix = 45658; // Keep opcode handlers names as they are in original code // making it easier to switch back and forth |