diff options
author | Filippos Karapetis | 2007-06-06 16:37:10 +0000 |
---|---|---|
committer | Filippos Karapetis | 2007-06-06 16:37:10 +0000 |
commit | a265844351bc145d2254c23e69d629a049bdafc3 (patch) | |
tree | 0988b8eb167066699c91debd9de790ffe2b224b1 /engines/saga/sfuncs.cpp | |
parent | 44d98de023f65d5d51407b8d27eba47c79795f1b (diff) | |
download | scummvm-rg350-a265844351bc145d2254c23e69d629a049bdafc3.tar.gz scummvm-rg350-a265844351bc145d2254c23e69d629a049bdafc3.tar.bz2 scummvm-rg350-a265844351bc145d2254c23e69d629a049bdafc3.zip |
Added sanity checks for hitzones in SAGA, after discussing with h00ligan and sev. Removed a hack for IHNM which is not needed anymore and removed a redundant check for zero object types
svn-id: r27140
Diffstat (limited to 'engines/saga/sfuncs.cpp')
-rw-r--r-- | engines/saga/sfuncs.cpp | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/engines/saga/sfuncs.cpp b/engines/saga/sfuncs.cpp index e7fe746acc..16051b49af 100644 --- a/engines/saga/sfuncs.cpp +++ b/engines/saga/sfuncs.cpp @@ -386,13 +386,14 @@ void Script::sfScriptDoAction(SCRIPTFUNC_PARAMS) { break; case kGameObjectHitZone: case kGameObjectStepZone: - if (objectTypeId(objectId) == 0) - return; - else if (objectTypeId(objectId) == kGameObjectHitZone) + if (objectTypeId(objectId) == kGameObjectHitZone) hitZone = _vm->_scene->_objectMap->getHitZone(objectIdToIndex(objectId)); else hitZone = _vm->_scene->_actionMap->getHitZone(objectIdToIndex(objectId)); + if (hitZone == NULL) + return; + scriptEntryPointNumber = hitZone->getScriptNumber(); moduleNumber = _vm->_scene->getScriptModuleNumber(); break; @@ -731,14 +732,6 @@ void Script::sfEnableZone(SCRIPTFUNC_PARAMS) { int16 flag = thread->pop(); HitZone *hitZone; - // HACK: Don't disable the tear in scene 14, to keep the staircase functioning - // FIXME: Investigate why this hack is needed and remove it - if (_vm->getGameType() == GType_IHNM && _vm->_scene->currentChapterNumber() == 1 && - _vm->_scene->currentSceneNumber() == 14) { - warning("sfEnableZone: HACK: Prevent unusable staircase"); - return; // Do nothing - } - if (objectTypeId(objectId) == 0) return; else if (objectTypeId(objectId) == kGameObjectHitZone) @@ -746,6 +739,9 @@ void Script::sfEnableZone(SCRIPTFUNC_PARAMS) { else hitZone = _vm->_scene->_actionMap->getHitZone(objectIdToIndex(objectId)); + if (hitZone == NULL) + return; + if (flag) { hitZone->setFlag(kHitZoneEnabled); } else { |