--- deliantra/server/socket/item.C 2006/08/29 07:34:01 1.2 +++ deliantra/server/socket/item.C 2006/09/03 00:18:43 1.4 @@ -1,7 +1,7 @@ /* * static char *rcsid_item_c = - * "$Id: item.C,v 1.2 2006/08/29 07:34:01 root Exp $"; + * "$Id: item.C,v 1.4 2006/09/03 00:18:43 root Exp $"; */ /* @@ -82,53 +82,53 @@ unsigned int flags = 0; if(QUERY_FLAG(op,FLAG_APPLIED)) { - switch(op->type) { - case BOW: - case WAND: - case ROD: - case HORN: - flags = a_readied; - break; - case WEAPON: - flags = a_wielded; - break; - case SKILL: - case ARMOUR: - case HELMET: - case SHIELD: - case RING: - case BOOTS: - case GLOVES: - case AMULET: - case GIRDLE: - case BRACERS: - case CLOAK: - flags = a_worn; - break; - case CONTAINER: - flags = a_active; - break; - default: - flags = a_applied; - break; - } + switch(op->type) { + case BOW: + case WAND: + case ROD: + case HORN: + flags = a_readied; + break; + case WEAPON: + flags = a_wielded; + break; + case SKILL: + case ARMOUR: + case HELMET: + case SHIELD: + case RING: + case BOOTS: + case GLOVES: + case AMULET: + case GIRDLE: + case BRACERS: + case CLOAK: + flags = a_worn; + break; + case CONTAINER: + flags = a_active; + break; + default: + flags = a_applied; + break; + } } if (op->type == CONTAINER && ((op->env && op->env->container == op) || - (!op->env && QUERY_FLAG(op,FLAG_APPLIED)))) - flags |= F_OPEN; + (!op->env && QUERY_FLAG(op,FLAG_APPLIED)))) + flags |= F_OPEN; if (QUERY_FLAG(op,FLAG_KNOWN_CURSED)) { - if(QUERY_FLAG(op,FLAG_DAMNED)) - flags |= F_DAMNED; - else if(QUERY_FLAG(op,FLAG_CURSED)) - flags |= F_CURSED; + if(QUERY_FLAG(op,FLAG_DAMNED)) + flags |= F_DAMNED; + else if(QUERY_FLAG(op,FLAG_CURSED)) + flags |= F_CURSED; } if (QUERY_FLAG(op,FLAG_KNOWN_MAGICAL) && !QUERY_FLAG(op,FLAG_IDENTIFIED)) - flags |= F_MAGIC; + flags |= F_MAGIC; if (QUERY_FLAG(op,FLAG_UNPAID)) - flags |= F_UNPAID; + flags |= F_UNPAID; if (QUERY_FLAG(op,FLAG_INV_LOCKED)) - flags |= F_LOCKED; + flags |= F_LOCKED; return flags; } @@ -145,13 +145,13 @@ flags = query_flags (head); if (QUERY_FLAG(head, FLAG_NO_PICK)) - flags |= F_NOPICK; + flags |= F_NOPICK; if (!(ns->faces_sent[head->face->number] & NS_FACESENT_FACE)) - esrv_send_face(ns, head->face->number,0); + esrv_send_face(ns, head->face->number,0); if (QUERY_FLAG(head,FLAG_ANIMATE) && !ns->anims_sent[head->animation_id]) - esrv_send_animation(ns, head->animation_id); + esrv_send_animation(ns, head->animation_id); SockList_AddInt(sl, head->count); SockList_AddInt(sl, flags); @@ -159,15 +159,15 @@ SockList_AddInt(sl, head->face->number); if (!head->custom_name) { - strncpy(item_n,query_base_name(head, 0),127); - item_n[127]=0; - len=strlen(item_n); - item_p=query_base_name(head, 1); + strncpy(item_n,query_base_name(head, 0),127); + item_n[127]=0; + len=strlen(item_n); + item_p=query_base_name(head, 1); } else { - strncpy(item_n,head->custom_name,127); - item_n[127]=0; - len=strlen(item_n); - item_p=head->custom_name; + strncpy(item_n,head->custom_name,127); + item_n[127]=0; + len=strlen(item_n); + item_p=head->custom_name; } strncpy(item_n+len+1, item_p, 127); item_n[254]=0; @@ -179,19 +179,19 @@ SockList_AddShort(sl,head->animation_id); anim_speed=0; if (QUERY_FLAG(head,FLAG_ANIMATE)) { - if (head->anim_speed) anim_speed=head->anim_speed; - else { - if (FABS(head->speed)<0.001) anim_speed=255; - else if (FABS(head->speed)>=1.0) anim_speed=1; - else anim_speed = (int) (1.0/FABS(head->speed)); - } - if (anim_speed>255) anim_speed=255; + if (head->anim_speed) anim_speed=head->anim_speed; + else { + if (FABS(head->speed)<0.001) anim_speed=255; + else if (FABS(head->speed)>=1.0) anim_speed=1; + else anim_speed = (int) (1.0/FABS(head->speed)); + } + if (anim_speed>255) anim_speed=255; } SockList_AddChar(sl, (char) anim_speed); SockList_AddInt(sl, head->nrof); if (ns->itemcmd == 2) - SockList_AddShort(sl, head->client_type); + SockList_AddShort(sl, head->client_type); SET_FLAG(head, FLAG_CLIENT_SENT); } @@ -211,15 +211,15 @@ char buf[MAX_BUF]; if (!pl->contr->socket.update_look) { - LOG(llevDebug,"esrv_draw_look called when update_look was not set\n"); - return; + LOG(llevDebug,"esrv_draw_look called when update_look was not set\n"); + return; } else { - pl->contr->socket.update_look=0; + pl->contr->socket.update_look=0; } if(QUERY_FLAG(pl, FLAG_REMOVED) || pl->map == NULL || pl->map->in_memory != MAP_IN_MEMORY || out_of_map(pl->map,pl->x,pl->y)) - return; + return; for (tmp=get_map_ob(pl->map,pl->x,pl->y); tmp && tmp->above;tmp=tmp->above) ; @@ -232,67 +232,67 @@ SockList_AddInt(&sl, 0); if (!(pl->contr->socket.faces_sent[empty_face->number]&NS_FACESENT_FACE)) - esrv_send_face(&pl->contr->socket, empty_face->number,0); + esrv_send_face(&pl->contr->socket, empty_face->number,0); if (pl->contr->socket.look_position) { - SockList_AddInt(&sl, 0x80000000 | (pl->contr->socket.look_position- NUM_LOOK_OBJECTS)); - SockList_AddInt(&sl, 0); - SockList_AddInt(&sl, (uint32) -1); - SockList_AddInt(&sl, empty_face->number); - sprintf(buf,"Click here to see %d previous items", NUM_LOOK_OBJECTS); - add_stringlen_to_sockbuf(buf, &sl); - SockList_AddShort(&sl,0); - SockList_AddChar(&sl, 0); - SockList_AddInt(&sl, 0); - if (pl->contr->socket.itemcmd == 2) - SockList_AddShort(&sl, 0); + SockList_AddInt(&sl, 0x80000000 | (pl->contr->socket.look_position- NUM_LOOK_OBJECTS)); + SockList_AddInt(&sl, 0); + SockList_AddInt(&sl, (uint32) -1); + SockList_AddInt(&sl, empty_face->number); + sprintf(buf,"Click here to see %d previous items", NUM_LOOK_OBJECTS); + add_stringlen_to_sockbuf(buf, &sl); + SockList_AddShort(&sl,0); + SockList_AddChar(&sl, 0); + SockList_AddInt(&sl, 0); + if (pl->contr->socket.itemcmd == 2) + SockList_AddShort(&sl, 0); } for (last=NULL; tmp!=last; tmp=tmp->below) { - object *head; + object *head; - if (QUERY_FLAG(tmp, FLAG_IS_FLOOR) && !last) { - last = tmp->below; /* assumes double floor mode */ - if (last && QUERY_FLAG(last, FLAG_IS_FLOOR)) - last = last->below; - } - if (LOOK_OBJ(tmp)) { - if (++start_look < pl->contr->socket.look_position) continue; - end_look++; - if (end_look > NUM_LOOK_OBJECTS) { - /* What we basically do is make a 'fake' object - when the user applies it, - * we notice the special tag the object has, and act accordingly. - */ - SockList_AddInt(&sl, 0x80000000 | (pl->contr->socket.look_position+ NUM_LOOK_OBJECTS)); - SockList_AddInt(&sl, 0); - SockList_AddInt(&sl, (uint32) -1); - SockList_AddInt(&sl, empty_face->number); - sprintf(buf,"Click here to see next group of items"); - add_stringlen_to_sockbuf(buf, &sl); - SockList_AddShort(&sl,0); - SockList_AddChar(&sl, 0); - SockList_AddInt(&sl, 0); - if (pl->contr->socket.itemcmd == 2) - SockList_AddShort(&sl, 0); - break; - } - if (tmp->head) head = tmp->head; - else head = tmp; - - add_object_to_socklist(&pl->contr->socket, &sl, head); - got_one++; - - if (sl.len >= (MAXSOCKBUF-MAXITEMLEN)) { - Send_With_Handling(&pl->contr->socket, &sl); - sprintf((char*)sl.buf,"item%d ", pl->contr->socket.itemcmd); - sl.len=strlen((char*)sl.buf); - SockList_AddInt(&sl, 0); - got_one=0; - } - } /* If LOOK_OBJ() */ + if (QUERY_FLAG(tmp, FLAG_IS_FLOOR) && !last) { + last = tmp->below; /* assumes double floor mode */ + if (last && QUERY_FLAG(last, FLAG_IS_FLOOR)) + last = last->below; + } + if (LOOK_OBJ(tmp)) { + if (++start_look < pl->contr->socket.look_position) continue; + end_look++; + if (end_look > NUM_LOOK_OBJECTS) { + /* What we basically do is make a 'fake' object - when the user applies it, + * we notice the special tag the object has, and act accordingly. + */ + SockList_AddInt(&sl, 0x80000000 | (pl->contr->socket.look_position+ NUM_LOOK_OBJECTS)); + SockList_AddInt(&sl, 0); + SockList_AddInt(&sl, (uint32) -1); + SockList_AddInt(&sl, empty_face->number); + sprintf(buf,"Click here to see next group of items"); + add_stringlen_to_sockbuf(buf, &sl); + SockList_AddShort(&sl,0); + SockList_AddChar(&sl, 0); + SockList_AddInt(&sl, 0); + if (pl->contr->socket.itemcmd == 2) + SockList_AddShort(&sl, 0); + break; + } + if (tmp->head) head = tmp->head; + else head = tmp; + + add_object_to_socklist(&pl->contr->socket, &sl, head); + got_one++; + + if (sl.len >= (MAXSOCKBUF-MAXITEMLEN)) { + Send_With_Handling(&pl->contr->socket, &sl); + sprintf((char*)sl.buf,"item%d ", pl->contr->socket.itemcmd); + sl.len=strlen((char*)sl.buf); + SockList_AddInt(&sl, 0); + got_one=0; + } + } /* If LOOK_OBJ() */ } if (got_one) - Send_With_Handling(&pl->contr->socket, &sl); + Send_With_Handling(&pl->contr->socket, &sl); free(sl.buf); } @@ -318,31 +318,31 @@ SockList_AddInt(&sl, op->count); for (tmp=op->inv; tmp; tmp=tmp->below) { - object *head; + object *head; - if (tmp->head) head = tmp->head; - else head = tmp; + if (tmp->head) head = tmp->head; + else head = tmp; - if (LOOK_OBJ(head)) { - add_object_to_socklist(&pl->contr->socket, &sl, head); + if (LOOK_OBJ(head)) { + add_object_to_socklist(&pl->contr->socket, &sl, head); - got_one++; + got_one++; - /* IT is possible for players to accumulate a huge amount of - * items (especially with some of the bags out there) to - * overflow the buffer. IF so, send multiple item commands. - */ - if (sl.len >= (MAXSOCKBUF-MAXITEMLEN)) { - Send_With_Handling(&pl->contr->socket, &sl); - sprintf((char*)sl.buf,"item%d ", pl->contr->socket.itemcmd); - sl.len=strlen((char*)sl.buf); - SockList_AddInt(&sl, op->count); - got_one=0; - } - } /* If LOOK_OBJ() */ + /* IT is possible for players to accumulate a huge amount of + * items (especially with some of the bags out there) to + * overflow the buffer. IF so, send multiple item commands. + */ + if (sl.len >= (MAXSOCKBUF-MAXITEMLEN)) { + Send_With_Handling(&pl->contr->socket, &sl); + sprintf((char*)sl.buf,"item%d ", pl->contr->socket.itemcmd); + sl.len=strlen((char*)sl.buf); + SockList_AddInt(&sl, op->count); + got_one=0; + } + } /* If LOOK_OBJ() */ } if (got_one) - Send_With_Handling(&pl->contr->socket, &sl); + Send_With_Handling(&pl->contr->socket, &sl); free(sl.buf); } @@ -360,19 +360,19 @@ /* If we have a request to send the player item, skip a few checks. */ if (op!=pl) { - if (! LOOK_OBJ(op)) - return; - /* we remove the check for op->env, because in theory, the object - * is hopefully in the same place, so the client should preserve - * order. - */ + if (! LOOK_OBJ(op)) + return; + /* we remove the check for op->env, because in theory, the object + * is hopefully in the same place, so the client should preserve + * order. + */ } if (!QUERY_FLAG(op, FLAG_CLIENT_SENT)) { - /* FLAG_CLIENT_SENT is debug only. We are using it to see where - * this is happening - we can set a breakpoint here in the debugger - * and track back the call. - */ - LOG(llevDebug,"We have not sent item %s (%d)\n", op->name, op->count); + /* FLAG_CLIENT_SENT is debug only. We are using it to see where + * this is happening - we can set a breakpoint here in the debugger + * and track back the call. + */ + LOG(llevDebug,"We have not sent item %s (%d)\n", &op->name, op->count); } sl.buf= (unsigned char *) malloc(MAXSOCKBUF); @@ -386,68 +386,68 @@ SockList_AddInt(&sl, op->count); if (flags & UPD_LOCATION) - SockList_AddInt(&sl, op->env? op->env->count:0); + SockList_AddInt(&sl, op->env? op->env->count:0); if (flags & UPD_FLAGS) - SockList_AddInt(&sl, query_flags(op)); + SockList_AddInt(&sl, query_flags(op)); if (flags & UPD_WEIGHT) { - sint32 weight = WEIGHT(op); + sint32 weight = WEIGHT(op); - SockList_AddInt(&sl, QUERY_FLAG(op, FLAG_NO_PICK) ? -1 : weight); - if (pl == op) { - op->contr->last_weight = weight; - } + SockList_AddInt(&sl, QUERY_FLAG(op, FLAG_NO_PICK) ? -1 : weight); + if (pl == op) { + op->contr->last_weight = weight; + } } if (flags & UPD_FACE) { - if (!(pl->contr->socket.faces_sent[op->face->number] & NS_FACESENT_FACE)) - esrv_send_face(&pl->contr->socket, op->face->number,0); - SockList_AddInt(&sl, op->face->number); + if (!(pl->contr->socket.faces_sent[op->face->number] & NS_FACESENT_FACE)) + esrv_send_face(&pl->contr->socket, op->face->number,0); + SockList_AddInt(&sl, op->face->number); } if (flags & UPD_NAME) { - int len; - const char *item_p; + int len; + const char *item_p; char item_n[MAX_BUF]; - if (!op->custom_name) { - strncpy(item_n,query_base_name(op, 0),127); - item_n[127]=0; - len=strlen(item_n); - item_p=query_base_name(op, 1); - } - else { - strncpy(item_n,op->custom_name,127); - item_n[127]=0; - len=strlen(item_n); - item_p=op->custom_name; - } - - strncpy(item_n+len+1, item_p, 127); - item_n[254]=0; - len += strlen(item_n+1+len) + 1; - SockList_AddChar(&sl, (char)len); - memcpy(sl.buf+sl.len, item_n, len); - sl.len += len; + if (!op->custom_name) { + strncpy(item_n,query_base_name(op, 0),127); + item_n[127]=0; + len=strlen(item_n); + item_p=query_base_name(op, 1); + } + else { + strncpy(item_n,op->custom_name,127); + item_n[127]=0; + len=strlen(item_n); + item_p=op->custom_name; + } + + strncpy(item_n+len+1, item_p, 127); + item_n[254]=0; + len += strlen(item_n+1+len) + 1; + SockList_AddChar(&sl, (char)len); + memcpy(sl.buf+sl.len, item_n, len); + sl.len += len; } if (flags & UPD_ANIM) - SockList_AddShort(&sl,op->animation_id); + SockList_AddShort(&sl,op->animation_id); if (flags & UPD_ANIMSPEED) { - int anim_speed=0; - if (QUERY_FLAG(op,FLAG_ANIMATE)) { - if (op->anim_speed) anim_speed=op->anim_speed; - else { - if (FABS(op->speed)<0.001) anim_speed=255; - else if (FABS(op->speed)>=1.0) anim_speed=1; - else anim_speed = (int) (1.0/FABS(op->speed)); - } - if (anim_speed>255) anim_speed=255; - } - SockList_AddChar(&sl, (char)anim_speed); + int anim_speed=0; + if (QUERY_FLAG(op,FLAG_ANIMATE)) { + if (op->anim_speed) anim_speed=op->anim_speed; + else { + if (FABS(op->speed)<0.001) anim_speed=255; + else if (FABS(op->speed)>=1.0) anim_speed=1; + else anim_speed = (int) (1.0/FABS(op->speed)); + } + if (anim_speed>255) anim_speed=255; + } + SockList_AddChar(&sl, (char)anim_speed); } if (flags & UPD_NROF) - SockList_AddInt(&sl, op->nrof); + SockList_AddInt(&sl, op->nrof); Send_With_Handling(&pl->contr->socket, &sl); free(sl.buf); @@ -462,16 +462,16 @@ /* If this is not the player object, do some more checks */ if (op!=pl) { - /* We only send 'visibile' objects to the client */ - if (! LOOK_OBJ(op)) - return; - /* if the item is on the ground, mark that the look needs to - * be updated. - */ - if (!op->env) { - pl->contr->socket.update_look=1; - return; - } + /* We only send 'visibile' objects to the client */ + if (! LOOK_OBJ(op)) + return; + /* if the item is on the ground, mark that the look needs to + * be updated. + */ + if (!op->env) { + pl->contr->socket.update_look=1; + return; + } } sl.buf= (unsigned char *) malloc(MAXSOCKBUF); @@ -526,25 +526,25 @@ object *op, *tmp; if (pl->count == count) - return pl; + return pl; for(op = pl->inv; op; op = op->below) - if (op->count == count) - return op; - else if (op->type == CONTAINER && pl->container == op) - for(tmp = op->inv; tmp; tmp = tmp->below) - if (tmp->count == count) - return tmp; + if (op->count == count) + return op; + else if (op->type == CONTAINER && pl->container == op) + for(tmp = op->inv; tmp; tmp = tmp->below) + if (tmp->count == count) + return tmp; for(op = get_map_ob (pl->map, pl->x, pl->y); op; op = op->above) - if (op->head != NULL && op->head->count == count) - return op; - else if (op->count == count) - return op; - else if (op->type == CONTAINER && pl->container == op) - for(tmp = op->inv; tmp; tmp = tmp->below) - if (tmp->count == count) - return tmp; + if (op->head != NULL && op->head->count == count) + return op; + else if (op->count == count) + return op; + else if (op->type == CONTAINER && pl->container == op) + for(tmp = op->inv; tmp; tmp = tmp->below) + if (tmp->count == count) + return tmp; return NULL; } @@ -557,9 +557,8 @@ object *op = esrv_get_ob_from_count(pl->ob, tag); if (!op) { - LOG(llevDebug, "Player '%s' tried to examine the unknown object (%ld)\n", - pl->ob->name, tag); - return; + LOG(llevDebug, "Player '%s' tried to examine the unknown object (%ld)\n", &pl->ob->name, tag); + return; } examine (pl->ob, op); } @@ -577,15 +576,14 @@ /* If the high bit is set, player applied a pseudo object. */ if (tag & 0x80000000) { - pl->socket.look_position = tag & 0x7fffffff; - pl->socket.update_look = 1; - return; + pl->socket.look_position = tag & 0x7fffffff; + pl->socket.update_look = 1; + return; } if (!op) { - LOG(llevDebug, "Player '%s' tried to apply the unknown object (%d)\n", - pl->ob->name, tag); - return; + LOG(llevDebug, "Player '%s' tried to apply the unknown object (%d)\n", &pl->ob->name, tag); + return; } player_apply (pl->ob, op, 0, 0); } @@ -601,13 +599,13 @@ op = esrv_get_ob_from_count(pl->ob, tag); if (!op) { - new_draw_info(NDI_UNIQUE, 0, pl->ob,"Could not find object to lock/unlock"); - return; + new_draw_info(NDI_UNIQUE, 0, pl->ob,"Could not find object to lock/unlock"); + return; } if (!flag) - CLEAR_FLAG(op,FLAG_INV_LOCKED); + CLEAR_FLAG(op,FLAG_INV_LOCKED); else - SET_FLAG(op,FLAG_INV_LOCKED); + SET_FLAG(op,FLAG_INV_LOCKED); esrv_update_item(UPD_FLAGS, pl->ob, op); } @@ -620,8 +618,8 @@ tag = GetInt_String(data); op = esrv_get_ob_from_count(pl->ob, tag); if (!op) { - new_draw_info(NDI_UNIQUE, 0, pl->ob,"Could not find object to mark"); - return; + new_draw_info(NDI_UNIQUE, 0, pl->ob,"Could not find object to mark"); + return; } pl->mark = op; pl->mark_count = op->count; @@ -650,39 +648,39 @@ if (!m) return; for(tmp=get_map_ob(m, x ,y);tmp!=NULL&&tmp->above!=NULL; - tmp=tmp->above); + tmp=tmp->above); for ( ; tmp != NULL; tmp=tmp->below ) { - if (tmp->invisible && !QUERY_FLAG(op, FLAG_WIZ)) continue; + if (tmp->invisible && !QUERY_FLAG(op, FLAG_WIZ)) continue; - if(!flag) { - if(dx||dy) - new_draw_info(NDI_UNIQUE, 0,op,"There you see:"); - else { - clear_win_info(op); - new_draw_info(NDI_UNIQUE, 0,op,"You see:"); - } - flag=1; - } - - if (QUERY_FLAG(op, FLAG_WIZ)) - new_draw_info_format(NDI_UNIQUE,0, op, "- %s (%d).",query_name(tmp),tmp->count); - else - new_draw_info_format(NDI_UNIQUE,0, op, "- %s.",query_name(tmp)); - - if (((tmp->inv!=NULL || (tmp->head && tmp->head->inv)) && - (tmp->type != CONTAINER && tmp->type!=FLESH)) || QUERY_FLAG(op, FLAG_WIZ)) - inventory(op,tmp->head==NULL?tmp:tmp->head); + if(!flag) { + if(dx||dy) + new_draw_info(NDI_UNIQUE, 0,op,"There you see:"); + else { + clear_win_info(op); + new_draw_info(NDI_UNIQUE, 0,op,"You see:"); + } + flag=1; + } + + if (QUERY_FLAG(op, FLAG_WIZ)) + new_draw_info_format(NDI_UNIQUE,0, op, "- %s (%d).",query_name(tmp),tmp->count); + else + new_draw_info_format(NDI_UNIQUE,0, op, "- %s.",query_name(tmp)); + + if (((tmp->inv!=NULL || (tmp->head && tmp->head->inv)) && + (tmp->type != CONTAINER && tmp->type!=FLESH)) || QUERY_FLAG(op, FLAG_WIZ)) + inventory(op,tmp->head==NULL?tmp:tmp->head); - if(QUERY_FLAG(tmp, FLAG_IS_FLOOR)&&!QUERY_FLAG(op, FLAG_WIZ)) /* don't continue under the floor */ - break; + if(QUERY_FLAG(tmp, FLAG_IS_FLOOR)&&!QUERY_FLAG(op, FLAG_WIZ)) /* don't continue under the floor */ + break; } if(!flag) { - if(dx||dy) - new_draw_info(NDI_UNIQUE, 0,op,"You see nothing there."); - else - new_draw_info(NDI_UNIQUE, 0,op,"You see nothing."); + if(dx||dy) + new_draw_info(NDI_UNIQUE, 0,op,"You see nothing there."); + else + new_draw_info(NDI_UNIQUE, 0,op,"You see nothing."); } } @@ -696,7 +694,7 @@ dx=atoi(buf); if (!(cp=strchr(buf,' '))) { - return; + return; } dy=atoi(cp); @@ -716,46 +714,44 @@ op = esrv_get_ob_from_count(pl, tag); if (!op) { - LOG(llevDebug, "Player '%s' tried to move an unknown object (%ld)\n", - pl->name, tag); - return; + LOG(llevDebug, "Player '%s' tried to move an unknown object (%ld)\n", &pl->name, tag); + return; } if (!to) { /* drop it to the ground */ /* LOG(llevDebug, "Drop it on the ground.\n");*/ - if (op->map && !op->env) { + if (op->map && !op->env) { /* LOG(llevDebug,"Dropping object to ground that is already on ground\n");*/ - return; - } - /* If it is an active container, then we should drop all objects - * in the container and not the container itself. - */ - if (op->inv && QUERY_FLAG(op, FLAG_APPLIED)) { - object *current, *next; - for (current=op->inv; current!=NULL; current=next) { - next=current->below; - drop_object(pl, current, 0); - } - esrv_update_item(UPD_WEIGHT, pl, op); - } - else { - drop_object (pl, op, nrof); - } - return; + return; + } + /* If it is an active container, then we should drop all objects + * in the container and not the container itself. + */ + if (op->inv && QUERY_FLAG(op, FLAG_APPLIED)) { + object *current, *next; + for (current=op->inv; current!=NULL; current=next) { + next=current->below; + drop_object(pl, current, 0); + } + esrv_update_item(UPD_WEIGHT, pl, op); + } + else { + drop_object (pl, op, nrof); + } + return; } else if (to == pl->count) { /* pick it up to the inventory */ - /* return if player has already picked it up */ - if (op->env == pl) return; + /* return if player has already picked it up */ + if (op->env == pl) return; - pl->contr->count = nrof; - pick_up(pl, op); - return ; + pl->contr->count = nrof; + pick_up(pl, op); + return ; } env = esrv_get_ob_from_count(pl, to); if (!env) { LOG(llevDebug, - "Player '%s' tried to move object to the unknown location (%d)\n", - pl->name, to); + "Player '%s' tried to move object to the unknown location (%d)\n", &pl->name, to); return; } /* put_object_in_sack presumes that necessary sanity checking