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

38
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 curworld = 1;
int curlevelnum; int curlevelnum;
int layer = 1; // which layer we are editting, either 1 or 2
int main (int argc, char **argv) { int main (int argc, char **argv) {
Uint8 *keys; Uint8 *keys;
char filename[BUFLEN]; char filename[BUFLEN];
@ -194,8 +196,19 @@ int main (int argc, char **argv) {
/* place selected tile at mouse pos */ /* place selected tile at mouse pos */
x = (mx / TILEW); x = (mx / TILEW);
y = (my / TILEH); y = (my / TILEH);
curlevel->map[y*LEVELW+x] = seltile->uniqid; if (layer == 1) {
curlevel->tileframe[y*LEVELW+x] = 0; 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 // redraw tile and sprites
drawtile(screen,x,y); drawtile(screen,x,y);
drawsprites(); 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 if (keys[SDLK_x]) { // delete monster
int donesomething = B_FALSE; int donesomething = B_FALSE;
sprite_t *s, *nextone; sprite_t *s, *nextone;
@ -306,10 +327,12 @@ int main (int argc, char **argv) {
} else { } else {
curlevel->map[offset] = T_BLANK; curlevel->map[offset] = T_BLANK;
} }
curlevel->map2[offset] = T_BLANK;
drawtile(screen,x,y); drawtile(screen,x,y);
} }
} }
printf("cleared level\n"); printf("cleared level\n");
toggletimer = 30;
} }
} }
@ -605,6 +628,17 @@ int savelevel(int wnum, int lnum) {
fprintf(f, "\n"); 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); fclose(f);
printf("Level saved to '%s'\n",filename); 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

322
rc.c
View File

@ -179,7 +179,6 @@ int main (int argc, char **argv) {
curlevelnum-- ; // since nexlevel() will increment it curlevelnum-- ; // since nexlevel() will increment it
nextlevel(); nextlevel();
//drawlevel(); //drawlevel();
/* TODO: place player */
flip(); flip();
timer = 0; timer = 0;
@ -305,10 +304,31 @@ int main (int argc, char **argv) {
} }
if (keys[SDLK_x]) { if (keys[SDLK_x]) {
if (isinwater(player)) { if (isinwater(player)) {
player->jumping = B_FALSE; if (!player->jumping) {
player->falling = B_FALSE; //player->jumping = B_FALSE;
if (!isroofabove(player)) { player->falling = B_FALSE;
player->y -= (getspeed(player)*3); 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 { } else {
if (!player->jumping) { if (!player->jumping) {
@ -332,7 +352,12 @@ int main (int argc, char **argv) {
} else { } else {
whichway = 0; whichway = 0;
} }
playfx(FX_JUMP); if (player->ontramp) {
playfx(FX_SPRING);
} else {
playfx(FX_JUMP);
}
jump(player, whichway); jump(player, whichway);
} }
} }
@ -610,7 +635,7 @@ void jump(sprite_t *s, int dir) {
if (s->jumping) return; if (s->jumping) return;
if (s->jumptimer) return; if (s->jumptimer) return;
if (isonground(s)) { if (isonground(s) || isinwater(s)) {
if (ismonster(s->id)) { if (ismonster(s->id)) {
s->jumpdir = dir; s->jumpdir = dir;
if (s->jumpdir != 0) { if (s->jumpdir != 0) {
@ -623,7 +648,11 @@ void jump(sprite_t *s, int dir) {
s->dir = s->jumpdir; s->dir = s->jumpdir;
} }
s->jumping = 1; s->jumping = 1;
s->jumpspeed = 5; if (s->ontramp) {
s->jumpspeed = 7;
} else {
s->jumpspeed = 5;
}
} }
} }
} }
@ -702,96 +731,107 @@ void cleanup(void) {
void checkcollide(sprite_t *s) { void checkcollide(sprite_t *s) {
sprite_t *s2; sprite_t *s2;
int collide; int keepchecking;
int xdiff,ydiff; int xdiff,ydiff;
for (s2 = sprite ; s2 ; s2 = s2->next) { 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;
/* check for colission with our net */ else if (s->dead) continue;
if ((s->netting) && (!s2->caughtby)) { else if (s2->dead) continue;
if (ismonster(s2->id) && s2->id != P_CLOUD) { else if (s->caughtby) continue;
xdiff = (s->x + s->netlen*s->netdir) - s2->x; else if (s2->caughtby) continue;
if (xdiff < 0) xdiff = -xdiff; else if (s2->teleporting) continue;
ydiff = s->netystart - (s2->y - s2->img->h/2);
if (ydiff < 0) ydiff = -ydiff;
if ((xdiff <= s2->img->w/2) && (ydiff <= s2->img->h)) { keepchecking = B_TRUE;
// we hit something!
// if we have a boxing glove, it dies /* check for colission with our net */
if (s->powerup == PW_BOXING) { if (s->netting ) {
s2->dead = D_BOUNCING;// die as soon as it hits a wall if (ismonster(s2->id) && s2->id != P_CLOUD) {
s2->bounces = 1; xdiff = (s->x + s->netlen*s->netdir) - s2->x;
s2->quickdie = B_TRUE;
/* go FAST in the direction player is facing */
s2->xs = s->dir * 5;
s2->ys = 0;
/* slightly raise the sprite to avoid isonground() being true */
s2->y -= 3;
/* make sure we're not too high since we'll never get lower now */
if (s2->y <= TILEH) s2->y = TILEH+1;
// become something special
s2->willbecome = P_DIAMOND;
playfx(FX_KILL);
} else {
// otherwise we caught it if we have enough nets
if (s->netcaught < s->netmax) {
s2->caughtby = s;
s2->jumping = 0;
s2->falling = 0;
s2->caughtstate = C_NETTING;
s->netcaught++;
}
}
}
}
} else {
/* check for collision with us */
xdiff = s->x - s2->x;
if (xdiff < 0) xdiff = -xdiff; if (xdiff < 0) xdiff = -xdiff;
ydiff = (s->y-(s->img->h/2)) - (s2->y-(s2->img->h/2)); ydiff = s->netystart - (s2->y - s2->img->h/2);
if (ydiff < 0) ydiff = -ydiff; if (ydiff < 0) ydiff = -ydiff;
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) {
int gotscore = s2->score;
/* kill the fruit */ if ((xdiff <= s2->img->w/2) && (ydiff <= s2->img->h)) {
s2->dead = D_FINAL; // we hit something!
/* give points to the player */
player->score = player->score + gotscore; // if we have a boxing glove, it dies
/* handle fruit effects */ if (s->powerup == PW_BOXING) {
if (!dofruiteffect(s2)) { s2->dead = D_BOUNCING;// die as soon as it hits a wall
playfx(FX_FRUIT); s2->bounces = 1;
sprintf(tempm, "%d", gotscore); s2->quickdie = B_TRUE;
addtext(s2->x,s2->y - s2->img->h/2, TEXTSIZE_POINTS, tempm, &white,POINTSDELAY);
} /* go FAST in the direction player is facing */
} s2->xs = s->dir * 5;
} s2->ys = 0;
if (ismonster(s2->id) || isbullet(s2->id)) {
if ((s == player) && (!s->invuln)) { /* slightly raise the sprite to avoid isonground() being true */
die(s); s2->y -= 3;
/* make sure we're not too high since we'll never get lower now */
if (s2->y <= TILEH) s2->y = TILEH+1;
// become something special
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 = B_FALSE;
s2->falling = 0;
s2->caughtstate = C_NETTING;
s->netcaught++;
keepchecking = B_FALSE;
} }
} }
} }
} }
} // 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));
if (ydiff < 0) ydiff = -ydiff;
if ((xdiff <= s->img->w/2 + s2->img->w/2) &&
(ydiff <= s->img->h/2 + s2->img->h/2)) {
/* COLLISION! */
// 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 */
s2->dead = D_FINAL;
/* give points to the player */
player->score = player->score + gotscore;
/* handle fruit effects */
if (!dofruiteffect(s2)) {
playfx(FX_FRUIT);
sprintf(tempm, "%d", gotscore);
addtext(s2->x,s2->y - s2->img->h/2, TEXTSIZE_POINTS, tempm, &white,POINTSDELAY);
}
} 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) { if (s->timer1) {
s->timer1--; s->timer1--;
if (s->timer1 == 0) { if (s->timer1 == 0) {
printf("can shoot again\n");
} }
} }
if (!s->falling) { if (!s->falling) {
@ -1391,6 +1430,16 @@ printf("can shoot again\n");
s->dir = absxs; s->dir = absxs;
s->moved = B_TRUE; s->moved = B_TRUE;
} else if (s->id == P_SPIDER) { } 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 on ground, go up */
if (isonground(s) && !s->flies) { if (isonground(s) && !s->flies) {
s->flies = B_TRUE; s->flies = B_TRUE;
@ -1428,7 +1477,9 @@ printf("can shoot again\n");
/* drop if player is close */ /* drop if player is close */
xdiff = player->x - s->x; xdiff = player->x - s->x;
if (xdiff < 0) xdiff =-xdiff; 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->flies = B_FALSE;
s->falling = B_TRUE; s->falling = B_TRUE;
s->fallspeed = 8; s->fallspeed = 8;
@ -1523,13 +1574,14 @@ void dotileeffects(sprite_t *s) {
tiletype_t *tt; tiletype_t *tt;
int finished = B_FALSE; int finished = B_FALSE;
int state = 0; int state = 0;
int tilex,tiley;
if (s->jumping || s->dead || s->caughtby) { if (s->jumping || s->dead || s->caughtby) {
return; return;
} }
/* check where we are */ /* 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 ((tt->id == T_TELEPORT) || (tt->id == T_TELEPORT2)) {
if (s->id == P_PLAYER || ismonster(s->id)) { if (s->id == P_PLAYER || ismonster(s->id)) {
if (s->id != P_CLOUD) { if (s->id != P_CLOUD) {
@ -1537,10 +1589,15 @@ void dotileeffects(sprite_t *s) {
} }
} }
} }
/* check under us */ /* 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) { while (!finished) {
if (tt->id == T_RIGHT) { if (tt->id == T_RIGHT) {
if (!ismonster(s->id) && !isfruit(s->id)) { if (!ismonster(s->id) && !isfruit(s->id)) {
movex(s, 1.5); movex(s, 1.5);
@ -1560,14 +1617,39 @@ void dotileeffects(sprite_t *s) {
} }
} }
finished = B_TRUE; 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 { } else {
if (state == 0) { if (state == 0) {
/* check tile to our right */ /* 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; state = 1;
} else if (state == 1) { } else if (state == 1) {
/* check tile to our left */ /* 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; state = 2;
} else { } else {
finished = B_TRUE; finished = B_TRUE;
@ -2152,8 +2234,12 @@ int isladderabove(sprite_t *s) {
} }
int isinwater(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; tiletype_t *tt;
tt = gettileat(s->x, s->y - s->img->h/2, NULL, NULL); tt = gettileat(x, y, NULL, NULL);
if (tt->water) { if (tt->water) {
return B_TRUE; return B_TRUE;
} }
@ -2167,9 +2253,9 @@ int isroofabove(sprite_t *s) {
/* get tile above sprite's head */ /* get tile above sprite's head */
tt = gettileat(s->x, s->y - s->img->h,NULL,NULL); tt = gettileat(s->x, s->y - s->img->h,NULL,NULL);
if (tt->solid) return B_TRUE; 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; 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; if (tt->solid) return B_TRUE;
return B_FALSE; return B_FALSE;
@ -2275,6 +2361,25 @@ int isongroundpoint(sprite_t *s, int x,int y) {
void dogravity(sprite_t *s) { void dogravity(sprite_t *s) {
sprite_t *s2; 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->dead) return;
if (s->flies) return; if (s->flies) return;
@ -2293,19 +2398,20 @@ void dogravity(sprite_t *s) {
s->y -= s->jumpspeed; s->y -= s->jumpspeed;
s->jumping++; s->jumping++;
if (s->jumping % 5 == 0) { if (s->jumping % 5 == 0) {
if (s->jumpspeed > 0) s->jumpspeed--; if (s->jumpspeed > 0) {
else { s->jumpspeed--;
s->jumping = 0; } else {
s->falling = B_TRUE; s->jumping = B_FALSE;
s->fallspeed = 0; s->falling = B_TRUE;
} s->fallspeed = 0;
}
} }
/* have we hit a roof ? */ /* have we hit a roof ? */
/* can jump through one tile, but not two or more */ /* can jump through one tile, but not two or more */
if (isroofabove(s) && isroofnabove(s,2)) { if (isroofabove(s) && isroofnabove(s,2)) {
/* stop jumping */ /* stop jumping */
s->jumping = 0; s->jumping = B_FALSE;
s->falling = B_TRUE; s->falling = B_TRUE;
s->fallspeed = 0; s->fallspeed = 0;
} }
@ -2482,7 +2588,7 @@ int movex(sprite_t *s,double amt) {
curx = s->x; curx = s->x;
cury = s->y; 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*(s->img->w/2));
newx = s->x + (amtdir*TILEW/2); newx = s->x + (amtdir*TILEW/2);
newy = cury-TILEH; newy = cury-TILEH;
@ -2494,6 +2600,19 @@ int movex(sprite_t *s,double amt) {
return B_TRUE; 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 */ /* get new position */
newx = curx + amt; newx = curx + amt;
newy = cury-2; newy = cury-2;
@ -2759,6 +2878,7 @@ int initsound(void) {
loadfx(FX_BONUS, "bonus.wav"); loadfx(FX_BONUS, "bonus.wav");
loadfx(FX_MORPH, "morph.wav"); loadfx(FX_MORPH, "morph.wav");
loadfx(FX_BOOM, "boom.wav"); loadfx(FX_BOOM, "boom.wav");
loadfx(FX_SPRING, "spring.wav");
// load sound effects // 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 bouncesprite(sprite_t *s);
void movesprite(sprite_t *s); void movesprite(sprite_t *s);
int isinwater(sprite_t *s); int isinwater(sprite_t *s);
int isinwaterpoint(int x, int y);
int isroofabove(sprite_t *s); int isroofabove(sprite_t *s);
int isroofnabove(sprite_t *s,int howfar); int isroofnabove(sprite_t *s,int howfar);
int isonground(sprite_t *s); int isonground(sprite_t *s);

View File

@ -23,6 +23,7 @@
int loadlevel(int wnum, int lnum) { int loadlevel(int wnum, int lnum) {
FILE *f; FILE *f;
int x,y; int x,y;
int xx,yy;
char buf[BUFLEN]; char buf[BUFLEN];
char buf2[BUFLEN]; char buf2[BUFLEN];
char filename[BUFLEN]; char filename[BUFLEN];
@ -38,6 +39,7 @@ int loadlevel(int wnum, int lnum) {
tiletype_t *lasttile; tiletype_t *lasttile;
int newversion; int newversion;
int numanim = 0; int numanim = 0;
int leveldone;
int tempanim[LEVELW*LEVELH]; int tempanim[LEVELW*LEVELH];
int numenemies = 0; int numenemies = 0;
@ -322,7 +324,8 @@ printf("got %d monsters\n", numenemies);
x = 0; x = 0;
y = 0; y = 0;
while (!feof(f)) { leveldone = B_FALSE;
while (!leveldone) {
/* process a line of level data */ /* process a line of level data */
if (newversion) { if (newversion) {
strncpy(buf2, buf, BUFLEN); strncpy(buf2, buf, BUFLEN);
@ -532,6 +535,35 @@ printf("got %d monsters\n", numenemies);
y++; y++;
x = 0; x = 0;
fgets(buf, BUFLEN, f); 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); fclose(f);
@ -647,6 +679,9 @@ void setdefaults(sprite_t *s) {
s->netbig = 0; s->netbig = 0;
s->dropping = 0; s->dropping = 0;
s->dropx = -1; s->dropx = -1;
s->ontramp = B_FALSE;
s->trampx = -1;
s->trampy = -1;
s->quickdie = B_FALSE; s->quickdie = B_FALSE;
s->dropy = -1; s->dropy = -1;
s->falling = 0; 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) { tiletype_t *gettileat(int pixx,int pixy, int *tilex,int *tiley) {
int tx,ty; int tx,ty;
int tid;
tx = pixx / TILEW; tx = pixx / TILEW;
ty = pixy / TILEH; ty = pixy / TILEH;
if (tilex != NULL) { if (tilex != NULL) {
@ -761,7 +798,12 @@ tiletype_t *gettileat(int pixx,int pixy, int *tilex,int *tiley) {
*tiley = ty; *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) { int loadtiletypes(char *filename) {
@ -1390,6 +1432,8 @@ int isfruit(int id) {
case P_GEMYELLOW: case P_GEMYELLOW:
case P_GEMRED: case P_GEMRED:
case P_GEMPURPLE: case P_GEMPURPLE:
/* misc */
case P_POWERUPPOS:
return B_TRUE; return B_TRUE;
} }
@ -1593,16 +1637,26 @@ char monstertochar(int id ) {
return '\0'; return '\0';
} }
tiletype_t *gettile(int tid) { tiletype_t *gettile(int uniqid) {
tiletype_t *t; tiletype_t *t;
for (t = tiletype; t ; t = t->next) { for (t = tiletype; t ; t = t->next) {
if (t->uniqid == tid) return t; if (t->uniqid == uniqid) return t;
} }
return &fakeblock; 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) { void drawtile(SDL_Surface *where, int x, int y) {
SDL_Rect area; SDL_Rect area;
tiletype_t *tt; tiletype_t *tt;
@ -1629,6 +1683,15 @@ void drawtile(SDL_Surface *where, int x, int y) {
SDL_BlitSurface(tt->img[frame], NULL, where, &area); 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) { 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 getcolor(SDL_Surface *dest, int x, int y, SDL_Color *col);
int chartomonster(char ch); int chartomonster(char ch);
char monstertochar(int id); 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 drawtile(SDL_Surface *s, int x, int y);
void initglobals(void); void initglobals(void);
void killtext(text_t *t); 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 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, 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,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,0,0,0,0,0,0,0,0,0,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,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, 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, 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,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 endhelp
monsters monsters
1 3 28 1 3 28
! 37 15
C 33 7 C 33 7
C 11 13 C 11 13
r 13 5 r 13 5
@ -32,7 +33,6 @@ P 36 24
P 38 24 P 38 24
S 31 24 S 31 24
r 20 21 r 20 21
! 37 15
endmonsters endmonsters
exitdir 1 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,
@ -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,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,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,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,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,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,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,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,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,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,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,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,1,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,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,
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, 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, 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 hurryup 56
endmaps endmaps
help help
Jump onto trampolines to bounce high...
endhelp endhelp
monsters monsters
1 5 28 1 17 28
! 19 19
a 23 18 a 23 18
a 14 10 a 14 10
a 21 7 a 21 7
@ -14,7 +16,6 @@ r 2 16
r 2 8 r 2 8
r 38 4 r 38 4
r 35 20 r 35 20
r 4 24
C 23 1 C 23 1
C 7 1 C 7 1
P 24 28 P 24 28
@ -33,12 +34,8 @@ Y 3 20
Y 2 20 Y 2 20
Y 36 8 Y 36 8
Y 37 8 Y 37 8
Y 37 24
Y 36 24
@ 37 20 @ 37 20
@ 36 20 @ 36 20
@ 3 24
@ 2 24
@ 2 16 @ 2 16
@ 3 16 @ 3 16
@ 37 12 @ 37 12
@ -54,9 +51,9 @@ Y 36 24
P 20 1 P 20 1
P 19 1 P 19 1
P 21 1 P 21 1
! 19 19 ? 15 28
endmonsters 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,0,0,0,0,0,0,0,0,0,0,0,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, 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,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,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,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,0,0,0,0,0,0,0,0,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,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, 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 endhelp
monsters monsters
1 4 27 1 4 27
! 18 16
r 10 4 r 10 4
r 23 8 r 23 8
r 23 16 r 23 16
@ -38,7 +39,6 @@ Y 26 8
@ 27 8 @ 27 8
@ 33 16 @ 33 16
Y 7 16 Y 7 16
! 18 16
endmonsters endmonsters
exitdir -2 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,
@ -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,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,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,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,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,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, 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,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, 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, 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. Rolling logs will push you along.
endhelp endhelp
monsters monsters
1 4 27 1 5 25
! 19 1
P 21 1 P 21 1
Y 8 21 Y 8 21
Y 31 21 Y 31 21
@ -42,7 +43,6 @@ C 20 1
r 22 9 r 22 9
r 26 13 r 26 13
r 16 17 r 16 17
! 19 1
endmonsters endmonsters
exitdir -2 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,
@ -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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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,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, 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,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,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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,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,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,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,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,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,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, 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, 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,0,0,0,0,0,0,0,0,0,0,0,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, 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,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,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, 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 help
endhelp endhelp
monsters monsters
1 7 12 1 15 12
! 3 12
Y 10 12 Y 10 12
@ 17 17 @ 17 17
P 25 21 P 25 21
! 3 12
Y 13 12 Y 13 12
Y 11 12 Y 11 12
Y 12 12 Y 12 12
@ -19,8 +19,14 @@ Y 12 12
P 24 21 P 24 21
P 23 21 P 23 21
P 26 21 P 26 21
r 37 3
endmonsters endmonsters
exitdir 1 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, 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,17,17,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,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,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,
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,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,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,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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,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, 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,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, 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,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