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:28 +02:00
parent a1d5464fa7
commit c434236f1e
6 changed files with 11 additions and 0 deletions
+1
View File
@@ -788,6 +788,7 @@ knights get no caitiff penalty against undead
candy bars are bright blue in text mode candy bars are bright blue in text mode
towels weigh more than blindfolds towels weigh more than blindfolds
knight quest home level contains some saddled warhorses 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 Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
+3
View File
@@ -741,10 +741,13 @@ Example:
=== trap === trap
Create a trap.
Example: Example:
des.trap({ type = "hole", x = 1, y = 1 }); des.trap({ type = "hole", x = 1, y = 1 });
des.trap({ type = "hole", coord = {2, 2} }); 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("hole", 3, 4);
des.trap("level teleport", {5, 8}); des.trap("level teleport", {5, 8});
des.trap("rust") des.trap("rust")
+1
View File
@@ -519,6 +519,7 @@ enum bodypart_types {
#define MKTRAP_NOFLAGS 0x0 #define MKTRAP_NOFLAGS 0x0
#define MKTRAP_MAZEFLAG 0x1 /* trap placed on coords as if in maze */ #define MKTRAP_MAZEFLAG 0x1 /* trap placed on coords as if in maze */
#define MKTRAP_NOSPIDERONWEB 0x2 /* web will not generate a spider */ #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 MON_POLE_DIST 5 /* How far monsters can use pole-weapons */
#define PET_MISSILE_RANGE2 36 /* Square of distance within which pets shoot */ #define PET_MISSILE_RANGE2 36 /* Square of distance within which pets shoot */
+1
View File
@@ -128,6 +128,7 @@ typedef struct {
packed_coord coord; packed_coord coord;
xchar x, y, type; xchar x, y, type;
boolean spider_on_web; boolean spider_on_web;
boolean seen;
} spltrap; } spltrap;
typedef struct { typedef struct {
+2
View File
@@ -1468,6 +1468,8 @@ mktrap(int num, int mktrapflags, struct mkroom *croom, coord *tm)
if (kind == WEB && !(mktrapflags & MKTRAP_NOSPIDERONWEB)) if (kind == WEB && !(mktrapflags & MKTRAP_NOSPIDERONWEB))
(void) makemon(&mons[PM_GIANT_SPIDER], m.x, m.y, NO_MM_FLAGS); (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 /* The hero isn't the only person who's entered the dungeon in
search of treasure. On the very shallowest levels, there's a search of treasure. On the very shallowest levels, there's a
+3
View File
@@ -1743,6 +1743,8 @@ create_trap(spltrap* t, struct mkroom* croom)
if (!t->spider_on_web) if (!t->spider_on_web)
mktrap_flags |= MKTRAP_NOSPIDERONWEB; mktrap_flags |= MKTRAP_NOSPIDERONWEB;
if (t->seen)
mktrap_flags |= MKTRAP_SEEN;
tm.x = x; tm.x = x;
tm.y = y; tm.y = y;
@@ -4117,6 +4119,7 @@ lspo_trap(lua_State *L)
get_table_xy_or_coord(L, &x, &y); get_table_xy_or_coord(L, &x, &y);
tmptrap.type = get_table_traptype_opt(L, "type", -1); tmptrap.type = get_table_traptype_opt(L, "type", -1);
tmptrap.spider_on_web = get_table_boolean_opt(L, "spider_on_web", 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) if (tmptrap.type == NO_TRAP)