diff options
Diffstat (limited to 'src/server_reqs.c')
| -rw-r--r-- | src/server_reqs.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/server_reqs.c b/src/server_reqs.c index 9e1513d..652c722 100644 --- a/src/server_reqs.c +++ b/src/server_reqs.c @@ -412,25 +412,27 @@ static void req_drop(unsigned char *data, size_t datalen, struct child_data *sen return; size_t n_objs; - const struct multimap_list *list = multimap_lookup(user->objects, (const char*)data, &n_objs); - if(n_objs != 1) + const struct multimap_list *iter = multimap_lookup(user->objects, (const char*)data, &n_objs); + + if(!iter) { - send_msg(sender, "FIXME: unimplemented %s.\n", data); + send_msg(sender, "You don't have that.\n"); return; } - struct object_t *obj = list->val; - if(!obj) + + while(iter) { - send_msg(sender, "You don't have that.\n"); - return; + struct object_t *obj = iter->val; + + struct object_t *dup = obj_dup(obj); + room_obj_add(sender->room, dup); + + send_msg(sender, "Dropped.\n"); + iter = iter->next; } - struct object_t *dup = obj_dup(obj); - room_obj_add(sender->room, dup); multimap_delete_all(user->objects, (const char*)data); - send_msg(sender, "Dropped.\n"); - world_save(WORLDFILE); userdb_write(USERFILE); } |