diff options
-rw-r--r-- | engines/saga/interface.cpp | 2 | ||||
-rw-r--r-- | engines/saga/sfuncs.cpp | 6 |
2 files changed, 7 insertions, 1 deletions
diff --git a/engines/saga/interface.cpp b/engines/saga/interface.cpp index f8b65f5b8e..7bf9f3ed6b 100644 --- a/engines/saga/interface.cpp +++ b/engines/saga/interface.cpp @@ -367,7 +367,7 @@ int Interface::deactivate() { } void Interface::rememberMode() { - debug(1, "rememberMode(%d)", _savedMode); + debug(1, "rememberMode(%d)", _panelMode); _savedMode = _panelMode; } diff --git a/engines/saga/sfuncs.cpp b/engines/saga/sfuncs.cpp index b68c395403..2f93aa5197 100644 --- a/engines/saga/sfuncs.cpp +++ b/engines/saga/sfuncs.cpp @@ -323,6 +323,12 @@ void Script::sfMainMode(SCRIPTFUNC_PARAMS) { showVerb(); _vm->_interface->activate(); _vm->_interface->setMode(kPanelMain); + // Sometimes, the active cutaway is cleared after this opcode is called, + // resulting in an incorrect mode being set. An example is Ellen's chapter + // in IHNM, when using the computer with the chaos trebler CD. Make sure + // that the saved mode is kPanelMain, so that it won't get overwritten + // by an incorrect stored mode + _vm->_interface->rememberMode(); if (_vm->getGameType() == GType_ITE) setPointerVerb(); |