… | |
… | |
746 | abort (); |
746 | abort (); |
747 | #endif |
747 | #endif |
748 | return; |
748 | return; |
749 | } |
749 | } |
750 | |
750 | |
751 | mapspace &m = op->map->at (op->x, op->y); |
751 | mapspace &m = op->ms (); |
752 | |
752 | |
753 | if (m.flags_ & P_NEED_UPDATE) |
753 | if (m.flags_ & P_NEED_UPDATE) |
754 | /* nop */; |
754 | /* nop */; |
755 | else if (action == UP_OBJ_INSERT) |
755 | else if (action == UP_OBJ_INSERT) |
756 | { |
756 | { |
… | |
… | |
1316 | op->below = originator->below; |
1316 | op->below = originator->below; |
1317 | |
1317 | |
1318 | if (op->below) |
1318 | if (op->below) |
1319 | op->below->above = op; |
1319 | op->below->above = op; |
1320 | else |
1320 | else |
1321 | op->map->at (op->x, op->y).bottom = op; |
1321 | op->ms ().bottom = op; |
1322 | |
1322 | |
1323 | /* since *below* originator, no need to update top */ |
1323 | /* since *below* originator, no need to update top */ |
1324 | originator->below = op; |
1324 | originator->below = op; |
1325 | } |
1325 | } |
1326 | else |
1326 | else |
… | |
… | |
1405 | |
1405 | |
1406 | if (op->above) |
1406 | if (op->above) |
1407 | op->above->below = op; |
1407 | op->above->below = op; |
1408 | |
1408 | |
1409 | op->below = NULL; |
1409 | op->below = NULL; |
1410 | op->map->at (op->x, op->y).bottom = op; |
1410 | op->ms ().bottom = op; |
1411 | } |
1411 | } |
1412 | else |
1412 | else |
1413 | { /* get inserted into the stack above top */ |
1413 | { /* get inserted into the stack above top */ |
1414 | op->above = top->above; |
1414 | op->above = top->above; |
1415 | |
1415 | |
… | |
… | |
1419 | op->below = top; |
1419 | op->below = top; |
1420 | top->above = op; |
1420 | top->above = op; |
1421 | } |
1421 | } |
1422 | |
1422 | |
1423 | if (op->above == NULL) |
1423 | if (op->above == NULL) |
1424 | op->map->at (op->x, op->y).top = op; |
1424 | op->ms ().top = op; |
1425 | } /* else not INS_BELOW_ORIGINATOR */ |
1425 | } /* else not INS_BELOW_ORIGINATOR */ |
1426 | |
1426 | |
1427 | if (op->type == PLAYER) |
1427 | if (op->type == PLAYER) |
1428 | op->contr->do_los = 1; |
1428 | op->contr->do_los = 1; |
1429 | |
1429 | |
1430 | /* If we have a floor, we know the player, if any, will be above |
1430 | /* If we have a floor, we know the player, if any, will be above |
1431 | * it, so save a few ticks and start from there. |
1431 | * it, so save a few ticks and start from there. |
1432 | */ |
1432 | */ |
1433 | if (!(flag & INS_MAP_LOAD)) |
1433 | if (!(flag & INS_MAP_LOAD)) |
1434 | if (object *pl = op->map->at (op->x, op->y).player ()) |
1434 | if (object *pl = op->ms ().player ()) |
1435 | pl->contr->socket->floorbox_update (); |
1435 | pl->contr->socket->floorbox_update (); |
1436 | |
1436 | |
1437 | /* If this object glows, it may affect lighting conditions that are |
1437 | /* If this object glows, it may affect lighting conditions that are |
1438 | * visible to others on this map. But update_all_los is really |
1438 | * visible to others on this map. But update_all_los is really |
1439 | * an inefficient way to do this, as it means los for all players |
1439 | * an inefficient way to do this, as it means los for all players |