E void FDECL(flood_fill_rm, (int, int, int, BOOLEAN_P, BOOLEAN_P));
E void FDECL(remove_rooms, (int, int, int, int));
+E boolean FDECL(litstate_rnd, (int));
/* E void FDECL(mkmap, (lev_init *)); -- need sp_lev.h for lev_init */
/* ### mkmaze.c ### */
#define N_P2_ITER 1 /* tune map generation via this value */
#define N_P3_ITER 2 /* tune map smoothing via this value */
+boolean
+litstate_rnd(litstate)
+int litstate;
+{
+ if (litstate < 0)
+ return (rnd(1 + abs(depth(&u.uz))) < 11 && rn2(77)) ? TRUE : FALSE;
+ return (boolean) litstate;
+}
+
void
mkmap(init_lev)
lev_init *init_lev;
xchar lit = init_lev->lit, walled = init_lev->walled;
int i;
- if (lit < 0)
- lit = (rnd(1 + abs(depth(&u.uz))) < 11 && rn2(77)) ? 1 : 0;
+ lit = litstate_rnd(lit);
g.new_locations = (char *) alloc((WIDTH + 1) * HEIGHT);
/* some other rooms may require lighting */
/* is light state random ? */
- if (rlit == -1)
- rlit = (rnd(1 + abs(depth(&u.uz))) < 11 && rn2(77)) ? TRUE : FALSE;
+ rlit = litstate_rnd(rlit);
/*
* Here we will try to create a room. If some parameters are
y++;
if (rtype == -1)
rtype = OROOM;
- if (rlit == -1)
- rlit = (rnd(1 + abs(depth(&u.uz))) < 11 && rn2(77)) ? TRUE : FALSE;
+ rlit = litstate_rnd(rlit);
add_subroom(proom, proom->lx + x, proom->ly + y, proom->lx + x + w - 1,
proom->ly + y + h - 1, rlit, rtype, FALSE);
return TRUE;
return 0;
}
- if (rlit < 0)
- rlit = (rnd(1 + abs(depth(&u.uz))) < 11 && rn2(77)) ? TRUE : FALSE;
+ rlit = litstate_rnd(rlit);
get_location(&dx1, &dy1, ANY_LOC, (struct mkroom *) 0);
get_location(&dx2, &dy2, ANY_LOC, (struct mkroom *) 0);