… | |
… | |
1231 | |
1231 | |
1232 | object *top, *floor = NULL; |
1232 | object *top, *floor = NULL; |
1233 | |
1233 | |
1234 | op->remove (); |
1234 | op->remove (); |
1235 | |
1235 | |
1236 | if (out_of_map (m, op->x, op->y)) |
|
|
1237 | { |
|
|
1238 | LOG (llevError, "Trying to insert object outside the map.\n%s\n", op->debug_desc ()); |
|
|
1239 | #ifdef MANY_CORES |
|
|
1240 | /* Better to catch this here, as otherwise the next use of this object |
|
|
1241 | * is likely to cause a crash. Better to find out where it is getting |
|
|
1242 | * improperly inserted. |
|
|
1243 | */ |
|
|
1244 | abort (); |
|
|
1245 | #endif |
|
|
1246 | return op; |
|
|
1247 | } |
|
|
1248 | |
|
|
1249 | if (object *more = op->more) |
|
|
1250 | if (!insert_ob_in_map (more, m, originator, flag)) |
|
|
1251 | return 0; |
|
|
1252 | |
|
|
1253 | CLEAR_FLAG (op, FLAG_REMOVED); |
|
|
1254 | |
|
|
1255 | /* Ideally, the caller figures this out. However, it complicates a lot |
1236 | /* Ideally, the caller figures this out. However, it complicates a lot |
1256 | * of areas of callers (eg, anything that uses find_free_spot would now |
1237 | * of areas of callers (eg, anything that uses find_free_spot would now |
1257 | * need extra work |
1238 | * need extra work |
1258 | */ |
1239 | */ |
1259 | if (!xy_normalise (m, op->x, op->y)) |
1240 | if (!xy_normalise (m, op->x, op->y)) |
|
|
1241 | { |
|
|
1242 | op->destroy (); |
1260 | return 0; |
1243 | return 0; |
|
|
1244 | } |
|
|
1245 | |
|
|
1246 | if (object *more = op->more) |
|
|
1247 | if (!insert_ob_in_map (more, m, originator, flag)) |
|
|
1248 | return 0; |
|
|
1249 | |
|
|
1250 | CLEAR_FLAG (op, FLAG_REMOVED); |
1261 | |
1251 | |
1262 | op->map = m; |
1252 | op->map = m; |
1263 | mapspace &ms = op->ms (); |
1253 | mapspace &ms = op->ms (); |
1264 | |
1254 | |
1265 | /* this has to be done after we translate the coordinates. |
1255 | /* this has to be done after we translate the coordinates. |