aboutsummaryrefslogtreecommitdiff
path: root/engines/cruise/object.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/cruise/object.cpp')
-rw-r--r--engines/cruise/object.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/engines/cruise/object.cpp b/engines/cruise/object.cpp
index 4d2c1c2273..864491605f 100644
--- a/engines/cruise/object.cpp
+++ b/engines/cruise/object.cpp
@@ -79,6 +79,12 @@ int16 getMultipleObjectParam(int16 overlayIdx, int16 objectIdx, objectParamsQuer
state = globalVars[overlayTable[overlayIdx].state + ptr->_stateTableIdx];
ptr2 = &ovlData->arrayStates[ptr->_firstStateIdx + state];
+
+ if (ptr->_firstStateIdx + state < 0) {
+ debug(0, "Invalid Negative arrayState index in getMultipleObjectParam(overlayIdx: %d, objectIdx: %d)... Forcing to 0", overlayIdx, objectIdx);
+ ptr2 = &ovlData->arrayStates[0];
+ }
+
state2 = ptr2->state;
break;
}
@@ -242,6 +248,11 @@ int16 getSingleObjectParam(int16 overlayIdx, int16 param2, int16 param3, int16 *
state = globalVars[overlayTable[overlayIdx].state + ptr->_stateTableIdx];
ptr2 = &ovlData->arrayStates[ptr->_firstStateIdx + state];
+
+ if (ptr->_firstStateIdx + state < 0) {
+ debug(0, "Invalid Negative arrayState index in getSingleObjectParam(overlayIdx: %d, param2: %d, param3: %d)... Forcing to 0", overlayIdx, param2, param3);
+ ptr2 = &ovlData->arrayStates[0];
+ }
break;
}
case VARIABLE: {