PRINCE: showNormAnims() fix

This commit is contained in:
lukaslw 2014-08-07 02:20:52 +02:00
parent a85a93f888
commit 4dbcdd19ec
3 changed files with 13 additions and 2 deletions

View File

@ -1390,8 +1390,9 @@ void PrinceEngine::showNormAnims() {
} else {
anim._frame++;
}
if (anim._frame < phaseCount - 1) {
anim._showFrame = anim._frame;
anim._showFrame = anim._frame;
if (anim._showFrame >= phaseCount) {
anim._showFrame = phaseCount - 1;
}
showAnim(anim);
}

View File

@ -643,6 +643,14 @@ void Interpreter::O_SHOWANIM() {
delete anim._shadowData;
anim._shadowData = nullptr;
}
// WALKAROUND: fix for turning off bard's wife background animation
// in front of bard's house (location 7) after giving her poem (item 33)
// in script: GiveLetter (line 11082)
if (_currentInstruction == kGiveLetterScriptFix) {
_vm->_backAnimList[1].backAnims[0]._state = 1;
}
debugInterpreter("O_SHOWANIM slot %d, animId %d", slot, animId);
}

View File

@ -252,6 +252,8 @@ private:
typedef void (Interpreter::*OpcodeFunc)();
static OpcodeFunc _opcodes[];
static const int kGiveLetterScriptFix = 79002;
// Keep opcode handlers names as they are in original code
// it easier to switch back and forth
void O_WAITFOREVER();