Lua: Traps without victims

Traps may get corpses generated on them on early dungeon levels,
to warn off fragile starting heroes. Allow creating traps in lua
without the corpse.
This commit is contained in:
Pasi Kallinen
2023-02-25 17:56:44 +02:00
parent 4fd7d51cb2
commit 00c756ba75
5 changed files with 9 additions and 1 deletions

View File

@@ -1540,7 +1540,8 @@ mktrap(
lethal, and tend not to generate on shallower levels anyway.
Finally, pits are excluded because it's weird to see an item
in a pit and yet not be able to identify that the pit is there. */
if (kind != NO_TRAP && lvl <= (unsigned) rnd(4)
if (kind != NO_TRAP && !(mktrapflags & MKTRAP_NOVICTIM)
&& lvl <= (unsigned) rnd(4)
&& kind != SQKY_BOARD && kind != RUST_TRAP
/* rolling boulder trap might not have a boulder if there was no
viable path (such as when placed in the corner of a room), in

View File

@@ -1797,6 +1797,8 @@ create_trap(spltrap* t, struct mkroom* croom)
mktrap_flags |= MKTRAP_NOSPIDERONWEB;
if (t->seen)
mktrap_flags |= MKTRAP_SEEN;
if (t->novictim)
mktrap_flags |= MKTRAP_NOVICTIM;
tm.x = x;
tm.y = y;
@@ -4275,6 +4277,7 @@ lspo_trap(lua_State *L)
tmptrap.spider_on_web = TRUE;
tmptrap.seen = FALSE;
tmptrap.novictim = FALSE;
if (argc == 1 && lua_type(L, 1) == LUA_TSTRING) {
const char *trapstr = luaL_checkstring(L, 1);
@@ -4300,6 +4303,7 @@ lspo_trap(lua_State *L)
tmptrap.type = get_table_traptype_opt(L, "type", -1);
tmptrap.spider_on_web = get_table_boolean_opt(L, "spider_on_web", 1);
tmptrap.seen = get_table_boolean_opt(L, "seen", FALSE);
tmptrap.novictim = !get_table_boolean_opt(L, "victim", TRUE);
lua_getfield(L, -1, "launchfrom");
if (lua_type(L, -1) == LUA_TTABLE) {