diff --git a/defs.h b/defs.h index 02eff57..7299d4f 100644 --- a/defs.h +++ b/defs.h @@ -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? diff --git a/edit.c b/edit.c index 9fb076a..7a6a340 100644 --- a/edit.c +++ b/edit.c @@ -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); - curlevel->map[y*LEVELW+x] = seltile->uniqid; - curlevel->tileframe[y*LEVELW+x] = 0; + 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); diff --git a/newtiles/bridge.png b/newtiles/bridge.png index 60ee1ce..5ef25d8 100644 Binary files a/newtiles/bridge.png and b/newtiles/bridge.png differ diff --git a/newtiles/bridge2.png b/newtiles/bridge2.png index a1b6dc0..44de820 100644 Binary files a/newtiles/bridge2.png and b/newtiles/bridge2.png differ diff --git a/newtiles/bridge3.png b/newtiles/bridge3.png index 143d07f..1ff4640 100644 Binary files a/newtiles/bridge3.png and b/newtiles/bridge3.png differ diff --git a/newtiles/cavebridge.png b/newtiles/cavebridge.png index 9efaab6..2b29cbb 100644 Binary files a/newtiles/cavebridge.png and b/newtiles/cavebridge.png differ diff --git a/newtiles/cavespikes.png b/newtiles/cavespikes.png deleted file mode 100644 index be04d07..0000000 Binary files a/newtiles/cavespikes.png and /dev/null differ diff --git a/newtiles/girder.png b/newtiles/girder.png new file mode 100644 index 0000000..c46399f Binary files /dev/null and b/newtiles/girder.png differ diff --git a/newtiles/ladder.png b/newtiles/ladder.png index d3a5d81..64edb98 100644 Binary files a/newtiles/ladder.png and b/newtiles/ladder.png differ diff --git a/newtiles/laddertop.png b/newtiles/laddertop.png index a07cc33..06437c9 100644 Binary files a/newtiles/laddertop.png and b/newtiles/laddertop.png differ diff --git a/newtiles/trampdown.png b/newtiles/trampdown.png new file mode 100644 index 0000000..588a26c Binary files /dev/null and b/newtiles/trampdown.png differ diff --git a/newtiles/trampup.png b/newtiles/trampup.png new file mode 100644 index 0000000..6434856 Binary files /dev/null and b/newtiles/trampup.png differ diff --git a/rc.c b/rc.c index 0690c58..882eeba 100644 --- a/rc.c +++ b/rc.c @@ -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; - player->falling = B_FALSE; - if (!isroofabove(player)) { - player->y -= (getspeed(player)*3); + 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; } - playfx(FX_JUMP); + 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,7 +648,11 @@ void jump(sprite_t *s, int dir) { s->dir = s->jumpdir; } 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) { 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) { - /* check for colission with our net */ - if ((s->netting) && (!s2->caughtby)) { - if (ismonster(s2->id) && s2->id != P_CLOUD) { - xdiff = (s->x + s->netlen*s->netdir) - s2->x; - if (xdiff < 0) xdiff = -xdiff; - ydiff = s->netystart - (s2->y - s2->img->h/2); - if (ydiff < 0) ydiff = -ydiff; + 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; - if ((xdiff <= s2->img->w/2) && (ydiff <= s2->img->h)) { - // we hit something! + keepchecking = B_TRUE; - // if we have a boxing glove, it dies - if (s->powerup == PW_BOXING) { - s2->dead = D_BOUNCING;// die as soon as it hits a wall - s2->bounces = 1; - 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; + /* check for colission with our net */ + 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; - 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 ((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 */ - 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); - } - } - } - if (ismonster(s2->id) || isbullet(s2->id)) { - if ((s == player) && (!s->invuln)) { - die(s); + if ((xdiff <= s2->img->w/2) && (ydiff <= s2->img->h)) { + // we hit something! + + // if we have a boxing glove, it dies + if (s->powerup == PW_BOXING) { + s2->dead = D_BOUNCING;// die as soon as it hits a wall + s2->bounces = 1; + 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); + + 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) { 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) { @@ -1537,10 +1589,15 @@ 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,19 +2398,20 @@ 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; - s->falling = B_TRUE; - s->fallspeed = 0; - } + if (s->jumpspeed > 0) { + s->jumpspeed--; + } else { + s->jumping = B_FALSE; + s->falling = B_TRUE; + s->fallspeed = 0; + } } /* have we hit a roof ? */ /* 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 diff --git a/rc.h b/rc.h index e33e465..2504bd8 100644 --- a/rc.h +++ b/rc.h @@ -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); diff --git a/shared.c b/shared.c index bc3448a..69ce390 100644 --- a/shared.c +++ b/shared.c @@ -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) { diff --git a/shared.h b/shared.h index de4bb89..28e71f8 100644 --- a/shared.h +++ b/shared.h @@ -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); diff --git a/sprites/boxing.jpg b/sprites/boxing.jpg new file mode 100644 index 0000000..01557ff Binary files /dev/null and b/sprites/boxing.jpg differ diff --git a/sprites/diamond.jpg b/sprites/diamond.jpg new file mode 100644 index 0000000..be95609 Binary files /dev/null and b/sprites/diamond.jpg differ diff --git a/sprites/flowertodiamond.png b/sprites/flowertodiamond.png new file mode 100644 index 0000000..ef01beb Binary files /dev/null and b/sprites/flowertodiamond.png differ diff --git a/sprites/flowertogem.png b/sprites/flowertogem.png new file mode 100644 index 0000000..fa69180 Binary files /dev/null and b/sprites/flowertogem.png differ diff --git a/sprites/shield.jpg b/sprites/shield.jpg new file mode 100644 index 0000000..0b7a892 Binary files /dev/null and b/sprites/shield.jpg differ diff --git a/sprites/shield.png b/sprites/shield.png new file mode 100644 index 0000000..71522f2 Binary files /dev/null and b/sprites/shield.png differ diff --git a/world1/level1.dat b/world1/level1.dat index 3138a9e..acdb4e2 100644 --- a/world1/level1.dat +++ b/world1/level1.dat @@ -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 diff --git a/world1/level10.dat b/world1/level10.dat index 5dec070..1e61bb0 100644 --- a/world1/level10.dat +++ b/world1/level10.dat @@ -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 diff --git a/world1/level11.dat b/world1/level11.dat index 27d64c8..7cd23d5 100644 --- a/world1/level11.dat +++ b/world1/level11.dat @@ -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 diff --git a/world1/level5.dat b/world1/level5.dat index 79dfcf1..49579d4 100644 --- a/world1/level5.dat +++ b/world1/level5.dat @@ -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 diff --git a/world1/level6.dat b/world1/level6.dat index 31e846e..eb15ebe 100644 --- a/world1/level6.dat +++ b/world1/level6.dat @@ -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 diff --git a/world1/level7.dat b/world1/level7.dat index 9fc3943..0b2331a 100644 --- a/world1/level7.dat +++ b/world1/level7.dat @@ -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 diff --git a/world1/level8.dat b/world1/level8.dat index f14b1e2..38a0e42 100644 --- a/world1/level8.dat +++ b/world1/level8.dat @@ -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 diff --git a/world1/level99.dat b/world1/level99.dat index 56a9f47..03c7fe7 100644 --- a/world1/level99.dat +++ b/world1/level99.dat @@ -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