]> granicus.if.org Git - nethack/commitdiff
Unify random light state for rooms or level
authorPasi Kallinen <paxed@alt.org>
Sun, 5 Jan 2020 11:30:25 +0000 (13:30 +0200)
committerPasi Kallinen <paxed@alt.org>
Sun, 5 Jan 2020 11:31:24 +0000 (13:31 +0200)
include/extern.h
src/mkmap.c
src/sp_lev.c

index 7d6ad328cea235ee3a5005ef2b6f33cd9758f770..637dbfe8c3acace183e12c64a912f3dd2a949d5f 100644 (file)
@@ -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 ### */
index 91593d216c7fe2179c16e0023900a15f41929354..d6fa6dc0d9aa61a6ff16bd7ab1550e451853280b 100644 (file)
@@ -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);
 
index 68c6f3ac6c30a3e98f9e4eaecea8867550846ee9..c463c8b74c7826997296504b3265109cee9bd7b3 100644 (file)
@@ -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);