--- deliantra/server/common/object.C 2007/09/12 11:10:09 1.188 +++ deliantra/server/common/object.C 2007/09/15 15:58:06 1.190 @@ -1993,8 +1993,8 @@ int find_free_spot (const object *ob, maptile *m, int x, int y, int start, int stop) { - int index = 0, flag; int altern[SIZEOFFREE]; + int index = 0, flag; for (int i = start; i < stop; i++) { @@ -2004,14 +2004,19 @@ continue; mapspace &ms = *pos; - ms.update (); + + if (ms.flags () & P_IS_ALIVE) + continue; /* However, often * ob doesn't have any move type (when used to place exits) * so the AND operation in OB_TYPE_MOVE_BLOCK doesn't work. */ if (ob->move_type == 0 && ms.move_block != MOVE_ALL) - continue; + { + altern [index++] = i; + continue; + } /* Basically, if we find a wall on a space, we cut down the search size. * In this way, we won't return spaces that are on another side of a wall.