aboutsummaryrefslogtreecommitdiff
path: root/engines/agi/objects.cpp
diff options
context:
space:
mode:
authorFilippos Karapetis2011-09-25 18:37:37 +0300
committerFilippos Karapetis2011-09-25 18:37:37 +0300
commit07790184843c5b2f47a09eedf184121b5438e8c0 (patch)
tree5698c450e26dea2675233727bbd4b613c28cabf6 /engines/agi/objects.cpp
parentc02603fce209a3923216ff3a5ae8f5120a09b40d (diff)
downloadscummvm-rg350-07790184843c5b2f47a09eedf184121b5438e8c0.tar.gz
scummvm-rg350-07790184843c5b2f47a09eedf184121b5438e8c0.tar.bz2
scummvm-rg350-07790184843c5b2f47a09eedf184121b5438e8c0.zip
AGI: Bugfix for script bug #3116541 - "AGI FAN Beyond the Titanic 2: Crash on Item Viewing"
Diffstat (limited to 'engines/agi/objects.cpp')
-rw-r--r--engines/agi/objects.cpp11
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);