… | |
… | |
800 | tag_t tag = net_uint32 ((uint8 *)data + 1); |
800 | tag_t tag = net_uint32 ((uint8 *)data + 1); |
801 | object *op = esrv_get_ob_from_count (pl->ob, tag); |
801 | object *op = esrv_get_ob_from_count (pl->ob, tag); |
802 | |
802 | |
803 | if (!op) |
803 | if (!op) |
804 | { |
804 | { |
805 | new_draw_info (NDI_UNIQUE, 0, pl->ob, "Could not find object to lock/unlock"); |
805 | pl->failmsg ("Could not find object to lock/unlock"); |
806 | return; |
806 | return; |
807 | } |
807 | } |
808 | |
808 | |
809 | if (!flag) |
809 | if (!flag) |
810 | CLEAR_FLAG (op, FLAG_INV_LOCKED); |
810 | CLEAR_FLAG (op, FLAG_INV_LOCKED); |
… | |
… | |
821 | tag_t tag = net_uint32 ((uint8 *)data); |
821 | tag_t tag = net_uint32 ((uint8 *)data); |
822 | object *op = esrv_get_ob_from_count (pl->ob, tag); |
822 | object *op = esrv_get_ob_from_count (pl->ob, tag); |
823 | |
823 | |
824 | if (!op) |
824 | if (!op) |
825 | { |
825 | { |
826 | new_draw_info (NDI_UNIQUE, 0, pl->ob, "Could not find object to mark"); |
826 | pl->failmsg ("Could not find object to mark"); |
827 | return; |
827 | return; |
828 | } |
828 | } |
829 | |
829 | |
830 | pl->mark = op; |
830 | pl->mark = op; |
831 | new_draw_info_format (NDI_UNIQUE, 0, pl->ob, "Marked item %s", query_name (op)); |
831 | pl->ob->statusmsg (format ("Marked item %s", query_name (op))); |
832 | } |
832 | } |
833 | |
833 | |
834 | /** |
834 | /** |
835 | * look_at prints items on the specified square. |
835 | * look_at prints items on the specified square. |
836 | * |
836 | * |
… | |
… | |
925 | */ |
925 | */ |
926 | if (op->inv && QUERY_FLAG (op, FLAG_APPLIED)) |
926 | if (op->inv && QUERY_FLAG (op, FLAG_APPLIED)) |
927 | { |
927 | { |
928 | object *current, *next; |
928 | object *current, *next; |
929 | |
929 | |
|
|
930 | int cnt = MAX_ITEM_PER_DROP; |
|
|
931 | |
930 | for (current = op->inv; current != NULL; current = next) |
932 | for (current = op->inv; current != NULL; current = next) |
931 | { |
933 | { |
932 | next = current->below; |
934 | next = current->below; |
933 | drop_object (pl, current, 0); |
935 | drop_object (pl, current, 0); |
|
|
936 | |
|
|
937 | if (--cnt <= 0) break; |
934 | } |
938 | } |
|
|
939 | |
|
|
940 | if (cnt <= 0) |
|
|
941 | op->failmsg ("Only dropped some items, can't drop that many items at once."); |
935 | |
942 | |
936 | esrv_update_item (UPD_WEIGHT, pl, op); |
943 | esrv_update_item (UPD_WEIGHT, pl, op); |
937 | } |
944 | } |
938 | else |
945 | else |
939 | drop_object (pl, op, nrof); |
946 | drop_object (pl, op, nrof); |
|
|
947 | |
|
|
948 | update_after_inventory_change (pl); |
940 | |
949 | |
941 | return; |
950 | return; |
942 | } |
951 | } |
943 | else if (to == pl->count) |
952 | else if (to == pl->count) |
944 | { /* pick it up to the inventory */ |
953 | { /* pick it up to the inventory */ |
… | |
… | |
962 | * has already been done (eg, it can be picked up and fits in |
971 | * has already been done (eg, it can be picked up and fits in |
963 | * in a sack, so check for those things. We should also check |
972 | * in a sack, so check for those things. We should also check |
964 | * an make sure env is in fact a container for that matter. |
973 | * an make sure env is in fact a container for that matter. |
965 | */ |
974 | */ |
966 | if (env->type == CONTAINER && can_pick (pl, op) && sack_can_hold (pl, env, op, nrof)) |
975 | if (env->type == CONTAINER && can_pick (pl, op) && sack_can_hold (pl, env, op, nrof)) |
|
|
976 | { |
967 | put_object_in_sack (pl, env, op, nrof); |
977 | put_object_in_sack (pl, env, op, nrof); |
|
|
978 | update_after_inventory_change (pl); |
|
|
979 | } |
968 | } |
980 | } |
969 | |
981 | |