- Added new sprite images

- Added new tile: trampoline
- Bugfix: Collision detection sometimes didn't work
- Bugfix: Jumping out of water didn't work
- Spiders now have a delay between drops
- Bugfix: Jumping near a wall sometimes didn't work
- There are now 2 layer of tiles - so that tiles such as spikes
  can be placed on top of any tile type.
- Removed tiles which are now redundant: waterspikes, cavespikes, etc
- Made some tiles transparent now that a 2nd layer is possible (eg. 
  ladder, bridge)
This commit is contained in:
Rob Pearce 2008-09-29 08:32:56 +00:00
parent d1786a5f11
commit e345436130
30 changed files with 567 additions and 153 deletions

10
defs.h
View File

@ -85,7 +85,7 @@
/* enums */
/* sounds */
#define MAXFX 14
#define MAXFX 15
#define FX_SHOOT 0
#define FX_SLAM 1
#define FX_KILL 2
@ -100,6 +100,7 @@
#define FX_BONUS 11
#define FX_MORPH 12
#define FX_BOOM 13
#define FX_SPRING 14
// Slope types
#define S_NOTSOLID 0
@ -191,6 +192,8 @@
#define T_WATERTOP 15
#define T_WATERSPIKES 16
#define T_BRIDGE 17 // like land but you can drop down through it
#define T_TRAMPUP 18
#define T_TRAMPDOWN 19
// death states
#define D_INITIAL (1) // Need to trigger death sequence
@ -263,6 +266,7 @@ typedef struct level_s {
char *tileset;
char name[SMALLBUFLEN];
int map[LEVELW*LEVELH];
int map2[LEVELW*LEVELH]; // second map layer
int tileframe[LEVELW*LEVELH]; // tracks frame numbers for tiles
int *animtiles; // array of offsets to map positions which are animated
struct level_s *next;
@ -307,6 +311,10 @@ typedef struct sprite_s {
int netystart; // y position of start of net
int powerup; // what temp powerup does the player have?
int ontramp; // on a trampoline?
int trampx; // x,y coords for trampoline we are/were on
int trampy; //
// monster only
int willbecome; // what fruit this will become when dead
int angry; // is this sprite in ANGRY mode for its AI?

34
edit.c
View File

@ -30,6 +30,8 @@ int modified = B_FALSE; // has the current level been modified since last save?
int curworld = 1;
int curlevelnum;
int layer = 1; // which layer we are editting, either 1 or 2
int main (int argc, char **argv) {
Uint8 *keys;
char filename[BUFLEN];
@ -194,8 +196,19 @@ int main (int argc, char **argv) {
/* place selected tile at mouse pos */
x = (mx / TILEW);
y = (my / TILEH);
if (layer == 1) {
curlevel->map[y*LEVELW+x] = seltile->uniqid;
curlevel->tileframe[y*LEVELW+x] = 0;
} else {
// if there's nothing at layer1, it goes there
//if (curlevel->map[y*LEVELW+x] == T_BLANK) {
// printf("falling to layer 1\n");
// curlevel->map[y*LEVELW+x] = seltile->uniqid;
// curlevel->tileframe[y*LEVELW+x] = 0;
//} else {
curlevel->map2[y*LEVELW+x] = seltile->uniqid;
//}
}
// redraw tile and sprites
drawtile(screen,x,y);
drawsprites();
@ -263,6 +276,14 @@ int main (int argc, char **argv) {
if (keys[SDLK_1]) { // toggle layer
if (toggletimer == 0) {
layer = 3 - layer;
printf("Now editting layer %d\n",layer);
toggletimer = 30;
}
}
if (keys[SDLK_x]) { // delete monster
int donesomething = B_FALSE;
sprite_t *s, *nextone;
@ -306,10 +327,12 @@ int main (int argc, char **argv) {
} else {
curlevel->map[offset] = T_BLANK;
}
curlevel->map2[offset] = T_BLANK;
drawtile(screen,x,y);
}
}
printf("cleared level\n");
toggletimer = 30;
}
}
@ -605,6 +628,17 @@ int savelevel(int wnum, int lnum) {
fprintf(f, "\n");
}
fprintf(f, "layer2\n");
/* 2nd layer data - only where needed */
for (y = 0; y < LEVELH; y++) {
for (x = 0; x < LEVELW; x++) {
if (level->map2[y*LEVELW+x] != T_BLANK) {
// x,y,tileid
fprintf(f, "%d,%d,%d\n",x,y,level->map2[y*LEVELW+x]);
}
}
}
fclose(f);
printf("Level saved to '%s'\n",filename);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 328 B

After

Width:  |  Height:  |  Size: 398 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 331 B

After

Width:  |  Height:  |  Size: 349 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 330 B

After

Width:  |  Height:  |  Size: 325 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 663 B

After

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 695 B

BIN
newtiles/girder.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 213 B

After

Width:  |  Height:  |  Size: 276 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 579 B

After

Width:  |  Height:  |  Size: 348 B

BIN
newtiles/trampdown.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 B

BIN
newtiles/trampup.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 418 B

194
rc.c
View File

@ -179,7 +179,6 @@ int main (int argc, char **argv) {
curlevelnum-- ; // since nexlevel() will increment it
nextlevel();
//drawlevel();
/* TODO: place player */
flip();
timer = 0;
@ -305,10 +304,31 @@ int main (int argc, char **argv) {
}
if (keys[SDLK_x]) {
if (isinwater(player)) {
player->jumping = B_FALSE;
if (!player->jumping) {
//player->jumping = B_FALSE;
player->falling = B_FALSE;
if (!isroofabove(player)) {
// is there water above us too?
if (isinwaterpoint(player->x, player->y-TILEH)) {
// if so, swim up
player->y -= (getspeed(player)*3);
} else {
int whichway;
// if not, jump up
player->climbing = B_FALSE;
if (keys[SDLK_RIGHT]) {
whichway = 1;
} else if (keys[SDLK_LEFT]) {
whichway = -1;
} else {
whichway = 0;
}
// TODO: change to splash
playfx(FX_JUMP);
jump(player, whichway);
}
}
}
} else {
if (!player->jumping) {
@ -332,7 +352,12 @@ int main (int argc, char **argv) {
} else {
whichway = 0;
}
if (player->ontramp) {
playfx(FX_SPRING);
} else {
playfx(FX_JUMP);
}
jump(player, whichway);
}
}
@ -610,7 +635,7 @@ void jump(sprite_t *s, int dir) {
if (s->jumping) return;
if (s->jumptimer) return;
if (isonground(s)) {
if (isonground(s) || isinwater(s)) {
if (ismonster(s->id)) {
s->jumpdir = dir;
if (s->jumpdir != 0) {
@ -623,9 +648,13 @@ void jump(sprite_t *s, int dir) {
s->dir = s->jumpdir;
}
s->jumping = 1;
if (s->ontramp) {
s->jumpspeed = 7;
} else {
s->jumpspeed = 5;
}
}
}
}
void die(sprite_t *s) {
@ -702,20 +731,22 @@ void cleanup(void) {
void checkcollide(sprite_t *s) {
sprite_t *s2;
int collide;
int keepchecking;
int xdiff,ydiff;
for (s2 = sprite ; s2 ; s2 = s2->next) {
collide = B_TRUE;
if (s2 == s) collide = B_FALSE;
else if (s->dead) collide = B_FALSE;
else if (s2->dead) collide = B_FALSE;
else if (s->caughtby) collide = B_FALSE;
else if (s2->caughtby) collide = B_FALSE;
if (collide) {
if (s2 == s) continue;
else if (s->dead) continue;
else if (s2->dead) continue;
else if (s->caughtby) continue;
else if (s2->caughtby) continue;
else if (s2->teleporting) continue;
keepchecking = B_TRUE;
/* check for colission with our net */
if ((s->netting) && (!s2->caughtby)) {
if (s->netting ) {
if (ismonster(s2->id) && s2->id != P_CLOUD) {
xdiff = (s->x + s->netlen*s->netdir) - s2->x;
if (xdiff < 0) xdiff = -xdiff;
@ -745,20 +776,29 @@ void checkcollide(sprite_t *s) {
s2->willbecome = P_DIAMOND;
playfx(FX_KILL);
keepchecking = B_FALSE;
} else {
// otherwise we caught it if we have enough nets
if (s->netcaught < s->netmax) {
s2->caughtby = s;
s2->jumping = 0;
s2->jumping = B_FALSE;
s2->falling = 0;
s2->caughtstate = C_NETTING;
s->netcaught++;
keepchecking = B_FALSE;
}
}
}
}
} else {
/* check for collision with us */
} // end if s->netting
// don't keep going if this sprite has now been killed/caught
if (!keepchecking) continue;
/* now check for collision with us */
xdiff = s->x - s2->x;
if (xdiff < 0) xdiff = -xdiff;
ydiff = (s->y-(s->img->h/2)) - (s2->y-(s2->img->h/2));
@ -767,8 +807,11 @@ void checkcollide(sprite_t *s) {
if ((xdiff <= s->img->w/2 + s2->img->w/2) &&
(ydiff <= s->img->h/2 + s2->img->h/2)) {
/* COLLISION! */
if (isfruit(s2->id) && (s2->teleporting == 0)) {
if (s == player) {
// was it with the player?
if (s == player) { // TODO: redundant - we only ever call checkcollide() for the player!
//if (isfruit(s2->id) && (s2->teleporting == 0)) {
if (isfruit(s2->id)) {
int gotscore = s2->score;
/* kill the fruit */
@ -781,17 +824,14 @@ void checkcollide(sprite_t *s) {
sprintf(tempm, "%d", gotscore);
addtext(s2->x,s2->y - s2->img->h/2, TEXTSIZE_POINTS, tempm, &white,POINTSDELAY);
}
}
}
if (ismonster(s2->id) || isbullet(s2->id)) {
if ((s == player) && (!s->invuln)) {
} else if (ismonster(s2->id) || isbullet(s2->id)) {
if (!s->invuln) {
die(s);
}
}
}
}
}
}
} // end for each sprite
}
@ -1238,7 +1278,6 @@ void movesprite(sprite_t *s) {
if (s->timer1) {
s->timer1--;
if (s->timer1 == 0) {
printf("can shoot again\n");
}
}
if (!s->falling) {
@ -1391,6 +1430,16 @@ printf("can shoot again\n");
s->dir = absxs;
s->moved = B_TRUE;
} else if (s->id == P_SPIDER) {
/* timer1 loopsfrom 0 - 45
if timer2 is 0, we can shoot. if it is 1, we can't.
*/
if (s->timer1) {
s->timer1--;
}
/* if on ground, go up */
if (isonground(s) && !s->flies) {
s->flies = B_TRUE;
@ -1428,7 +1477,9 @@ printf("can shoot again\n");
/* drop if player is close */
xdiff = player->x - s->x;
if (xdiff < 0) xdiff =-xdiff;
if ((player->y > s->y) && (xdiff <= (TILEW*2))) {
if ((player->y > s->y) && (xdiff <= (TILEW*2)) && (s->timer1 == 0)) {
s->timer1 = 100;
s->flies = B_FALSE;
s->falling = B_TRUE;
s->fallspeed = 8;
@ -1523,13 +1574,14 @@ void dotileeffects(sprite_t *s) {
tiletype_t *tt;
int finished = B_FALSE;
int state = 0;
int tilex,tiley;
if (s->jumping || s->dead || s->caughtby) {
return;
}
/* check where we are */
tt = gettileat(s->x,s->y-2,NULL,NULL);
tt = gettileat(s->x,s->y-2,&tilex,&tiley);
if ((tt->id == T_TELEPORT) || (tt->id == T_TELEPORT2)) {
if (s->id == P_PLAYER || ismonster(s->id)) {
if (s->id != P_CLOUD) {
@ -1538,9 +1590,14 @@ void dotileeffects(sprite_t *s) {
}
}
/* check under us */
tt = gettileat(s->x,s->y+3,NULL,NULL);
tt = gettileat(s->x,s->y+3,&tilex,&tiley);
// CHECKS WHICH COUlD APPLY TO TILES UNDER AND SLIGHTLY LEFT/RIGHT OF US
while (!finished) {
if (tt->id == T_RIGHT) {
if (!ismonster(s->id) && !isfruit(s->id)) {
movex(s, 1.5);
@ -1560,14 +1617,39 @@ void dotileeffects(sprite_t *s) {
}
}
finished = B_TRUE;
} else if (tt->id == T_TRAMPUP) {
/* tile changes to trampoline down */
// are we on a trampoline already?
if (s->ontramp) {
// a different one?
if ((s->trampx != tilex) || (s->trampy != tiley)) {
// if a different one, release it
curlevel->map[s->trampy * LEVELW + s->trampx] = getuniq(T_TRAMPUP);
drawtile(temps, s->trampx, s->trampy);
}
} else {
// remember we were on it so it can release
s->ontramp = B_TRUE;
s->trampx = tilex;
s->trampy = tiley;
// move it down then draw it
curlevel->map[tiley*LEVELW+tilex] = getuniq(T_TRAMPDOWN);
drawtile(temps, tilex, tiley);
}
finished = B_TRUE;
} else if (tt->id == T_TRAMPDOWN) {
// don't keep checking tiles left/right
finished = B_TRUE;
} else {
if (state == 0) {
/* check tile to our right */
tt = gettileat(s->x + s->img->w/2,s->y+3,NULL,NULL);
tt = gettileat(s->x + s->img->w/2,s->y+3,&tilex,&tiley);
state = 1;
} else if (state == 1) {
/* check tile to our left */
tt = gettileat(s->x - s->img->w/2,s->y+3,NULL,NULL);
tt = gettileat(s->x - s->img->w/2,s->y+3,&tilex,&tiley);
state = 2;
} else {
finished = B_TRUE;
@ -2152,8 +2234,12 @@ int isladderabove(sprite_t *s) {
}
int isinwater(sprite_t *s) {
return isinwaterpoint(s->x, s->y - s->img->h/2);
}
int isinwaterpoint(int x, int y) {
tiletype_t *tt;
tt = gettileat(s->x, s->y - s->img->h/2, NULL, NULL);
tt = gettileat(x, y, NULL, NULL);
if (tt->water) {
return B_TRUE;
}
@ -2167,9 +2253,9 @@ int isroofabove(sprite_t *s) {
/* get tile above sprite's head */
tt = gettileat(s->x, s->y - s->img->h,NULL,NULL);
if (tt->solid) return B_TRUE;
tt = gettileat(s->x + s->img->w/2, s->y - s->img->h,NULL,NULL);
tt = gettileat(s->x + s->img->w/3, s->y - s->img->h,NULL,NULL);
if (tt->solid) return B_TRUE;
tt = gettileat(s->x - s->img->w/2, s->y - s->img->h,NULL,NULL);
tt = gettileat(s->x - s->img->w/3, s->y - s->img->h,NULL,NULL);
if (tt->solid) return B_TRUE;
return B_FALSE;
@ -2275,6 +2361,25 @@ int isongroundpoint(sprite_t *s, int x,int y) {
void dogravity(sprite_t *s) {
sprite_t *s2;
tiletype_t *tt;
int tilex,tiley;
// if we were on a trampoline and are now not, it releases */
tt = gettileat(s->x,s->y,&tilex,&tiley);
if (s->ontramp) {
if (s->trampy != tiley) {
// change tile type
curlevel->map[s->trampy * LEVELW + s->trampx] = getuniq(T_TRAMPUP);
drawtile(temps, s->trampx, s->trampy);
// update sprite settings
s->ontramp = B_FALSE;
s->trampx = -1;
s->trampy = -1;
}
}
if (s->dead) return;
if (s->flies) return;
@ -2293,9 +2398,10 @@ void dogravity(sprite_t *s) {
s->y -= s->jumpspeed;
s->jumping++;
if (s->jumping % 5 == 0) {
if (s->jumpspeed > 0) s->jumpspeed--;
else {
s->jumping = 0;
if (s->jumpspeed > 0) {
s->jumpspeed--;
} else {
s->jumping = B_FALSE;
s->falling = B_TRUE;
s->fallspeed = 0;
}
@ -2305,7 +2411,7 @@ void dogravity(sprite_t *s) {
/* can jump through one tile, but not two or more */
if (isroofabove(s) && isroofnabove(s,2)) {
/* stop jumping */
s->jumping = 0;
s->jumping = B_FALSE;
s->falling = B_TRUE;
s->fallspeed = 0;
}
@ -2482,7 +2588,7 @@ int movex(sprite_t *s,double amt) {
curx = s->x;
cury = s->y;
/* check for blockage in front of us */
/* check for blockage to E/W */
//newx = s->x + (amtdir*(s->img->w/2));
newx = s->x + (amtdir*TILEW/2);
newy = cury-TILEH;
@ -2494,6 +2600,19 @@ int movex(sprite_t *s,double amt) {
return B_TRUE;
}
// if falling, check the tile directly to our SW/SEtoo */
if (s->falling) {
newx = s->x + (amtdir*TILEW/2);
newy = cury;
tt2 = gettileat(newx,newy,&newtilex,&newtiley);
if (tt2->solid == S_SOLID) {
return B_TRUE;
}
if (tt2->solid == S_SLOPE && (!candoslopes(s->id))) {
return B_TRUE;
}
}
/* get new position */
newx = curx + amt;
newy = cury-2;
@ -2759,6 +2878,7 @@ int initsound(void) {
loadfx(FX_BONUS, "bonus.wav");
loadfx(FX_MORPH, "morph.wav");
loadfx(FX_BOOM, "boom.wav");
loadfx(FX_SPRING, "spring.wav");
// load sound effects

1
rc.h
View File

@ -14,6 +14,7 @@ int movex(sprite_t *s,double amt);
void bouncesprite(sprite_t *s);
void movesprite(sprite_t *s);
int isinwater(sprite_t *s);
int isinwaterpoint(int x, int y);
int isroofabove(sprite_t *s);
int isroofnabove(sprite_t *s,int howfar);
int isonground(sprite_t *s);

View File

@ -23,6 +23,7 @@
int loadlevel(int wnum, int lnum) {
FILE *f;
int x,y;
int xx,yy;
char buf[BUFLEN];
char buf2[BUFLEN];
char filename[BUFLEN];
@ -38,6 +39,7 @@ int loadlevel(int wnum, int lnum) {
tiletype_t *lasttile;
int newversion;
int numanim = 0;
int leveldone;
int tempanim[LEVELW*LEVELH];
int numenemies = 0;
@ -322,7 +324,8 @@ printf("got %d monsters\n", numenemies);
x = 0;
y = 0;
while (!feof(f)) {
leveldone = B_FALSE;
while (!leveldone) {
/* process a line of level data */
if (newversion) {
strncpy(buf2, buf, BUFLEN);
@ -532,6 +535,35 @@ printf("got %d monsters\n", numenemies);
y++;
x = 0;
fgets(buf, BUFLEN, f);
if (feof(f)) {
leveldone = B_TRUE;
} else if (strstr(buf, "layer2")) {
leveldone = B_TRUE;
}
}
// clear out layer2 by default
for (xx = 0; xx < LEVELW; xx++) {
for (yy = 0; yy < LEVELH; yy++) {
level->map2[yy*LEVELW+xx] = T_BLANK;
}
}
if (!feof(f)) {
int tid,xx,yy;
printf("found second layer\n");
// second layer exists - read it
fgets(buf, BUFLEN, f);
while (!feof(f)) {
// format is x,y,tileid
p = strtok(buf, ","); xx = atoi(p);
p = strtok(NULL, ","); yy = atoi(p);
p = strtok(NULL, ","); tid = atoi(p);
level->map2[yy*LEVELW+xx] = tid;
fgets(buf, BUFLEN, f);
}
}
fclose(f);
@ -647,6 +679,9 @@ void setdefaults(sprite_t *s) {
s->netbig = 0;
s->dropping = 0;
s->dropx = -1;
s->ontramp = B_FALSE;
s->trampx = -1;
s->trampy = -1;
s->quickdie = B_FALSE;
s->dropy = -1;
s->falling = 0;
@ -752,6 +787,8 @@ sprite_t *addsprite(int id, int x, int y, char *name ) {
tiletype_t *gettileat(int pixx,int pixy, int *tilex,int *tiley) {
int tx,ty;
int tid;
tx = pixx / TILEW;
ty = pixy / TILEH;
if (tilex != NULL) {
@ -761,7 +798,12 @@ tiletype_t *gettileat(int pixx,int pixy, int *tilex,int *tiley) {
*tiley = ty;
}
return gettile(curlevel->map[ty*LEVELW+tx]);
// return layer2 if it exists
tid = curlevel->map2[ty*LEVELW+tx];
if (tid == T_BLANK) {
tid = curlevel->map[ty*LEVELW+tx];
}
return gettile(tid);
}
int loadtiletypes(char *filename) {
@ -1390,6 +1432,8 @@ int isfruit(int id) {
case P_GEMYELLOW:
case P_GEMRED:
case P_GEMPURPLE:
/* misc */
case P_POWERUPPOS:
return B_TRUE;
}
@ -1593,16 +1637,26 @@ char monstertochar(int id ) {
return '\0';
}
tiletype_t *gettile(int tid) {
tiletype_t *gettile(int uniqid) {
tiletype_t *t;
for (t = tiletype; t ; t = t->next) {
if (t->uniqid == tid) return t;
if (t->uniqid == uniqid) return t;
}
return &fakeblock;
}
int getuniq(int tileid) {
tiletype_t *t;
for (t = tiletype; t ; t = t->next) {
if (t->id == tileid) return t->uniqid;
}
return 0;
}
void drawtile(SDL_Surface *where, int x, int y) {
SDL_Rect area;
tiletype_t *tt;
@ -1629,6 +1683,15 @@ void drawtile(SDL_Surface *where, int x, int y) {
SDL_BlitSurface(tt->img[frame], NULL, where, &area);
}
/* now draw layer2 if it exists */
if (curlevel->map2[offset] != T_BLANK) {
tt = gettile(curlevel->map2[offset]);
if (tt->id != curlevel->bgtileid) {
SDL_BlitSurface(tt->img[frame], NULL, where, &area);
}
}
}
void initglobals(void) {

View File

@ -28,7 +28,8 @@ void drawline16(SDL_Surface *screen, int x1, int y1, int x2, int y2, SDL_Color c
int getcolor(SDL_Surface *dest, int x, int y, SDL_Color *col);
int chartomonster(char ch);
char monstertochar(int id);
tiletype_t *gettile(int tid);
tiletype_t *gettile(int uniqid);
int getuniq(int tileid);
void drawtile(SDL_Surface *s, int x, int y);
void initglobals(void);
void killtext(text_t *t);

BIN
sprites/boxing.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

BIN
sprites/diamond.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
sprites/flowertodiamond.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 679 B

BIN
sprites/flowertogem.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 840 B

BIN
sprites/shield.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
sprites/shield.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

View File

@ -31,7 +31,7 @@ endmonsters
exitdir 1
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,18,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
@ -59,3 +59,4 @@ exitdir 1
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
layer2

View File

@ -6,6 +6,7 @@ help
endhelp
monsters
1 3 28
! 37 15
C 33 7
C 11 13
r 13 5
@ -32,7 +33,6 @@ P 36 24
P 38 24
S 31 24
r 20 21
! 37 15
endmonsters
exitdir 1
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
@ -41,27 +41,171 @@ exitdir 1
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,27,27,27,27,27,1,1,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,1,1,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,27,27,27,27,27,1,1,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,1,1,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,1,1,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,1,1,28,28,28,28,28,28,28,1,4,
4,1,1,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,1,1,27,27,27,27,27,27,27,1,4,
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,27,27,27,27,27,1,1,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,1,1,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,27,27,27,27,27,1,1,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,1,1,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,1,1,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,27,27,27,27,27,1,1,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,1,1,1,1,27,27,27,27,27,27,27,27,4,
4,27,27,27,27,27,1,1,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,1,1,1,1,27,27,27,27,27,27,27,27,4,
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,1,1,1,1,4,
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,27,27,27,1,28,28,28,28,28,28,28,28,28,28,28,28,28,1,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,27,27,27,1,27,27,27,27,27,27,27,27,27,27,27,27,27,1,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,1,1,1,1,1,27,27,27,27,27,27,4,
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,4,4,4,4,4,27,27,27,27,27,27,4,
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,4,4,4,4,4,4,27,27,27,27,27,27,4,
4,27,27,27,27,27,27,1,1,1,28,28,28,28,28,28,28,28,28,28,28,1,1,1,1,4,4,4,4,4,4,4,4,27,27,27,27,27,27,4,
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,1,4,4,4,4,4,27,27,27,27,27,27,4,
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,1,4,4,4,4,4,4,27,27,27,27,27,27,4,
4,27,27,27,27,27,27,1,1,1,27,27,27,27,27,27,27,27,27,27,27,1,1,1,1,4,4,4,4,4,4,4,4,27,27,27,27,27,27,4,
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
1,1,1,1,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,1,1,1,1,
1,1,1,1,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,1,1,1,1,
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
layer2
8,6,28
9,6,28
10,6,28
11,6,28
12,6,28
13,6,28
14,6,28
15,6,28
16,6,28
17,6,28
18,6,28
19,6,28
20,6,28
21,6,28
22,6,28
23,6,28
24,6,28
15,7,27
16,7,27
17,7,27
18,7,27
19,7,27
31,8,28
32,8,28
33,8,28
34,8,28
35,8,28
36,8,28
37,8,28
15,9,27
16,9,27
17,9,27
18,9,27
19,9,27
20,9,27
8,10,28
9,10,28
10,10,28
11,10,28
12,10,28
13,10,28
14,10,28
15,10,28
16,10,28
17,10,28
18,10,28
19,10,28
20,10,28
21,10,28
22,10,28
23,10,28
24,10,28
8,14,28
9,14,28
10,14,28
11,14,28
12,14,28
13,14,28
14,14,28
15,14,28
16,14,28
17,14,28
18,14,28
19,14,28
20,14,28
21,14,28
22,14,28
23,14,28
24,14,28
25,14,28
26,14,28
13,15,27
15,15,27
17,15,27
18,15,27
19,15,27
22,15,27
23,15,27
5,18,28
6,18,28
7,18,28
8,18,28
9,18,28
10,18,28
11,18,28
12,18,28
13,18,28
14,18,28
15,18,28
16,18,28
17,18,28
13,19,27
14,19,27
15,19,27
16,19,27
10,22,28
11,22,28
12,22,28
13,22,28
14,22,28
15,22,28
16,22,28
17,22,28
18,22,28
19,22,28
20,22,28
4,25,28
5,25,28
6,25,28
7,25,28
8,25,28
9,25,28
10,25,28
11,25,28
12,25,28
13,25,28
14,25,28
15,25,28
16,25,28
17,25,28
18,25,28
19,25,28
20,25,28
21,25,28
22,25,28
23,25,28
24,25,28
25,25,28
26,25,28
27,25,28
28,25,28
29,25,28
30,25,28
31,25,28
32,25,28
33,25,28
34,25,28
35,25,28
26,26,27
27,26,27
28,26,27
29,26,27
30,26,27

View File

@ -3,9 +3,11 @@ bg 0
hurryup 56
endmaps
help
Jump onto trampolines to bounce high...
endhelp
monsters
1 5 28
1 17 28
! 19 19
a 23 18
a 14 10
a 21 7
@ -14,7 +16,6 @@ r 2 16
r 2 8
r 38 4
r 35 20
r 4 24
C 23 1
C 7 1
P 24 28
@ -33,12 +34,8 @@ Y 3 20
Y 2 20
Y 36 8
Y 37 8
Y 37 24
Y 36 24
@ 37 20
@ 36 20
@ 3 24
@ 2 24
@ 2 16
@ 3 16
@ 37 12
@ -54,9 +51,9 @@ Y 36 24
P 20 1
P 19 1
P 21 1
! 19 19
? 15 28
endmonsters
exitdir 1
exitdir 2
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,20,20,20,20,20,20,20,20,20,20,20,25,25,25,25,25,25,25,25,25,25,25,20,20,20,20,20,20,20,20,20,20,0,0,0,4,
@ -82,8 +79,9 @@ exitdir 1
4,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,24,26,24,24,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,24,26,24,24,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,26,24,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,20,20,20,20,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,26,24,0,0,0,0,0,0,0,0,0,20,20,20,20,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,26,24,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,17,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,17,0,0,0,0,0,0,4,
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
layer2

View File

@ -6,6 +6,7 @@ help
endhelp
monsters
1 4 27
! 18 16
r 10 4
r 23 8
r 23 16
@ -38,7 +39,6 @@ Y 26 8
@ 27 8
@ 33 16
Y 7 16
! 18 16
endmonsters
exitdir -2
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
@ -54,11 +54,11 @@ exitdir -2
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,28,28,28,28,28,28,28,28,28,3,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,27,27,27,27,27,27,27,27,27,3,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,27,27,27,27,27,27,27,27,27,4,3,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,2,4,4,27,27,27,27,27,27,27,27,27,4,4,3,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,2,4,4,4,27,27,27,27,27,27,27,27,27,4,4,4,3,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,1,1,1,1,1,1,1,1,4,4,4,4,28,28,28,27,27,27,28,28,28,4,4,4,4,1,1,1,1,1,1,1,0,0,0,4,
4,0,0,0,1,1,1,1,1,1,1,1,4,4,4,4,27,27,27,27,27,27,27,27,27,4,4,4,4,1,1,1,1,1,1,1,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
@ -71,3 +71,22 @@ exitdir -2
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,11,11,11,11,11,11,11,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
layer2
16,13,28
17,13,28
18,13,28
19,13,28
20,13,28
21,13,28
22,13,28
23,13,28
24,13,28
16,17,28
17,17,28
18,17,28
19,17,28
20,17,28
21,17,28
22,17,28
23,17,28
24,17,28

View File

@ -6,7 +6,8 @@ help
Rolling logs will push you along.
endhelp
monsters
1 4 27
1 5 25
! 19 1
P 21 1
Y 8 21
Y 31 21
@ -42,7 +43,6 @@ C 20 1
r 22 9
r 26 13
r 16 17
! 19 1
endmonsters
exitdir -2
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
@ -73,5 +73,19 @@ exitdir -2
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
4,4,4,4,4,4,4,4,4,4,4,4,4,27,27,27,27,27,27,27,27,27,27,27,27,27,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,31,31,31,31,31,31,31,31,31,31,31,31,31,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,27,27,27,27,27,27,27,27,27,27,27,27,27,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
layer2
13,28,11
14,28,11
15,28,11
16,28,11
17,28,11
18,28,11
19,28,11
20,28,11
21,28,11
22,28,11
23,28,11
24,28,11
25,28,11

View File

@ -37,24 +37,29 @@ exitdir 1
4,0,0,0,0,0,0,0,0,0,0,0,0,0,18,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,23,23,19,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,1,1,8,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,0,0,0,0,0,0,0,0,4,
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,24,24,24,0,0,0,0,0,0,0,0,0,0,4,
4,0,18,19,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,8,1,1,1,4,
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,4,
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,4,
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,4,
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,4,
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,4,
4,0,0,0,7,0,0,0,0,0,1,1,1,1,1,8,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,4,
4,0,0,0,7,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,4,
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,4,
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,4,
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,4,
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,1,1,1,8,1,1,1,1,0,0,0,0,7,0,0,0,4,
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,7,0,0,0,4,
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,7,0,0,0,4,
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,7,0,0,0,4,
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,7,0,0,0,4,
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,7,0,0,0,4,
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,7,0,0,0,4,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
layer2
4,9,8
35,14,8
15,19,8
26,23,8

View File

@ -55,7 +55,7 @@ exitdir 2
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,8,1,1,20,20,20,20,21,21,21,21,21,22,22,22,22,22,22,22,22,22,21,21,21,21,21,20,20,20,1,1,8,0,0,0,4,
4,0,0,0,1,1,1,20,20,20,20,21,21,21,21,21,22,22,22,22,22,22,22,22,22,21,21,21,21,21,20,20,20,1,1,1,0,0,0,4,
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,4,
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,4,
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,4,
@ -79,3 +79,6 @@ exitdir 2
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,12,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,13,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
layer2
4,6,8
35,6,8

View File

@ -5,11 +5,11 @@ endmaps
help
endhelp
monsters
1 7 12
1 15 12
! 3 12
Y 10 12
@ 17 17
P 25 21
! 3 12
Y 13 12
Y 11 12
Y 12 12
@ -19,8 +19,14 @@ Y 12 12
P 24 21
P 23 21
P 26 21
r 37 3
endmonsters
exitdir 1
17,17,17,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,4,
31,31,31,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
@ -28,12 +34,7 @@ exitdir 1
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,1,1,1,1,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,1,1,1,1,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
@ -42,12 +43,14 @@ exitdir 1
4,0,0,0,0,0,0,0,0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,15,15,15,15,15,15,15,1,16,16,16,16,16,16,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,15,15,15,15,15,15,15,1,15,15,15,15,15,15,1,0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,0,0,0,0,0,0,0,4,
4,15,15,15,15,15,15,15,1,15,15,15,15,15,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,15,15,15,15,15,15,15,1,15,15,15,15,15,15,1,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
layer2
11,24,11