--- deliantra/server/common/object.C 2008/04/23 07:13:23 1.217 +++ deliantra/server/common/object.C 2008/04/23 07:25:54 1.218 @@ -1151,7 +1151,8 @@ */ pl->close_container (); - esrv_del_item (pl, count); + //TODO: the floorbox prev/next might need updating + esrv_del_item (pl->contr, count); } for (tmp = ms.bot; tmp; tmp = tmp->above) @@ -1287,8 +1288,6 @@ { assert (!op->flag [FLAG_FREED]); - object *top, *floor = NULL; - op->remove (); /* Ideally, the caller figures this out. However, it complicates a lot @@ -1316,6 +1315,9 @@ for (object *tmp = ms.bot; tmp; tmp = tmp->above) if (object::can_merge (op, tmp)) { + // TODO: we atcually want to update tmp, not op, + // but some caller surely breaks when we return tmp + // from here :/ op->nrof += tmp->nrof; tmp->destroy (1); } @@ -1347,6 +1349,8 @@ } else { + object *top, *floor = NULL; + top = ms.bot; /* If there are other objects, then */ @@ -1455,6 +1459,7 @@ op->map->dirty = true; if (object *pl = ms.player ()) + //TODO: the floorbox prev/next might need updating esrv_send_item (pl, op); /* If this object glows, it may affect lighting conditions that are