--- deliantra/server/common/object.C 2006/12/26 10:51:52 1.91 +++ deliantra/server/common/object.C 2006/12/26 17:39:29 1.92 @@ -791,10 +791,16 @@ * if some form of movement is allowed, let objects * drop on that space. */ - if (!drop_to_ground || !map || map->in_memory != MAP_IN_MEMORY || GET_MAP_MOVE_BLOCK (map, x, y) == MOVE_ALL) + if (!drop_to_ground + || !map + || map->in_memory != MAP_IN_MEMORY + || map->at (x, y).move_block == MOVE_ALL) { while (inv) - inv->destroy (); + { + inv->destroy_inv (drop_to_ground); + inv->destroy (); + } } else { /* Put objects in inventory onto this space */ @@ -841,12 +847,13 @@ if (flag [FLAG_FREED]) return; + set_speed (0); + flag [FLAG_FREED] = 1; attachable::do_destroy (); destroy_inv (true); - set_speed (0); unlink (); // hack to ensure that freed objects still have a valid map