… | |
… | |
966 | |
966 | |
967 | op = tmp; |
967 | op = tmp; |
968 | } |
968 | } |
969 | } |
969 | } |
970 | } |
970 | } |
|
|
971 | |
|
|
972 | // hack to ensure that freed objects still have a valid map |
|
|
973 | { |
|
|
974 | static maptile *freed_map; // freed objects are moved here to avoid crashes |
|
|
975 | |
|
|
976 | if (!freed_map) |
|
|
977 | { |
|
|
978 | freed_map = new maptile; |
|
|
979 | |
|
|
980 | freed_map->name = "/internal/freed_objects_map"; |
|
|
981 | freed_map->width = 3; |
|
|
982 | freed_map->height = 3; |
|
|
983 | |
|
|
984 | freed_map->allocate (); |
|
|
985 | } |
|
|
986 | |
|
|
987 | map = freed_map; |
|
|
988 | x = 1; |
|
|
989 | y = 1; |
|
|
990 | } |
971 | |
991 | |
972 | // clear those pointers that likely might have circular references to us |
992 | // clear those pointers that likely might have circular references to us |
973 | owner = 0; |
993 | owner = 0; |
974 | enemy = 0; |
994 | enemy = 0; |
975 | attacked_by = 0; |
995 | attacked_by = 0; |