diff --git a/defs.h b/defs.h index e51eaf6..4a4a760 100644 --- a/defs.h +++ b/defs.h @@ -6,10 +6,26 @@ /* Macros */ //#define OPENGL +// channel numbers +#define CH_LASTCHANNEL 21 + +#define CH_HURRYUP 20 + + +// size of flower straem when getting last flower +// (number of gems on each side) +#define STREAMWID 6 + + +// puff of smoke +#define PUFFFRAMES 6 +#define PUFFSPEED 4 // how fast it animates (smaller = faster) +#define PUFFAPPEAR 4 // frame at which puff will turn into a gem // text sizes #define TEXTSIZE_HELP 20 #define TEXTSIZE_POINTS 10 +#define TEXTSIZE_BONUS 20 #define TEXTSIZE_HURRY 50 // text delays @@ -17,6 +33,7 @@ // how long to keep various text on the screen #define POINTSDELAY 40 +#define BONUSDELAY 50 #define HURRYDELAY 50 #define LEVELDELAY 70 #define HELPDELAY 80 @@ -40,7 +57,7 @@ // Limits #define MAXMAPPINGS 50 -#define MAXMONSTERSPERLEVEL 20 +#define MAXMONSTERSPERLEVEL 40 #define MAXLETTERHEIGHT 100 #define MAXFRAMES 11 // max number of frames for sprites #define MAXHELP 5 @@ -63,7 +80,7 @@ /* enums */ /* sounds */ -#define MAXFX 9 +#define MAXFX 12 #define FX_SHOOT 0 #define FX_SLAM 1 #define FX_KILL 2 @@ -73,6 +90,9 @@ #define FX_POWERUP 6 #define FX_DIE 7 #define FX_WINLEVEL 8 +#define FX_HURRYUP 9 +#define FX_TOOSLOW 10 +#define FX_BONUS 11 // Slope types #define S_NOTSOLID 0 @@ -80,7 +100,7 @@ #define S_SLOPE 2 // Sprite types -#define MAXPTYPES 19 +#define MAXPTYPES 23 #define P_PLAYER 0 #define P_RAT 1 #define P_CHEESE 2 @@ -100,6 +120,10 @@ #define P_FLOWERRED 16 #define P_FLOWERPURPLE 17 #define P_COKE 18 +#define P_GEMRED 19 +#define P_PUFF 20 +#define P_GEMYELLOW 21 +#define P_GEMPURPLE 22 // Frame names #define F_WALK1 0 @@ -266,6 +290,9 @@ typedef struct sprite_s { int bounces; // how many time have we bounced after dying int doomcount; // sprites dies when this reaches zero int moved; // did we move this loop cycle? + int timer1; // + int timer2; // + int timer3; // // GAME MECHANICS @@ -301,7 +328,8 @@ extern SDL_Color yellow; extern int vidargs; extern int toggletimer; extern TTF_Font *font[]; -extern Mix_Music *music; +extern int musicplaying; +extern Mix_Music *music, *normalmusic, *fastmusic; extern Mix_Chunk *sfx[]; diff --git a/doco/adding_a_sprite.txt b/doco/adding_a_sprite.txt index 8ec0bf1..1c5aee6 100644 --- a/doco/adding_a_sprite.txt +++ b/doco/adding_a_sprite.txt @@ -2,8 +2,9 @@ - in defs.h: add P_ entry - in shared.c: add score value in setdefaults if applicable - in shared.c: add loadspriteimage() line(s) in loadimagesets() -- in shared.c: add entry to monstertochar -- in shared.c: add entry to chartomonster -- in shared.c: update isfruit(), isbullet() +- in shared.c: IF NOT AN EFFECT: add entry to monstertochar +- in shared.c: IF NOT AN EFFECT: add entry to chartomonster +- in shared.c: update isflower(), isfruit(), isbullet(), iseffect(); +- in shared.c: IF A GEM: update flowertogem() - in rc.c: update ismonster() - in rc.c: add monster movement diff --git a/doco/making_a_gem.txt b/doco/making_a_gem.txt new file mode 100644 index 0000000..d849c15 --- /dev/null +++ b/doco/making_a_gem.txt @@ -0,0 +1,8 @@ +- grab gem from here: + http://www.geocities.com/joflo723/t_jewels.htm + +- load into gimp, select gem with magic wand + +- copy,paste as new (background should be transparent now!) + +- scale to appropriate size diff --git a/edit.c b/edit.c index c8129d8..f2e5632 100644 --- a/edit.c +++ b/edit.c @@ -208,28 +208,30 @@ int main (int argc, char **argv) { y = (my / TILEH); /* checks */ - // can only have one player start pos - if (selsprite == P_PLAYER) { - /* does a player start pos already exist? */ - sprite_t *s; - for (s = sprite ; s ; s = s->next) { - if (s->id == P_PLAYER) { - // if so, just move it - s->x = x*TILEW+(TILEW/2); - s->y = y*TILEH+TILEH; - placed = B_TRUE; - modified = B_TRUE; - // get rid of old sprite - draweditorlevel(); - } - } - } else { // is there a monster already there? - sprite_t *s; - for (s = sprite ; s ; s = s->next) { - if (s->id == selsprite) { - if ((s->x == x*TILEW+(TILEW/2)) && (s->y == y*TILEH+TILEH)) { - /* don't place it */ + if (toggletimer == 0) { + // can only have one player start pos + if (selsprite == P_PLAYER) { + /* does a player start pos already exist? */ + sprite_t *s; + for (s = sprite ; s ; s = s->next) { + if (s->id == P_PLAYER) { + // if so, just move it + s->x = x*TILEW+(TILEW/2); + s->y = y*TILEH+TILEH; placed = B_TRUE; + modified = B_TRUE; + // get rid of old sprite + draweditorlevel(); + } + } + } else { // is there a monster already there? + sprite_t *s; + for (s = sprite ; s ; s = s->next) { + if (s->id == selsprite) { + if ((s->x == x*TILEW+(TILEW/2)) && (s->y == y*TILEH+TILEH)) { + /* don't place it */ + placed = B_TRUE; + } } } } @@ -239,11 +241,16 @@ int main (int argc, char **argv) { if (!placed) { /* place selected sprite at mouse position (locked to a til) */ - addsprite(selsprite, x*TILEW+(TILEW/2),y*TILEH+TILEH,"something", B_TRUE); + if (selsprite == P_HELP) { + addsprite(selsprite, x*TILEW+(TILEW/2),y*TILEH+TILEH,"FILL ME IN", B_TRUE); + } else { + addsprite(selsprite, x*TILEW+(TILEW/2),y*TILEH+TILEH,"something", B_TRUE); + } + toggletimer = 30; modified = B_TRUE; + drawsprites(); } - drawsprites(); } } } @@ -277,6 +284,31 @@ int main (int argc, char **argv) { modified = B_TRUE; } } + if (keys[SDLK_c]) { + if (toggletimer == 0) { + int offset,x,y; + + /* clear all sprites */ + while (sprite) { + killsprite(sprite); + } + + /* clear level */ + for (x = 0; x < LEVELW; x++) { + for (y = 0; y < LEVELH; y++) { + offset = y*LEVELW+x; + if ((x == 0) || (x == LEVELW-1)) { + curlevel->map[offset] = T_FULL; + } else if (y == LEVELH-1) { + curlevel->map[offset] = T_LAND; + } else { + curlevel->map[offset] = T_BLANK; + } + drawtile(screen,x,y); + } + } + } + } /* next level */ if (keys[SDLK_RIGHT]) { diff --git a/globals.h b/globals.h index c3a8fec..a246179 100644 --- a/globals.h +++ b/globals.h @@ -2,13 +2,15 @@ #define __GLOBALS_H /* global variables */ +int musicplaying; + SDL_Surface *temps; // temporary surface SDL_Surface *screen; // the actual video screen sprite_t *sprite; // head of sprite linked list sprite_t *lastsprite; // tail of sprite linked list sprite_t *player; // pointer to the player's sprite -Mix_Music *music; +Mix_Music *music, *fastmusic, *normalmusic; Mix_Chunk *sfx[MAXFX]; level_t *curlevel; // the current level's data diff --git a/music/mainfast.mod b/music/mainfast.mod new file mode 100644 index 0000000..bf521e9 Binary files /dev/null and b/music/mainfast.mod differ diff --git a/newtiles/log1.5.png b/newtiles/log1.5.png new file mode 100644 index 0000000..0cfe4f5 Binary files /dev/null and b/newtiles/log1.5.png differ diff --git a/newtiles/log2.5.png b/newtiles/log2.5.png new file mode 100644 index 0000000..4cd85f1 Binary files /dev/null and b/newtiles/log2.5.png differ diff --git a/newtiles/log3.5.png b/newtiles/log3.5.png new file mode 100644 index 0000000..b69b997 Binary files /dev/null and b/newtiles/log3.5.png differ diff --git a/newtiles/log4.5.png b/newtiles/log4.5.png new file mode 100644 index 0000000..e24376e Binary files /dev/null and b/newtiles/log4.5.png differ diff --git a/newtiles/signleft.png b/newtiles/signleft.png new file mode 100644 index 0000000..c03a9f9 Binary files /dev/null and b/newtiles/signleft.png differ diff --git a/newtiles/signright.png b/newtiles/signright.png new file mode 100644 index 0000000..fe82ef9 Binary files /dev/null and b/newtiles/signright.png differ diff --git a/rc b/rc index 4caef03..b8f1f67 100755 Binary files a/rc and b/rc differ diff --git a/rc.c b/rc.c index d4105b9..8c4a26b 100644 --- a/rc.c +++ b/rc.c @@ -24,26 +24,28 @@ SDL_Surface *temps; SDL_Surface *screen; TTF_Font *font[MAXLETTERHEIGHT]; +Mix_Music *curmusic = NULL; // pointer to currently playing music + char tempm[BUFLEN]; tiletype_t fakeblock; /* the order in which fruit will appear */ int fruittypes[] = { - 2, - 9, - 10, - 11, + P_CHEESE, + P_ICECREAM, + P_CHIPS, + P_BURGER, -1 }; /* the order in which powerups will appear */ int poweruptypes[] = { - 3, - 4, - 5, - 4, + P_SPEED, + P_NUMNETS, + P_BIGNET, + P_NUMNETS, -1 }; @@ -85,6 +87,7 @@ int main (int argc, char **argv) { int *animtile; curlevelnum = 1; + musicplaying = B_FALSE; /* handle arguments */ if (argc >= 2) { @@ -155,9 +158,6 @@ int main (int argc, char **argv) { SDL_setFramerate(&manager, WANTFPS); - if (loadlevel(curworld,curlevelnum)) { - return 1; - } /* init sound */ if (initsound()) { @@ -165,8 +165,10 @@ int main (int argc, char **argv) { return 1; } - /* start music */ - Mix_PlayMusic(music, -1); + playmusic(normalmusic); + if (loadlevel(curworld,curlevelnum)) { + return 1; + } drawlevel(); @@ -399,8 +401,6 @@ int main (int argc, char **argv) { //} checkcollide(player); - /* draw text */ - drawtext(); drawscore(); @@ -410,6 +410,8 @@ int main (int argc, char **argv) { for (s = sprite ; s ; s = s->next) { drawsprite(s); } + /* draw text */ + drawtext(); flip(); @@ -435,6 +437,8 @@ void tick(void) { /* once per second */ if (fpsticks - fpsstart >= 1000) { gtime++; + + /* */ if (gtime == curlevel->hurryuptime) { if (!levelcomplete) { @@ -444,14 +448,18 @@ void tick(void) { } } addtext(320,240,TEXTSIZE_HURRY, "Hurry up!", &yellow,HURRYDELAY); + + stopmusic(); + Mix_PlayChannel(CH_HURRYUP, sfx[FX_HURRYUP], 0); } - } - if (gtime == curlevel->hurryuptime + 10) { + } else if (gtime == curlevel->hurryuptime + 10) { if (!levelcomplete) { addsprite(P_CLOUD, 320,240,"cloud", B_FALSE); addtext(320,240,TEXTSIZE_HURRY, "Too slow!", &red,HURRYDELAY); + playfx(FX_TOOSLOW); } - } + } + /* 5 seconds after level completion */ if (levelcomplete == 3) { @@ -469,6 +477,9 @@ void tick(void) { void nextlevel(void) { /* go to next level */ curlevelnum++; + if (!musicplaying || (curmusic == fastmusic)) { + playmusic(normalmusic); + } loadlevel(curworld,curlevelnum); drawlevel(); levelcomplete = B_FALSE; @@ -513,6 +524,11 @@ void die(sprite_t *s) { // this handles cases where the cloud hasn't appeared yet. if (s == player) { gtime = 0; + if (curmusic == fastmusic) { + playmusic(normalmusic); + } + // reset powerup types + curpoweruptype = 0; } if (s == player) { @@ -602,7 +618,7 @@ void checkcollide(sprite_t *s) { if ((xdiff <= s->img->w/2 + s2->img->w/2) && (ydiff <= s->img->h/2 + s2->img->h/2)) { /* COLLISION! */ - if (isfruit(s2->id)) { + if (isfruit(s2->id) && (s2->teleporting == 0)) { if (s == player) { int gotscore = s2->score; @@ -611,9 +627,7 @@ void checkcollide(sprite_t *s) { /* give points to the player */ player->score = player->score + gotscore; /* handle fruit effects */ - if (dofruiteffect(s2)) { - playfx(FX_POWERUP); - } else { + if (!dofruiteffect(s2)) { playfx(FX_FRUIT); sprintf(tempm, "%d", gotscore); addtext(s2->x,s2->y - s2->img->h/2, TEXTSIZE_POINTS, tempm, &white,POINTSDELAY); @@ -632,6 +646,43 @@ void checkcollide(sprite_t *s) { } +// do death bouncing effect +void bouncesprite(sprite_t *s) { + s->x += s->xs; + s->y += s->ys; + + if (s->x >= (640-TILEW-(s->img->w/2))) { + // move back onto screen + while (s->x >= (640-TILEW-(s->img->w/2))) { + s->x--; + } + if (s->xs > 0) s->xs = -s->xs; // reverse direction + s->bounces++; + } else if (s->x <= TILEW+s->img->w/2) { + // move back onto screen + while (s->x <= TILEW+s->img->w/2) { + s->x++; + } + if (s->xs < 0) s->xs = -s->xs; // reverse direction + s->bounces++; + } + + if (s->y >= (480-(s->img->h/2))) { + while (s->y >= (480-(s->img->h/2))) { + s->y--; + } + if (s->ys > 0) s->ys = -s->ys; // reverse direction + s->bounces++; + } else if (s->y <= s->img->h) { + while (s->y <= s->img->h) { + s->y++; + } + if (s->ys < 0) s->ys = -s->ys; // reverse direction + s->bounces++; + } +} + + void movesprite(sprite_t *s) { int rv; tiletype_t *tt; @@ -680,11 +731,14 @@ void movesprite(sprite_t *s) { } return; } else if (s->dead == D_INITIAL) { /* just set to dead */ - //s->xs = ((rand() % 7)) - 3; - // TODO: avoid straight up, also make this able - // to be a float - s->xs = ((rand() % 14) / 2) - 3; - s->ys = ((rand() % 3) + 3) * -1; + + // 0 through 5 + s->xs = 0.5 + ((rand() % 50) / 10); // 0.5 through 5.5 + if (rand() % 2) { // 50% change of going left + s->xs = s->xs * -1; + } + s->ys = -1 * (4 + ((rand() % 30) / 10)); // -4 through -7 + s->dead = D_BOUNCING; s->bounces = 0; if (s == player) { @@ -710,33 +764,17 @@ void movesprite(sprite_t *s) { } } else { /* bounch around the screen 3 times */ - s->x += s->xs; - s->y += s->ys; - if (s->x >= (640-TILEW-(s->img->w/2))) { - if (s->xs > 0) { - s->xs = -s->xs; - s->bounces++; - } - } else if (s->x <= TILEW+s->img->w/2) { - if (s->xs < 0) { - s->xs = -s->xs; - s->bounces++; - } - } - - if (s->y >= (480-(s->img->h/2))) { - if (s->ys > 0) { - s->ys = -s->ys; - s->bounces++; - } - } else if (s->y <= s->img->h) { - if (s->ys < 0) { - s->ys = -s->ys; - s->bounces++; - } - } + bouncesprite(s); if ((s->bounces >= 2) && (s->ys > 0)) { - s->dead = D_LASTBOUNCE; + // make sure we're not on the ground + if (!isonground(s)) { + int tx,ty; + tiletype_t *tt; + tt = gettileat(s->x,s->y,&tx,&ty); + + printf("finished bouncing, sprite is at: %d, %d (tileid %d)\n",tx,ty,tt->id); + s->dead = D_LASTBOUNCE; + } } } return; @@ -749,8 +787,8 @@ void movesprite(sprite_t *s) { s->dead = D_FINAL; } } else { /* bounce around, stop when we hit the ground */ - s->x += s->xs; - s->y += s->ys; + bouncesprite(s); + /* OLD BOUNCE CODE if (s->x >= (640-TILEW- s->img->w/2)) { if (s->xs > 0) { s->xs = -s->xs; @@ -774,6 +812,7 @@ void movesprite(sprite_t *s) { s->bounces++; } } + */ if ((s->ys > 0) && (s->y >= TILEH)) { @@ -783,13 +822,17 @@ void movesprite(sprite_t *s) { /* change into a fruit */ x = s->x; gettileat(s->x,s->y-1,NULL,&ty); - y = ty*TILEH + TILEH - 2; + //y = ty*TILEH + TILEH - 2; + y = ty*TILEH - 2; /* make sure it's within the screen */ if (x > (640-TILEW)) x = 640-TILEW; if (x < (TILEW)) x = TILEW; - addsprite(s->willbecome, x, y, "Fruit", B_FALSE); + //addsprite(s->willbecome, x, y, "Fruit", B_FALSE); + puffin(s->willbecome, x, y, 0); + //ss = addsprite(P_PUFF, x, y, "Fruit", B_FALSE); + //ss->timer3 = s->willbecome; } } @@ -845,10 +888,12 @@ void movesprite(sprite_t *s) { return; } - if (isonground(s)) { - if ((!s->falling) && (!s->jumping)) { - if (!s->climbing) { - adjustheight(s); + if (!iseffect(s->id)) { + if (isonground(s)) { + if ((!s->falling) && (!s->jumping)) { + if (!s->climbing && !s->dropping) { + adjustheight(s); + } } } } @@ -864,6 +909,42 @@ void movesprite(sprite_t *s) { } else if (s->jumptimer % 20 == 0) { s->dir = -s->dir; } + } else if (s->id == P_PUFF) { + /* SUMMARY: + timer1: + indicates current frame. if < 0, don't draw. + if >= PUFFFRAMES, use last frame. + + when timer1 gets to PUFFAPPEAR, create a gem + of type s-> + + timer2: + loops from 0 to 9. + at intervals of PUFFSPEED, increment timer1. + + */ + + // still delaying + if (s->timer1 < 0) { + // increment "frame" + s->timer1++; + } else { + // increment frame at a slower pace + if (++s->timer2 >= 10) { + s->timer2 = 0; + } + if (timer % PUFFSPEED == 0) { + s->timer1++; + // finished animating + if (s->timer1 == PUFFAPPEAR) { + // create a gem/fruit/etc + addsprite(s->timer3, s->x,s->y,"gem", B_FALSE); + } else if (s->timer1 >= PUFFFRAMES) { + s->dead = D_FINAL; + } + } + } + } else if (s->id == P_RAT) { if (!s->falling) { int move = B_FALSE; @@ -954,8 +1035,8 @@ void movesprite(sprite_t *s) { /* if there's a hole in front of us */ if (tt->solid == S_NOTSOLID) { if (player->y > s->y ) { - /* if player is below, fall off */ - if (xdiff <= (TILEW*12)) { + /* if player is below and nearby, fall off */ + if (xdiff <= (TILEW*16)) { move = B_TRUE; } } else if (player->y == s->y) { @@ -985,34 +1066,40 @@ void movesprite(sprite_t *s) { /* moves like an angry rat all the time */ if ((player->dead == 0) && (!s->jumping) && (!s->jumptimer)) { - /* if player is above us, jump */ + /* if player is above us...*/ if (player->y < s->y) { - if ((xdiff >= (TILEW*2)) && (xdiff <= (TILEW*3))) { + if ((xdiff >= (TILEW*2)) && (xdiff <= (TILEW*3))) { // if 2-3 tiles right /* jump right */ jump(s, D_RIGHT); - } else if ((xdiff <= -(TILEW*2)) && (xdiff >= -(TILEW*3))) { + } else if ((xdiff <= -(TILEW*2)) && (xdiff >= -(TILEW*3))) { // if 2-3 tiles left /* jump left */ jump(s, D_LEFT); - } else if (s->y - player->y <= (TILEH*6)) { - if ((xdiff >= 0) && (xdiff < (TILEW*2))) { + } else if (s->y - player->y <= (TILEH*6)) { // player less than 6 tiles above + if ((xdiff >= 0) && (xdiff < (TILEW*4))) { // ... and within 4 tiles /* jump up */ jump(s, 0); - } else if ((xdiff <= 0) && (xdiff > -(TILEW*2))) { + } else if ((xdiff <= 0) && (xdiff > -(TILEW*4))) { // ... and within 4 tiles /* jump up */ jump(s, 0); } - } else { - /* jump whichever way we're facing */ - /* - s->jumpdir = s->dir; - s->jumping = 1; - s->jumpspeed = 5; - */ } } } } } else if (s->id == P_SNAKE) { + /* timer1 loopsfrom 0 - 19 + + if timer2 is 0, we can shoot. if it is 1, we can't. + + */ + + // inc shooting timer + if (s->timer1) { + s->timer1--; + if (s->timer1 == 0) { +printf("can shoot again\n"); + } + } if (!s->falling) { int move = B_FALSE; int xdiff, absxdiff,ydiff; @@ -1052,7 +1139,8 @@ void movesprite(sprite_t *s) { if (ydiff <= (TILEH*4)) { sprite_t *ss; int shoot = B_FALSE; - if (s->bullet == NULL) { + if (s->bullet == NULL) { // if we don't already have a bullet + // if we are facing the player if ( (player->x < s->x) && (s->dir == D_LEFT) ) { shoot = B_TRUE; } else if ( (player->x > s->x) && (s->dir == D_RIGHT) ) { @@ -1060,13 +1148,19 @@ void movesprite(sprite_t *s) { } } if (shoot) { - ss = addsprite(P_SPIT,s->x,s->y - s->img->h/2,"spit", B_FALSE); - ss->ys = 0; - ss->xs = s->dir * (getspeed(s)*2); - ss->dir = s->dir; - ss->owner = s; + // if our shooting timer is okay + if (s->timer1 == 0) { + ss = addsprite(P_SPIT,s->x,s->y - s->img->h/2,"spit", B_FALSE); + ss->ys = 0; + ss->xs = s->dir * (getspeed(s)*2); + ss->dir = s->dir; + ss->owner = s; - s->bullet = ss; + s->bullet = ss; + + // start timer for shooting again + s->timer1 = 200; + } } } @@ -1289,19 +1383,23 @@ void dotileeffects(sprite_t *s) { /* check where we are */ tt = gettileat(s->x,s->y-2,NULL,NULL); if ((tt->id == T_TELEPORT) || (tt->id == T_TELEPORT2)) { - s->teleporting = 1; + if (s->id == P_PLAYER || ismonster(s->id)) { + if (s->id != P_CLOUD) { + s->teleporting = 1; + } + } } /* check under us */ tt = gettileat(s->x,s->y+3,NULL,NULL); while (!finished) { if (tt->id == T_RIGHT) { - if (!ismonster(s->id)) { + if (!ismonster(s->id) && !isfruit(s->id)) { movex(s, 1.5); } finished = B_TRUE; } else if (tt->id == T_LEFT) { - if (!ismonster(s->id)) { + if (!ismonster(s->id) && !isfruit(s->id)) { movex(s, -1.5); } finished = B_TRUE; @@ -1746,9 +1844,9 @@ int isroofnabove(sprite_t *s, int howfar) { /* get tile above sprite's head */ tt = gettileat(s->x, ypos,NULL,NULL); if (tt->solid) return B_TRUE; - tt = gettileat(s->x + s->img->w/2, ypos,NULL,NULL); + tt = gettileat(s->x + (s->img->w/2 - 2), ypos,NULL,NULL); if (tt->solid) return B_TRUE; - tt = gettileat(s->x - s->img->w/2, ypos,NULL,NULL); + tt = gettileat(s->x - (s->img->w/2 - 2), ypos,NULL,NULL); if (tt->solid) return B_TRUE; return B_FALSE; @@ -1759,7 +1857,7 @@ int isonground(sprite_t *s) { if (isongroundpoint(s, s->x, s->y)) { return B_TRUE; } - if (!s->falling && !s->dropping) { + if ((s->dead) || (!s->falling && !s->dropping)) { if (isongroundpoint(s, s->x + s->img->w/2, s->y)) { return B_TRUE; } @@ -1780,6 +1878,11 @@ int isongroundpoint(sprite_t *s, int x,int y) { tt = gettileat(x,y, &tilex, &tiley); + // slope etc doesn't matter if you're dead + if (s->dead && tt->solid) { + return B_TRUE; + } + // when dropping, the tile you dropped from doesn't count // as "ground". if (s->dropping && (tilex == s->dropx) && (tiley == s->dropy)) { @@ -1834,6 +1937,7 @@ void dogravity(sprite_t *s) { if (s->dead) return; if (s->flies) return; + if (iseffect(s->id)) return; if (isbullet(s->id)) return; @@ -1867,6 +1971,7 @@ void dogravity(sprite_t *s) { } else { if (isonground(s) ) { + s->dropping = B_FALSE; s->falling = B_FALSE; s->climbing = B_FALSE; } else { @@ -1935,18 +2040,13 @@ void dogravity(sprite_t *s) { xnet = s2->x; ynet = s2->y - s2->img->h/2; - gotsomething = B_TRUE; + gotsomething++; } else { /* otherwise it gets angry */ s2->angry = B_TRUE; } } } - if (gotsomething) { - playfx(FX_KILL); - } - - gotsomething = B_FALSE; /* kill anything we hit */ for (s2 = sprite; s2 ; s2 = s2->next) { @@ -1958,7 +2058,7 @@ void dogravity(sprite_t *s) { if ((xdiff <= s2->img->w) && (ydiff <= s2->img->h)) { if (s2->id != P_CLOUD) { - /* becomes a powerup */ + /* dies and becomes a powerup */ s2->willbecome = poweruptypes[curpoweruptype]; if (poweruptypes[++curpoweruptype] == -1) { curpoweruptype = 0; @@ -1967,16 +2067,22 @@ void dogravity(sprite_t *s) { pointsinc *= 2; psize += 10; - gotsomething = B_TRUE; + gotsomething++; } } } } - if (gotsomething) { + if (gotsomething >= 1) { + playfx(FX_KILL); + } + if (gotsomething > 1) { playfx(FX_MULTIKILL); } + + gotsomething = B_FALSE; + /* release anything we've caught */ for (s2 = sprite; s2 ; s2 = s2->next) { if (s2->caughtby == s) { @@ -2031,6 +2137,9 @@ int movex(sprite_t *s,double amt) { 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; @@ -2042,7 +2151,7 @@ int movex(sprite_t *s,double amt) { /* new block is at least partially solid */ if (tt2->solid == S_SOLID) { return B_TRUE; - } else if (tt2->solid == S_SLOPE) { + } else if ((tt2->solid == S_SLOPE) && candoslopes(s->id)) { /* we can move, but need to adjust our height */ s->x += amt; } else { @@ -2059,7 +2168,7 @@ void adjustheight(sprite_t *s) { int xoff,groundy; int tilex,tiley; - if (s->flies) { + if ((s->flies) || isbullet(s->id)) { return; } @@ -2079,10 +2188,12 @@ void adjustheight(sprite_t *s) { int dofruiteffect(sprite_t *s) { if (s->id == P_SPEED) { + playfx(FX_POWERUP); player->speed = 2; addtext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, "Speed up!", &white,POINTSDELAY); return B_TRUE; } else if (s->id == P_NUMNETS) { + playfx(FX_POWERUP); if (player->netmax < 4) { player->netmax++; } @@ -2090,13 +2201,67 @@ int dofruiteffect(sprite_t *s) { addtext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,POINTSDELAY); return B_TRUE; } else if (s->id == P_BIGNET) { + playfx(FX_POWERUP); player->netbig = B_TRUE; sprintf(tempm, "Big net!"); addtext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,POINTSDELAY); return B_TRUE; } else if (s->id == P_HELP) { + playfx(FX_POWERUP); addtext(320,240,TEXTSIZE_HELP, s->name, &white,HELPDELAY); return B_TRUE; + } else if (isflower(s->id)) { + int xx; + sprite_t *ss; + tiletype_t *tt; + int found = B_FALSE; + + /* was this the last fruit of its kind on the level? */ + for (ss = sprite; ss; ss = ss->next) { + if ((ss != s) && (ss->id == s->id)) { + found = B_TRUE; + } + } + /* if so, create a left/right stream of flowers */ + if (!found) { + int howmany = STREAMWID + 1; + int puffdelay; + + // RIGHT + puffdelay = 0; + for (xx = s->x+TILEW; xx < s->x + (TILEW*howmany); xx += TILEW) { + // if on a wall, exit + tt = gettileat(xx,s->y-TILEH,NULL,NULL); + if (tt->solid) { + break; + } + /* create a flower */ + puffin(flowertogem(s->id), xx, s->y, puffdelay); + //ss = addsprite(P_PUFF, xx,s->y,"puff", B_FALSE); + //ss->timer1 = -puffdelay; + //ss->timer3 = flowertogem(s->id); + + puffdelay += 1; + } + // LEFT + puffdelay = 0; + for (xx = s->x+TILEW; xx > s->x - (TILEW*howmany); xx -= TILEW) { + // if on a wall, exit + tt = gettileat(xx,s->y-TILEH,NULL,NULL); + if (tt->solid) { + break; + } + puffin(flowertogem(s->id), xx, s->y, puffdelay); + //ss = addsprite(P_PUFF, xx,s->y,"puff", B_FALSE); + //ss->timer1 = -puffdelay; + //ss->timer3 = flowertogem(s->id); + puffdelay += 1; + } + playfx(FX_BONUS); + sprintf(tempm, "BONUS!"); + addtext(s->x,s->y - s->img->h/2, TEXTSIZE_BONUS, tempm,&white,BONUSDELAY); + return B_TRUE; + } } return B_FALSE; @@ -2165,6 +2330,8 @@ int initsound(void) { return B_TRUE; } + Mix_AllocateChannels(CH_LASTCHANNEL); + loadfx(FX_SHOOT, "shoot.wav"); loadfx(FX_SLAM, "slam.wav"); loadfx(FX_KILL, "kill.wav"); @@ -2174,6 +2341,9 @@ int initsound(void) { loadfx(FX_POWERUP, "powerup.wav"); loadfx(FX_DIE, "die.wav"); loadfx(FX_WINLEVEL, "winlevel.wav"); + loadfx(FX_HURRYUP, "hurryup.wav"); + loadfx(FX_TOOSLOW, "tooslow.wav"); + loadfx(FX_BONUS, "bonus.wav"); // load sound effects @@ -2183,16 +2353,66 @@ int initsound(void) { } } + // set up callback + Mix_ChannelFinished(channeldone); + // load music - music = Mix_LoadMUS("music/main.mod"); - if (!music) { + normalmusic = Mix_LoadMUS("music/main.mod"); + if (!normalmusic) { printf("can't load music\n"); return B_TRUE; } + fastmusic = Mix_LoadMUS("music/mainfast.mod"); + if (!fastmusic) { + printf("can't load fast music\n"); + return B_TRUE; + } + return B_FALSE; } void playfx(int num) { Mix_PlayChannel(-1, sfx[num], 0); } + +void playmusic(Mix_Music *toplay) { + /* stop music */ + if (musicplaying) { + Mix_HaltMusic(); + } + + /* start music */ + //music = toplay; + Mix_PlayMusic(toplay, -1); + + curmusic = toplay; + musicplaying = B_TRUE; +} + +void stopmusic(void) { + /* stop music */ + if (musicplaying) { + Mix_HaltMusic(); + } + musicplaying = B_FALSE; + curmusic = NULL; +} + +// callback for sound effects finishing +void channeldone(int channel) { + if (channel == CH_HURRYUP) { + // start fast music + playmusic(fastmusic); + } +} + + + +void puffin(int willbecome, int x, int y, int delay) { + sprite_t *ss; + ss = addsprite(P_PUFF, x, y, "puff", B_FALSE); + ss->timer3 = willbecome; + ss->timer1 = -delay; +} + diff --git a/rc.h b/rc.h index 09b1d4e..74aaa1e 100644 --- a/rc.h +++ b/rc.h @@ -13,6 +13,7 @@ void drawnetting(sprite_t *s); void dogravity(sprite_t *s); void dotileeffects(sprite_t *s); int movex(sprite_t *s,double amt); +void bouncesprite(sprite_t *s); void movesprite(sprite_t *s); int isinwater(sprite_t *s); int isroofabove(sprite_t *s); @@ -37,3 +38,7 @@ int canturn(sprite_t *pl); int initsound(void); int loadfx(int sid, char *filename); void playfx(int num); +void playmusic(Mix_Music *toplay); +void stopmusic(void); +void channeldone(int channel); +void puffin(int willbecome, int x, int y, int delay); diff --git a/shared.c b/shared.c index 694690c..55caa0c 100644 --- a/shared.c +++ b/shared.c @@ -555,6 +555,9 @@ void setdefaults(sprite_t *s) { s->jumping = 0; s->jumpspeed = 0; s->jumpdir = 1; + s->timer1 = 0; + s->timer2 = 0; + s->timer3 = 0; s->netting = 0; s->netmax = 1; s->netcaught = 0; @@ -600,15 +603,24 @@ void setdefaults(sprite_t *s) { case P_BURGER: s->score = 400; break; - case P_FLOWERRED: + case P_FLOWERYELLOW: s->score = 5; break; - case P_FLOWERYELLOW: + case P_FLOWERRED: s->score = 10; break; case P_FLOWERPURPLE: s->score = 30; break; + case P_GEMYELLOW: + s->score = 50; + break; + case P_GEMRED: + s->score = 75; + break; + case P_GEMPURPLE: + s->score = 100; + break; default: s->score = 0; break; @@ -945,6 +957,22 @@ int loadimagesets(void) { loadspriteimage(P_FLOWERPURPLE,F_WALK1, "sprites/flower-purple.png"); imageset[P_FLOWERPURPLE].numimages = 1; + loadspriteimage(P_GEMYELLOW,F_WALK1, "sprites/gem-yellow.png"); + imageset[P_GEMYELLOW].numimages = 1; + + loadspriteimage(P_GEMRED,F_WALK1, "sprites/gem-red.png"); + imageset[P_GEMRED].numimages = 1; + + loadspriteimage(P_GEMPURPLE,F_WALK1, "sprites/gem-purple.png"); + imageset[P_GEMPURPLE].numimages = 1; + + for (i = 0; i < PUFFFRAMES; i++) { + char name[SMALLBUFLEN]; + sprintf(name, "sprites/puff%d.png",i); + loadspriteimage(P_PUFF,i, name); + } + imageset[P_PUFF].numimages = PUFFFRAMES; + /* bullets */ loadspriteimage(P_SPIT,F_WALK1, "sprites/spit.bmp"); imageset[P_SPIT].numimages = 1; @@ -955,7 +983,7 @@ int loadimagesets(void) { /* generate rotated/flipped images */ for (p = 0; p < MAXPTYPES; p++) { /* rotated */ - if (!isfruit(p) && !isbullet(p)) { + if (!isfruit(p) && !isbullet(p) && !iseffect(p)) { tempimg = rotozoomSurface(imageset[p].img[F_DEAD],90,1,0); imageset[p].img[F_DEAD2] = SDL_DisplayFormat(tempimg); @@ -1044,6 +1072,17 @@ void drawsprite(sprite_t *s) { frame = F_WALK1; } else if (isbullet(s->id)) { frame = F_WALK1; + } else if (iseffect(s->id)) { + if (s->id == P_PUFF) { + if (s->timer1 >= PUFFFRAMES) { + frame = PUFFFRAMES-1; + } else if (s->timer1 < 0) { + // don't draw + return; + } else { + frame = s->timer1; + } + } } else if (s->dead) { if (s == player) { frame = F_DEAD; @@ -1193,16 +1232,23 @@ int gettileframecount(int tid) { return tt->numframes; } -int isfruit(int id) { +// returns gem type for a given flower +int flowertogem(int id) { + switch (id) { + case P_FLOWERRED: + return P_GEMRED; + case P_FLOWERYELLOW: + return P_GEMYELLOW; + case P_FLOWERPURPLE: + return P_GEMPURPLE; + + } + + return P_GEMRED; +} + +int isflower(int id) { switch (id) { - case P_CHEESE: - case P_ICECREAM: - case P_CHIPS: - case P_BURGER: - case P_SPEED: - case P_NUMNETS: - case P_BIGNET: - case P_HELP: case P_FLOWERRED: case P_FLOWERYELLOW: case P_FLOWERPURPLE: @@ -1213,12 +1259,41 @@ int isfruit(int id) { return B_FALSE; } +int isfruit(int id) { + switch (id) { + case P_CHEESE: + case P_ICECREAM: + case P_CHIPS: + case P_BURGER: + case P_SPEED: + case P_NUMNETS: + case P_BIGNET: + case P_HELP: + case P_FLOWERYELLOW: + case P_FLOWERRED: + case P_FLOWERPURPLE: + case P_GEMYELLOW: + case P_GEMRED: + case P_GEMPURPLE: + return B_TRUE; + + } + + return B_FALSE; +} + int isbullet(int id) { if (id == P_SPIT) return B_TRUE; return B_FALSE; } +int iseffect(int id) { + if (id == P_PUFF) return B_TRUE; + + return B_FALSE; +} + inline void drawpixel16(SDL_Surface *screen, int x, int y, SDL_Color c) { @@ -1375,6 +1450,7 @@ int chartomonster(char ch) { case 'Y': return P_FLOWERYELLOW; case 'P': return P_FLOWERPURPLE; case 'C': return P_COKE; + case '*': return P_GEMRED; } return -1; @@ -1392,6 +1468,7 @@ char monstertochar(int id ) { case P_FLOWERYELLOW: return 'Y'; case P_FLOWERPURPLE: return 'P'; case P_COKE: return 'C'; + case P_GEMRED: return '*'; } return '\0'; @@ -1466,3 +1543,11 @@ SDL_Surface *loadspriteimage(int spriteid, int frame, char *filename) { } return imageset[spriteid].img[frame]; } + +int candoslopes(int sid) { + switch(sid) { + case P_SNAKE: + return B_FALSE; + } + return B_TRUE; +} diff --git a/shared.h b/shared.h index 8dff819..5c312b6 100644 --- a/shared.h +++ b/shared.h @@ -17,6 +17,10 @@ void killsprite(sprite_t *s); void drawsprite(sprite_t *s); int gettileframecount(int tid); int isfruit(int id); +int isflower(int id); +int iseffect(int id); +int candoslopes(int sid); +int flowertogem(int id); inline void drawpixel16(SDL_Surface *screen, int x, int y, SDL_Color c); inline void drawpixel32(SDL_Surface *screen, int x, int y, SDL_Color c); inline void drawbox16(SDL_Surface *screen, int x1,int y1,int x2,int y2,SDL_Color *c,SDL_Color *fc); diff --git a/sounds/bonus.au b/sounds/bonus.au new file mode 100644 index 0000000..c7ad4bb Binary files /dev/null and b/sounds/bonus.au differ diff --git a/sounds/bonus.wav b/sounds/bonus.wav new file mode 100644 index 0000000..1fad04e Binary files /dev/null and b/sounds/bonus.wav differ diff --git a/sounds/hurryup.wav b/sounds/hurryup.wav new file mode 100644 index 0000000..8f7edce Binary files /dev/null and b/sounds/hurryup.wav differ diff --git a/sounds/multikill-old1.wav b/sounds/multikill-old1.wav new file mode 100644 index 0000000..5d1f70c Binary files /dev/null and b/sounds/multikill-old1.wav differ diff --git a/sounds/multikill.wav b/sounds/multikill.wav index 5d1f70c..9d8c042 100644 Binary files a/sounds/multikill.wav and b/sounds/multikill.wav differ diff --git a/sounds/tooslow.wav b/sounds/tooslow.wav new file mode 100644 index 0000000..eb8fd31 Binary files /dev/null and b/sounds/tooslow.wav differ diff --git a/sprites/birthstones.jpg b/sprites/birthstones.jpg new file mode 100644 index 0000000..d11978f Binary files /dev/null and b/sprites/birthstones.jpg differ diff --git a/sprites/coke.png b/sprites/coke.png new file mode 100644 index 0000000..747d0cd Binary files /dev/null and b/sprites/coke.png differ diff --git a/sprites/cokecaught.png b/sprites/cokecaught.png new file mode 100644 index 0000000..0755813 Binary files /dev/null and b/sprites/cokecaught.png differ diff --git a/sprites/cokedead.png b/sprites/cokedead.png new file mode 100644 index 0000000..53b11fe Binary files /dev/null and b/sprites/cokedead.png differ diff --git a/sprites/cokejump.png b/sprites/cokejump.png new file mode 100644 index 0000000..9f5ce84 Binary files /dev/null and b/sprites/cokejump.png differ diff --git a/sprites/dwarfshoot.png b/sprites/dwarfshoot.png new file mode 100644 index 0000000..86d5363 Binary files /dev/null and b/sprites/dwarfshoot.png differ diff --git a/sprites/flower-purple.png b/sprites/flower-purple.png new file mode 100644 index 0000000..9373299 Binary files /dev/null and b/sprites/flower-purple.png differ diff --git a/sprites/flower-yellow.png b/sprites/flower-yellow.png new file mode 100644 index 0000000..e5160b6 Binary files /dev/null and b/sprites/flower-yellow.png differ diff --git a/sprites/gem-purple.png b/sprites/gem-purple.png new file mode 100644 index 0000000..ea72372 Binary files /dev/null and b/sprites/gem-purple.png differ diff --git a/sprites/gem-red.png b/sprites/gem-red.png new file mode 100644 index 0000000..d3de78a Binary files /dev/null and b/sprites/gem-red.png differ diff --git a/sprites/gem-yellow.png b/sprites/gem-yellow.png new file mode 100644 index 0000000..082156c Binary files /dev/null and b/sprites/gem-yellow.png differ diff --git a/sprites/puff0.png b/sprites/puff0.png new file mode 100644 index 0000000..94f5b88 Binary files /dev/null and b/sprites/puff0.png differ diff --git a/sprites/puff1.png b/sprites/puff1.png new file mode 100644 index 0000000..8a58ede Binary files /dev/null and b/sprites/puff1.png differ diff --git a/sprites/puff2.png b/sprites/puff2.png new file mode 100644 index 0000000..1ef2b1c Binary files /dev/null and b/sprites/puff2.png differ diff --git a/sprites/puff3.png b/sprites/puff3.png new file mode 100644 index 0000000..211cad8 Binary files /dev/null and b/sprites/puff3.png differ diff --git a/sprites/puff4.png b/sprites/puff4.png new file mode 100644 index 0000000..cb885bc Binary files /dev/null and b/sprites/puff4.png differ diff --git a/sprites/puff5.png b/sprites/puff5.png new file mode 100644 index 0000000..1fa538e Binary files /dev/null and b/sprites/puff5.png differ diff --git a/world1/BAK b/world1/BAK new file mode 100644 index 0000000..ff19ea5 --- /dev/null +++ b/world1/BAK @@ -0,0 +1,58 @@ +tileset green +bg 0 +hurryup 30 +endmaps +help +Use X to jump, Z to catch the rat. +Once caught, Down+Z will slam and kill a monster! +endhelp +monsters +1 3 19 +? 7 19 +? 12 19 +@ 16 14 +@ 30 15 +@ 31 15 +P 21 15 +@ 22 15 +@ 20 15 +Y 23 15 +Y 19 15 +P 36 14 +Y 2 15 +Y 1 15 +Y 24 19 +Y 22 19 +Y 20 19 +r 18 15 +endmonsters +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,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,18,19,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,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,4, +4,1,1,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,4,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,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,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,4,4,4,4,4,4,4,4,4,4,4,4,4,4,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,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, diff --git a/world1/ORIG.level15.dat b/world1/ORIG.level15.dat new file mode 100644 index 0000000..faae120 --- /dev/null +++ b/world1/ORIG.level15.dat @@ -0,0 +1,34 @@ +tileset green +bg 0 +hurryup 30 +endmaps +**************************************** +*000000s00*0000000000000000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000a00* +*00000000000000000000000000000000000000* +*0a000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000a00000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*10000000000a0000000000000000a000000000* +***000>>>>>000>>>>>>>>>>>>>>000<<<<<<00* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/world1/blank.dat b/world1/blank.dat new file mode 100644 index 0000000..2fc80f7 --- /dev/null +++ b/world1/blank.dat @@ -0,0 +1,39 @@ +tileset green +bg 0 +hurryup 30 +endmaps +help +endhelp +monsters +1 3 28 +endmonsters +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,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,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,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, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, diff --git a/world1/level1.dat b/world1/level1.dat index ff19ea5..0680060 100644 --- a/world1/level1.dat +++ b/world1/level1.dat @@ -10,7 +10,6 @@ monsters 1 3 19 ? 7 19 ? 12 19 -@ 16 14 @ 30 15 @ 31 15 P 21 15 @@ -18,17 +17,20 @@ P 21 15 @ 20 15 Y 23 15 Y 19 15 -P 36 14 Y 2 15 Y 1 15 Y 24 19 Y 22 19 Y 20 19 -r 18 15 +r 27 15 +P 36 14 +Y 34 19 +@ 35 19 +P 36 19 endmonsters -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,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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, @@ -40,13 +42,13 @@ endmonsters 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,5,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,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,4, 4,1,1,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,4,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,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,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,4,4,4,4,4,4,4,4,4,4,4,4,4,4,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,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,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,0,0,0,0,0,4,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,4,4,4,4,4,4,4,4,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,4, 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, diff --git a/world1/level10.dat b/world1/level10.dat new file mode 100644 index 0000000..307ba14 --- /dev/null +++ b/world1/level10.dat @@ -0,0 +1,45 @@ +tileset green +bg 0 +hurryup 30 +endmaps +help +endhelp +monsters +1 5 26 +C 28 26 +C 35 3 +C 16 14 +r 36 9 +r 2 3 +S 17 22 +endmonsters +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,0,0,0,0,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,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,1,1,1,1,1,1,1,1,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,1,1,1,1,1,1,1,1,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,1,1,1,1,1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,1,1,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,4,1,20,21,21,21,21,20,1,1,1,1,1,4,4,1,1,20,21,21,21,21,21,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,20,20,20,20,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,3,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,3,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,3,0,0,0,0,4, +4,20,20,20,20,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,4,4,4,4,4,1,1,8,1,4, +4,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,7,4,4, +4,0,0,0,0,0,0,0,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,7,4,4, +4,0,0,0,0,0,0,0,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,7,4,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,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, diff --git a/world1/level11.dat b/world1/level11.dat new file mode 100644 index 0000000..8e74b6b --- /dev/null +++ b/world1/level11.dat @@ -0,0 +1,46 @@ +tileset green +bg 0 +hurryup 30 +endmaps +help +endhelp +monsters +1 3 28 +C 33 7 +C 11 13 +r 13 5 +r 19 21 +r 7 17 +S 28 24 +s 23 1 +endmonsters +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,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,0,0,0,0,0,0,0,0,0,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,1,1,20,20,21,21,21,21,22,22,22,22,22,22,21,21,21,20,20,1,1,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,0,0,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,20,20,21,21,21,20,20,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,1,1,20,20,21,21,21,21,22,22,22,22,22,22,21,21,21,20,20,1,1,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,0,0,0,0,0,0,0,0,0,0,0,0,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,1,1,20,20,20,21,21,21,22,22,22,22,22,22,21,21,21,21,20,20,20,1,1,1,1,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,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,1,20,20,20,20,20,20,20,20,20,20,20,20,20,1,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,2,1,1,1,1,1,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,2,4,4,4,4,4,4,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,2,4,4,4,4,4,4,4,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,1,1,1,20,20,20,20,20,20,20,20,20,20,20,1,1,1,1,4,4,4,4,4,4,4,4,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, +1,1,1,1,20,20,20,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,20,20,20,1,1,1,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, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, diff --git a/world1/level2.dat b/world1/level2.dat index 86963a8..0e03013 100644 --- a/world1/level2.dat +++ b/world1/level2.dat @@ -6,6 +6,7 @@ help Slam a monster onto another for a powerup. Grab this monster, but don't kill it yet... Stand on this ledge then slam! +Collect all flowers for a bonus! endhelp monsters 1 4 10 @@ -18,19 +19,22 @@ Y 15 8 Y 19 8 Y 32 8 Y 36 8 -@ 28 9 +Y 28 9 +r 9 4 +? 27 4 +Y 20 4 endmonsters 4,4,4,4,4,4,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,4, 4,4,4,4,4,4,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,18,23,19,0,0,4, -4,4,4,4,4,4,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,4, -4,4,4,4,4,4,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,4, -4,4,4,4,4,4,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,4, -4,4,4,4,4,4,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,4, -4,4,4,4,4,4,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,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,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,4, +4,4,4,4,4,4,4,0,0,0,0,0,0,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,4, +4,4,4,4,4,4,4,1,1,1,1,1,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,3,0,0,0,0,0,0,0,0,0,0,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,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,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,1,0,0,0,4,1,1,1,4,0,0,4, +4,0,0,0,0,0,0,0,0,5,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,5,1,6,0,0,4,1,1,1,4,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,4,4,4,4,4,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, diff --git a/world1/level3.dat b/world1/level3.dat index af7e844..263bb9d 100644 --- a/world1/level3.dat +++ b/world1/level3.dat @@ -1,11 +1,13 @@ tileset green bg 0 -hurryup 30 +hurryup 40 endmaps help +You can walk through spikes safely. +But don't fall on them! endhelp monsters -1 4 28 +1 4 27 r 19 15 r 5 7 r 35 7 @@ -27,51 +29,12 @@ r 4 23 @ 37 7 @ 37 23 @ 2 23 -@ 18 28 -@ 18 28 -@ 18 28 -@ 18 28 -@ 18 28 -@ 18 28 -@ 18 28 -@ 18 28 -@ 18 28 -@ 19 28 -@ 20 28 -@ 20 28 -@ 20 28 -@ 21 28 -@ 21 28 -@ 21 28 -@ 21 28 -@ 21 28 -@ 22 28 -@ 22 28 -@ 22 28 -@ 22 28 -@ 22 28 -@ 22 28 -@ 22 28 -@ 22 28 -@ 22 28 -@ 22 28 -@ 23 28 -@ 23 28 -@ 23 28 -@ 23 28 -@ 23 28 -@ 23 28 -@ 23 28 -@ 23 28 -@ 23 28 -@ 17 28 -@ 17 28 -@ 16 28 -@ 16 28 +? 10 19 +? 16 19 endmonsters 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,18,23,23,23,23,19,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, @@ -84,7 +47,7 @@ endmonsters 4,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,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,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,18,23,19,0,0,0,4, 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,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, @@ -96,6 +59,6 @@ endmonsters 4,1,1,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,1,1,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, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,0,0,0,0,0,0,0,0,0,6,11,11,5,0,0,0,0,0,0,0,0,0,0,0,0,6,11,11,5,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,4, +4,4,4,4,4,4,4,4,4,4,4,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, diff --git a/world1/level4.dat b/world1/level4.dat index cfb9874..2c27fd2 100644 --- a/world1/level4.dat +++ b/world1/level4.dat @@ -1,8 +1,9 @@ tileset green bg 0 -hurryup 30 +hurryup 120 endmaps help +Drop through bridges with Down+X endhelp monsters 1 17 8 @@ -30,13 +31,14 @@ Y 15 24 Y 6 24 P 8 4 @ 26 8 +? 21 8 endmonsters 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,1,1,1,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,0,0,0,0,4, +4,0,0,0,0,0,0,1,20,20,21,21,21,21,21,21,21,21,20,20,1,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, @@ -44,19 +46,19 @@ endmonsters 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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,4, +4,0,0,0,1,20,20,21,21,21,21,21,21,21,21,20,20,1,0,0,0,0,1,1,1,1,1,0,0,0,0,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,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,4, +4,0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,1,20,20,20,20,20,20,20,20,20,20,20,20,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,4, +4,0,0,0,1,20,20,21,21,21,21,21,21,21,21,20,20,1,0,0,0,0,1,1,1,1,1,0,0,0,0,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,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,4, +4,0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,1,20,20,21,21,21,21,21,21,21,21,20,20,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, diff --git a/world1/level5.dat b/world1/level5.dat index e8d6560..43643ac 100644 --- a/world1/level5.dat +++ b/world1/level5.dat @@ -60,7 +60,7 @@ endmonsters 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,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,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, diff --git a/world1/level6.bad b/world1/level6.bad new file mode 100644 index 0000000..8661976 --- /dev/null +++ b/world1/level6.bad @@ -0,0 +1,81 @@ +tileset green +bg 0 +hurryup 30 +endmaps +help +Rolling logs will push you along. +endhelp +monsters +P 19 1 +P 20 1 +P 21 1 +Y 8 21 +Y 31 21 +Y 29 21 +Y 27 21 +Y 10 21 +Y 12 21 +@ 23 13 +@ 16 13 +Y 26 13 +P 18 1 +Y 13 13 +@ 22 5 +@ 17 5 +@ 19 9 +@ 20 9 +Y 16 9 +Y 23 9 +Y 15 9 +Y 24 9 +Y 16 17 +Y 17 17 +Y 22 17 +Y 23 17 +Y 24 17 +Y 25 17 +Y 14 17 +Y 15 17 +@ 20 17 +@ 19 17 +P 16 5 +P 23 5 +1 2 25 +? 6 21 +r 21 17 +r 18 9 +r 11 21 +r 28 13 +r 19 5 +C 20 1 +endmonsters +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,1,1,1,1,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,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,18,19,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,1,1,9,9,9,9,1,1,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,1,1,20,20,20,20,20,20,20,20,1,1,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,1,1,1,1,1,1,10,10,10,10,10,10,1,1,1,1,1,1,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,1,20,20,20,20,20,1,1,1,1,1,1,1,1,1,1,1,1,20,20,20,20,20,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,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,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,9,1,1,1,1,1,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,16,16,16,16,16,16,16,16,16,16,16,16,16,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,17,17,17,17,17,17,17,17,17,17,17,17,17,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, diff --git a/world1/level6.dat b/world1/level6.dat index 57d31b5..cb0fe01 100644 --- a/world1/level6.dat +++ b/world1/level6.dat @@ -1,52 +1,75 @@ tileset green bg 0 -hurryup 30 +hurryup 248 endmaps help +Rolling logs will push you along. endhelp monsters -1 1 14 -r 27 9 -r 33 9 -r 18 15 -r 21 19 -P 19 25 -P 20 25 -P 25 9 -P 24 9 -@ 24 15 -@ 15 15 -@ 15 19 -@ 24 19 -Y 36 9 +1 2 25 +P 21 1 +Y 8 21 +Y 31 21 +Y 29 21 +Y 27 21 +Y 10 21 +Y 12 21 +P 18 1 +P 16 5 +P 23 5 +? 6 21 +r 11 21 +r 19 5 +Y 13 17 +Y 14 17 +Y 15 17 +Y 26 17 +Y 25 17 +Y 24 17 +@ 19 17 +@ 20 17 +@ 13 13 +@ 15 13 +@ 24 13 +@ 27 13 +@ 19 9 +@ 20 9 +Y 23 9 +Y 24 9 +Y 15 9 +Y 16 9 +C 20 1 +r 22 9 +r 26 13 +r 16 17 endmonsters 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,18,19,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,1,1,1,1,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,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,0,0,0,4, +4,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,18,19,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,5,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,1,1,9,9,9,9,1,1,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,4,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,4,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,4,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,4,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,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8,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,7,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,7,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,7,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,7,4, -4,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,0,0,0,0,0,0,0,7,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,7,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,7,4, -4,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,1,4, -4,4,4,4,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,4,4,4,4, -4,4,4,4,4,9,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,10,4,4,4,4,4, -4,4,4,4,4,4,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,4,4,4,4,4,4, -4,4,4,4,4,4,4,4,4,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,4,4,4,4,4,4,4,4,4, -4,4,4,4,4,4,4,4,4,4,4,4,9,9,9,9,0,0,0,0,0,0,0,0,10,10,10,10,4,4,4,4,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,4,4,4,4,4,4,4,4,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,4,4,4,4,4,4,4,4,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,1,1,0,0,0,4,4,4,4,4,4,4,4,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,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, -4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,11,11,11,11,11,11,11,11,4,4,4,4,4,4,4,4,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,1,1,1,1,1,1,1,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,0,0,0,0,0,0,0,0,1,1,20,20,20,20,20,20,20,20,1,1,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,6,0,0,0,0,0,0,6,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,1,1,1,1,1,1,10,10,10,10,10,10,1,1,1,1,1,1,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,1,20,20,20,20,20,1,1,1,1,1,1,1,1,1,1,1,1,20,20,20,20,20,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,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,5,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,9,1,1,1,1,1,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,16,16,16,16,16,16,16,16,16,16,16,16,16,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,17,17,17,17,17,17,17,17,17,17,17,17,17,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, diff --git a/world1/level9.dat b/world1/level9.dat index 7623eb0..c3a8d1a 100644 --- a/world1/level9.dat +++ b/world1/level9.dat @@ -1,18 +1,13 @@ tileset green bg 0 -hurryup 30 +hurryup 60 endmaps help endhelp monsters 1 1 2 -r 30 5 r 33 7 r 13 10 -r 29 16 -S 12 28 -S 12 28 -P 30 19 @ 6 28 @ 6 28 @ 6 28 @@ -34,6 +29,11 @@ Y 21 2 Y 18 2 Y 6 10 Y 10 10 +r 11 18 +C 9 28 +S 30 5 +S 30 5 +S 30 5 endmonsters 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,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, @@ -45,17 +45,17 @@ endmonsters 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,4,15,15,15,4, 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,16,16,16,16,16,1,1,1,4,15,15,15,4, 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,15,15,15,15,15,4,4,4,4,15,15,15,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,15,15,15,15,15,4,4,4,4,15,15,15,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,4,4,4,4,15,15,15,15,15,4,4,4,4,15,15,15,4, 4,1,1,8,1,1,1,1,1,1,1,1,1,1,1,1,1,16,16,16,16,16,16,4,4,4,4,15,15,15,15,15,4,4,4,4,15,15,15,4, -4,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,15,15,15,15,4,4,4,4,15,15,15,15,15,4,4,4,4,15,15,15,4, +4,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,15,15,15,15,4,4,4,15,15,15,15,15,15,15,4,4,4,15,15,15,4, 4,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,4, 4,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,4, -4,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,4, -4,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,4, -4,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,15,15,15,15,15,15,1,1,1,1,1,15,15,15,15,15,15,15,4, -4,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,15,15,15,15,15,15,4,12,0,0,4,15,15,15,15,15,15,15,4, -4,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,15,15,15,15,15,15,4,13,0,0,4,15,15,15,15,15,15,15,4, -4,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,15,15,15,15,15,15,4,1,16,1,4,15,15,15,15,15,15,15,4, +4,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,15,15,15,15,15,15,15,1,1,1,1,1,1,15,15,15,15,15,15,4, +4,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,15,15,15,15,15,15,4,0,0,0,0,4,15,15,15,15,15,15,4, +4,4,4,7,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,15,15,15,15,15,15,4,0,0,0,0,4,15,15,15,15,15,15,4, +4,4,4,7,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,15,15,15,15,15,15,4,12,0,0,0,4,15,15,15,15,15,15,4, +4,4,4,8,1,1,1,1,1,1,1,1,1,1,1,4,4,4,4,4,4,15,15,15,15,15,15,4,13,0,0,0,4,15,15,15,15,15,15,4, +4,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,15,15,15,15,15,15,4,1,16,16,16,4,15,15,15,15,15,15,4, 4,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,4, 4,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,4, 4,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,4, diff --git a/world1/level99.dat b/world1/level99.dat new file mode 100644 index 0000000..4fa4bac --- /dev/null +++ b/world1/level99.dat @@ -0,0 +1,42 @@ +tileset green +bg 0 +hurryup 30 +endmaps +help +endhelp +monsters +1 7 12 +Y 10 12 +@ 17 17 +P 25 21 +endmonsters +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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,