… | |
… | |
905 | objects = next; |
905 | objects = next; |
906 | } |
906 | } |
907 | |
907 | |
908 | object *object::create () |
908 | object *object::create () |
909 | { |
909 | { |
910 | object * |
910 | object *op; |
911 | op; |
|
|
912 | |
911 | |
913 | if (freed.empty ()) |
912 | if (freed.empty ()) |
914 | op = new object; |
913 | op = new object; |
915 | else |
914 | else |
916 | { |
915 | { |
… | |
… | |
938 | void object::free (bool free_inventory) |
937 | void object::free (bool free_inventory) |
939 | { |
938 | { |
940 | if (QUERY_FLAG (this, FLAG_FREED)) |
939 | if (QUERY_FLAG (this, FLAG_FREED)) |
941 | return; |
940 | return; |
942 | |
941 | |
|
|
942 | if (QUERY_FLAG (this, FLAG_FRIENDLY)) |
|
|
943 | remove_friendly_object (this); |
|
|
944 | |
943 | if (!QUERY_FLAG (this, FLAG_REMOVED)) |
945 | if (!QUERY_FLAG (this, FLAG_REMOVED)) |
944 | remove_ob (this); |
946 | remove_ob (this); |
945 | |
|
|
946 | if (QUERY_FLAG (this, FLAG_FRIENDLY)) |
|
|
947 | remove_friendly_object (this); |
|
|
948 | |
947 | |
949 | SET_FLAG (this, FLAG_FREED); |
948 | SET_FLAG (this, FLAG_FREED); |
950 | |
949 | |
951 | if (more) |
950 | if (more) |
952 | { |
951 | { |
… | |
… | |
958 | { |
957 | { |
959 | /* Only if the space blocks everything do we not process - |
958 | /* Only if the space blocks everything do we not process - |
960 | * if some form of movement is allowed, let objects |
959 | * if some form of movement is allowed, let objects |
961 | * drop on that space. |
960 | * drop on that space. |
962 | */ |
961 | */ |
963 | if (free_inventory || !map || map->in_memory != MAP_IN_MEMORY || (GET_MAP_MOVE_BLOCK (map, x, y) == MOVE_ALL)) |
962 | if (free_inventory || !map || map->in_memory != MAP_IN_MEMORY || GET_MAP_MOVE_BLOCK (map, x, y) == MOVE_ALL) |
964 | { |
963 | { |
965 | object *op = inv; |
964 | object *op = inv; |
966 | |
965 | |
967 | while (op) |
966 | while (op) |
968 | { |
967 | { |