diff --git a/dat/nhlib.lua b/dat/nhlib.lua index dcab6bc3e..368755efd 100644 --- a/dat/nhlib.lua +++ b/dat/nhlib.lua @@ -270,6 +270,18 @@ local tutorial_events = { tutorial_whitelist_commands["zap"] = true; end, }, + { + func = function() + if (u.uhunger < 148) then + tutorial_whitelist_commands["eat"] = true; + local o = obj.new("blessed food ration"); + o:placeobj(u.ux, u.uy); + nh.pline("Looks like you're getting hungry. You'll starve to death, unless you eat something.", true); + nh.pline("Comestibles are eaten with '" .. nh.eckey("eat") .. "'", true); + return true; + end + end + }, }; function tutorial_turn() diff --git a/doc/lua.adoc b/doc/lua.adoc index b05dfeb89..45a179ea3 100644 --- a/doc/lua.adoc +++ b/doc/lua.adoc @@ -331,10 +331,12 @@ Example: === pline Show the text in the message area. +Second parameter is an optional boolean; if true, force a `--more--` prompt. Example: nh.pline("Message text to show."); + nh.pline("Waiting for user.", true); === pushkey diff --git a/src/nhlua.c b/src/nhlua.c index e1c8f3dc4..a60707aea 100644 --- a/src/nhlua.c +++ b/src/nhlua.c @@ -603,14 +603,17 @@ nhl_impossible(lua_State *L) } /* pline("It hits!") */ +/* pline("It hits!", true) */ static int nhl_pline(lua_State *L) { int argc = lua_gettop(L); - if (argc == 1) + if (argc == 1 || argc == 2) { pline("%s", luaL_checkstring(L, 1)); - else + if (lua_toboolean(L, 2)) + display_nhwindow(WIN_MESSAGE, TRUE); /* --more-- */ + } else nhl_error(L, "Wrong args"); return 0; @@ -1593,6 +1596,7 @@ nhl_gamestate(lua_State *L) if (wornmask) setworn(otmp, wornmask); } + init_uhunger(); stored = FALSE; } else { /* store game state */