diff options
Diffstat (limited to 'engines/agi/objects.cpp')
-rw-r--r-- | engines/agi/objects.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/engines/agi/objects.cpp b/engines/agi/objects.cpp index efc8645287..94eef92579 100644 --- a/engines/agi/objects.cpp +++ b/engines/agi/objects.cpp @@ -68,15 +68,20 @@ int AgiEngine::decodeObjects(uint8 *mem, uint32 flen) { for (i = 0, so = spos; i < _game.numObjects; i++, so += padsize) { int offset; - (_objects + i)->location = *(mem + so + 2); + _objects[i].location = *(mem + so + 2); offset = READ_LE_UINT16(mem + so) + spos; if ((uint) offset < flen) { - (_objects + i)->name = (char *)strdup((const char *)mem + offset); + _objects[i].name = (char *)strdup((const char *)mem + offset); } else { warning("object %i name beyond object filesize (%04x > %04x)", i, offset, flen); - (_objects + i)->name = strdup(""); + _objects[i].name = strdup(""); } + + // Don't show the invalid "?" object in ego's inventory in the fanmade + // game Beyond the Titanic 2 (bug #3116541). + if (!strcmp(_objects[i].name, "?") && _objects[i].location == EGO_OWNED) + _objects[i].location = 0; } debug(0, "Reading objects: %d objects read.", _game.numObjects); |