Allow creating unhidden traps in special levels

des.trap({ type = "rust", seen = true });
This commit is contained in:
Pasi Kallinen
2022-02-19 12:38:24 +02:00
parent a1d5464fa7
commit c434236f1e
6 changed files with 11 additions and 0 deletions

View File

@@ -788,6 +788,7 @@ knights get no caitiff penalty against undead
candy bars are bright blue in text mode
towels weigh more than blindfolds
knight quest home level contains some saddled warhorses
allow creating unhidden traps in special levels
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository

View File

@@ -741,10 +741,13 @@ Example:
=== trap
Create a trap.
Example:
des.trap({ type = "hole", x = 1, y = 1 });
des.trap({ type = "hole", coord = {2, 2} });
des.trap({ type = "web", coord = {2, 2}, spider_on_web = false, seen = true });
des.trap("hole", 3, 4);
des.trap("level teleport", {5, 8});
des.trap("rust")

View File

@@ -519,6 +519,7 @@ enum bodypart_types {
#define MKTRAP_NOFLAGS 0x0
#define MKTRAP_MAZEFLAG 0x1 /* trap placed on coords as if in maze */
#define MKTRAP_NOSPIDERONWEB 0x2 /* web will not generate a spider */
#define MKTRAP_SEEN 0x4 /* trap is seen */
#define MON_POLE_DIST 5 /* How far monsters can use pole-weapons */
#define PET_MISSILE_RANGE2 36 /* Square of distance within which pets shoot */

View File

@@ -128,6 +128,7 @@ typedef struct {
packed_coord coord;
xchar x, y, type;
boolean spider_on_web;
boolean seen;
} spltrap;
typedef struct {

View File

@@ -1468,6 +1468,8 @@ mktrap(int num, int mktrapflags, struct mkroom *croom, coord *tm)
if (kind == WEB && !(mktrapflags & MKTRAP_NOSPIDERONWEB))
(void) makemon(&mons[PM_GIANT_SPIDER], m.x, m.y, NO_MM_FLAGS);
if ((mktrapflags & MKTRAP_SEEN))
t->tseen = TRUE;
/* The hero isn't the only person who's entered the dungeon in
search of treasure. On the very shallowest levels, there's a

View File

@@ -1743,6 +1743,8 @@ create_trap(spltrap* t, struct mkroom* croom)
if (!t->spider_on_web)
mktrap_flags |= MKTRAP_NOSPIDERONWEB;
if (t->seen)
mktrap_flags |= MKTRAP_SEEN;
tm.x = x;
tm.y = y;
@@ -4117,6 +4119,7 @@ lspo_trap(lua_State *L)
get_table_xy_or_coord(L, &x, &y);
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);
}
if (tmptrap.type == NO_TRAP)