diff options
Diffstat (limited to 'engines/prince')
-rw-r--r-- | engines/prince/hero.cpp | 24 | ||||
-rw-r--r-- | engines/prince/prince.cpp | 2 | ||||
-rw-r--r-- | engines/prince/script.cpp | 4 | ||||
-rw-r--r-- | engines/prince/script.h | 1 |
4 files changed, 21 insertions, 10 deletions
diff --git a/engines/prince/hero.cpp b/engines/prince/hero.cpp index 5edbed5df7..a0e7533c69 100644 --- a/engines/prince/hero.cpp +++ b/engines/prince/hero.cpp @@ -736,17 +736,21 @@ void Hero::showHero() { } if (_state == STAY) { - if (!_vm->_optionsFlag && !_vm->_interpreter->getLastOPCode()) { // TODO - check OPCODE after right click - _boredomTime++; - if (_boredomTime == _maxBoredom) { - _boreNum =_vm->_randomSource.getRandomNumber(1); // rand one of two 'bored' animation - _phase = 0; - _state = BORE; - if (_lastDirection == kHeroDirUp) { - _lastDirection = kHeroDirLeft; - } else { - _lastDirection = kHeroDirDown; + if (!_vm->_optionsFlag) { + if (!_vm->_interpreter->getLastOPCode() || !_vm->_interpreter->getFgOpcodePC()) { + _boredomTime++; + if (_boredomTime == _maxBoredom) { + _boreNum =_vm->_randomSource.getRandomNumber(1); // rand one of two 'bored' animation + _phase = 0; + _state = BORE; + if (_lastDirection == kHeroDirUp) { + _lastDirection = kHeroDirLeft; + } else { + _lastDirection = kHeroDirDown; + } } + } else { + _boredomTime = 0; } } else { _boredomTime = 0; diff --git a/engines/prince/prince.cpp b/engines/prince/prince.cpp index 06462421a8..b218a8fe1e 100644 --- a/engines/prince/prince.cpp +++ b/engines/prince/prince.cpp @@ -2674,6 +2674,8 @@ void PrinceEngine::displayInventory() { _mainHero->freeOldMove(); _secondHero->freeOldMove(); + _interpreter->storeNewPC(0); + prepareInventoryToView(); while (!shouldQuit()) { diff --git a/engines/prince/script.cpp b/engines/prince/script.cpp index 9e380a27e8..e86c9fb68f 100644 --- a/engines/prince/script.cpp +++ b/engines/prince/script.cpp @@ -466,6 +466,10 @@ int Interpreter::getLastOPCode() { return _lastOpcode; } +int Interpreter::getFgOpcodePC() { + return _fgOpcodePC; +} + uint32 Interpreter::getCurrentString() { return _currentString; } diff --git a/engines/prince/script.h b/engines/prince/script.h index 80afe52cb6..04f125a8ea 100644 --- a/engines/prince/script.h +++ b/engines/prince/script.h @@ -187,6 +187,7 @@ public: void step(); void storeNewPC(int opcodePC); int getLastOPCode(); + int getFgOpcodePC(); uint32 getCurrentString(); void setCurrentString(uint32 value); |