Fixed the distaff in Loom

svn-id: r3580
This commit is contained in:
Vincent Hamm 2002-02-14 17:02:07 +00:00
parent 2ae44b5d3c
commit 5876581001
2 changed files with 19 additions and 8 deletions

View File

@ -1770,6 +1770,7 @@ void Scumm::o5_verbOps() {
VerbSlot *vs;
int a,b;
byte *ptr;
int tempRoom;
verb = getVarOrDirectByte(0x80);

View File

@ -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);
}
}