diff options
Diffstat (limited to 'src/server_reqs.c')
| -rw-r--r-- | src/server_reqs.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/server_reqs.c b/src/server_reqs.c index fffdee1..f76b8a7 100644 --- a/src/server_reqs.c +++ b/src/server_reqs.c @@ -466,14 +466,17 @@ static void req_drop(unsigned char *data, size_t datalen, struct child_data *sen const struct multimap_list *next = iter->next; struct object_t *obj = iter->val; - if(!obj->class->hook_drop || (obj->class->hook_drop && obj->class->hook_drop(obj, sender))) + room_obj_add(sender->room, obj_dup(obj)); + userdb_del_obj_by_ptr(sender->user, obj); + + if(obj->class->hook_drop && !obj->class->hook_drop(obj, sender)) { - send_msg(sender, "Dropped.\n"); - room_obj_add(sender->room, obj_dup(obj)); - userdb_del_obj_by_ptr(sender->user, obj); + send_msg(sender, "You cannot drop that.\n"); + userdb_add_obj(sender->user, obj_dup(obj)); + room_obj_del_by_ptr(sender->room, obj); } else - send_msg(sender, "You cannot drop that.\n"); + send_msg(sender, "Dropped.\n"); iter = next; } |