Separate level flags for premapped and sokoban

This commit is contained in:
Pasi Kallinen
2023-10-29 12:35:32 +02:00
parent 638c487c59
commit 16ed7e49c3
13 changed files with 19 additions and 18 deletions
+1 -1
View File
@@ -4,7 +4,7 @@
-- --
des.level_init({ style = "solidfill", fg = " " }); des.level_init({ style = "solidfill", fg = " " });
des.level_flags("mazelevel", "noteleport", "premapped", "solidify"); des.level_flags("mazelevel", "noteleport", "premapped", "sokoban", "solidify");
des.map([[ des.map([[
-------------------------- --------------------------
|........................| |........................|
+1 -1
View File
@@ -4,7 +4,7 @@
-- --
des.level_init({ style = "solidfill", fg = " " }); des.level_init({ style = "solidfill", fg = " " });
des.level_flags("mazelevel", "noteleport", "premapped", "solidify"); des.level_flags("mazelevel", "noteleport", "premapped", "sokoban", "solidify");
des.map([[ des.map([[
------------------------ ------------------------
+1 -1
View File
@@ -4,7 +4,7 @@
-- --
des.level_init({ style = "solidfill", fg = " " }); des.level_init({ style = "solidfill", fg = " " });
des.level_flags("mazelevel", "noteleport", "premapped", "solidify"); des.level_flags("mazelevel", "noteleport", "premapped", "sokoban", "solidify");
des.map([[ des.map([[
-------------------- --------------------
+1 -1
View File
@@ -4,7 +4,7 @@
-- --
des.level_init({ style = "solidfill", fg = " " }); des.level_init({ style = "solidfill", fg = " " });
des.level_flags("mazelevel", "noteleport", "premapped", "solidify"); des.level_flags("mazelevel", "noteleport", "premapped", "sokoban", "solidify");
des.map([[ des.map([[
-------- --------
+1 -1
View File
@@ -4,7 +4,7 @@
-- --
des.level_init({ style = "solidfill", fg = " " }); des.level_init({ style = "solidfill", fg = " " });
des.level_flags("mazelevel", "noteleport", "premapped", "solidify"); des.level_flags("mazelevel", "noteleport", "premapped", "sokoban", "solidify");
des.map([[ des.map([[
----------- ----------- ----------- -----------
+1 -1
View File
@@ -4,7 +4,7 @@
-- --
des.level_init({ style = "solidfill", fg = " " }); des.level_init({ style = "solidfill", fg = " " });
des.level_flags("mazelevel", "noteleport", "premapped", "solidify"); des.level_flags("mazelevel", "noteleport", "premapped", "sokoban", "solidify");
des.map([[ des.map([[
---- ----------- ---- -----------
+1 -1
View File
@@ -35,7 +35,7 @@
--## Bottom (first) level of Sokoban ### --## Bottom (first) level of Sokoban ###
des.level_init({ style = "solidfill", fg = " " }); des.level_init({ style = "solidfill", fg = " " });
des.level_flags("mazelevel", "noteleport", "hardfloor", "premapped", "solidify"); des.level_flags("mazelevel", "noteleport", "hardfloor", "premapped", "sokoban", "solidify");
des.map([[ des.map([[
------ ----- ------ -----
+1 -1
View File
@@ -4,7 +4,7 @@
-- --
des.level_init({ style = "solidfill", fg = " " }); des.level_init({ style = "solidfill", fg = " " });
des.level_flags("mazelevel", "noteleport", "hardfloor", "premapped", "solidify"); des.level_flags("mazelevel", "noteleport", "hardfloor", "premapped", "sokoban", "solidify");
des.map([[ des.map([[
-------- ------ -------- ------
+1
View File
@@ -1265,6 +1265,7 @@ if a temple was entered while blind, #overview could show a line of just "."
were known were known
rolling boulders ignored walls and trees rolling boulders ignored walls and trees
shopkeepers consider the monster type when charging for tins, eggs and corpses shopkeepers consider the monster type when charging for tins, eggs and corpses
separate level flags premapped and sokoban
Fixes to 3.7.0-x General Problems Exposed Via git Repository Fixes to 3.7.0-x General Problems Exposed Via git Repository
+1
View File
@@ -624,6 +624,7 @@ Set flags for this level.
| icedpools | Ice generated with the level will be treated as frozen pools instead of frozen moats. | icedpools | Ice generated with the level will be treated as frozen pools instead of frozen moats.
| corrmaze | | corrmaze |
| premapped | Map, including traps and boulders, is revealed on entrance. | premapped | Map, including traps and boulders, is revealed on entrance.
| sokoban | Level has special Sokoban rules
| solidify | Areas outside the specified level map are made undiggable and unphaseable. | solidify | Areas outside the specified level map are made undiggable and unphaseable.
| inaccessibles | If inaccessible areas are generated, generate ways for them to connect to the "accessible" area. | inaccessibles | If inaccessible areas are generated, generate ways for them to connect to the "accessible" area.
| noflip | Prevent flipping the level. | noflip | Prevent flipping the level.
+1 -1
View File
@@ -365,7 +365,7 @@ extern void find_trap(struct trap *);
extern void warnreveal(void); extern void warnreveal(void);
extern int dosearch0(int); extern int dosearch0(int);
extern int dosearch(void); extern int dosearch(void);
extern void sokoban_detect(void); extern void premap_detect(void);
#ifdef DUMPLOG #ifdef DUMPLOG
extern void dump_map(void); extern void dump_map(void);
#endif #endif
+2 -5
View File
@@ -1973,9 +1973,9 @@ warnreveal(void)
} }
} }
/* Pre-map the sokoban levels */ /* Pre-map (the sokoban) levels */
void void
sokoban_detect(void) premap_detect(void)
{ {
register coordxy x, y; register coordxy x, y;
register struct trap *ttmp; register struct trap *ttmp;
@@ -1997,9 +1997,6 @@ sokoban_detect(void)
for (ttmp = gf.ftrap; ttmp; ttmp = ttmp->ntrap) { for (ttmp = gf.ftrap; ttmp; ttmp = ttmp->ntrap) {
ttmp->tseen = 1; ttmp->tseen = 1;
map_trap(ttmp, 1); map_trap(ttmp, 1);
/* set sokoban_rules when there is at least one pit or hole */
if (ttmp->ttyp == PIT || ttmp->ttyp == HOLE)
Sokoban = 1;
} }
} }
+6 -4
View File
@@ -3714,6 +3714,8 @@ lspo_level_flags(lua_State *L)
gc.coder->premapped = 1; gc.coder->premapped = 1;
else if (!strcmpi(s, "solidify")) else if (!strcmpi(s, "solidify"))
gc.coder->solidify = 1; gc.coder->solidify = 1;
else if (!strcmpi(s, "sokoban"))
Sokoban = 1; /* gl.level.flags.sokoban_rules */
else if (!strcmpi(s, "inaccessibles")) else if (!strcmpi(s, "inaccessibles"))
gc.coder->check_inaccessibles = 1; gc.coder->check_inaccessibles = 1;
else if (!strcmpi(s, "noflipx")) else if (!strcmpi(s, "noflipx"))
@@ -6612,12 +6614,12 @@ lspo_finalize_level(lua_State *L UNUSED)
if (L && gc.coder->solidify) if (L && gc.coder->solidify)
solidify_map(); solidify_map();
/* This must be done before sokoban_detect(), /* This must be done before premap_detect(),
* otherwise branch stairs won't be premapped. */ * otherwise branch stairs won't be premapped. */
fixup_special(); fixup_special();
if (L && gc.coder->premapped) if (L && gc.coder->premapped)
sokoban_detect(); premap_detect();
level_finalize_topology(); level_finalize_topology();
@@ -7075,12 +7077,12 @@ load_special(const char *name)
if (gc.coder->solidify) if (gc.coder->solidify)
solidify_map(); solidify_map();
/* This must be done before sokoban_detect(), /* This must be done before premap_detect(),
* otherwise branch stairs won't be premapped. */ * otherwise branch stairs won't be premapped. */
fixup_special(); fixup_special();
if (gc.coder->premapped) if (gc.coder->premapped)
sokoban_detect(); premap_detect();
result = TRUE; result = TRUE;
give_up: give_up: