diff options
| author | Franklin Wei <git@fwei.tk> | 2016-02-16 21:00:47 -0500 |
|---|---|---|
| committer | Franklin Wei <git@fwei.tk> | 2016-02-16 21:00:47 -0500 |
| commit | 0e713de6a8b00fccc6b061a37b4519e924157526 (patch) | |
| tree | ee3140594596b24f05b1e25684727b231c373754 /src | |
| parent | b110e7e0c519cc9575f8d224f0f75aca0d73946f (diff) | |
| download | netcosm-0e713de6a8b00fccc6b061a37b4519e924157526.zip netcosm-0e713de6a8b00fccc6b061a37b4519e924157526.tar.gz netcosm-0e713de6a8b00fccc6b061a37b4519e924157526.tar.bz2 netcosm-0e713de6a8b00fccc6b061a37b4519e924157526.tar.xz | |
support multiple drops
Diffstat (limited to 'src')
| -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); } |