aboutsummaryrefslogtreecommitdiff
path: root/engines/saga/sfuncs.cpp
diff options
context:
space:
mode:
authorFilippos Karapetis2007-06-06 16:37:10 +0000
committerFilippos Karapetis2007-06-06 16:37:10 +0000
commita265844351bc145d2254c23e69d629a049bdafc3 (patch)
tree0988b8eb167066699c91debd9de790ffe2b224b1 /engines/saga/sfuncs.cpp
parent44d98de023f65d5d51407b8d27eba47c79795f1b (diff)
downloadscummvm-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.cpp18
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 {