From: Pasi Kallinen Date: Thu, 29 Jul 2021 04:36:08 +0000 (+0300) Subject: Lua: Allow setting debug_flags X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7bfbe0fba993e41d0417d437b67a13fc69a53489;p=nethack Lua: Allow setting debug_flags --- diff --git a/include/flag.h b/include/flag.h index c8a756714..fa8ed6f58 100644 --- a/include/flag.h +++ b/include/flag.h @@ -205,6 +205,7 @@ struct instance_flags { boolean vision_inited; /* true if vision is ready */ boolean sanity_check; /* run sanity checks */ boolean debug_mongen; /* debug: prevent monster generation */ + boolean debug_hunger; /* debug: prevent hunger */ boolean mon_polycontrol; /* debug: control monster polymorphs */ boolean in_dumplog; /* doing the dumplog right now? */ boolean in_parse; /* is a command being parsed? */ diff --git a/src/eat.c b/src/eat.c index 43b76c3e3..3d7133b72 100644 --- a/src/eat.c +++ b/src/eat.c @@ -2842,7 +2842,7 @@ gethungry(void) { int accessorytime; - if (u.uinvulnerable) + if (u.uinvulnerable || iflags.debug_hunger) return; /* you don't feel hungrier */ /* being polymorphed into a creature which doesn't eat prevents diff --git a/src/nhlua.c b/src/nhlua.c index e2704c3a5..95e5d7464 100644 --- a/src/nhlua.c +++ b/src/nhlua.c @@ -21,7 +21,7 @@ static int nhl_dnum_name(lua_State *); static int nhl_stairways(lua_State *); static int nhl_pushkey(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_getmap(lua_State *); static void nhl_add_table_entry_bool(lua_State *, const char *, boolean); @@ -973,17 +973,22 @@ nhl_doturn(lua_State *L) return 0; } -/* disable or enable monster generation. debugging use only. */ -/* disabling also kills all monsters on current level. */ -/* local prevvalue = nh.monster_generation(false); */ +/* set debugging flags. debugging use only, of course. */ +/* nh.debug_flags({ mongen = false, hunger = false }); */ static int -nhl_monster_generation(lua_State *L) +nhl_debug_flags(lua_State *L) { int argc = lua_gettop(L); - boolean val = !iflags.debug_mongen; /* value in lua is negated */ + int val; - if (argc == 1) { - iflags.debug_mongen = !lua_toboolean(L, 1); + int i; + + 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) { register struct monst *mtmp, *mtmp2; @@ -996,8 +1001,13 @@ nhl_monster_generation(lua_State *L) } } - lua_pushboolean(L, val); - return 1; + /* prevent hunger */ + 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}, {"pushkey", nhl_pushkey}, {"doturn", nhl_doturn}, - {"monster_generation", nhl_monster_generation}, + {"debug_flags", nhl_debug_flags}, {NULL, NULL} }; diff --git a/test/testmove.lua b/test/testmove.lua index 23956b446..3e591e36b 100644 --- a/test/testmove.lua +++ b/test/testmove.lua @@ -13,7 +13,7 @@ local POS = { x = 10, y = 05 }; local number_pad = 0; function initlev() - nh.monster_generation(false); + nh.debug_flags({mongen = false, hunger = false }); des.level_flags("noflip"); des.reset_level(); des.level_init({ style = "solidfill", fg = ".", lit = true });