… | |
… | |
904 | * drop on that space. |
904 | * drop on that space. |
905 | */ |
905 | */ |
906 | if (!drop_to_ground |
906 | if (!drop_to_ground |
907 | || !map |
907 | || !map |
908 | || map->in_memory != MAP_ACTIVE |
908 | || map->in_memory != MAP_ACTIVE |
909 | || map->nodrop |
909 | || map->no_drop |
910 | || ms ().move_block == MOVE_ALL) |
910 | || ms ().move_block == MOVE_ALL) |
911 | { |
911 | { |
912 | while (inv) |
912 | while (inv) |
913 | { |
913 | { |
914 | inv->destroy_inv (false); |
914 | inv->destroy_inv (false); |
… | |
… | |
943 | |
943 | |
944 | static struct freed_map : maptile |
944 | static struct freed_map : maptile |
945 | { |
945 | { |
946 | freed_map () |
946 | freed_map () |
947 | { |
947 | { |
948 | path = "<freed objects map>"; |
948 | path = "<freed objects map>"; |
949 | name = "/internal/freed_objects_map"; |
949 | name = "/internal/freed_objects_map"; |
950 | width = 3; |
950 | width = 3; |
951 | height = 3; |
951 | height = 3; |
952 | nodrop = 1; |
952 | no_drop = 1; |
|
|
953 | no_reset = 1; |
953 | |
954 | |
954 | alloc (); |
955 | alloc (); |
955 | in_memory = MAP_ACTIVE; |
956 | in_memory = MAP_ACTIVE; |
956 | } |
957 | } |
957 | |
958 | |
… | |
… | |
1390 | } /* If objects on this space */ |
1391 | } /* If objects on this space */ |
1391 | |
1392 | |
1392 | if (flag & INS_ABOVE_FLOOR_ONLY) |
1393 | if (flag & INS_ABOVE_FLOOR_ONLY) |
1393 | top = floor; |
1394 | top = floor; |
1394 | |
1395 | |
1395 | /* Top is the object that our object (op) is going to get inserted above. |
1396 | // insert object above top, or bottom-most if top = 0 |
1396 | */ |
|
|
1397 | |
|
|
1398 | /* no top found, insert on top */ |
|
|
1399 | if (!top) |
1397 | if (!top) |
1400 | { |
1398 | { |
1401 | op->above = 0; |
1399 | op->below = 0; |
1402 | op->below = ms.top; |
1400 | op->above = ms.bot; |
1403 | ms.top = op; |
1401 | ms.bot = op; |
1404 | |
1402 | |
1405 | *(op->below ? &op->below->above : &ms.bot) = op; |
1403 | *(op->above ? &op->above->below : &ms.top) = op; |
1406 | } |
1404 | } |
1407 | else |
1405 | else |
1408 | { /* get inserted into the stack above top */ |
1406 | { |
1409 | op->above = top->above; |
1407 | op->above = top->above; |
1410 | top->above = op; |
1408 | top->above = op; |
1411 | |
1409 | |
1412 | op->below = top; |
1410 | op->below = top; |
1413 | *(op->above ? &op->above->below : &ms.top) = op; |
1411 | *(op->above ? &op->above->below : &ms.top) = op; |
1414 | } |
1412 | } |
1415 | } /* else not INS_BELOW_ORIGINATOR */ |
1413 | } |
1416 | |
1414 | |
1417 | if (op->type == PLAYER) |
1415 | if (op->type == PLAYER) |
1418 | { |
1416 | { |
1419 | op->contr->do_los = 1; |
1417 | op->contr->do_los = 1; |
1420 | ++op->map->players; |
1418 | ++op->map->players; |