Lua: Allow setting debug_flags

This commit is contained in:
Pasi Kallinen
2021-07-29 07:36:08 +03:00
parent bb23c4f557
commit 7bfbe0fba9
4 changed files with 24 additions and 13 deletions

View File

@@ -205,6 +205,7 @@ struct instance_flags {
boolean vision_inited; /* true if vision is ready */ boolean vision_inited; /* true if vision is ready */
boolean sanity_check; /* run sanity checks */ boolean sanity_check; /* run sanity checks */
boolean debug_mongen; /* debug: prevent monster generation */ boolean debug_mongen; /* debug: prevent monster generation */
boolean debug_hunger; /* debug: prevent hunger */
boolean mon_polycontrol; /* debug: control monster polymorphs */ boolean mon_polycontrol; /* debug: control monster polymorphs */
boolean in_dumplog; /* doing the dumplog right now? */ boolean in_dumplog; /* doing the dumplog right now? */
boolean in_parse; /* is a command being parsed? */ boolean in_parse; /* is a command being parsed? */

View File

@@ -2842,7 +2842,7 @@ gethungry(void)
{ {
int accessorytime; int accessorytime;
if (u.uinvulnerable) if (u.uinvulnerable || iflags.debug_hunger)
return; /* you don't feel hungrier */ return; /* you don't feel hungrier */
/* being polymorphed into a creature which doesn't eat prevents /* being polymorphed into a creature which doesn't eat prevents

View File

@@ -21,7 +21,7 @@ static int nhl_dnum_name(lua_State *);
static int nhl_stairways(lua_State *); static int nhl_stairways(lua_State *);
static int nhl_pushkey(lua_State *); static int nhl_pushkey(lua_State *);
static int nhl_doturn(lua_State *); static int nhl_doturn(lua_State *);
static int nhl_monster_generation(lua_State *); static int nhl_debug_flags(lua_State *);
static int nhl_test(lua_State *); static int nhl_test(lua_State *);
static int nhl_getmap(lua_State *); static int nhl_getmap(lua_State *);
static void nhl_add_table_entry_bool(lua_State *, const char *, boolean); static void nhl_add_table_entry_bool(lua_State *, const char *, boolean);
@@ -973,17 +973,22 @@ nhl_doturn(lua_State *L)
return 0; return 0;
} }
/* disable or enable monster generation. debugging use only. */ /* set debugging flags. debugging use only, of course. */
/* disabling also kills all monsters on current level. */ /* nh.debug_flags({ mongen = false, hunger = false }); */
/* local prevvalue = nh.monster_generation(false); */
static int static int
nhl_monster_generation(lua_State *L) nhl_debug_flags(lua_State *L)
{ {
int argc = lua_gettop(L); int argc = lua_gettop(L);
boolean val = !iflags.debug_mongen; /* value in lua is negated */ int val;
if (argc == 1) { int i;
iflags.debug_mongen = !lua_toboolean(L, 1);
lcheck_param_table(L);
/* disable monster generation */
val = get_table_boolean_opt(L, "mongen", -1);
if (val != -1) {
iflags.debug_mongen = !(boolean)val; /* value in lua is negated */
if (iflags.debug_mongen) { if (iflags.debug_mongen) {
register struct monst *mtmp, *mtmp2; register struct monst *mtmp, *mtmp2;
@@ -996,8 +1001,13 @@ nhl_monster_generation(lua_State *L)
} }
} }
lua_pushboolean(L, val); /* prevent hunger */
return 1; val = get_table_boolean_opt(L, "hunger", -1);
if (val != -1) {
iflags.debug_hunger = !(boolean)val; /* value in lua is negated */
}
return 0;
} }
@@ -1034,7 +1044,7 @@ static const struct luaL_Reg nhl_functions[] = {
{"stairways", nhl_stairways}, {"stairways", nhl_stairways},
{"pushkey", nhl_pushkey}, {"pushkey", nhl_pushkey},
{"doturn", nhl_doturn}, {"doturn", nhl_doturn},
{"monster_generation", nhl_monster_generation}, {"debug_flags", nhl_debug_flags},
{NULL, NULL} {NULL, NULL}
}; };

View File

@@ -13,7 +13,7 @@ local POS = { x = 10, y = 05 };
local number_pad = 0; local number_pad = 0;
function initlev() function initlev()
nh.monster_generation(false); nh.debug_flags({mongen = false, hunger = false });
des.level_flags("noflip"); des.level_flags("noflip");
des.reset_level(); des.reset_level();
des.level_init({ style = "solidfill", fg = ".", lit = true }); des.level_init({ style = "solidfill", fg = ".", lit = true });