diff options
-rw-r--r-- | object.cpp | 11 | ||||
-rw-r--r-- | script_v1.cpp | 8 |
2 files changed, 17 insertions, 2 deletions
diff --git a/object.cpp b/object.cpp index 63776d83a0..605c936f9a 100644 --- a/object.cpp +++ b/object.cpp @@ -719,6 +719,7 @@ void Scumm::clearDrawObjectQueue() byte *Scumm::getObjOrActorName(int obj) { byte *objptr; + int i; if (obj < NUM_ACTORS) return derefActorSafe(obj, "getObjOrActorName")->getActorName(); @@ -732,6 +733,16 @@ byte *Scumm::getObjOrActorName(int obj) return (objptr + offset); } + if (_features & GF_AFTER_V6) { + for (i = 1; i < 50; i++) { + if (_newNames[i] == obj) { + debug(5, "Found new name for object %d at _newNames[i]", obj, i); + return getResourceAddress(rtObjectName, i); + break; + } + } + } + objptr = getOBCDFromObject(obj); if (objptr == NULL) return (byte *)" "; diff --git a/script_v1.cpp b/script_v1.cpp index d94969022f..8615654373 100644 --- a/script_v1.cpp +++ b/script_v1.cpp @@ -1293,9 +1293,13 @@ void Scumm::o5_getActorScale() void Scumm::o5_getActorWalkBox() { + Actor *a; getResultPos(); - setResult(derefActorSafe(getVarOrDirectByte(0x80), "o5_getActorWalkbox")-> - walkbox); + a = derefActorSafe(getVarOrDirectByte(0x80), "o5_getActorWalkbox"); + if (a) // FIXME - bug 572977 workaround + setResult(a->walkbox); + else + setResult(0); } void Scumm::o5_getActorWidth() |