aboutsummaryrefslogtreecommitdiff
path: root/verbs.cpp
diff options
context:
space:
mode:
authorVincent Hamm2002-02-14 17:02:07 +0000
committerVincent Hamm2002-02-14 17:02:07 +0000
commit58765810019057edac9f8eeffe7a16080a291490 (patch)
tree8a7c4c14fa7b98aee69119b64f98e60609a941c6 /verbs.cpp
parent2ae44b5d3c42c587f6f376b71b6280ae6fdff70c (diff)
downloadscummvm-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.cpp26
1 files changed, 18 insertions, 8 deletions
diff --git a/verbs.cpp b/verbs.cpp
index 339d01fe58..a35fdf05ea 100644
--- a/verbs.cpp
+++ b/verbs.cpp
@@ -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);
+ }
}