Catch up with post-343 lev_comp changes
- Iced pools vs. iced moats - allow making map outer edges nonpasswall & nondiggable, so eg. xorns cannot be teleported there
This commit is contained in:
+5
-2
@@ -11,7 +11,7 @@
|
|||||||
# and receive your quest assignment.
|
# and receive your quest assignment.
|
||||||
#
|
#
|
||||||
MAZE: "Val-strt",' '
|
MAZE: "Val-strt",' '
|
||||||
FLAGS: noteleport,hardfloor
|
FLAGS: noteleport,hardfloor,icedpools
|
||||||
GEOMETRY:center,center
|
GEOMETRY:center,center
|
||||||
MAP
|
MAP
|
||||||
IIIIIIPPPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
|
IIIIIIPPPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
|
||||||
@@ -90,7 +90,7 @@ MONSTER: ('H',"fire giant"),(10,16),hostile
|
|||||||
#
|
#
|
||||||
|
|
||||||
MAZE: "Val-loca",' '
|
MAZE: "Val-loca",' '
|
||||||
FLAGS: hardfloor
|
FLAGS: hardfloor,icedpools
|
||||||
INIT_MAP: mines, '.', 'I', true, true, lit, false
|
INIT_MAP: mines, '.', 'I', true, true, lit, false
|
||||||
GEOMETRY:center,center
|
GEOMETRY:center,center
|
||||||
MAP
|
MAP
|
||||||
@@ -176,6 +176,7 @@ MONSTER:'H',random,hostile
|
|||||||
#
|
#
|
||||||
|
|
||||||
MAZE: "Val-goal", 'L'
|
MAZE: "Val-goal", 'L'
|
||||||
|
FLAGS: icedpools
|
||||||
INIT_MAP: mines, '.', 'L', true, true, lit, false
|
INIT_MAP: mines, '.', 'L', true, true, lit, false
|
||||||
GEOMETRY:center,center
|
GEOMETRY:center,center
|
||||||
MAP
|
MAP
|
||||||
@@ -266,6 +267,7 @@ MONSTER:'H',random,hostile
|
|||||||
#
|
#
|
||||||
|
|
||||||
MAZE: "Val-fila" , 'I'
|
MAZE: "Val-fila" , 'I'
|
||||||
|
FLAGS: icedpools
|
||||||
INIT_MAP: mines, '.', 'I', true, true, lit, false
|
INIT_MAP: mines, '.', 'I', true, true, lit, false
|
||||||
NOMAP
|
NOMAP
|
||||||
#
|
#
|
||||||
@@ -299,6 +301,7 @@ TRAP: random, random
|
|||||||
TRAP: random, random
|
TRAP: random, random
|
||||||
|
|
||||||
MAZE: "Val-filb" , 'L'
|
MAZE: "Val-filb" , 'L'
|
||||||
|
FLAGS: icedpools
|
||||||
INIT_MAP: mines, '.', 'L', true, true, lit, false
|
INIT_MAP: mines, '.', 'L', true, true, lit, false
|
||||||
NOMAP
|
NOMAP
|
||||||
#
|
#
|
||||||
|
|||||||
+8
-8
@@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
### Bottom (first) level of Sokoban ###
|
### Bottom (first) level of Sokoban ###
|
||||||
MAZE:"soko4-1",' '
|
MAZE:"soko4-1",' '
|
||||||
FLAGS:noteleport,hardfloor,premapped
|
FLAGS:noteleport,hardfloor,premapped,solidify
|
||||||
GEOMETRY:center,center
|
GEOMETRY:center,center
|
||||||
#12345678901234567890123456789012345678901234567890
|
#12345678901234567890123456789012345678901234567890
|
||||||
MAP
|
MAP
|
||||||
@@ -98,7 +98,7 @@ OBJECT:'/',random
|
|||||||
|
|
||||||
|
|
||||||
MAZE:"soko4-2",' '
|
MAZE:"soko4-2",' '
|
||||||
FLAGS:noteleport,hardfloor,premapped
|
FLAGS:noteleport,hardfloor,premapped,solidify
|
||||||
GEOMETRY:center,center
|
GEOMETRY:center,center
|
||||||
#12345678901234567890123456789012345678901234567890
|
#12345678901234567890123456789012345678901234567890
|
||||||
MAP
|
MAP
|
||||||
@@ -163,7 +163,7 @@ OBJECT:'/',random
|
|||||||
|
|
||||||
### Second level ###
|
### Second level ###
|
||||||
MAZE:"soko3-1",' '
|
MAZE:"soko3-1",' '
|
||||||
FLAGS:noteleport,premapped
|
FLAGS:noteleport,premapped,solidify
|
||||||
GEOMETRY:center,center
|
GEOMETRY:center,center
|
||||||
#12345678901234567890123456789012345678901234567890
|
#12345678901234567890123456789012345678901234567890
|
||||||
MAP
|
MAP
|
||||||
@@ -239,7 +239,7 @@ OBJECT:'/',random
|
|||||||
|
|
||||||
|
|
||||||
MAZE:"soko3-2",' '
|
MAZE:"soko3-2",' '
|
||||||
FLAGS:noteleport,premapped
|
FLAGS:noteleport,premapped,solidify
|
||||||
GEOMETRY:center,center
|
GEOMETRY:center,center
|
||||||
#12345678901234567890123456789012345678901234567890
|
#12345678901234567890123456789012345678901234567890
|
||||||
MAP
|
MAP
|
||||||
@@ -308,7 +308,7 @@ OBJECT:'/',random
|
|||||||
|
|
||||||
### Third level ###
|
### Third level ###
|
||||||
MAZE:"soko2-1",' '
|
MAZE:"soko2-1",' '
|
||||||
FLAGS:noteleport,premapped
|
FLAGS:noteleport,premapped,solidify
|
||||||
GEOMETRY:center,center
|
GEOMETRY:center,center
|
||||||
#12345678901234567890123456789012345678901234567890
|
#12345678901234567890123456789012345678901234567890
|
||||||
MAP
|
MAP
|
||||||
@@ -373,7 +373,7 @@ OBJECT:'/',random
|
|||||||
|
|
||||||
|
|
||||||
MAZE:"soko2-2",' '
|
MAZE:"soko2-2",' '
|
||||||
FLAGS:noteleport,premapped
|
FLAGS:noteleport,premapped,solidify
|
||||||
GEOMETRY:center,center
|
GEOMETRY:center,center
|
||||||
#12345678901234567890123456789012345678901234567890
|
#12345678901234567890123456789012345678901234567890
|
||||||
MAP
|
MAP
|
||||||
@@ -440,7 +440,7 @@ OBJECT:'/',random
|
|||||||
|
|
||||||
### Top (last) level of Sokoban ###
|
### Top (last) level of Sokoban ###
|
||||||
MAZE:"soko1-1",' '
|
MAZE:"soko1-1",' '
|
||||||
FLAGS:noteleport,premapped
|
FLAGS:noteleport,premapped,solidify
|
||||||
GEOMETRY:center,center
|
GEOMETRY:center,center
|
||||||
#12345678901234567890123456789012345678901234567890
|
#12345678901234567890123456789012345678901234567890
|
||||||
MAP
|
MAP
|
||||||
@@ -538,7 +538,7 @@ ENGRAVING:$place[0],burn,"Elbereth"
|
|||||||
|
|
||||||
|
|
||||||
MAZE:"soko1-2",' '
|
MAZE:"soko1-2",' '
|
||||||
FLAGS:noteleport,premapped
|
FLAGS:noteleport,premapped,solidify
|
||||||
GEOMETRY:center,center
|
GEOMETRY:center,center
|
||||||
#12345678901234567890123456789012345678901234567890
|
#12345678901234567890123456789012345678901234567890
|
||||||
MAP
|
MAP
|
||||||
|
|||||||
+3
-3
@@ -6,7 +6,7 @@
|
|||||||
#
|
#
|
||||||
# Upper stage of Vlad's tower
|
# Upper stage of Vlad's tower
|
||||||
MAZE:"tower1",' '
|
MAZE:"tower1",' '
|
||||||
FLAGS: noteleport,hardfloor
|
FLAGS: noteleport,hardfloor,solidify
|
||||||
GEOMETRY:half-left,center
|
GEOMETRY:half-left,center
|
||||||
MAP
|
MAP
|
||||||
--- --- ---
|
--- --- ---
|
||||||
@@ -52,7 +52,7 @@ NON_DIGGABLE:(00,00,14,10)
|
|||||||
|
|
||||||
# Intermediate stage of Vlad's tower
|
# Intermediate stage of Vlad's tower
|
||||||
MAZE:"tower2",' '
|
MAZE:"tower2",' '
|
||||||
FLAGS: noteleport,hardfloor
|
FLAGS: noteleport,hardfloor,solidify
|
||||||
GEOMETRY:half-left,center
|
GEOMETRY:half-left,center
|
||||||
MAP
|
MAP
|
||||||
--- --- ---
|
--- --- ---
|
||||||
@@ -95,7 +95,7 @@ NON_DIGGABLE:(00,00,14,10)
|
|||||||
|
|
||||||
# Bottom most stage of Vlad's tower
|
# Bottom most stage of Vlad's tower
|
||||||
MAZE:"tower3",' '
|
MAZE:"tower3",' '
|
||||||
FLAGS: noteleport,hardfloor
|
FLAGS: noteleport,hardfloor,solidify
|
||||||
GEOMETRY:half-left,center
|
GEOMETRY:half-left,center
|
||||||
MAP
|
MAP
|
||||||
--- --- ---
|
--- --- ---
|
||||||
|
|||||||
+4
-3
@@ -28,7 +28,8 @@
|
|||||||
#define PREMAPPED 0x00000040L /* premapped level & sokoban rules */
|
#define PREMAPPED 0x00000040L /* premapped level & sokoban rules */
|
||||||
#define SHROUD 0x00000080L
|
#define SHROUD 0x00000080L
|
||||||
#define GRAVEYARD 0x00000100L
|
#define GRAVEYARD 0x00000100L
|
||||||
|
#define ICEDPOOLS 0x00000200L /* for ice locations: ICED_POOL vs ICED_MOAT */
|
||||||
|
#define SOLIDIFY 0x00000400L /* outer areas are nondiggable & nonpasswall */
|
||||||
|
|
||||||
/* different level layout initializers */
|
/* different level layout initializers */
|
||||||
#define LVLINIT_NONE 0
|
#define LVLINIT_NONE 0
|
||||||
@@ -278,8 +279,8 @@ struct sp_frame {
|
|||||||
struct sp_coder {
|
struct sp_coder {
|
||||||
struct splevstack *stack;
|
struct splevstack *stack;
|
||||||
struct sp_frame *frame;
|
struct sp_frame *frame;
|
||||||
/*int allow_flips;*/
|
|
||||||
int premapped;
|
int premapped;
|
||||||
|
boolean solidify;
|
||||||
struct mkroom *croom;
|
struct mkroom *croom;
|
||||||
struct mkroom *tmproomlist[MAX_NESTED_ROOMS+1];
|
struct mkroom *tmproomlist[MAX_NESTED_ROOMS+1];
|
||||||
boolean failed_room[MAX_NESTED_ROOMS+1];
|
boolean failed_room[MAX_NESTED_ROOMS+1];
|
||||||
@@ -331,7 +332,7 @@ typedef struct {
|
|||||||
char fg, bg;
|
char fg, bg;
|
||||||
boolean smoothed, joined;
|
boolean smoothed, joined;
|
||||||
xchar lit, walled;
|
xchar lit, walled;
|
||||||
boolean icedpools; /* for ice locations: ICED_POOL vs ICED_MOAT */
|
boolean icedpools;
|
||||||
} lev_init;
|
} lev_init;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|||||||
+41
-18
@@ -60,7 +60,9 @@ extern struct engr *head_engr;
|
|||||||
|
|
||||||
extern int min_rx, max_rx, min_ry, max_ry; /* from mkmap.c */
|
extern int min_rx, max_rx, min_ry, max_ry; /* from mkmap.c */
|
||||||
|
|
||||||
|
/* positions touched by level elements explicitly defined in the des-file */
|
||||||
static char SpLev_Map[COLNO][ROWNO];
|
static char SpLev_Map[COLNO][ROWNO];
|
||||||
|
|
||||||
static aligntyp ralign[3] = { AM_CHAOTIC, AM_NEUTRAL, AM_LAWFUL };
|
static aligntyp ralign[3] = { AM_CHAOTIC, AM_NEUTRAL, AM_LAWFUL };
|
||||||
static NEARDATA xchar xstart, ystart;
|
static NEARDATA xchar xstart, ystart;
|
||||||
static NEARDATA char xsize, ysize;
|
static NEARDATA char xsize, ysize;
|
||||||
@@ -78,6 +80,8 @@ struct mkroom * FDECL(build_room, (room *, struct mkroom *));
|
|||||||
char *lev_message = 0;
|
char *lev_message = 0;
|
||||||
lev_region *lregions = 0;
|
lev_region *lregions = 0;
|
||||||
int num_lregions = 0;
|
int num_lregions = 0;
|
||||||
|
boolean splev_init_present = FALSE;
|
||||||
|
boolean icedpools = FALSE;
|
||||||
|
|
||||||
struct obj *container_obj[MAX_CONTAINMENT];
|
struct obj *container_obj[MAX_CONTAINMENT];
|
||||||
int container_idx = 0;
|
int container_idx = 0;
|
||||||
@@ -86,6 +90,16 @@ struct monst *invent_carrying_monster = NULL;
|
|||||||
|
|
||||||
#define SPLEV_STACK_RESERVE 128
|
#define SPLEV_STACK_RESERVE 128
|
||||||
|
|
||||||
|
void
|
||||||
|
solidify_map()
|
||||||
|
{
|
||||||
|
xchar x, y;
|
||||||
|
for (x = 0; x < COLNO; x++)
|
||||||
|
for (y = 0; y < ROWNO; y++)
|
||||||
|
if (IS_STWALL(levl[x][y].typ) && !SpLev_Map[x][y])
|
||||||
|
levl[x][y].wall_info |= (W_NONDIGGABLE|W_NONPASSWALL);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
splev_stack_init(st)
|
splev_stack_init(st)
|
||||||
struct splevstack *st;
|
struct splevstack *st;
|
||||||
@@ -502,7 +516,7 @@ remove_boundary_syms()
|
|||||||
if (has_bounds) {
|
if (has_bounds) {
|
||||||
for(x = 0; x < x_maze_max; x++)
|
for(x = 0; x < x_maze_max; x++)
|
||||||
for(y = 0; y < y_maze_max; y++)
|
for(y = 0; y < y_maze_max; y++)
|
||||||
if ((levl[x][y].typ == CROSSWALL) && !SpLev_Map[x][y])
|
if ((levl[x][y].typ == CROSSWALL) && SpLev_Map[x][y])
|
||||||
levl[x][y].typ = ROOM;
|
levl[x][y].typ = ROOM;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1504,7 +1518,7 @@ struct mkroom *croom;
|
|||||||
if (o->corpsenm != NON_PM) {
|
if (o->corpsenm != NON_PM) {
|
||||||
if (o->corpsenm == NON_PM - 1)
|
if (o->corpsenm == NON_PM - 1)
|
||||||
set_corpsenm(otmp, rndmonnum());
|
set_corpsenm(otmp, rndmonnum());
|
||||||
else set_corpsenm(otmp, o->corpsenm);
|
else set_corpsenm(otmp, o->corpsenm);
|
||||||
}
|
}
|
||||||
/* set_corpsenm() took care of egg hatch and corpse timers */
|
/* set_corpsenm() took care of egg hatch and corpse timers */
|
||||||
|
|
||||||
@@ -1603,11 +1617,14 @@ struct mkroom *croom;
|
|||||||
for (wastyp = otmp->corpsenm; i < 1000 ; i++, wastyp = rndmonnum()) {
|
for (wastyp = otmp->corpsenm; i < 1000 ; i++, wastyp = rndmonnum()) {
|
||||||
/* makemon without rndmonst() might create a group */
|
/* makemon without rndmonst() might create a group */
|
||||||
was = makemon(&mons[wastyp], 0, 0, MM_NOCOUNTBIRTH);
|
was = makemon(&mons[wastyp], 0, 0, MM_NOCOUNTBIRTH);
|
||||||
if (was && !resists_ston(was)) {
|
if (was) {
|
||||||
|
if (!resists_ston(was)) {
|
||||||
(void) propagate(wastyp, TRUE, FALSE);
|
(void) propagate(wastyp, TRUE, FALSE);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
mongone(was);
|
||||||
|
was = NULL;
|
||||||
}
|
}
|
||||||
mongone(was);
|
|
||||||
}
|
}
|
||||||
if (was) {
|
if (was) {
|
||||||
set_corpsenm(otmp, wastyp);
|
set_corpsenm(otmp, wastyp);
|
||||||
@@ -2166,7 +2183,7 @@ fill_empty_maze()
|
|||||||
|
|
||||||
for(x = 2; x < x_maze_max; x++)
|
for(x = 2; x < x_maze_max; x++)
|
||||||
for(y = 0; y < y_maze_max; y++)
|
for(y = 0; y < y_maze_max; y++)
|
||||||
if(!SpLev_Map[x][y]) mapcount--;
|
if(SpLev_Map[x][y]) mapcount--;
|
||||||
|
|
||||||
if ((mapcount > (int) (mapcountmax / 10))) {
|
if ((mapcount > (int) (mapcountmax / 10))) {
|
||||||
mapfact = (int) ((mapcount * 100L) / mapcountmax);
|
mapfact = (int) ((mapcount * 100L) / mapcountmax);
|
||||||
@@ -2321,6 +2338,7 @@ lev_init *linit;
|
|||||||
case LVLINIT_MINES:
|
case LVLINIT_MINES:
|
||||||
if (linit->lit == -1) linit->lit = rn2(2);
|
if (linit->lit == -1) linit->lit = rn2(2);
|
||||||
if (linit->filling > -1) lvlfill_solid(linit->filling, 0);
|
if (linit->filling > -1) lvlfill_solid(linit->filling, 0);
|
||||||
|
linit->icedpools = icedpools;
|
||||||
mkmap(linit);
|
mkmap(linit);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -2796,6 +2814,8 @@ spo_level_flags(coder)
|
|||||||
if (flags & PREMAPPED) coder->premapped = TRUE;
|
if (flags & PREMAPPED) coder->premapped = TRUE;
|
||||||
if (flags & SHROUD) level.flags.hero_memory = 0;
|
if (flags & SHROUD) level.flags.hero_memory = 0;
|
||||||
if (flags & GRAVEYARD) level.flags.graveyard = 1;
|
if (flags & GRAVEYARD) level.flags.graveyard = 1;
|
||||||
|
if (flags & ICEDPOOLS) icedpools = TRUE;
|
||||||
|
if (flags & SOLIDIFY) coder->solidify = TRUE;
|
||||||
|
|
||||||
opvar_free(flagdata);
|
opvar_free(flagdata);
|
||||||
}
|
}
|
||||||
@@ -2816,6 +2836,8 @@ spo_initlevel(coder)
|
|||||||
!OV_pop_i(filling) ||
|
!OV_pop_i(filling) ||
|
||||||
!OV_pop_i(init_style)) return;
|
!OV_pop_i(init_style)) return;
|
||||||
|
|
||||||
|
splev_init_present = TRUE;
|
||||||
|
|
||||||
init_lev.init_style = OV_i(init_style);
|
init_lev.init_style = OV_i(init_style);
|
||||||
init_lev.fg = OV_i(fg);
|
init_lev.fg = OV_i(fg);
|
||||||
init_lev.bg = OV_i(bg);
|
init_lev.bg = OV_i(bg);
|
||||||
@@ -2978,16 +3000,10 @@ spo_stair(coder)
|
|||||||
if (!OV_pop_i(up) ||
|
if (!OV_pop_i(up) ||
|
||||||
!OV_pop_c(coord)) return;
|
!OV_pop_c(coord)) return;
|
||||||
|
|
||||||
if (coder->croom) {
|
get_location_coord(&x, &y, DRY, coder->croom, OV_i(coord));
|
||||||
get_location_coord(&x, &y, DRY, coder->croom, OV_i(coord));
|
if ((badtrap = t_at(x,y)) != 0) deltrap(badtrap);
|
||||||
mkstairs(x,y,(char)OV_i(up), coder->croom);
|
mkstairs(x, y, (char)OV_i(up), coder->croom);
|
||||||
SpLev_Map[x][y] = 1;
|
SpLev_Map[x][y] = 1;
|
||||||
} else {
|
|
||||||
get_location_coord(&x, &y, DRY, coder->croom, OV_i(coord));
|
|
||||||
if ((badtrap = t_at(x,y)) != 0) deltrap(badtrap);
|
|
||||||
mkstairs(x, y, (char)OV_i(up), coder->croom);
|
|
||||||
SpLev_Map[x][y] = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
opvar_free(coord);
|
opvar_free(coord);
|
||||||
opvar_free(up);
|
opvar_free(up);
|
||||||
@@ -3647,7 +3663,7 @@ sel_set_door(dx,dy,arg)
|
|||||||
typ = D_CLOSED;
|
typ = D_CLOSED;
|
||||||
}
|
}
|
||||||
levl[x][y].doormask = typ;
|
levl[x][y].doormask = typ;
|
||||||
/*SpLev_Map[x][y] = 1;*/
|
SpLev_Map[x][y] = 1;
|
||||||
|
|
||||||
/* Now the complicated part, list it with each subroom */
|
/* Now the complicated part, list it with each subroom */
|
||||||
/* The dog move and mail daemon routines use this */
|
/* The dog move and mail daemon routines use this */
|
||||||
@@ -4166,7 +4182,7 @@ redo_maploc:
|
|||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
switch((int) halign) {
|
switch((int) halign) {
|
||||||
case LEFT: xstart = 3; break;
|
case LEFT: xstart = splev_init_present ? 1 : 3; break;
|
||||||
case H_LEFT: xstart = 2+((x_maze_max-2-xsize)/4); break;
|
case H_LEFT: xstart = 2+((x_maze_max-2-xsize)/4); break;
|
||||||
case CENTER: xstart = 2+((x_maze_max-2-xsize)/2); break;
|
case CENTER: xstart = 2+((x_maze_max-2-xsize)/2); break;
|
||||||
case H_RIGHT: xstart = 2+((x_maze_max-2-xsize)*3/4); break;
|
case H_RIGHT: xstart = 2+((x_maze_max-2-xsize)*3/4); break;
|
||||||
@@ -4220,6 +4236,7 @@ redo_maploc:
|
|||||||
levl[x][y].horizontal = 0;
|
levl[x][y].horizontal = 0;
|
||||||
levl[x][y].roomno = 0;
|
levl[x][y].roomno = 0;
|
||||||
levl[x][y].edge = 0;
|
levl[x][y].edge = 0;
|
||||||
|
SpLev_Map[x][y] = 1;
|
||||||
/*
|
/*
|
||||||
* Set secret doors to closed (why not trapped too?). Set
|
* Set secret doors to closed (why not trapped too?). Set
|
||||||
* the horizontal bit.
|
* the horizontal bit.
|
||||||
@@ -4240,6 +4257,8 @@ redo_maploc:
|
|||||||
levl[x][y].horizontal = 1;
|
levl[x][y].horizontal = 1;
|
||||||
else if(levl[x][y].typ == LAVAPOOL)
|
else if(levl[x][y].typ == LAVAPOOL)
|
||||||
levl[x][y].lit = 1;
|
levl[x][y].lit = 1;
|
||||||
|
else if (splev_init_present && levl[x][y].typ == ICE)
|
||||||
|
levl[x][y].icedpool = icedpools ? ICED_POOL : ICED_MOAT;
|
||||||
}
|
}
|
||||||
if (coder->lvl_is_joined)
|
if (coder->lvl_is_joined)
|
||||||
remove_rooms(xstart, ystart, xstart+xsize, ystart+ysize);
|
remove_rooms(xstart, ystart, xstart+xsize, ystart+ysize);
|
||||||
@@ -4488,12 +4507,15 @@ sp_lev *lvl;
|
|||||||
coder->frame = frame_new(0);
|
coder->frame = frame_new(0);
|
||||||
coder->stack = NULL;
|
coder->stack = NULL;
|
||||||
coder->premapped = FALSE;
|
coder->premapped = FALSE;
|
||||||
/*coder->allow_flips = 3;*/
|
coder->solidify = FALSE;
|
||||||
coder->croom = NULL;
|
coder->croom = NULL;
|
||||||
coder->n_subroom = 1;
|
coder->n_subroom = 1;
|
||||||
coder->exit_script = FALSE;
|
coder->exit_script = FALSE;
|
||||||
coder->lvl_is_joined = 0;
|
coder->lvl_is_joined = 0;
|
||||||
|
|
||||||
|
splev_init_present = FALSE;
|
||||||
|
icedpools = FALSE;
|
||||||
|
|
||||||
if (wizard) {
|
if (wizard) {
|
||||||
char *met = nh_getenv("SPCODER_MAX_RUNTIME");
|
char *met = nh_getenv("SPCODER_MAX_RUNTIME");
|
||||||
if (met && met[0] == '1') max_execution = (1<<30) - 1;
|
if (met && met[0] == '1') max_execution = (1<<30) - 1;
|
||||||
@@ -5044,6 +5066,7 @@ next_opcode:
|
|||||||
count_features();
|
count_features();
|
||||||
|
|
||||||
if (coder->premapped) sokoban_detect();
|
if (coder->premapped) sokoban_detect();
|
||||||
|
if (coder->solidify) solidify_map();
|
||||||
|
|
||||||
if (coder->frame) {
|
if (coder->frame) {
|
||||||
struct sp_frame *tmpframe;
|
struct sp_frame *tmpframe;
|
||||||
|
|||||||
@@ -293,6 +293,8 @@ mazelevel { savetoken(yytext); yylval.i=MAZELEVEL; return FLAG_TYPE; }
|
|||||||
premapped { savetoken(yytext); yylval.i=PREMAPPED; return FLAG_TYPE; }
|
premapped { savetoken(yytext); yylval.i=PREMAPPED; return FLAG_TYPE; }
|
||||||
shroud { savetoken(yytext); yylval.i=SHROUD; return FLAG_TYPE; }
|
shroud { savetoken(yytext); yylval.i=SHROUD; return FLAG_TYPE; }
|
||||||
graveyard { savetoken(yytext); yylval.i=GRAVEYARD; return FLAG_TYPE; }
|
graveyard { savetoken(yytext); yylval.i=GRAVEYARD; return FLAG_TYPE; }
|
||||||
|
icedpools { savetoken(yytext); yylval.i=ICEDPOOLS; return FLAG_TYPE; }
|
||||||
|
solidify { savetoken(yytext); yylval.i=SOLIDIFY; return FLAG_TYPE; }
|
||||||
[0-9]+d[0-9]+ { char *p = strchr(yytext, 'd');
|
[0-9]+d[0-9]+ { char *p = strchr(yytext, 'd');
|
||||||
savetoken(yytext);
|
savetoken(yytext);
|
||||||
if (p) {
|
if (p) {
|
||||||
|
|||||||
Reference in New Issue
Block a user