diff --git a/dat/dungeon.lua b/dat/dungeon.lua index 014d3dab3..be504fbd2 100644 --- a/dat/dungeon.lua +++ b/dat/dungeon.lua @@ -167,6 +167,7 @@ dungeon = { range = 2, alignment = "lawful", flags = { "mazelike" }, + lvlfill = "minefill", levels = { { name = "minetn", diff --git a/include/dungeon.h b/include/dungeon.h index c25494001..7a5677761 100644 --- a/include/dungeon.h +++ b/include/dungeon.h @@ -56,6 +56,7 @@ typedef struct dest_area { /* non-stairway level change identifier */ typedef struct dungeon { /* basic dungeon identifier */ char dname[24]; /* name of the dungeon (eg. "Hell") */ char proto[15]; /* name of prototype file (eg. "tower") */ + char fill_lvl[15]; /* name of "fill" level protype file */ char boneid; /* character to id dungeon in bones files */ d_flags flags; /* dungeon flags */ xchar entry_lev; /* entry level */ diff --git a/src/dungeon.c b/src/dungeon.c index f07f375f1..950504732 100644 --- a/src/dungeon.c +++ b/src/dungeon.c @@ -832,7 +832,7 @@ init_dungeons() lua_pushnil(L); /* first key */ i = 0; while (lua_next(L, tidx) != 0) { - char *dgn_name, *dgn_bonetag, *dgn_protoname; + char *dgn_name, *dgn_bonetag, *dgn_protoname, *dgn_fill; int dgn_base, dgn_range, dgn_align, dgn_entry, dgn_chance, dgn_flags; if (!lua_istable(L, -1)) @@ -847,6 +847,7 @@ init_dungeons() dgn_entry = get_table_int_opt(L, "entry", 0); dgn_chance = get_table_int_opt(L, "chance", 100); dgn_flags = get_dgn_flags(L); + dgn_fill = get_table_str_opt(L, "lvlfill", emptystr); debugpline4("DUNGEON[%i]: %s, base=(%i,%i)", i, dgn_name, dgn_base, dgn_range); @@ -984,6 +985,7 @@ init_dungeons() pd.tmpdungeon[i].chance = dgn_chance; pd.tmpdungeon[i].entry_lev = dgn_entry; + Strcpy(g.dungeons[i].fill_lvl, dgn_fill); /* FIXME: fill_lvl len */ Strcpy(g.dungeons[i].dname, dgn_name); /* FIXME: dname length */ Strcpy(g.dungeons[i].proto, dgn_protoname); /* FIXME: proto length */ g.dungeons[i].boneid = *dgn_bonetag ? *dgn_bonetag : 0; diff --git a/src/mklev.c b/src/mklev.c index 41e2ae95d..965a4dca6 100644 --- a/src/mklev.c +++ b/src/mklev.c @@ -685,8 +685,8 @@ makelevel() } else if (g.dungeons[u.uz.dnum].proto[0]) { makemaz(""); return; - } else if (In_mines(&u.uz)) { - makemaz("minefill"); + } else if (g.dungeons[u.uz.dnum].fill_lvl[0]) { + makemaz(g.dungeons[u.uz.dnum].fill_lvl); return; } else if (In_quest(&u.uz)) { char fillname[9];