aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/saga/scene.cpp6
-rw-r--r--engines/saga/sfuncs.cpp14
2 files changed, 16 insertions, 4 deletions
diff --git a/engines/saga/scene.cpp b/engines/saga/scene.cpp
index 839beca349..b83e1e29f9 100644
--- a/engines/saga/scene.cpp
+++ b/engines/saga/scene.cpp
@@ -477,6 +477,12 @@ void Scene::changeScene(int16 sceneNumber, int actorsEntrance, SceneTransitionTy
if (sceneNumber != -2) {
endScene();
}
+
+ if (sceneParams.sceneDescriptor == -1 && _vm->getGameType() == GType_IHNM) {
+ sceneParams.chapter = 8;
+ sceneParams.sceneDescriptor = 152;
+ }
+
loadScene(&sceneParams);
}
diff --git a/engines/saga/sfuncs.cpp b/engines/saga/sfuncs.cpp
index 08e80cb799..c84a09e7bf 100644
--- a/engines/saga/sfuncs.cpp
+++ b/engines/saga/sfuncs.cpp
@@ -544,12 +544,18 @@ void Script::sfSetFollower(SCRIPTFUNC_PARAMS) {
void Script::sfScriptGotoScene(SCRIPTFUNC_PARAMS) {
int16 sceneNumber;
int16 entrance;
+ int16 transition = 0; // IHNM
sceneNumber = thread->pop();
entrance = thread->pop();
+ if (_vm->getGameType() == GType_IHNM)
+ transition = thread->pop();
+
if (sceneNumber < 0) {
- _vm->shutDown();
- return;
+ if (_vm->getGameType() == GType_ITE) {
+ _vm->shutDown();
+ return;
+ }
}
if (_vm->getGameType() == GType_IHNM) {
@@ -2053,8 +2059,8 @@ void Script::sfSetSpeechBox(SCRIPTFUNC_PARAMS) {
_vm->_actor->_speechBoxScript.left = param1;
_vm->_actor->_speechBoxScript.top = param2;
- _vm->_actor->_speechBoxScript.setWidth(param3);
- _vm->_actor->_speechBoxScript.setHeight(param4);
+ _vm->_actor->_speechBoxScript.setWidth(param3 - param1);
+ _vm->_actor->_speechBoxScript.setHeight(param4 - param2);
}
void Script::sfDebugShowData(SCRIPTFUNC_PARAMS) {