From cedc757e1694bf889195ff72e908e36ddc4ee999 Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Sun, 5 Jan 2020 13:30:25 +0200 Subject: [PATCH] Unify random light state for rooms or level --- include/extern.h | 1 + src/mkmap.c | 12 ++++++++++-- src/sp_lev.c | 9 +++------ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/include/extern.h b/include/extern.h index 7d6ad328c..637dbfe8c 100644 --- a/include/extern.h +++ b/include/extern.h @@ -1301,6 +1301,7 @@ E void FDECL(mineralize, (int, int, int, int, BOOLEAN_P)); 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 ### */ diff --git a/src/mkmap.c b/src/mkmap.c index 91593d216..d6fa6dc0d 100644 --- a/src/mkmap.c +++ b/src/mkmap.c @@ -446,6 +446,15 @@ unsigned roomno; #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; @@ -455,8 +464,7 @@ 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); diff --git a/src/sp_lev.c b/src/sp_lev.c index 68c6f3ac6..c463c8b74 100644 --- a/src/sp_lev.c +++ b/src/sp_lev.c @@ -705,8 +705,7 @@ xchar rtype, rlit; /* 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 @@ -886,8 +885,7 @@ xchar rtype, rlit; 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; @@ -4827,8 +4825,7 @@ lua_State *L; 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);