--- deliantra/server/random_maps/treasure.C 2008/04/14 22:41:17 1.35 +++ deliantra/server/random_maps/treasure.C 2008/04/15 03:00:24 1.36 @@ -488,37 +488,29 @@ if (theMonsterToFind != NULL) return theMonsterToFind; } + return theMonsterToFind; } - /* sets up some data structures: the _recursive form does the real work. */ - object * find_monster_in_room (maptile *map, int x, int y, random_map_params *RP) { - char **layout2; - int i, j; + Layout layout2 (RP); + + layout2->clear (); - theMonsterToFind = 0; - layout2 = (char **) calloc (sizeof (char *), RP->Xsize); /* allocate and copy the layout, converting C to 0. */ - for (i = 0; i < RP->Xsize; i++) - { - layout2[i] = (char *) calloc (sizeof (char), RP->Ysize); - for (j = 0; j < RP->Ysize; j++) - if (wall_blocked (map, i, j)) - layout2[i][j] = '#'; - } + for (int i = 0; i < layout2->w; i++) + for (int j = 0; j < layout2->h; j++) + if (wall_blocked (map, i, j)) + layout2[i][j] = '#'; + theMonsterToFind = 0; theMonsterToFind = find_monster_in_room_recursive (layout2, map, x, y, RP); - /* deallocate the temp. layout */ - for (i = 0; i < RP->Xsize; i++) - free (layout2[i]); - - free (layout2); + layout2.free (); return theMonsterToFind; } @@ -805,13 +797,13 @@ object **doorlist = (object **)calloc (sizeof (int), 1024); - MazeData layout2 (RP->Xsize, RP->Ysize); + LayoutData layout2 (RP->Xsize, RP->Ysize); + layout2.clear (); /* allocate and copy the layout, converting C to 0. */ for (i = 0; i < RP->Xsize; i++) for (j = 0; j < RP->Ysize; j++) - if (wall_blocked (map, i, j)) - layout2[i][j] = '#'; + layout2[i][j] = wall_blocked (map, i, j) ? '#' : 0; /* setup num_free_spots and room_free_spots */ find_doors_in_room_recursive (layout2, map, x, y, doorlist, &ndoors, RP); @@ -865,9 +857,12 @@ retrofit_joined_wall (map, door->x + 1, door->y, 0, RP); retrofit_joined_wall (map, door->x, door->y - 1, 0, RP); retrofit_joined_wall (map, door->x, door->y + 1, 0, RP); + door->face = wallface->face; + if (!QUERY_FLAG (wallface, FLAG_REMOVED)) wallface->remove (); + wallface->destroy (); } }