U433 - infinite loop with place_branch

This solution is mostly a band-aid.  Make sure information set by join_map
that is overlaid by the MAP is cleared out.  This ensures that place_branch
will never consider invalid data.  A new function, remove_rooms(), with a
helper, remove_room(), takes care of this, but only for rooms created by
join_map, which addresses the only known case that causes this problem.
There's a possibility that some other strange behavior, especially in
minetn-6, will be fixed by this as well.  The problem of disconnected caves
on minetn-6 is not yet addressed.

Also, add a check to lev_comp.y to make sure the required fg semantics of
joined levels (fg must be ROOM or CORR) are actually met.  Doesn't affect
any levels currently included in the distro, but might address levels
others are trying to make.
This commit is contained in:
cohrs
2003-05-20 02:05:45 +00:00
parent 619da67425
commit 14c12765a0
5 changed files with 92 additions and 1 deletions

View File

@@ -1011,6 +1011,7 @@ E void NDECL(mkinvokearea);
/* ### mkmap.c ### */
void FDECL(flood_fill_rm, (int,int,int,BOOLEAN_P,BOOLEAN_P));
void FDECL(remove_rooms, (int,int,int,int));
/* ### mkmaze.c ### */