--- deliantra/server/common/object.C 2008/05/18 17:52:53 1.244 +++ deliantra/server/common/object.C 2008/07/14 18:36:43 1.247 @@ -188,10 +188,6 @@ || ob1->name != ob2->name) return 0; - // some objects are unmergable - if (!ob1->nrof || !ob2->nrof) - return 0; - /* Do not merge objects if nrof would overflow. First part checks * for unsigned overflow (2c), second part checks whether the result * would fit into a 32 bit signed int, which is often used to hold @@ -1289,6 +1285,12 @@ op->remove (); } + if (op->face && !face_info (op->face))//D TODO: remove soon + {//D + LOG (llevError | logBacktrace, "op->face out of bounds: %s", op->debug_desc ());//D + op->face = 1;//D + }//D + /* Ideally, the caller figures this out. However, it complicates a lot * of areas of callers (eg, anything that uses find_free_spot would now * need extra work @@ -1541,7 +1543,7 @@ if (nrof) { - adjust_weight (env, -weight * nr); // carrying == 0 + adjust_weight (env, -weight * max (1, nr)); // carrying == 0 if (object *pl = visible_to ()) esrv_update_item (UPD_NROF, pl, this);