Fix Indy3 "Guard-Fighting" crash and properly fix the empty exits problem

svn-id: r5467
This commit is contained in:
James Brown
2002-11-08 18:06:08 +00:00
parent 70f3aff2c8
commit 1bf9bb768e
+12 -4
View File
@@ -640,10 +640,18 @@ void Scumm::runExitScript()
// not actual data not even a 00 (stop code)
// maybe we should be limiting ourselves to strictly reading the size
// described in the header?
if ((_currentRoom == 7) && (_gameId == GID_INDY3_256))
printf("skipping specific exit script as its empty, fix properly!\n");
else
runScriptNested(slot);
if (_gameId == GID_INDY3_256) {
// FIXME: Oddly, Indy3 seems to contain exit scripts with only a size
// and a tag - not even a terminating NULL!
byte *roomptr = getResourceAddress(rtRoom, _roomResource);
byte *excd = findResourceData(MKID('EXCD'), roomptr) - _resourceHeaderSize;
if (!excd || (getResourceDataSize(excd) < 1)) {
debug(2, "Exit-%d is empty", _roomResource);
return;
}
}
runScriptNested(slot);
}
if (_vars[VAR_EXIT_SCRIPT2])
runScript(_vars[VAR_EXIT_SCRIPT2], 0, 0, 0);