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

View File

@@ -4,7 +4,7 @@
--
des.level_init({ style = "solidfill", fg = " " });
des.level_flags("mazelevel", "noteleport", "premapped", "solidify");
des.level_flags("mazelevel", "noteleport", "premapped", "sokoban", "solidify");
des.map([[
--------------------------
|........................|

View File

@@ -4,7 +4,7 @@
--
des.level_init({ style = "solidfill", fg = " " });
des.level_flags("mazelevel", "noteleport", "premapped", "solidify");
des.level_flags("mazelevel", "noteleport", "premapped", "sokoban", "solidify");
des.map([[
------------------------

View File

@@ -4,7 +4,7 @@
--
des.level_init({ style = "solidfill", fg = " " });
des.level_flags("mazelevel", "noteleport", "premapped", "solidify");
des.level_flags("mazelevel", "noteleport", "premapped", "sokoban", "solidify");
des.map([[
--------------------

View File

@@ -4,7 +4,7 @@
--
des.level_init({ style = "solidfill", fg = " " });
des.level_flags("mazelevel", "noteleport", "premapped", "solidify");
des.level_flags("mazelevel", "noteleport", "premapped", "sokoban", "solidify");
des.map([[
--------

View File

@@ -4,7 +4,7 @@
--
des.level_init({ style = "solidfill", fg = " " });
des.level_flags("mazelevel", "noteleport", "premapped", "solidify");
des.level_flags("mazelevel", "noteleport", "premapped", "sokoban", "solidify");
des.map([[
----------- -----------

View File

@@ -4,7 +4,7 @@
--
des.level_init({ style = "solidfill", fg = " " });
des.level_flags("mazelevel", "noteleport", "premapped", "solidify");
des.level_flags("mazelevel", "noteleport", "premapped", "sokoban", "solidify");
des.map([[
---- -----------

View File

@@ -35,7 +35,7 @@
--## Bottom (first) level of Sokoban ###
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([[
------ -----

View File

@@ -4,7 +4,7 @@
--
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([[
-------- ------

View File

@@ -1265,6 +1265,7 @@ if a temple was entered while blind, #overview could show a line of just "."
were known
rolling boulders ignored walls and trees
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

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.
| corrmaze |
| 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.
| inaccessibles | If inaccessible areas are generated, generate ways for them to connect to the "accessible" area.
| noflip | Prevent flipping the level.

View File

@@ -365,7 +365,7 @@ extern void find_trap(struct trap *);
extern void warnreveal(void);
extern int dosearch0(int);
extern int dosearch(void);
extern void sokoban_detect(void);
extern void premap_detect(void);
#ifdef DUMPLOG
extern void dump_map(void);
#endif

View File

@@ -1973,9 +1973,9 @@ warnreveal(void)
}
}
/* Pre-map the sokoban levels */
/* Pre-map (the sokoban) levels */
void
sokoban_detect(void)
premap_detect(void)
{
register coordxy x, y;
register struct trap *ttmp;
@@ -1997,9 +1997,6 @@ sokoban_detect(void)
for (ttmp = gf.ftrap; ttmp; ttmp = ttmp->ntrap) {
ttmp->tseen = 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;
}
}

View File

@@ -3714,6 +3714,8 @@ lspo_level_flags(lua_State *L)
gc.coder->premapped = 1;
else if (!strcmpi(s, "solidify"))
gc.coder->solidify = 1;
else if (!strcmpi(s, "sokoban"))
Sokoban = 1; /* gl.level.flags.sokoban_rules */
else if (!strcmpi(s, "inaccessibles"))
gc.coder->check_inaccessibles = 1;
else if (!strcmpi(s, "noflipx"))
@@ -6612,12 +6614,12 @@ lspo_finalize_level(lua_State *L UNUSED)
if (L && gc.coder->solidify)
solidify_map();
/* This must be done before sokoban_detect(),
/* This must be done before premap_detect(),
* otherwise branch stairs won't be premapped. */
fixup_special();
if (L && gc.coder->premapped)
sokoban_detect();
premap_detect();
level_finalize_topology();
@@ -7075,12 +7077,12 @@ load_special(const char *name)
if (gc.coder->solidify)
solidify_map();
/* This must be done before sokoban_detect(),
/* This must be done before premap_detect(),
* otherwise branch stairs won't be premapped. */
fixup_special();
if (gc.coder->premapped)
sokoban_detect();
premap_detect();
result = TRUE;
give_up: