diff options
author | Vincent Hamm | 2002-02-14 17:02:07 +0000 |
---|---|---|
committer | Vincent Hamm | 2002-02-14 17:02:07 +0000 |
commit | 58765810019057edac9f8eeffe7a16080a291490 (patch) | |
tree | 8a7c4c14fa7b98aee69119b64f98e60609a941c6 /verbs.cpp | |
parent | 2ae44b5d3c42c587f6f376b71b6280ae6fdff70c (diff) | |
download | scummvm-rg350-58765810019057edac9f8eeffe7a16080a291490.tar.gz scummvm-rg350-58765810019057edac9f8eeffe7a16080a291490.tar.bz2 scummvm-rg350-58765810019057edac9f8eeffe7a16080a291490.zip |
Fixed the distaff in Loom
svn-id: r3580
Diffstat (limited to 'verbs.cpp')
-rw-r--r-- | verbs.cpp | 26 |
1 files changed, 18 insertions, 8 deletions
@@ -257,16 +257,26 @@ void Scumm::setVerbObject(uint room, uint object, uint verb) { byte *obimptr; uint32 size; FindObjectInRoom foir; + int i; if (whereIsObject(object) == WIO_FLOBJECT) error("Can't grab verb image from flobject"); - findObjectInRoom(&foir, foImageHeader, object, room); - if(_features & GF_SMALL_HEADER) - size = READ_LE_UINT32(foir.obim); - else - size = READ_BE_UINT32_UNALIGNED(foir.obim+4); - createResource(rtVerb, verb, size); - obimptr = getResourceAddress(rtRoom, room) - foir.roomptr + foir.obim; - memcpy(getResourceAddress(rtVerb, verb), obimptr, size); + if(_features |= GF_SMALL_HEADER) { + for(i = _numObjectsInRoom; i>0; i--) { + if(_objs[i].obj_nr == object) { + findObjectInRoom(&foir, foImageHeader, object, room); + size = READ_LE_UINT32(foir.obim); + createResource(rtVerb, verb, size); + obimptr = getResourceAddress(rtRoom, room) - foir.roomptr + foir.obim; + memcpy(getResourceAddress(rtVerb, verb), obimptr, size); + } + } + } else { + findObjectInRoom(&foir, foImageHeader, object, room); + size = READ_BE_UINT32_UNALIGNED(foir.obim+4); + createResource(rtVerb, verb, size); + obimptr = getResourceAddress(rtRoom, room) - foir.roomptr + foir.obim; + memcpy(getResourceAddress(rtVerb, verb), obimptr, size); + } } |