aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFranklin Wei <git@fwei.tk>2016-02-16 21:00:47 -0500
committerFranklin Wei <git@fwei.tk>2016-02-16 21:00:47 -0500
commit0e713de6a8b00fccc6b061a37b4519e924157526 (patch)
treeee3140594596b24f05b1e25684727b231c373754 /src
parentb110e7e0c519cc9575f8d224f0f75aca0d73946f (diff)
downloadnetcosm-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.c24
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);
}