… | |
… | |
351 | ms.flags_ = 0; |
351 | ms.flags_ = 0; |
352 | } |
352 | } |
353 | else |
353 | else |
354 | { |
354 | { |
355 | f.parse_warn (format ("object %s out of range", op->debug_desc ())); |
355 | f.parse_warn (format ("object %s out of range", op->debug_desc ())); |
356 | op->destroy_inv (false); // be explicit about dropping |
|
|
357 | op->destroy (true); |
356 | op->destroy (); |
358 | } |
357 | } |
359 | } |
358 | } |
360 | |
359 | |
361 | continue; |
360 | continue; |
362 | |
361 | |
… | |
… | |
713 | |
712 | |
714 | if (QUERY_FLAG (op, FLAG_IS_FLOOR) && QUERY_FLAG (op, FLAG_UNIQUE)) |
713 | if (QUERY_FLAG (op, FLAG_IS_FLOOR) && QUERY_FLAG (op, FLAG_UNIQUE)) |
715 | unique = 1; |
714 | unique = 1; |
716 | |
715 | |
717 | if (op->head_ () == op && (QUERY_FLAG (op, FLAG_UNIQUE) || unique)) |
716 | if (op->head_ () == op && (QUERY_FLAG (op, FLAG_UNIQUE) || unique)) |
718 | { |
|
|
719 | op->destroy_inv (false); |
|
|
720 | op->destroy (true); |
717 | op->destroy (); |
721 | } |
|
|
722 | |
718 | |
723 | op = above; |
719 | op = above; |
724 | } |
720 | } |
725 | } |
721 | } |
726 | } |
722 | } |
… | |
… | |
814 | |
810 | |
815 | op->flag [FLAG_REMOVED] = true; |
811 | op->flag [FLAG_REMOVED] = true; |
816 | |
812 | |
817 | object *head = op->head_ (); |
813 | object *head = op->head_ (); |
818 | if (op == head) |
814 | if (op == head) |
819 | { |
|
|
820 | op->destroy_inv (false); |
|
|
821 | op->destroy (true); |
815 | op->destroy (); |
822 | } |
|
|
823 | else if (head->map != op->map) |
816 | else if (head->map != op->map) |
824 | { |
817 | { |
825 | LOG (llevDebug, "bad luck for object crossing map borders: %s", head->debug_desc ()); |
818 | LOG (llevDebug, "bad luck for object crossing map borders: %s", head->debug_desc ()); |
826 | head->destroy (true); |
819 | head->destroy (); |
827 | } |
820 | } |
828 | } |
821 | } |
829 | |
822 | |
830 | sfree0 (spaces, size ()); |
823 | sfree0 (spaces, size ()); |
831 | } |
824 | } |