--- deliantra/server/common/object.C 2006/09/14 23:13:48 1.48 +++ deliantra/server/common/object.C 2006/09/27 00:36:08 1.52 @@ -913,7 +913,7 @@ static int lastmortals = 0;//D - if (mortals.size() != lastmortals)//D + if (mortals.size() != lastmortals && lastmortals > 100)//D { lastmortals = mortals.size ();//D LOG (llevDebug, "%d objects in mortal queue\n", lastmortals);//D @@ -974,10 +974,10 @@ * The object must have been removed by remove_ob() first for * this function to succeed. * - * If free_inventory is set, free inventory as well. Else drop items in + * If destroy_inventory is set, free inventory as well. Else drop items in * inventory to the ground. */ -void object::free (bool free_inventory) +void object::destroy (bool destroy_inventory) { if (QUERY_FLAG (this, FLAG_FREED)) return; @@ -992,7 +992,7 @@ if (more) { - more->free (free_inventory); + more->destroy (destroy_inventory); more = 0; } @@ -1002,14 +1002,14 @@ * if some form of movement is allowed, let objects * drop on that space. */ - if (free_inventory || !map || map->in_memory != MAP_IN_MEMORY || GET_MAP_MOVE_BLOCK (map, x, y) == MOVE_ALL) + if (destroy_inventory || !map || map->in_memory != MAP_IN_MEMORY || GET_MAP_MOVE_BLOCK (map, x, y) == MOVE_ALL) { object *op = inv; while (op) { object *tmp = op->below; - op->free (free_inventory); + op->destroy (destroy_inventory); op = tmp; } } @@ -1043,6 +1043,9 @@ enemy = 0; attacked_by = 0; + // only relevant for players(?), but make sure of it anyways + contr = 0; + /* Remove object from the active list */ speed = 0; update_ob_speed (this); @@ -1086,7 +1089,7 @@ object *otmp; int check_walk_off; - mapstruct *m; + maptile *m; sint16 x, y; @@ -1215,12 +1218,14 @@ } /* See if player moving off should effect something */ - if (check_walk_off && ((op->move_type & tmp->move_off) && (op->move_type & ~tmp->move_off & ~tmp->move_block) == 0)) + if (check_walk_off + && ((op->move_type & tmp->move_off) + && (op->move_type & ~tmp->move_off & ~tmp->move_block) == 0)) { move_apply (tmp, op, NULL); - if (op->destroyed ()); - LOG (llevError, "BUG: remove_ob(): name %s, archname %s destroyed " "leaving object\n", &tmp->name, &tmp->arch->name); + if (op->destroyed ()) + LOG (llevError, "BUG: remove_ob(): name %s, destroyed leaving object\n", tmp->debug_desc ()); } /* Eneq(@csd.uu.se): Fixed this to skip tmp->above=tmp */ @@ -1291,7 +1296,7 @@ * job preparing multi-part monsters */ object * -insert_ob_in_map_at (object *op, mapstruct *m, object *originator, int flag, int x, int y) +insert_ob_in_map_at (object *op, maptile *m, object *originator, int flag, int x, int y) { object *tmp; @@ -1329,7 +1334,7 @@ */ object * -insert_ob_in_map (object *op, mapstruct *m, object *originator, int flag) +insert_ob_in_map (object *op, maptile *m, object *originator, int flag) { object *tmp, *top, *floor = NULL; sint16 x, y; @@ -1930,7 +1935,7 @@ check_move_on (object *op, object *originator) { object *tmp; - mapstruct *m = op->map; + maptile *m = op->map; int x = op->x, y = op->y; MoveType move_on, move_slow, move_block; @@ -2029,7 +2034,7 @@ */ object * -present_arch (const archetype *at, mapstruct *m, int x, int y) +present_arch (const archetype *at, maptile *m, int x, int y) { object * tmp; @@ -2052,7 +2057,7 @@ */ object * -present (unsigned char type, mapstruct *m, int x, int y) +present (unsigned char type, maptile *m, int x, int y) { object * tmp; @@ -2202,7 +2207,7 @@ */ int -find_free_spot (const object *ob, mapstruct *m, int x, int y, int start, int stop) +find_free_spot (const object *ob, maptile *m, int x, int y, int start, int stop) { int i, @@ -2233,14 +2238,14 @@ } /* - * find_first_free_spot(archetype, mapstruct, x, y) works like + * find_first_free_spot(archetype, maptile, x, y) works like * find_free_spot(), but it will search max number of squares. * But it will return the first available spot, not a random choice. * Changed 0.93.2: Have it return -1 if there is no free spot available. */ int -find_first_free_spot (const object *ob, mapstruct *m, int x, int y) +find_first_free_spot (const object *ob, maptile *m, int x, int y) { int i; @@ -2314,7 +2319,7 @@ */ int -find_dir (mapstruct *m, int x, int y, object *exclude) +find_dir (maptile *m, int x, int y, object *exclude) { int i, @@ -2323,7 +2328,7 @@ sint16 nx, ny; object * tmp; - mapstruct * + maptile * mp; MoveType blocked, move_type; @@ -2541,7 +2546,7 @@ int -can_see_monsterP (mapstruct *m, int x, int y, int dir) +can_see_monsterP (maptile *m, int x, int y, int dir) { sint16 dx, dy; int