… | |
… | |
827 | } |
827 | } |
828 | |
828 | |
829 | void |
829 | void |
830 | object::do_destroy () |
830 | object::do_destroy () |
831 | { |
831 | { |
832 | attachable::do_destroy (); |
|
|
833 | |
|
|
834 | if (flag [FLAG_IS_LINKED]) |
832 | if (flag [FLAG_IS_LINKED]) |
835 | remove_button_link (this); |
833 | remove_button_link (this); |
836 | |
834 | |
837 | if (flag [FLAG_FRIENDLY]) |
835 | if (flag [FLAG_FRIENDLY]) |
838 | remove_friendly_object (this); |
836 | remove_friendly_object (this); |
… | |
… | |
842 | |
840 | |
843 | if (flag [FLAG_FREED]) |
841 | if (flag [FLAG_FREED]) |
844 | return; |
842 | return; |
845 | |
843 | |
846 | flag [FLAG_FREED] = 1; |
844 | flag [FLAG_FREED] = 1; |
|
|
845 | |
|
|
846 | attachable::do_destroy (); |
847 | |
847 | |
848 | destroy_inv (true); |
848 | destroy_inv (true); |
849 | set_speed (0); |
849 | set_speed (0); |
850 | unlink (); |
850 | unlink (); |
851 | |
851 | |
… | |
… | |
1014 | if (map->in_memory == MAP_SAVING) |
1014 | if (map->in_memory == MAP_SAVING) |
1015 | return; |
1015 | return; |
1016 | |
1016 | |
1017 | int check_walk_off = !flag [FLAG_NO_APPLY]; |
1017 | int check_walk_off = !flag [FLAG_NO_APPLY]; |
1018 | |
1018 | |
1019 | for (tmp = GET_MAP_OB (map, x, y); tmp; tmp = tmp->above) |
1019 | for (tmp = map->at (x, y).bot; tmp; tmp = tmp->above) |
1020 | { |
1020 | { |
1021 | /* No point updating the players look faces if he is the object |
1021 | /* No point updating the players look faces if he is the object |
1022 | * being removed. |
1022 | * being removed. |
1023 | */ |
1023 | */ |
1024 | |
1024 | |
… | |
… | |
1044 | && (move_type & ~tmp->move_off & ~tmp->move_block) == 0)) |
1044 | && (move_type & ~tmp->move_off & ~tmp->move_block) == 0)) |
1045 | { |
1045 | { |
1046 | move_apply (tmp, this, 0); |
1046 | move_apply (tmp, this, 0); |
1047 | |
1047 | |
1048 | if (destroyed ()) |
1048 | if (destroyed ()) |
|
|
1049 | LOG (llevError, "BUG: remove_ob(): name %s, destroyed leaving object\n", tmp->debug_desc ()); |
1049 | LOG (llevError, "BUG: remove_ob(): name %s, destroyed leaving object\n", tmp->debug_desc ()); |
1050 | LOG (llevError, "BUG: remove_ob(): name %s, destroyed leaving object\n", tmp->debug_desc ()); |
1050 | } |
1051 | } |
1051 | |
1052 | |
1052 | /* Eneq(@csd.uu.se): Fixed this to skip tmp->above=tmp */ |
1053 | /* Eneq(@csd.uu.se): Fixed this to skip tmp->above=tmp */ |
1053 | |
1054 | |