diff --git a/backgrounds/beach1.png b/backgrounds/beach1.png new file mode 100644 index 0000000..4456c12 Binary files /dev/null and b/backgrounds/beach1.png differ diff --git a/backgrounds/beach2.png b/backgrounds/beach2.png new file mode 100644 index 0000000..04afe4c Binary files /dev/null and b/backgrounds/beach2.png differ diff --git a/backgrounds/fire1.png b/backgrounds/fire1.png new file mode 100644 index 0000000..9651623 Binary files /dev/null and b/backgrounds/fire1.png differ diff --git a/backgrounds/fire2.png b/backgrounds/fire2.png new file mode 100644 index 0000000..265de13 Binary files /dev/null and b/backgrounds/fire2.png differ diff --git a/backgrounds/forest.png b/backgrounds/forest.png new file mode 100644 index 0000000..c037f64 Binary files /dev/null and b/backgrounds/forest.png differ diff --git a/backgrounds/forest2.png b/backgrounds/forest2.png new file mode 100644 index 0000000..ba9ba37 Binary files /dev/null and b/backgrounds/forest2.png differ diff --git a/backgrounds/sky1.png b/backgrounds/sky1.png new file mode 100644 index 0000000..dd1331a Binary files /dev/null and b/backgrounds/sky1.png differ diff --git a/backgrounds/sky2.png b/backgrounds/sky2.png new file mode 100644 index 0000000..93f20b4 Binary files /dev/null and b/backgrounds/sky2.png differ diff --git a/backgrounds/snow1.png b/backgrounds/snow1.png new file mode 100644 index 0000000..95ee64d Binary files /dev/null and b/backgrounds/snow1.png differ diff --git a/backgrounds/snow2.png b/backgrounds/snow2.png new file mode 100644 index 0000000..ee02a5a Binary files /dev/null and b/backgrounds/snow2.png differ diff --git a/defs.h b/defs.h index 1e2a151..5d81cbf 100644 --- a/defs.h +++ b/defs.h @@ -26,6 +26,10 @@ #define PUFFSPEED 4 // how fast it animates (smaller = faster) #define PUFFAPPEAR 4 // frame at which puff will turn into a gem +// sparkles +#define SPARKLEFRAMES 7 +//#define SPARKLESPEED 3 // how fast it animates (smaller = faster) + // text sizes #define TEXTSIZE_POINTS 10 #define TEXTSIZE_SCORE 14 @@ -38,6 +42,7 @@ #define TEXTSIZE_LIFE 36 #define TEXTSIZE_BOMB 36 #define TEXTSIZE_HURRY 50 +#define TEXTSIZE_PAUSED 50 #define TEXTSIZE_GAMEOVER 50 // text delays @@ -74,7 +79,15 @@ #define NETSPEED 9 // how fast the player's net moves #define POWERUPTIME 15 // # secs before a powerup appears -#define MACEEXPX 4 // X size of mace explosion +#define BELLTIME 20 // how long the bell flash lasts +#define CLOCKTIME 10 // how many seconds a clock lasts + + +// bell states +#define BELL_DONESOUND 1 +#define BELL_DONEFLASH 2 + +#define MACEEXPX 2 // X size of mace explosion #define MACEEXPY 2 // Y size of mace explosion @@ -83,7 +96,7 @@ #define MAXMAPPINGS 50 #define MAXMONSTERSPERLEVEL 40 #define MAXLETTERHEIGHT 100 -#define MAXFRAMES 16 // max number of frames for sprites +#define MAXFRAMES 18 // max number of frames for sprites #define MAXHELP 5 #define MAXTILEFRAMES 10 // max number of frames for animated tiles @@ -104,7 +117,7 @@ /* enums */ /* sounds */ -#define MAXFX 19 +#define MAXFX 24 #define FX_SHOOT 0 #define FX_SLAM 1 #define FX_KILL 2 @@ -125,6 +138,10 @@ #define FX_MACE 17 #define FX_LIFE 18 #define FX_GAMEOVER 19 +#define FX_OW 20 +#define FX_BELL 21 +#define FX_CLOCK 22 +#define FX_ARMOR 23 // Slope types #define S_NOTSOLID 0 @@ -132,7 +149,7 @@ #define S_SLOPE 2 // Sprite types -#define MAXPTYPES 33 +#define MAXPTYPES 43 #define P_PLAYER 0 #define P_RAT 1 #define P_CHEESE 2 @@ -166,12 +183,25 @@ #define P_SHIELD 30 #define P_MACEPOWERUP 31 #define P_MACE 32 +#define P_SMASH 33 // explosion from a mace smash +#define P_HELMET 34 // helmet powerup +#define P_ARMOUR 35 // player wearing armour +#define P_GEMBOOST 36 +#define P_TROPHY 37 +#define P_RINGSILVER 38 +#define P_RINGGOLD 39 +#define P_SPARKLE 40 +#define P_BELL 41 +#define P_CLOCK 42 // powerups #define PW_NONE 0 #define PW_BOXING 1 // boxing glove #define PW_BOMB 2 // bomb -#define PW_MACE 3 // made +#define PW_MACE 3 // mace +#define PW_RINGWALK 4 // points for walking +#define PW_RINGJUMP 5 // points for jumping +#define PW_CLOCK 6 // freeze time // Frame names #define F_WALK1 0 @@ -190,6 +220,8 @@ #define F_SLAM3 13 #define F_SLAM4 14 #define F_SLAM5 15 +#define F_SWIM1 16 +#define F_SWIM2 17 // Level states @@ -292,7 +324,7 @@ typedef struct text_s { typedef struct level_s { int id; int bgtileid; - char *tileset; + char bgfile[MIDBUFLEN]; char name[SMALLBUFLEN]; int map[LEVELW*LEVELH]; int map2[LEVELW*LEVELH]; // second map layer @@ -305,6 +337,7 @@ typedef struct level_s { int powerupx; /* powerup position */ int powerupy; /* powerup position */ int gotpowerup; /* has the random powerup appeared yet? */ + int poweruptype;/* what kind of powerup will appear? */ int exitdir; /* which way to scroll on level completion */ int nummonsters; initialmonster_t initm[MAXMONSTERSPERLEVEL]; @@ -331,6 +364,7 @@ typedef struct sprite_s { // player only int lives; + int recoiling; // this happens after you get hit while wearing armour int slamming; // are we slamming our net (player only) double slamangle;// are what point around is our net? int netting; // are we shooting our net out? @@ -341,7 +375,6 @@ typedef struct sprite_s { int netspeed; // how fast does our net shoot out? int netdir; // which way is our net going (left/right) int netlen; // how far our is our net? - int netbig; // have we collected a BIG NET powerup? int nety; // y position of end of net (used when shooting >1 net) int netxstart; // x position of start of net int netystart; // y position of start of net @@ -350,6 +383,11 @@ typedef struct sprite_s { int ontramp; // on a trampoline? int trampx; // x,y coords for trampoline we are/were on int trampy; // + // player permenant powerups + int armour; // does the player have armour? + int gemboost; // how many extra gems do you get in a bonus + int netbig; // have we collected a BIG NET powerup? + int hasbell; // got a bell ? // monster only int willbecome; // what fruit this will become when dead diff --git a/doco/adding_a_sprite.txt b/doco/adding_a_sprite.txt index fcbd843..eae480c 100644 --- a/doco/adding_a_sprite.txt +++ b/doco/adding_a_sprite.txt @@ -6,5 +6,6 @@ - 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 edit.c: update isplacable() - in rc.c: update ismonster() - in rc.c: add monster/effect movement diff --git a/doco/making_a_background.txt b/doco/making_a_background.txt new file mode 100644 index 0000000..1c5401f --- /dev/null +++ b/doco/making_a_background.txt @@ -0,0 +1,5 @@ +- Get photo +- Resize to 640x480 +- layer->colors->brightness, select -127 +- layer->colors->brightness, select -70 +- save to backgrounds/ diff --git a/edit.c b/edit.c index 6595c22..36a34ff 100644 --- a/edit.c +++ b/edit.c @@ -99,6 +99,12 @@ int main (int argc, char **argv) { screen = SDL_SetVideoMode(EDITORW,EDITORH,16,SDL_SWSURFACE|SDL_DOUBLEBUF|vidargs); #endif + /* init tiles */ + if (loadtiletypes("green.tiles")) { + printf("Cannot initialise tiles\n"); + exit(1); + } + if (loadimagesets()) { return 1; } @@ -370,9 +376,15 @@ int main (int argc, char **argv) { if (toggletimer == 0) { printf("Skipping to next level.\n"); curlevelnum++; - if (loadlevel(curworld,curlevelnum)) { - printf("creating new level\n"); + if ((curlevelnum >= numlevels) || loadlevel(curworld,curlevelnum)) { + char tempbuf[BUFLEN]; clearlevel(); + numlevels++; + sprintf(tempbuf,"new_level%d.dat",curlevelnum); + levelentry[curlevelnum].filename = strdup(tempbuf); + sprintf(tempbuf,"NEW LEVEL"); + levelentry[curlevelnum].desc = strdup(tempbuf); + printf("created new level '%s'\n",levelentry[curlevelnum].filename); } draweditorlevel(); drawsprites(); @@ -594,11 +606,11 @@ int savelevel(int wnum, int lnum) { f = fopen(filename,"wt"); if (!f) { - printf("can't open level file\n"); + printf("can't open level file '%s'\n",filename); return B_TRUE; } - fprintf(f, "tileset %s\n",level->tileset); + fprintf(f, "bgfile %s\n",level->bgfile); fprintf(f, "bg %d\n",level->bgtileid); fprintf(f, "hurryup %d\n",level->hurryuptime); @@ -699,6 +711,7 @@ int isplacablesprite(int sid) { case P_CLOUD: case P_SPIT: case P_PUFF: + case P_SMASH: case P_BOXING: case P_GLOVE: case P_DIAMOND: diff --git a/green.tiles b/green.tiles new file mode 100644 index 0000000..adb89b4 --- /dev/null +++ b/green.tiles @@ -0,0 +1,208 @@ +tile blank +id 0 +solid 0 +file blank.bmp +end + +tile land +id 1 +solid 1 +file newtiles/land.png +end + +tile slopeup +id 2 +solid 2 +lowness 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 +file newtiles/slopeup.png +end + +tile slopedown +id 3 +solid 2 +lowness 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 +file newtiles/slopedown.png +end + +tile full +id 4 +solid 1 +file newtiles/full.png +end + +tile sky +id 5 +solid 0 +file newtiles/signright.png +end + +tile sky2 +id 5 +solid 0 +file newtiles/signleft.png +end + + + +tile ladder +id 6 +solid 0 +file newtiles/ladder.png +end + +tile laddertop +id 7 +solid 1 +file newtiles/laddertop.png +end + +tile right +id 8 +solid 1 +dir newtiles +file log1.png log1.5.png log2.png log2.5.png log3.png log3.5.png log4.png log4.5.png +animspeed 5 +end + +tile left +id 9 +solid 1 +dir newtiles +file log4.5.png log4.png log3.5.png log3.png log2.5.png log2.png log1.5.png log1.png +animspeed 5 +end + +tile spikes +id 10 +solid 0 +spikes 1 +file newtiles/spikes.png +end + +tile teleport +id 11 +solid 0 +file teleport.bmp +end + +tile teleport2 +id 12 +solid 0 +file teleport2.bmp +end + +tile teleportdest +id 13 +solid 0 +file teleexit.bmp +end + +tile water +id 14 +solid 0 +water 1 +file newtiles/water.png +end + +tile watertop +id 15 +water 1 +solid 0 +file newtiles/watertop.png +end + +tile trampolineup +id 18 +solid 0 +file newtiles/trampup.png +end + + +tile webleft +id 5 +solid 0 +file newtiles/webleft.png +end + +tile webright +id 5 +solid 0 +file newtiles/webright.png +end + +tile bridge +id 17 +solid 2 +file newtiles/bridge.png +end + +tile bridge2 +id 17 +solid 2 +file newtiles/bridge2.png +lowness 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +end + +tile bridge3 +id 17 +solid 2 +file newtiles/bridge3.png +lowness 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 +end + +tile cloudmid +id 5 +solid 0 +file newtiles/cloudmid.png +end + +tile honey +id 1 +solid 1 +file newtiles/honey.png +end + +tile honeytop +id 4 +solid 1 +file newtiles/honeytop.png +end + +tile honeybg +id 5 +solid 0 +file newtiles/honeybg.png +end + +tile cavebg +id 5 +solid 0 +file newtiles/cavebg.png +end + +tile cavebridge +id 17 +solid 2 +file newtiles/cavebridge.png +end + +tile signup +id 5 +solid 0 +file newtiles/signup.png +end + + +tile signdown +id 5 +solid 0 +file newtiles/signdown.png +end + + +tile trampolinedown +id 19 +solid 2 +file newtiles/trampdown.png +lowness 9,9,8,8,8,8,8,8,8,8,8,8,8,8,9,9 +end diff --git a/levels.dat b/levels.dat index 3d2dd24..853fa19 100644 --- a/levels.dat +++ b/levels.dat @@ -1,20 +1,20 @@ -1,level1.dat,Ratcatching school -2,level2.dat,Powerup school -3,level3.dat,Spike school -4,level4.dat,Bridge school -5,level5.dat,Hole in the hill -7,level6.dat,Roller school -6,level5.5.dat,The Pit -8,level7.dat,Platforms and Ladders -12,level9.dat,The Garden -14,level10.dat,Planks -15,level11.dat,The Hive -9,level7.5.dat,The Snake Pit -16,level11.5.dat,Underground Lakes -17,level12.dat,Bee Pods -18,level13.dat,Dual Hives -19,level14.dat,The Chimney -10,level8.dat,Smile! -11,level8.5.dat,Look out above... +1,level1.dat,Ratcatching School +2,level2.dat,Powerup School +3,level3.dat,Spike School +4,level4.dat,Bridge School +5,level5.dat,Hole in the Hill +6,level6.dat,Roller School +7,level7.dat,Platforms and Ladders +8,level9.dat,The Garden +9,level10.dat,Planks +10,level11.dat,The Hive +11,level5.5.dat,Spike Pit +12,level7.5.dat,Snake Holes +13,level11.5.dat,Underground Lakes +14,level12.dat,Bee Pods +15,level13.dat,Dual Hives +16,level14.dat,The Chimney +17,level8.dat,Smile! +18,level8.5.dat,Look out above... +19,level21.dat,Island 99,level99.dat,TEST LEVEL -13,level9.5.dat,Back and Forth diff --git a/newtiles/webleft.png b/newtiles/webleft.png new file mode 100644 index 0000000..37c7640 Binary files /dev/null and b/newtiles/webleft.png differ diff --git a/newtiles/webright.png b/newtiles/webright.png new file mode 100644 index 0000000..5c717f0 Binary files /dev/null and b/newtiles/webright.png differ diff --git a/rc.c b/rc.c index e6b2362..2be931e 100644 --- a/rc.c +++ b/rc.c @@ -28,6 +28,12 @@ Mix_Music *curmusic = NULL; // pointer to currently playing music char tempm[BUFLEN]; +int playedbell; +int clocktime; + +SDL_Surface *pausedtext, *pausedshadow; +int paused; + tiletype_t fakeblock; @@ -45,8 +51,13 @@ int fruittypes[] = { int poweruptypes[] = { P_SPEED, P_NUMNETS, + P_BELL, P_BIGNET, + P_GEMBOOST, P_NUMNETS, + P_GEMBOOST, + P_NUMNETS, + P_HELMET, -1 }; @@ -74,6 +85,7 @@ SDL_Color black = {0, 0, 0, 0}; SDL_Color blue = {0, 0, 255, 0}; SDL_Color cyan = {0, 255, 255, 0}; SDL_Color white = {255, 255, 255, 0}; +SDL_Color grey = {210, 210, 210, 0}; SDL_Color green = {0, 255, 0, 0}; SDL_Color yellow = {255, 255, 0, 0}; @@ -202,6 +214,12 @@ int main (int argc, char **argv) { return 1; } + /* init tiles */ + if (loadtiletypes("green.tiles")) { + printf("Cannot initialise tiles\n"); + exit(1); + } + playmusic(normalmusic); if (loadlevel(curworld,curlevelnum)) { return 1; @@ -220,6 +238,18 @@ int main (int argc, char **argv) { player->score = 0; player->lives = 3; + + + + + + + /* generate images for "PAUSED" text */ + pausedtext = TTF_RenderText_Solid(font[TEXTSIZE_PAUSED], "PAUSED", yellow); + pausedshadow = TTF_RenderText_Solid(font[TEXTSIZE_PAUSED], "PAUSED", black); + paused = B_FALSE; + + // main loop while (1) { removeall(); @@ -287,120 +317,105 @@ int main (int argc, char **argv) { keys = SDL_GetKeyState(NULL); - - if (keys[SDLK_q]) { - gtime = nexthurryup-1; - } if (keys[SDLK_p]) { if (toggletimer == 0) { - addscore(player, 100001); + if (paused) { + paused = B_FALSE; + } else { + paused = B_TRUE; + } toggletimer = 80; } } - if (keys[SDLK_n]) { - if (toggletimer == 0) { - nextlevel(); - toggletimer = 50; - } - } - // dump sprites - if (keys[SDLK_d]) { - if (toggletimer == 0) { - dumpsprites(); - toggletimer = 50; - } - } - if (keys[SDLK_RETURN]) { - if (toggletimer == 0) { - SDL_WM_ToggleFullScreen(screen); - toggletimer = 50; - } - } if (keys[SDLK_ESCAPE]) { return 1; } - if ((!player->dead) && (!player->teleporting)) { - if (keys[SDLK_RIGHT]) { - if (canmove(player)) { - movex(player, getspeed(player)); - } - if (canturn(player)) { - player->dir = D_RIGHT; - } - } - if (keys[SDLK_LEFT]) { - if (canmove(player)) { - movex(player, -getspeed(player)); - } - if (canturn(player)) { - player->dir = D_LEFT; - } - } - if (keys[SDLK_UP]) { - //if (isonladder(player) || isladderabove(player)) { - if (player->climbing || isladderabove(player)) { - if (!player->netting && !player->slamming) { - player->y -= getspeed(player); - player->jumping = 0; - player->falling = 0; - player->climbing = B_TRUE; - player->moved = B_TRUE; - } - } - } - if (keys[SDLK_DOWN]) { - if (isonladder(player)) { - if (!player->netting && !player->slamming) { - player->y += getspeed(player); - player->jumping = 0; - player->falling = 0; - player->climbing = B_TRUE; - player->moved = B_TRUE; - } - } - } - if (keys[SDLK_x]) { - if (isinwater(player)) { - 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; - } - playfx(FX_SPLASH); - jump(player, whichway); - } + if (!paused) { + if (keys[SDLK_q]) { + gtime = nexthurryup-1; + } + if (keys[SDLK_l]) { + if (toggletimer == 0) { + addscore(player, 100001); + toggletimer = 80; + } + } + if (keys[SDLK_n]) { + if (toggletimer == 0) { + nextlevel(); + toggletimer = 50; + } + } + if (keys[SDLK_d]) { + if (toggletimer == 0) { + // dump sprites + dumpsprites(); + toggletimer = 50; + } + } + if (keys[SDLK_RETURN]) { + if (toggletimer == 0) { + SDL_WM_ToggleFullScreen(screen); + toggletimer = 50; + } + } + + if ((!player->dead) && (!player->teleporting)) { + if (keys[SDLK_RIGHT]) { + if (canmove(player)) { + movex(player, getspeed(player)); + } + if (canturn(player)) { + player->dir = D_RIGHT; + } + } + if (keys[SDLK_LEFT]) { + if (canmove(player)) { + movex(player, -getspeed(player)); + } + if (canturn(player)) { + player->dir = D_LEFT; + } + } + if (keys[SDLK_UP]) { + //if (isonladder(player) || isladderabove(player)) { + if (player->climbing || isladderabove(player)) { + if (!player->netting && !player->slamming) { + player->y -= getspeed(player); + player->jumping = 0; + player->falling = 0; + player->climbing = B_TRUE; + player->moved = B_TRUE; } } - } else { // not in water - if (!player->jumping) { - if (!player->falling) { - if (isonground(player) || isonladder(player)) { - /* dropping through a bridge */ - if (keys[SDLK_DOWN]) { - if (isonbridge(player) && !player->falling) { - /* drop down */ - player->dropping = B_TRUE; - player->dropx = player->x / TILEW; - player->dropy = player->y / TILEH; - } - } else { // jumping + } + if (keys[SDLK_DOWN]) { + if (isonladder(player)) { + if (!player->netting && !player->slamming) { + player->y += getspeed(player); + player->jumping = 0; + player->falling = 0; + player->climbing = B_TRUE; + player->moved = B_TRUE; + } + } + } + if (keys[SDLK_x]) { + if (isinwater(player)) { + 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]) { @@ -408,78 +423,106 @@ int main (int argc, char **argv) { } else { whichway = 0; } - + playfx(FX_SPLASH); jump(player, whichway); } + + } + } + } else { // not in water + if (!player->jumping) { + if (!player->falling) { + if (isonground(player) || isonladder(player)) { + /* dropping through a bridge */ + if (keys[SDLK_DOWN]) { + if (isonbridge(player) && !player->falling) { + /* drop down */ + player->dropping = B_TRUE; + player->dropx = player->x / TILEW; + player->dropy = player->y / TILEH; + } + } else { // jumping + int whichway; + if (keys[SDLK_RIGHT]) { + whichway = 1; + } else if (keys[SDLK_LEFT]) { + whichway = -1; + } else { + whichway = 0; + } + + jump(player, whichway); + } + } } } } } - } - if (keys[SDLK_z]) { - if ((!player->netting) && (!player->slamming)) { - if (keys[SDLK_DOWN]) { - /* slam */ - if ((!player->slamming) && (isonground(player))) { - playfx(FX_SLAM); - player->slamming = B_TRUE; - player->slamangle = 0; - player->netxstart = player->x - (player->img->w/2)*player->dir; - player->netystart = player->y; + if (keys[SDLK_z]) { + if ((!player->netting) && (!player->slamming)) { + if (keys[SDLK_DOWN]) { + /* slam */ + if ((!player->slamming) && (isonground(player))) { + playfx(FX_SLAM); + player->slamming = B_TRUE; + player->slamangle = 0; + player->netxstart = player->x - (player->img->w/2)*player->dir; + player->netystart = player->y; - /* handle boxing glove */ - if (player->powerup == PW_MACE) { - sprite_t *s; - int found; - // use existing mace if it is there - found = B_FALSE; - for (s = sprite; s ; s = s->next) { - if (s->id == P_MACE) { - s->x = player->x; - s->y = player->y - (imageset[P_PLAYER].img[F_SHOOT]->h / 2) + 5; - found = B_TRUE; + /* handle mace */ + if (player->powerup == PW_MACE) { + sprite_t *s; + int found; + // use existing mace if it is there + found = B_FALSE; + for (s = sprite; s ; s = s->next) { + if (s->id == P_MACE) { + s->x = player->x; + s->y = player->y - (imageset[player->id].img[F_SHOOT]->h / 2) + 5; + found = B_TRUE; + } + } + + if (!found) { + addsprite(P_MACE, player->x, + player->y - (imageset[player->id].img[F_SHOOT]->h / 2) + 5, + "mace"); } } - if (!found) { - addsprite(P_MACE, player->x, - player->y - (imageset[P_PLAYER].img[F_SHOOT]->h / 2) + 5, - "mace"); + } + } else { + if ((player->netcaught < player->netmax) && (player->climbing == B_FALSE)) { + /* shoot net */ + playfx(FX_SHOOT); + player->netting = 1; + if (player->netbig) { + player->netspeed = NETSPEED+3; + } else { + player->netspeed = NETSPEED; } - } + player->netlen = 0; + player->netdir = player->dir; - } - } else { - if ((player->netcaught < player->netmax) && (player->climbing == B_FALSE)) { - /* shoot net */ - playfx(FX_SHOOT); - player->netting = 1; - if (player->netbig) { - player->netspeed = NETSPEED+3; - } else { - player->netspeed = NETSPEED; - } - player->netlen = 0; - player->netdir = player->dir; - - /* handle boxing glove */ - if (player->powerup == PW_BOXING) { - sprite_t *s; - int found; - // use existing glove if it is there - found = B_FALSE; - for (s = sprite; s ; s = s->next) { - if (s->id == P_GLOVE) { - s->x = player->x; - s->y = player->y - (imageset[P_PLAYER].img[F_SHOOT]->h / 2) + 5; - found = B_TRUE; + /* handle boxing glove */ + if (player->powerup == PW_BOXING) { + sprite_t *s; + int found; + // use existing glove if it is there + found = B_FALSE; + for (s = sprite; s ; s = s->next) { + if (s->id == P_GLOVE) { + s->x = player->x; + s->y = player->y - (imageset[player->id].img[F_SHOOT]->h / 2) + 5; + found = B_TRUE; + } } - } - if (!found) { - addsprite(P_GLOVE, player->x, - player->y - (imageset[P_PLAYER].img[F_SHOOT]->h / 2) + 5, - "glove"); + if (!found) { + addsprite(P_GLOVE, player->x, + player->y - (imageset[player->id].img[F_SHOOT]->h / 2) + 5, + "glove"); + } } } } @@ -489,55 +532,91 @@ int main (int argc, char **argv) { } - // for each animated tile on the level... - for (animtile = curlevel->animtiles; animtile && *animtile != -1; animtile++) { - int offset,numframes; - tiletype_t *tt; + if (!paused) { + if (player->powerup != PW_CLOCK) { + // for each animated tile on the level... + for (animtile = curlevel->animtiles; animtile && *animtile != -1; animtile++) { + int offset,numframes; + tiletype_t *tt; - offset = *animtile; + offset = *animtile; - tt = gettile(curlevel->map[offset]); + tt = gettile(curlevel->map[offset]); - numframes = tt->numframes; + numframes = tt->numframes; + + // is it time to change frames? + if ((timer % tt->animspeed) == 0) { + // change its frame + curlevel->tileframe[offset]++; + if (curlevel->tileframe[offset] >= numframes) { + curlevel->tileframe[offset] = 0; + } + // redraw it + drawtile(temps, offset%LEVELW,offset/LEVELW); + } - // is it time to change frames? - if ((timer % tt->animspeed) == 0) { - // change its frame - curlevel->tileframe[offset]++; - if (curlevel->tileframe[offset] >= numframes) { - curlevel->tileframe[offset] = 0; } - // redraw it - drawtile(temps, offset%LEVELW,offset/LEVELW); } - } - - // move sprites - for (s = sprite; s ; s = s->next) { - movesprite(s); - } - movetext(); + // move sprites + for (s = sprite; s ; s = s->next) { + movesprite(s); + } + movetext(); - if (levelcomplete == LV_INIT) { - // only player - dogravity(player); - dotileeffects(player); - } else { - /* gravity */ - for (s = sprite ; s ; s = s->next) { - dogravity(s); + if (levelcomplete == LV_INIT) { + // only player + dogravity(player); + dotileeffects(player); + } else { + /* gravity */ + for (s = sprite ; s ; s = s->next) { + dogravity(s); + } + + /* tile effects */ + for (s = sprite ; s ; s = s->next) { + dotileeffects(s); + } } - /* tile effects */ + // bell flash effect + if (player->hasbell) { + /* check for bell sound */ + + /* play a bell sound if the powerup will be a permenant one */ + if (ispermenant(level->poweruptype)) { + // play sound once + if (!playedbell) { + playfx(FX_BELL); + playedbell = BELL_DONESOUND; + } + if (playedbell != BELL_DONEFLASH) { + if (timer >= BELLTIME) { + playedbell = BELL_DONEFLASH; + } else if (timer % 10 == 0) { + SDL_Rect area; + area.x = 0; + area.y = 0; + area.w = 640; + area.h = 480; + SDL_FillRect(screen, &area, SDL_MapRGB(screen->format,white.r,white.g,white.b)); + flip(); + } + } + } + } + + /* check collisions for player and effects */ for (s = sprite ; s ; s = s->next) { - dotileeffects(s); + if ((s == player) || needscollisions(s->id)) { + checkcollide(s); + } } } - /* check collisions */ - checkcollide(player); drawscore(); @@ -547,45 +626,69 @@ int main (int argc, char **argv) { for (s = sprite ; s ; s = s->next) { if (s->id != P_PUFF) drawsprite(s); } - /* draw puffs sprites */ + /* draw puff sprites */ for (s = sprite ; s ; s = s->next) { if (s->id == P_PUFF) drawsprite(s); } /* draw text */ drawtext(); - /* is screen shaking? */ - if (player->powerup == PW_BOMB) { - if (timer % 5 == 0) { - int amt; - SDL_Rect area; - amt = (rand() % 20)+1; - area.x = 0; - area.y = amt; - area.w = 640; - area.h = 480-amt; - - SDL_BlitSurface(screen, &area, screen, NULL); - - area.x = 0; - area.y = 480-amt; - area.w = 640; - area.h = amt; - SDL_FillRect(screen, &area, SDL_MapRGB(screen->format,black.r,black.g,black.b)); - } - - if (--player->timer1 == 0) { - player->powerup = B_FALSE; - } - + if (paused) { + SDL_Rect area; + // show that we are paused + area.x = (640/2) - (pausedshadow->w/2) - 2; + area.y = (480/2) - (pausedshadow->h/2) + 2; + area.w = 0; + area.h = 0; + SDL_BlitSurface(pausedshadow, NULL, screen, &area); + area.x = (640/2) - (pausedtext->w/2); + area.y = (480/2) - (pausedtext->h/2); + area.w = 0; + area.h = 0; + SDL_BlitSurface(pausedtext, NULL, screen, &area); } + if (!paused) { + /* is screen shaking? */ + if (player->powerup == PW_BOMB) { + if (timer % 5 == 0) { + int amt; + SDL_Rect area; + amt = (rand() % 20)+1; + area.x = 0; + area.y = amt; + area.w = 640; + area.h = 480-amt; + SDL_BlitSurface(screen, &area, screen, NULL); + + area.x = 0; + area.y = 480-amt; + area.w = 640; + area.h = amt; + SDL_FillRect(screen, &area, SDL_MapRGB(screen->format,black.r,black.g,black.b)); + } + + if (--player->timer1 == 0) { + player->powerup = B_FALSE; + } + + } + + } + + // Update screen flip(); - if (++timer == 100) timer = 0; + + if (!paused) { + if (++timer == 100) timer = 0; + } + if (toggletimer > 0) toggletimer--; - tick(); + if (!paused) { + tick(); + } } return 0; @@ -605,12 +708,33 @@ void tick(void) { if (fpsticks - fpsstart >= 1000) { gtime++; + // handle clock effect + if (player->powerup == PW_CLOCK) { + char tempm[SMALLBUFLEN]; + // text + if (clocktime > 0) { + sprintf(tempm, "%d",clocktime); + addoutlinetext(320,120,TEXTSIZE_LEVEL, tempm, &yellow,&black,15); + // sound effect + playfx(FX_CLOCK); + } + // never reach hurryup time + nexthurryup++; + // decrement counter + clocktime--; + if (clocktime < 0) { + // finished! + Mix_ResumeMusic(); + player->powerup = B_FALSE; + } + } + /* check for hurryup*/ if (gtime == nexthurryup) { if (!levelcomplete) { for (s = sprite; s; s = s->next) { - if ((s != player) && (!isfruit(s->id))) { + if ((s != player) && (ismonster(s->id))) { s->angry = B_TRUE; } } @@ -633,9 +757,11 @@ void tick(void) { if (gtime == curlevel->poweruptime) { if (!levelcomplete) { /* add a random powerup at the right position */ + /* the type of powerup is randomly determined when the level is + loaded */ /* IMPORTANT: the name 'random_up' is important as it tells addsprite() to give it a higher doomcount */ - puffin(randompowerup(), + puffin(level->poweruptype, curlevel->powerupx*TILEW + (TILEW/2), curlevel->powerupy*TILEH + TILEH - 1, "random_up",0); @@ -666,7 +792,6 @@ void nextlevel(void) { // remove the player removesprite(player); - /* in case we skipped the level due to a powerup etc */ levelcomplete = LV_NEXTLEV; @@ -692,9 +817,15 @@ void nextlevel(void) { /* reset level stats */ level->gotpowerup = B_FALSE; + + if (player->hasbell) { + playedbell = B_FALSE; + } else { + playedbell = BELL_DONEFLASH; + } sprintf(msg, "Level %d-%d",curworld, curlevelnum); - addoutlinetext(320,240-18,TEXTSIZE_LEVEL,msg,&red,&black,LEVELDELAY); + addoutlinetext(320,240-18,TEXTSIZE_LEVEL,msg,&white,&black,LEVELDELAY); sprintf(msg, "%s", curlevel->name); @@ -706,21 +837,30 @@ void nextlevel(void) { player->jumping = B_FALSE; player->powerup = B_FALSE; + + if (cheat) { player->speed = 2; } + + // reset timer + timer = 0; } void jump(sprite_t *s, int dir) { - if (s->jumping) return; - if (s->jumptimer) return; + // if we've just been hit with armour, bypass all these checks) + if (!s->recoiling) { + // can't jump if already jumping + if (s->jumping) return; + if (s->jumptimer) return; - // can only jump up when climbing - if (s->climbing && (dir == 0)) { - return; + // can only jump up when climbing + if (s->climbing && (dir == 0)) { + return; + } } - if (isonground(s) || isinwater(s) || isonladder(s)) { + if (s->recoiling || isonground(s) || isinwater(s) || isonladder(s)) { if (ismonster(s->id)) { s->jumpdir = dir; if (s->jumpdir != 0) { @@ -743,6 +883,9 @@ void jump(sprite_t *s, int dir) { } // stop climbing s->climbing = B_FALSE; + // stop recoiling + s->recoiling = B_FALSE; + // play a sound effect if this is the player if (s == player) { if (player->ontramp) { playfx(FX_SPRING); @@ -762,25 +905,45 @@ void die(sprite_t *s) { // We already do this in the cloud movement routine, but // this handles cases where the cloud hasn't appeared yet. if (s == player) { - nexthurryup = gtime + level->hurryuptime; - if (curmusic == fastmusic) { - playmusic(normalmusic); + // if we have armour, we lose it instead of dying + if (player->armour) { + // lose armour + player->armour = B_FALSE; + player->id = P_PLAYER; + // become invulnerable temporarily + player->invuln = INVULNTIME; + // bounce back + player->recoiling = B_TRUE; + jump(player, -player->dir); + // play sound + playfx(FX_OW); + // don't process rest of the death code + return; + } else { + int tnum; + + if (player->powerup == PW_CLOCK) { + Mix_ResumeMusic(); + } + player->powerup = B_FALSE; + + nexthurryup = gtime + level->hurryuptime; + if (curmusic == fastmusic) { + playmusic(normalmusic); + } + // reset powerup types + curpoweruptype = 0; + + /* lose a life */ + player->lives--; + + /* play sound */ + playfx(FX_DIE); + + // draw text + tnum = rand() % MAXDEATHTEXT; + addoutlinetext(player->x,player->y,TEXTSIZE_DEATH,deathtext[tnum],&red,&black,DIEDELAY); } - // reset powerup types - curpoweruptype = 0; - } - - if (s == player) { - int tnum; - /* lose a life */ - player->lives--; - - /* play sound */ - playfx(FX_DIE); - - // draw text - tnum = rand() % MAXDEATHTEXT; - addoutlinetext(player->x,player->y,TEXTSIZE_DEATH,deathtext[tnum],&red,&black,DIEDELAY); } /* release anything we've caught */ @@ -824,6 +987,8 @@ void countmonsters(void) { void cleanup(void) { int i; + SDL_FreeSurface(pausedtext); + SDL_FreeSurface(pausedshadow); Mix_HaltMusic(); Mix_CloseAudio(); for (i = 1; i < MAXLETTERHEIGHT; i++) { @@ -840,6 +1005,7 @@ void checkcollide(sprite_t *s) { int ythresh; int netsleft; + // for all other sprites for (s2 = sprite ; s2 ; s2 = s2->next) { if (s2 == s) continue; @@ -924,8 +1090,8 @@ void checkcollide(sprite_t *s) { (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! + // are we the player? + if (s == player) { //if (isfruit(s2->id) && (s2->teleporting == 0)) { if (isfruit(s2->id)) { int gotscore = s2->score; @@ -945,6 +1111,13 @@ void checkcollide(sprite_t *s) { die(s); } } + } else if (s->id == P_SMASH) { // smash from mace slam + if (ismonster(s2->id)) { + // monster dies + die(s2); + // become something special + s2->willbecome = P_DIAMOND; + } } } } // end for each sprite @@ -994,13 +1167,21 @@ void movesprite(sprite_t *s) { if (levelcomplete == LV_INIT) { // most things can't move in this state - if ((s->id != P_PUFF) && (s->id != P_PLAYER)) { + //if ((s->id != P_PUFF) && (s != player)) { + if (!iseffect(s->id) && (s != player)) { // caught or dead sprites can move, in case // the player catches something before level start time if ((!s->caughtby) && (!s->dead)) return; } } + // only player can move if you have a clock + if (player->powerup == PW_CLOCK) { + if (!iseffect(s->id) && (s != player) && !s->caughtby && !s->dead) { + return; + } + } + /* timer */ if (s->doomcount) { s->doomcount--; @@ -1196,7 +1377,7 @@ void movesprite(sprite_t *s) { } else if (s->jumptimer % 20 == 0) { s->dir = -s->dir; } - } else if (s->id == P_PUFF) { + } else if ((s->id == P_PUFF) || (s->id == P_SMASH) || (s->id == P_SPARKLE)) { /* SUMMARY: timer1: indicates current frame. if < 0, don't draw. @@ -1225,8 +1406,10 @@ void movesprite(sprite_t *s) { // finished animating if (s->timer1 == PUFFAPPEAR) { // create a gem/fruit/etc - if (s->timer3 >= 0) { - addsprite(s->timer3, s->x,s->y,s->name ); + if (s->id == P_PUFF) { + if (s->timer3 >= 0) { + addsprite(s->timer3, s->x,s->y,s->name ); + } } } else if (s->timer1 >= PUFFFRAMES) { s->dead = D_FINAL; @@ -1610,16 +1793,16 @@ void movesprite(sprite_t *s) { if (xdiff < 0) xdiff =-xdiff; if ((player->y > s->y) && (xdiff <= (TILEW*2)) && (s->timer1 == 0)) { - s->timer1 = 100; + s->timer1 = 200; s->flies = B_FALSE; s->falling = B_TRUE; s->fallspeed = 8; } else { - + int tx,ty; s->flies = B_TRUE; /* if there's a hole in front of us */ - tt = gettileat(s->x + s->dir*((s->img->w/2)+2),s->y - s->img->h - 2,NULL,NULL); + tt = gettileat(s->x + s->dir*((s->img->w/2)+2),s->y - s->img->h - 4,&tx,&ty); if (tt->solid == S_NOTSOLID) { move = B_FALSE; } else { @@ -1716,12 +1899,12 @@ void dotileeffects(sprite_t *s) { // teleporters if ((tt->id == T_TELEPORT) || (tt->id == T_TELEPORT2)) { - if (s->id == P_PLAYER || ismonster(s->id)) { + if (s == player || ismonster(s->id)) { if (s->id != P_CLOUD) { if (!s->teleporting) { playfx(FX_TELEPORT); s->teleporting = 1; - } + } } } } @@ -1736,12 +1919,16 @@ void dotileeffects(sprite_t *s) { if (tt->id == T_RIGHT) { if (!ismonster(s->id) && !isfruit(s->id)) { - movex(s, 1.5); + if (player->powerup != PW_CLOCK) { + movex(s, 1.5); + } } finished = B_TRUE; } else if (tt->id == T_LEFT) { if (!ismonster(s->id) && !isfruit(s->id)) { - movex(s, -1.5); + if (player->powerup != PW_CLOCK) { + movex(s, -1.5); + } } finished = B_TRUE; } else if (tt->spikes) { @@ -1821,7 +2008,7 @@ void drawlevel(void) { SDL_DisplayFormat(temps); // change player to floating image - player->img = imageset[P_PLAYER].img[F_SHOOT]; + player->img = imageset[player->id].img[F_SHOOT]; // create buffer for player background playerbg = SDL_CreateRGBSurface(SDL_SWSURFACE, @@ -2079,7 +2266,7 @@ double getspeed(sprite_t *s ) { int id = s->id; double speed = 1; - if (id == P_PLAYER) { + if (s == player) { speed = s->speed; } else if (id == P_RAT) { if (s->angry) speed = 1.5; @@ -2091,8 +2278,8 @@ double getspeed(sprite_t *s ) { if (s->angry) speed = 2; else speed = 1; } else if (id == P_SPIDER) { - if (s->angry) speed = 1.5; - else speed = 2; + if (s->angry) speed = 2; + else speed = 1.5; } else if (id == P_CHEESE) { speed = 0; } @@ -2195,35 +2382,35 @@ void drawscore(void) { SDL_FreeSurface(score); // lives -/* - sprintf(livestext, "x %d",3); - - - score = TTF_RenderText_Solid(font[TEXTSIZE_SCORE], livestext, black); - area.x = 38; - area.y = 27; - area.w = 0; - area.h = 0; - SDL_BlitSurface(score, NULL, screen, &area); - SDL_FreeSurface(score); - score = TTF_RenderText_Solid(font[TEXTSIZE_SCORE], livestext, red); - area.x = 40; - area.y = 25; - area.w = 0; - area.h = 0; - SDL_BlitSurface(score, NULL, screen, &area); - SDL_FreeSurface(score); -*/ // lives - show 1 less than lives area.x = 20; - area.y = 20; + area.y = 25; area.w = 0; area.h = 0; for (i = 1; i < player->lives; i++) { SDL_BlitSurface(head, NULL, screen, &area); area.x += (head->w + 3); } + + // level # + sprintf(tempm, "Level %d-%d",curworld, curlevelnum); + /* shadow */ + score = TTF_RenderText_Solid(font[TEXTSIZE_SCORE], tempm, black); + area.x = 320-(score->w/2)-2; + area.y = 7; + area.w = 0; + area.h = 0; + SDL_BlitSurface(score, NULL, screen, &area); + SDL_FreeSurface(score); + /* score */ + score = TTF_RenderText_Solid(font[TEXTSIZE_SCORE], tempm, white); + area.x = 320-(score->w/2); + area.y = 5; + area.w = 0; + area.h = 0; + SDL_BlitSurface(score, NULL, screen, &area); + SDL_FreeSurface(score); } void drawtext(void) { @@ -2279,6 +2466,7 @@ void removeall(void) { void drawnetting(sprite_t *s) { int sx; + int xx; SDL_Rect area; if (s->netting) { @@ -2311,7 +2499,12 @@ void drawnetting(sprite_t *s) { for (y = dis; y < s->img->h; y += dis) { yy = s->y - s->img->h; yy += y; - drawline16(screen,sx,s->nety,s->x + s->netdir*s->netlen,yy,white); + + xx = s->x + s->netdir*s->netlen; + drawline16(screen,sx,s->nety,xx,yy,white); + // add sparkle + xx = s->x + s->netdir*s->netlen; + addsprite(P_SPARKLE, xx + (rand() % 14) - 7, yy + (rand() % 8) - 4, "sparkle"); } //drawline16(screen,sx,s->nety,s->x + s->netdir*s->netlen,s->nety-3,white); @@ -2320,6 +2513,7 @@ void drawnetting(sprite_t *s) { } else if (s->slamming) { double dist; int x,y; + int ii; dist = (s->slamangle * (180/M_PI))/2; s->netxstart = s->x + cos(s->slamangle-(180*(M_PI/180)))*dist*s->dir; @@ -2332,10 +2526,16 @@ void drawnetting(sprite_t *s) { x = s->x + cos(s->slamangle-(5*(M_PI/180))-(180*(M_PI/180)))*dist*s->dir; y = s->y + sin(s->slamangle-(5*(M_PI/180))-(180*(M_PI/180)))*dist; drawline16(screen,s->x,s->y - s->img->h/2,x, y, white); + /* right line */ x = s->x + cos(s->slamangle+(5*(M_PI/180))-(180*(M_PI/180)))*dist*s->dir; y = s->y + sin(s->slamangle+(5*(M_PI/180))-(180*(M_PI/180)))*dist; drawline16(screen,s->x,s->y - s->img->h/2,x, y, white); + + // add sparkles + for (ii = 0 ; ii < player->netmax; ii++) { + addsprite(P_SPARKLE, s->netxstart + (rand() % 8) - 4, s->netystart + (rand() % 8) - 4, "sparkle"); + } } } @@ -2569,6 +2769,12 @@ void dogravity(sprite_t *s) { tiletype_t *tt; int tilex,tiley; + // only player can move if you have a clock + if (player->powerup == PW_CLOCK) { + if (!iseffect(s->id) && (s != player) && !s->caughtby && !s->dead) { + return; + } + } // if we were on a trampoline and are now not, it releases */ tt = gettileat(s->x,s->y,&tilex,&tiley); @@ -2651,6 +2857,22 @@ void dogravity(sprite_t *s) { s->fallspeed = 0; } } + + // handle ring + if (s == player) { + if (player->powerup == PW_RINGJUMP) { + if (timer % 2 == 0) { + int xx,yy; + // add sparkle + xx = player->x + (rand() % player->img->w) - (player->img->w/2); + yy = player->y - (rand() % (player->img->h/2)); + addsprite(P_SPARKLE, xx, yy, "sparkle"); + + // gain points + addscore(player, 20); + } + } + } /* have we hit a roof ? */ /* can jump through one tile, but not two or more */ @@ -2688,10 +2910,12 @@ void dogravity(sprite_t *s) { if (s->netting % 2 == 0) { if (s->netspeed > -NETSPEED) s->netspeed--; else { - s->netting = 0; - for (s2 = sprite ; s2 ; s2 = s2->next) { - if ((s2->caughtby == s) && (s2->caughtstate == C_NETTING)) { - s2->caughtstate = C_NETTED; + if (s->netlen <= 0) { + s->netting = 0; + for (s2 = sprite ; s2 ; s2 = s2->next) { + if ((s2->caughtby == s) && (s2->caughtstate == C_NETTING)) { + s2->caughtstate = C_NETTED; + } } } } @@ -2745,11 +2969,20 @@ void dogravity(sprite_t *s) { macey = s2->y - s2->img->h/2; // add explosion - puffin(-1, macex, macey, "nothing", 0); - for (yy = 0; yy < MACEEXPY; yy++) { - for (xx = 0; xx < MACEEXPX; xx++) { - puffin(-1, macex+xx*TILEW, macey-yy*TILEH, "nothing", 0); - puffin(-1, macex-xx*TILEW, macey-yy*TILEH, "nothing", 0); + //puffin(-1, macex, macey, "nothing", 0); + addsprite(P_SMASH, macex, macey, "smash"); + addsprite(P_SMASH, macex+TILEW, macey, "smash"); + addsprite(P_SMASH, macex-TILEW, macey, "smash"); + addsprite(P_SMASH, macex, macey+TILEH, "smash"); + addsprite(P_SMASH, macex, macey-TILEH, "smash"); + for (yy = 1; yy <= MACEEXPY; yy++) { + for (xx = 1; xx <= MACEEXPX; xx++) { + addsprite(P_SMASH, macex+xx*TILEW, macey-yy*TILEH, "smash"); + addsprite(P_SMASH, macex-xx*TILEW, macey-yy*TILEH, "smash"); + addsprite(P_SMASH, macex+xx*TILEW, macey+yy*TILEH, "smash"); + addsprite(P_SMASH, macex-xx*TILEW, macey+yy*TILEH, "smash"); + //puffin(-1, macex+xx*TILEW, macey-yy*TILEH, "nothing", 0); + //puffin(-1, macex-xx*TILEW, macey-yy*TILEH, "nothing", 0); } } } @@ -2805,20 +3038,35 @@ void dogravity(sprite_t *s) { ydiff = (s2->y - s2->img->h/2) - ynet; if (ydiff < 0) ydiff =-ydiff; + /* if (player->powerup == PW_MACE) { xthresh = TILEW*MACEEXPX*2; ythresh = TILEW*MACEEXPY*2; } else { - xthresh = s2->img->w; - ythresh = s2->img->h; - } + */ + xthresh = s2->img->w; + ythresh = s2->img->h; + //} if ((xdiff <= xthresh) && (ydiff <= ythresh)) { if (s2->id != P_CLOUD) { /* dies and becomes a powerup */ - s2->willbecome = poweruptypes[curpoweruptype]; - if (poweruptypes[++curpoweruptype] == -1) { - curpoweruptype = 0; + // if we were holding something, we can get a powerup + // if we used a mace, it becomes a diamon. + if (gotsomething) { + s2->willbecome = poweruptypes[curpoweruptype]; + if (poweruptypes[++curpoweruptype] == -1) { + curpoweruptype = 0; + } + } else if (player->powerup == PW_MACE) { + s2->willbecome = P_DIAMOND; + } else { // should never happen + /* will become a fruit when it finishes dying */ + s2->willbecome = fruittypes[curfruittype]; + /* increment fruit type */ + if (fruittypes[++curfruittype] == -1) { + curfruittype = 0; + } } die(s2); pointsinc *= 2; @@ -2932,6 +3180,23 @@ int movex(sprite_t *s,double amt) { } s->moved = B_TRUE; + + // rings + if (s == player) { + if (player->powerup == PW_RINGWALK) { + if (isonground(player)) { + int xx,yy; + // add sparkle + xx = player->x + (rand() % player->img->w) - (player->img->w/2); + yy = player->y - (rand() % (player->img->h/2)); + addsprite(P_SPARKLE, xx, yy, "sparkle"); + + // gain points + addscore(player, 3); + } + } + } + return B_FALSE; } @@ -2978,6 +3243,36 @@ int dofruiteffect(sprite_t *s) { sprintf(tempm, "Big net!"); addoutlinetext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,&black,POINTSDELAY); return B_TRUE; + } else if (s->id == P_TROPHY) { + // all powerups + playfx(FX_POWERUP); + player->netmax = 4; // all nets + player->netbig = B_TRUE; // big net + player->speed = 2; // fast + sprintf(tempm, "Full power!"); + addoutlinetext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,&black,POINTSDELAY); + return B_TRUE; + } else if (s->id == P_BELL) { + // all powerups + playfx(FX_BELL); // different sound effect + player->hasbell = B_TRUE; + sprintf(tempm, "Powerup Detector!"); + addoutlinetext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,&black,POINTSDELAY); + return B_TRUE; + } else if (s->id == P_RINGGOLD) { + // points for walking + playfx(FX_POWERUP); + player->powerup = PW_RINGWALK; + sprintf(tempm, "Walk Ring!"); + addoutlinetext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,&black,POINTSDELAY); + return B_TRUE; + } else if (s->id == P_RINGSILVER) { + // points for walking + playfx(FX_POWERUP); + player->powerup = PW_RINGJUMP; + sprintf(tempm, "Jump Ring!"); + addoutlinetext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,&black,POINTSDELAY); + return B_TRUE; } else if (s->id == P_MACEPOWERUP) { playfx(FX_POWERUP); player->powerup = PW_MACE; @@ -2990,6 +3285,30 @@ int dofruiteffect(sprite_t *s) { sprintf(tempm, "Boxing Glove!"); addoutlinetext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,&black,POINTSDELAY); return B_TRUE; + } else if (s->id == P_HELMET) { + int xx,yy; + playfx(FX_ARMOR); + player->id = P_ARMOUR; // change how the player looks + player->armour = B_TRUE; + sprintf(tempm, "Armour!"); + addoutlinetext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,&black,POINTSDELAY); + // add puffs + for (xx = s->x - TILEW; xx <= s->x + TILEW; xx += TILEW) { + for (yy = s->y - TILEW*2; yy <= s->y; yy += TILEH) { + puffin(-1, xx, yy, "nothing", 0); + } + } + return B_TRUE; + } else if (s->id == P_GEMBOOST) { + playfx(FX_POWERUP); + if (player->gemboost <= 1) { + player->gemboost = 2; + } else { + player->gemboost = 3; + } + sprintf(tempm, "Bonus x%d!",player->gemboost); + addoutlinetext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,&black,POINTSDELAY); + return B_TRUE; } else if (s->id == P_FTODIAMOND) { sprite_t *s2, *nexts; // convert all flowers to diamonds @@ -3069,6 +3388,16 @@ int dofruiteffect(sprite_t *s) { puffdelay += 1; } return B_TRUE; + } else if (s->id == P_CLOCK) { + // Freeze monsters + playfx(FX_POWERUP); + player->powerup = PW_CLOCK; + clocktime = CLOCKTIME; + sprintf(tempm, "Freeze time!"); + addoutlinetext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,&black,POINTSDELAY); + // pause music + Mix_PauseMusic(); + return B_TRUE; } else if (s->id == P_BOMB) { sprite_t *s2, *nexts; @@ -3086,6 +3415,8 @@ int dofruiteffect(sprite_t *s) { s2->dead = D_FINAL; } else if (ismonster(s2->id)) { s2->willbecome = P_DIAMOND; + + s2->caughtby = NULL; die(s2); } } @@ -3118,7 +3449,7 @@ int dofruiteffect(sprite_t *s) { } /* if so, create a left/right stream of flowers */ if (!found) { - int howmany = STREAMWID + 1; + int howmany = (STREAMWID + 1) * player->gemboost; int puffdelay; // RIGHT @@ -3229,6 +3560,10 @@ int initsound(void) { loadfx(FX_MACE, "mace.wav"); loadfx(FX_LIFE, "life.wav"); loadfx(FX_GAMEOVER, "gameover.wav"); + loadfx(FX_OW, "ow.wav"); + loadfx(FX_BELL, "bell.wav"); + loadfx(FX_CLOCK, "clock.wav"); + loadfx(FX_ARMOR, "armor.wav"); // load sound effects @@ -3328,34 +3663,6 @@ SDL_Surface *grabbehind(sprite_t *s, SDL_Surface *surf) { return surf; } -// returns a random powerup -int randompowerup(void) { - int num; - num = rand() % 9; - - switch (num) { - case 0: - default: - return P_SPEED; - case 1: - return P_BIGNET; - case 2: - return P_NUMNETS; - case 3: - return P_BOXING; - case 4: - return P_FTODIAMOND; - case 5: - return P_FTOGEM; - case 6: - return P_BOMB; - case 7: - return P_SHIELD; - case 8: - return P_MACEPOWERUP; - } -} - void dumpsprites(void) { sprite_t *s; int i = 0; diff --git a/rc.h b/rc.h index 7141c9f..3d023e8 100644 --- a/rc.h +++ b/rc.h @@ -42,7 +42,6 @@ void stopmusic(void); void channeldone(int channel); void movetostart(sprite_t *p, int dstx, int dsty, double xspeed,double yspeed); SDL_Surface *grabbehind(sprite_t *s, SDL_Surface *surf); -int randompowerup(void); void dumpsprites(void); void countmonsters(void); int getpoints(int id); diff --git a/shared.c b/shared.c index 29f7a07..6ebe2d6 100644 --- a/shared.c +++ b/shared.c @@ -69,6 +69,9 @@ int loadlevel(int wnum, int lnum) { if (!level) level = malloc(sizeof(level_t)); + /* set current level pointer */ + curlevel = level; + if (level->animtiles) free(level->animtiles); level->id = levelentry[lnum].id; @@ -77,11 +80,6 @@ int loadlevel(int wnum, int lnum) { level->prev = NULL; level->next = NULL; - /* load background image */ - // TODO: read this from the level file rather than hardcoding - if (levelbg) SDL_FreeSurface(levelbg); - - levelbg = IMG_Load("backgrounds/forest.png"); /* default */ level->hurryuptime = 30; @@ -96,23 +94,6 @@ int loadlevel(int wnum, int lnum) { - /* clear tiletype linked list */ - while (tiletype != NULL) { - int i; - tiletype_t *tt; - - /* kill first tile */ - for (i = 0; i < tiletype->numframes; i++) { - if (tiletype->img[i]) { - SDL_FreeSurface(tiletype->img[i]); - tiletype->img[i] = NULL; - } - } - tt = tiletype->next; - free(tiletype); - tiletype = tt; - } - /* remove all onscreen text */ while (text) { killtext(text); @@ -126,12 +107,13 @@ int loadlevel(int wnum, int lnum) { } /* read tileset */ + /* fgets(buf, BUFLEN, f); if (strstr(buf, "tileset") == buf) { p = strtok(buf, " "); p = strtok(NULL, " "); - /* strip newline */ + // strip newline p[strlen(p)-1] = '\0'; @@ -150,6 +132,36 @@ int loadlevel(int wnum, int lnum) { printf("invalid tileset file in line: '%s'\n",buf); return B_TRUE; } + */ + /* load background image */ + fgets(buf, BUFLEN, f); + if (strstr(buf, "bgfile") == buf) { + p = strtok(buf, " "); + p = strtok(NULL, " "); + + // strip newline + p[strlen(p)-1] = '\0'; + + + + if (levelbg) SDL_FreeSurface(levelbg); + sprintf(level->bgfile, "%s",p); + levelbg = IMG_Load(level->bgfile); + if (!levelbg) { + printf("Cannot load background file: %s\n", level->bgfile); + // default to forest + levelbg = IMG_Load("backgrounds/forest.png"); + } + + } else { + // default to forest + if (levelbg) SDL_FreeSurface(levelbg); + levelbg = IMG_Load("backgrounds/forest.png"); + } + + + //if (levelbg) SDL_FreeSurface(levelbg); + //levelbg = IMG_Load("backgrounds/forest.png"); /* read background tile */ fgets(buf, BUFLEN, f); @@ -182,6 +194,7 @@ int loadlevel(int wnum, int lnum) { level->nummonsters = 0; /* read tile defs */ + // TODO: remove all of this, don't need it with new level format nmappings = 0; fgets(buf, BUFLEN, f); while (!strstr(buf, "endmaps")) { @@ -264,6 +277,7 @@ int loadlevel(int wnum, int lnum) { } else if (monid == P_POWERUPPOS) { level->powerupx = x; level->powerupy = y; + level->poweruptype = randompowerup(); } else { /* place the monster */ level->initm[level->nummonsters].startx = x*TILEW+(TILEW/2); @@ -609,8 +623,6 @@ int loadlevel(int wnum, int lnum) { free(help[i]); } - /* set current level pointer */ - curlevel = level; /* add player if required */ if (player == NULL) { @@ -677,34 +689,41 @@ printf(".\n"); void setdefaults(sprite_t *s) { + // player powerup stats s->speed = 1; + s->hasbell = B_FALSE; + s->armour = B_FALSE; + s->gemboost = 1; + s->powerup = 0; + s->netbig = 0; + // player-only states + s->recoiling = B_FALSE; + s->netting = 0; + s->netmax = 1; + s->netcaught = 0; + s->slamming = 0; + s->invuln = 0; + // states s->teleporting = 0; s->climbing = 0; - s->powerup = 0; 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; - s->netbig = 0; s->dropping = 0; s->dropx = -1; + s->dropy = -1; s->ontramp = B_FALSE; s->trampx = -1; s->trampy = -1; s->quickdie = B_FALSE; - s->dropy = -1; s->falling = 0; s->fallspeed = 0; s->dir = 1; - s->slamming = 0; s->dead = 0; s->angry = 0; - s->invuln = 0; s->jumptimer = 0; s->bullet = NULL; @@ -715,6 +734,7 @@ void setdefaults(sprite_t *s) { switch (s->id) { case P_BEE: case P_CLOUD: + case P_SPIDER: s->flies = B_TRUE; break; default: @@ -834,6 +854,23 @@ int loadtiletypes(char *filename) { int uniq = 0 ; + /* clear tiletype linked list */ + while (tiletype != NULL) { + int i; + tiletype_t *tt; + + /* kill first tile */ + for (i = 0; i < tiletype->numframes; i++) { + if (tiletype->img[i]) { + SDL_FreeSurface(tiletype->img[i]); + tiletype->img[i] = NULL; + } + } + tt = tiletype->next; + free(tiletype); + tiletype = tt; + } + state = 0; f = fopen(filename,"rt"); if (!f) { @@ -993,7 +1030,28 @@ int loadimagesets(void) { loadspriteimage(P_PLAYER,F_SLAM3, "sprites/dslam3.png"); loadspriteimage(P_PLAYER,F_SLAM4, "sprites/dslam4.png"); loadspriteimage(P_PLAYER,F_SLAM5, "sprites/dslam5.png"); - imageset[P_PLAYER].numimages = 16; + loadspriteimage(P_PLAYER,F_SWIM1, "sprites/dswim1.png"); + loadspriteimage(P_PLAYER,F_SWIM2, "sprites/dswim2.png"); + imageset[P_PLAYER].numimages = 18; + + loadspriteimage(P_ARMOUR,F_WALK1, "sprites/armor.png"); + loadspriteimage(P_ARMOUR,F_JUMP, "sprites/armorjump.png"); + loadspriteimage(P_ARMOUR,F_FALL, "sprites/armorfall.png"); + loadspriteimage(P_ARMOUR,F_CAUGHT, "sprites/armor.png"); + loadspriteimage(P_ARMOUR,F_DEAD, "sprites/dwarfdie.png"); + /* next 3 are auto generated */ + loadspriteimage(P_ARMOUR,F_CLIMB1, "sprites/armorclimb1.png"); + loadspriteimage(P_ARMOUR,F_CLIMB2, "sprites/armorclimb2.png"); + loadspriteimage(P_ARMOUR,F_SHOOT, "sprites/armorshoot.png"); + loadspriteimage(P_ARMOUR,F_SLAM1, "sprites/armorslam1.png"); + loadspriteimage(P_ARMOUR,F_SLAM2, "sprites/armorslam2.png"); + loadspriteimage(P_ARMOUR,F_SLAM3, "sprites/armorslam3.png"); + loadspriteimage(P_ARMOUR,F_SLAM4, "sprites/armorslam4.png"); + loadspriteimage(P_ARMOUR,F_SLAM5, "sprites/armorslam5.png"); + loadspriteimage(P_ARMOUR,F_SWIM1, "sprites/armorswim1.png"); + loadspriteimage(P_ARMOUR,F_SWIM2, "sprites/armorswim2.png"); + imageset[P_ARMOUR].numimages = 18; + loadspriteimage(P_SNAKE,F_WALK1, "sprites/snake.png"); loadspriteimage(P_SNAKE,F_JUMP, "sprites/snakejump.png"); @@ -1064,9 +1122,16 @@ int loadimagesets(void) { loadspriteimage(P_BIGNET,F_WALK1, "sprites/bignet.png"); imageset[P_BIGNET].numimages = 1; + loadspriteimage(P_GEMBOOST,F_WALK1, "sprites/gemboost.png"); + imageset[P_GEMBOOST].numimages = 1; + + loadspriteimage(P_HELP,F_WALK1, "sprites/help.png"); imageset[P_HELP].numimages = 1; + loadspriteimage(P_HELMET,F_WALK1, "sprites/helmet.png"); + imageset[P_HELMET].numimages = 1; + loadspriteimage(P_FLOWERYELLOW,F_WALK1, "sprites/flower-yellow.png"); imageset[P_FLOWERRED].numimages = 1; @@ -1116,12 +1181,39 @@ int loadimagesets(void) { loadspriteimage(P_MACE,F_WALK1, "sprites/mace.png"); imageset[P_MACE].numimages = 1; + loadspriteimage(P_TROPHY,F_WALK1, "sprites/trophy.png"); + imageset[P_TROPHY].numimages = 1; + + loadspriteimage(P_RINGSILVER,F_WALK1, "sprites/ring-silver.png"); + imageset[P_RINGSILVER].numimages = 1; + + loadspriteimage(P_RINGGOLD,F_WALK1, "sprites/ring-gold.png"); + imageset[P_RINGGOLD].numimages = 1; + + loadspriteimage(P_BELL,F_WALK1, "sprites/bell.png"); + imageset[P_BELL].numimages = 1; + + loadspriteimage(P_CLOCK,F_WALK1, "sprites/clock.png"); + imageset[P_CLOCK].numimages = 1; + + // puffs and mace smashes for (i = 0; i < PUFFFRAMES; i++) { char name[SMALLBUFLEN]; sprintf(name, "sprites/puff%d.png",i); loadspriteimage(P_PUFF,i, name); + sprintf(name, "sprites/puff%d.png",i); + loadspriteimage(P_SMASH,i, name); } imageset[P_PUFF].numimages = PUFFFRAMES; + imageset[P_SMASH].numimages = PUFFFRAMES; + + // sparkles + for (i = 0; i < SPARKLEFRAMES; i++) { + char name[SMALLBUFLEN]; + sprintf(name, "sprites/sparkle%d.png",i); + loadspriteimage(P_SPARKLE,i, name); + } + imageset[P_SPARKLE].numimages = SPARKLEFRAMES; /* bullets */ loadspriteimage(P_SPIT,F_WALK1, "sprites/spit.png"); @@ -1134,7 +1226,7 @@ int loadimagesets(void) { for (p = 0; p < MAXPTYPES; p++) { int fr; int angle = 90; - /* rotated */ + /* rotated death images */ // TODO: need to free tempimg ? */ if (!isfruit(p) && !isbullet(p) && !iseffect(p)) { for (fr = F_DEAD2; fr <= F_DEAD4; fr++) { @@ -1148,77 +1240,78 @@ int loadimagesets(void) { for (i = 0; i < imageset[p].numimages; i++) { SDL_Surface *origi; + if (!isfruit(p) && !iseffect(p)) { - SDL_SetColorKey(imageset[p].img[i], - SDL_SRCCOLORKEY, SDL_MapRGB(screen->format, 0, 0, 0)); + SDL_SetColorKey(imageset[p].img[i], + SDL_SRCCOLORKEY, SDL_MapRGB(screen->format, 0, 0, 0)); - origi = imageset[p].img[i]; + origi = imageset[p].img[i]; - /* flipped image */ - imageset[p].img[MAXFRAMES+i] = - rotozoomSurfaceXY(imageset[p].img[i], 0, -1,1,0); - SDL_SetColorKey(imageset[p].img[MAXFRAMES+i], - SDL_SRCCOLORKEY, SDL_MapRGB(screen->format, 0, 0, 0)); + /* flipped image */ + imageset[p].img[MAXFRAMES+i] = + rotozoomSurfaceXY(imageset[p].img[i], 0, -1,1,0); + SDL_SetColorKey(imageset[p].img[MAXFRAMES+i], + SDL_SRCCOLORKEY, SDL_MapRGB(screen->format, 0, 0, 0)); - /* angry image */ + /* angry image */ - // create semi-transparent red square - reds = SDL_CreateRGBSurface(SDL_SWSURFACE, - origi->w, - origi->h, - origi->format->BitsPerPixel, origi->format->Rmask, - origi->format->Gmask,origi->format->Bmask, 0); - SDL_FillRect(reds, NULL, SDL_MapRGB(reds->format, 255, 0, 0)); - SDL_SetAlpha(reds, SDL_SRCALPHA,100); + // create semi-transparent red square + reds = SDL_CreateRGBSurface(SDL_SWSURFACE, + origi->w, + origi->h, + origi->format->BitsPerPixel, origi->format->Rmask, + origi->format->Gmask,origi->format->Bmask, 0); + SDL_FillRect(reds, NULL, SDL_MapRGB(reds->format, 255, 0, 0)); + SDL_SetAlpha(reds, SDL_SRCALPHA,100); - // take a copy of the original image - imageset[p].img[MAXFRAMES*2+i] = rotozoomSurfaceXY(origi, 0, 1,1,0); + // take a copy of the original image + imageset[p].img[MAXFRAMES*2+i] = rotozoomSurfaceXY(origi, 0, 1,1,0); - // paste the transparent one on top of it - SDL_BlitSurface(reds, NULL, imageset[p].img[MAXFRAMES*2+i], NULL); - SDL_FreeSurface(reds); + // paste the transparent one on top of it + SDL_BlitSurface(reds, NULL, imageset[p].img[MAXFRAMES*2+i], NULL); + SDL_FreeSurface(reds); - // Convert the reddened image to the screen format - temps = SDL_DisplayFormat(imageset[p].img[MAXFRAMES*2+i]); - SDL_FreeSurface(imageset[p].img[MAXFRAMES*2+i]); - imageset[p].img[MAXFRAMES*2+i] = temps; + // Convert the reddened image to the screen format + temps = SDL_DisplayFormat(imageset[p].img[MAXFRAMES*2+i]); + SDL_FreeSurface(imageset[p].img[MAXFRAMES*2+i]); + imageset[p].img[MAXFRAMES*2+i] = temps; - // Make the background red bits completely transparent - SDL_SetColorKey(imageset[p].img[MAXFRAMES*2+i], - SDL_SRCCOLORKEY, SDL_MapRGB(imageset[p].img[MAXFRAMES*2+i]->format, 101, 0, 0)); + // Make the background red bits completely transparent + SDL_SetColorKey(imageset[p].img[MAXFRAMES*2+i], + SDL_SRCCOLORKEY, SDL_MapRGB(imageset[p].img[MAXFRAMES*2+i]->format, 101, 0, 0)); - /* flipped angry image */ - imageset[p].img[MAXFRAMES*3+i] = rotozoomSurfaceXY(imageset[p].img[MAXFRAMES*2+i], 0, -1,1,0); + /* flipped angry image */ + imageset[p].img[MAXFRAMES*3+i] = rotozoomSurfaceXY(imageset[p].img[MAXFRAMES*2+i], 0, -1,1,0); - /* flipped angry image */ - /* - reds = SDL_CreateRGBSurface(SDL_SWSURFACE, - origi->w, - origi->h, - origi->format->BitsPerPixel, origi->format->Rmask, - origi->format->Gmask,origi->format->Bmask, 0); - SDL_FillRect(reds, NULL, SDL_MapRGB(reds->format, 255, 0, 0)); - SDL_SetAlpha(reds, SDL_SRCALPHA,100); + /* flipped angry image */ + /* + reds = SDL_CreateRGBSurface(SDL_SWSURFACE, + origi->w, + origi->h, + origi->format->BitsPerPixel, origi->format->Rmask, + origi->format->Gmask,origi->format->Bmask, 0); + SDL_FillRect(reds, NULL, SDL_MapRGB(reds->format, 255, 0, 0)); + SDL_SetAlpha(reds, SDL_SRCALPHA,100); - imageset[p].img[MAXFRAMES*3+i] = rotozoomSurfaceXY(origi, 0, -1,1,0); + imageset[p].img[MAXFRAMES*3+i] = rotozoomSurfaceXY(origi, 0, -1,1,0); - SDL_BlitSurface(reds, NULL, imageset[p].img[MAXFRAMES*3+i], NULL); - SDL_FreeSurface(reds); + SDL_BlitSurface(reds, NULL, imageset[p].img[MAXFRAMES*3+i], NULL); + SDL_FreeSurface(reds); - temps = SDL_DisplayFormat(imageset[p].img[MAXFRAMES*3+i]); - SDL_FreeSurface(imageset[p].img[MAXFRAMES*3+i]); - imageset[p].img[MAXFRAMES*3+i] = temps; - - SDL_SetColorKey(imageset[p].img[MAXFRAMES*3+i], - SDL_SRCCOLORKEY, SDL_MapRGB(imageset[p].img[MAXFRAMES*3+i]->format, 101, 0, 0)); - */ + temps = SDL_DisplayFormat(imageset[p].img[MAXFRAMES*3+i]); + SDL_FreeSurface(imageset[p].img[MAXFRAMES*3+i]); + imageset[p].img[MAXFRAMES*3+i] = temps; + SDL_SetColorKey(imageset[p].img[MAXFRAMES*3+i], + SDL_SRCCOLORKEY, SDL_MapRGB(imageset[p].img[MAXFRAMES*3+i]->format, 101, 0, 0)); + */ + } } } @@ -1239,9 +1332,9 @@ void drawsprite(sprite_t *s) { } 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; + if ((s->id == P_PUFF) || (s->id == P_SMASH) || (s->id == P_SPARKLE)) { + if (s->timer1 >= imageset[s->id].numimages) { + frame = imageset[s->id].numimages - 1; } else if (s->timer1 < 0) { // don't draw return; @@ -1272,6 +1365,12 @@ void drawsprite(sprite_t *s) { } else { frame = F_CLIMB1; } + } else if ((s->swimming) && (s == player) && !s->slamming) { + if ((timer/12) % 2 == 0) { + frame = F_SWIM1; + } else { + frame = F_SWIM2; + } } else if (s->netting) { frame = F_SHOOT; } else if (s->jumping) { @@ -1310,8 +1409,10 @@ void drawsprite(sprite_t *s) { } /* x-flip if required */ - if (s->dir == -1) { - frame += MAXFRAMES; + if (!isfruit(s->id) && !iseffect(s->id)) { + if (s->dir == -1) { + frame += MAXFRAMES; + } } /* make red if required */ if (s->angry) { @@ -1460,18 +1561,25 @@ int isfruit(int id) { case P_CHIPS: case P_BURGER: case P_DIAMOND: - /* normal powerups */ + /* permenant powerups */ case P_SPEED: case P_NUMNETS: case P_BIGNET: case P_HELP: - /* random powerups */ + case P_GEMBOOST: + case P_BELL: + /* one-off level only powerups */ case P_BOXING: case P_MACEPOWERUP: case P_FTODIAMOND: case P_FTOGEM: case P_BOMB: + case P_HELMET: case P_SHIELD: + case P_TROPHY: + case P_RINGSILVER: + case P_RINGGOLD: + case P_CLOCK: /* flowers */ case P_FLOWERYELLOW: case P_FLOWERRED: @@ -1497,6 +1605,8 @@ int isbullet(int id) { int iseffect(int id) { if (id == P_PUFF) return B_TRUE; + if (id == P_SPARKLE) return B_TRUE; + if (id == P_SMASH) return B_TRUE; if (id == P_POWERUPPOS) return B_TRUE; if (id == P_GLOVE) return B_TRUE; if (id == P_MACE) return B_TRUE; @@ -1504,6 +1614,12 @@ int iseffect(int id) { return B_FALSE; } +int needscollisions(int id) { + if (id == P_SMASH) return B_TRUE; + + return B_FALSE; +} + #ifdef OPENGL inline void drawpixel16(SDL_Surface *screen, int x, int y, SDL_Color c) { @@ -1878,7 +1994,9 @@ void killtext(text_t *t) { the level announcement. That means that we can start moving. */ - if (levelcomplete == LV_INIT) levelcomplete = LV_INPROGRESS; + if (levelcomplete == LV_INIT) { + levelcomplete = LV_INPROGRESS; + } } // returns score of given fruit type @@ -1886,19 +2004,19 @@ int getpoints(int id) { int points; switch (id) { case P_CHEESE: - points = 100; + points = 1000; break; case P_ICECREAM: - points = 200; + points = 1500; break; case P_CHIPS: - points = 300; + points = 2000; break; case P_BURGER: - points = 400; + points = 2500; break; case P_DIAMOND: - points = 500; + points = 3000; break; case P_FLOWERYELLOW: points = 5; @@ -1970,3 +2088,60 @@ int loadlevellist(void) { return B_FALSE; } + +int randompowerup(void) { + int num; + num = rand() % 16; + + switch (num) { + case 0: + default: + return P_SPEED; + case 1: + return P_BIGNET; + case 2: + return P_NUMNETS; + case 3: + return P_BOXING; + case 4: + return P_FTODIAMOND; + case 5: + return P_FTOGEM; + case 6: + return P_BOMB; + case 7: + return P_SHIELD; + case 8: + return P_MACEPOWERUP; + case 9: + return P_HELMET; + case 10: + return P_GEMBOOST; + case 11: + return P_TROPHY; + case 12: + return P_RINGSILVER; + case 13: + return P_RINGGOLD; + case 14: + return P_BELL; + case 15: + return P_CLOCK; + } +} + +// returns true if the given powerup id is a permenant one +int ispermenant(int pid) { + switch (pid) { + case P_SPEED: + case P_NUMNETS: + case P_BIGNET: + case P_HELP: + case P_TROPHY: + case P_HELMET: + case P_BELL: + case P_GEMBOOST: + return B_TRUE; + } + return B_FALSE; +} diff --git a/shared.h b/shared.h index 6c7d5a6..6888aad 100644 --- a/shared.h +++ b/shared.h @@ -19,6 +19,7 @@ int gettileframecount(int tid); int isfruit(int id); int isflower(int id); int iseffect(int id); +int needscollisions(int id); int candoslopes(int sid); int flowertogem(int id); inline void drawpixel16(SDL_Surface *screen, int x, int y, SDL_Color c); @@ -37,6 +38,8 @@ int ismonster(int id); void puffin(int willbecome, int x, int y, char *name, int delay); SDL_Surface *loadspriteimage(int spriteid, int frame, char *filename); int getpoints(int id); +int randompowerup(void); int loadlevellist(void); +int ispermenant(int pid); #endif diff --git a/sounds/armor.wav b/sounds/armor.wav new file mode 100644 index 0000000..9857643 Binary files /dev/null and b/sounds/armor.wav differ diff --git a/sounds/bell.wav b/sounds/bell.wav new file mode 100644 index 0000000..d4d3d21 Binary files /dev/null and b/sounds/bell.wav differ diff --git a/sounds/clock.wav b/sounds/clock.wav new file mode 100644 index 0000000..68ca86e Binary files /dev/null and b/sounds/clock.wav differ diff --git a/sounds/ow.wav b/sounds/ow.wav new file mode 100644 index 0000000..dfead80 Binary files /dev/null and b/sounds/ow.wav differ diff --git a/sounds/splash-old1.wav b/sounds/splash-old1.wav deleted file mode 100644 index f0c5638..0000000 Binary files a/sounds/splash-old1.wav and /dev/null differ diff --git a/sounds/splash-old2.wav b/sounds/splash-old2.wav new file mode 100644 index 0000000..dd346aa Binary files /dev/null and b/sounds/splash-old2.wav differ diff --git a/sounds/splash.wav b/sounds/splash.wav index dd346aa..cc090b9 100644 Binary files a/sounds/splash.wav and b/sounds/splash.wav differ diff --git a/sprites/armor.png b/sprites/armor.png new file mode 100644 index 0000000..c134139 Binary files /dev/null and b/sprites/armor.png differ diff --git a/sprites/armorclimb1.png b/sprites/armorclimb1.png new file mode 100644 index 0000000..27d249c Binary files /dev/null and b/sprites/armorclimb1.png differ diff --git a/sprites/armorclimb2.png b/sprites/armorclimb2.png new file mode 100644 index 0000000..cdfb651 Binary files /dev/null and b/sprites/armorclimb2.png differ diff --git a/sprites/armorfall.png b/sprites/armorfall.png new file mode 100644 index 0000000..0ef85b2 Binary files /dev/null and b/sprites/armorfall.png differ diff --git a/sprites/armorjump.png b/sprites/armorjump.png new file mode 100644 index 0000000..07de7e3 Binary files /dev/null and b/sprites/armorjump.png differ diff --git a/sprites/armorshoot.png b/sprites/armorshoot.png new file mode 100644 index 0000000..226effa Binary files /dev/null and b/sprites/armorshoot.png differ diff --git a/sprites/armorslam1.png b/sprites/armorslam1.png new file mode 100644 index 0000000..98917af Binary files /dev/null and b/sprites/armorslam1.png differ diff --git a/sprites/armorslam2.png b/sprites/armorslam2.png new file mode 100644 index 0000000..dd5078d Binary files /dev/null and b/sprites/armorslam2.png differ diff --git a/sprites/armorslam3.png b/sprites/armorslam3.png new file mode 100644 index 0000000..665f068 Binary files /dev/null and b/sprites/armorslam3.png differ diff --git a/sprites/armorslam4.png b/sprites/armorslam4.png new file mode 100644 index 0000000..e6869a0 Binary files /dev/null and b/sprites/armorslam4.png differ diff --git a/sprites/armorslam5.png b/sprites/armorslam5.png new file mode 100644 index 0000000..ecf43b9 Binary files /dev/null and b/sprites/armorslam5.png differ diff --git a/sprites/armorswim1.png b/sprites/armorswim1.png new file mode 100644 index 0000000..553598f Binary files /dev/null and b/sprites/armorswim1.png differ diff --git a/sprites/armorswim2.png b/sprites/armorswim2.png new file mode 100644 index 0000000..c0415b7 Binary files /dev/null and b/sprites/armorswim2.png differ diff --git a/sprites/bell.png b/sprites/bell.png new file mode 100644 index 0000000..3c5534f Binary files /dev/null and b/sprites/bell.png differ diff --git a/sprites/bignet.png b/sprites/bignet.png index 62953b4..a744585 100644 Binary files a/sprites/bignet.png and b/sprites/bignet.png differ diff --git a/sprites/clock.png b/sprites/clock.png new file mode 100644 index 0000000..aa0a3dd Binary files /dev/null and b/sprites/clock.png differ diff --git a/sprites/dslam5.png b/sprites/dslam5.png index a066833..a395a6b 100644 Binary files a/sprites/dslam5.png and b/sprites/dslam5.png differ diff --git a/sprites/dswim1.png b/sprites/dswim1.png new file mode 100644 index 0000000..ca293af Binary files /dev/null and b/sprites/dswim1.png differ diff --git a/sprites/dswim2.png b/sprites/dswim2.png new file mode 100644 index 0000000..91df347 Binary files /dev/null and b/sprites/dswim2.png differ diff --git a/sprites/gemboost.png b/sprites/gemboost.png new file mode 100644 index 0000000..261f350 Binary files /dev/null and b/sprites/gemboost.png differ diff --git a/sprites/helmet.png b/sprites/helmet.png new file mode 100644 index 0000000..5956bc8 Binary files /dev/null and b/sprites/helmet.png differ diff --git a/sprites/help.png b/sprites/help.png index 7d35fe6..617bc76 100644 Binary files a/sprites/help.png and b/sprites/help.png differ diff --git a/sprites/numnets.png b/sprites/numnets.png index c3c57c8..8c74957 100644 Binary files a/sprites/numnets.png and b/sprites/numnets.png differ diff --git a/sprites/ring-gold.png b/sprites/ring-gold.png new file mode 100644 index 0000000..7e2519c Binary files /dev/null and b/sprites/ring-gold.png differ diff --git a/sprites/ring-silver.png b/sprites/ring-silver.png new file mode 100644 index 0000000..fb206ab Binary files /dev/null and b/sprites/ring-silver.png differ diff --git a/sprites/sparkle0.png b/sprites/sparkle0.png new file mode 100644 index 0000000..9c7b115 Binary files /dev/null and b/sprites/sparkle0.png differ diff --git a/sprites/sparkle1.png b/sprites/sparkle1.png new file mode 100644 index 0000000..ea86e42 Binary files /dev/null and b/sprites/sparkle1.png differ diff --git a/sprites/sparkle2.png b/sprites/sparkle2.png new file mode 100644 index 0000000..06ddaa2 Binary files /dev/null and b/sprites/sparkle2.png differ diff --git a/sprites/sparkle3.png b/sprites/sparkle3.png new file mode 100644 index 0000000..813b203 Binary files /dev/null and b/sprites/sparkle3.png differ diff --git a/sprites/sparkle4.png b/sprites/sparkle4.png new file mode 100644 index 0000000..06ddaa2 Binary files /dev/null and b/sprites/sparkle4.png differ diff --git a/sprites/sparkle5.png b/sprites/sparkle5.png new file mode 100644 index 0000000..ea86e42 Binary files /dev/null and b/sprites/sparkle5.png differ diff --git a/sprites/sparkle6.png b/sprites/sparkle6.png new file mode 100644 index 0000000..9c7b115 Binary files /dev/null and b/sprites/sparkle6.png differ diff --git a/sprites/speed.png b/sprites/speed.png index 4acc6a4..5cd0e39 100644 Binary files a/sprites/speed.png and b/sprites/speed.png differ diff --git a/sprites/trophy.png b/sprites/trophy.png new file mode 100644 index 0000000..9186e37 Binary files /dev/null and b/sprites/trophy.png differ diff --git a/world1/level1.dat b/world1/level1.dat index d2aec28..42a18a7 100644 --- a/world1/level1.dat +++ b/world1/level1.dat @@ -1,4 +1,4 @@ -tileset green +bgfile backgrounds/forest.png bg 0 hurryup 30 endmaps diff --git a/world1/level10.dat b/world1/level10.dat index a7d9ba3..3b287e1 100644 --- a/world1/level10.dat +++ b/world1/level10.dat @@ -1,4 +1,4 @@ -tileset green +bgfile backgrounds/forest2.png bg 0 hurryup 60 endmaps @@ -33,6 +33,7 @@ P 36 24 P 38 24 S 31 24 r 20 21 +s 37 9 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, @@ -43,7 +44,7 @@ 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,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,27,27,27,27,27,27,27,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,1,1,1,1,1,1,1,1,4, 4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4, 4,27,27,27,27,27,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, @@ -64,8 +65,10 @@ 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, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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 +1,1,19 +38,1,18 8,6,28 9,6,28 10,6,28 @@ -88,19 +91,14 @@ layer2 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 +1,9,19 15,9,27 16,9,27 17,9,27 18,9,27 19,9,27 20,9,27 +38,9,18 8,10,28 9,10,28 10,10,28 @@ -118,6 +116,7 @@ layer2 22,10,28 23,10,28 24,10,28 +1,14,19 8,14,28 9,14,28 10,14,28 @@ -144,6 +143,7 @@ layer2 19,15,27 22,15,27 23,15,27 +38,17,18 5,18,28 6,18,28 7,18,28 @@ -204,8 +204,10 @@ layer2 33,25,28 34,25,28 35,25,28 +1,26,19 26,26,27 27,26,27 28,26,27 29,26,27 30,26,27 +38,26,18 diff --git a/world1/level11.5.dat b/world1/level11.5.dat new file mode 100644 index 0000000..bb1ca1e --- /dev/null +++ b/world1/level11.5.dat @@ -0,0 +1,97 @@ +bgfile backgrounds/forest2.png +bg 0 +hurryup 60 +endmaps +help +endhelp +monsters +1 1 2 +! 19 2 +r 33 7 +r 13 10 +@ 6 28 +@ 6 28 +@ 6 28 +@ 6 28 +@ 2 28 +@ 2 28 +@ 2 28 +@ 2 28 +@ 2 28 +@ 15 28 +@ 15 28 +@ 15 28 +@ 15 28 +@ 15 28 +Y 35 5 +Y 28 5 +@ 20 2 +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 +P 30 28 +P 31 28 +@ 28 14 +@ 31 14 +Y 20 15 +@ 19 12 +P 11 18 +P 7 18 +@ 9 18 +@ 13 18 +Y 4 2 +Y 6 2 +P 8 10 +P 12 10 +Y 14 10 +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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,3,0,0,0,0,0,0,0,0,2,1,1,1,1,3,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,3,0,0,0,0,0,0,2,4,4,4,4,4,4,3,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,3,0,0,0,0,2,4,4,4,4,4,4,4,4,3,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,3,0,0,2,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,0,0,0,1,16,16,16,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,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,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,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,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, +4,4,4,7,4,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,1,4, +4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,1,15,15,15,15,15,15,15,15,15,15,15,15,15,1,4,4, +4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,1,15,15,15,15,15,15,15,15,15,15,15,1,4,4,4, +4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,1,15,15,15,15,15,15,15,15,15,1,4,4,4,4, +4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,4,4,4,4,4,4,4,1,15,15,15,15,15,15,15,1,4,4,4,4,4, +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,1,1,4,4,4,4,4,4, +layer2 +21,22,11 +22,23,11 +38,23,11 +23,24,11 +37,24,11 +24,25,11 +36,25,11 +25,26,11 +35,26,11 +26,27,11 +34,27,11 +27,28,11 diff --git a/world1/level12.dat b/world1/level12.dat new file mode 100644 index 0000000..8e96f53 --- /dev/null +++ b/world1/level12.dat @@ -0,0 +1,68 @@ +tileset green +bg 0 +hurryup 60 +endmaps +help +endhelp +monsters +1 19 18 +! 19 21 +a 13 9 +a 23 9 +a 27 17 +a 8 18 +a 13 24 +a 23 23 +a 32 24 +a 3 23 +C 22 11 +C 12 11 +P 26 7 +P 10 7 +@ 31 14 +@ 6 14 +Y 2 21 +Y 34 21 +Y 7 21 +Y 29 21 +@ 25 21 +@ 20 21 +@ 11 21 +@ 16 21 +Y 25 14 +Y 12 14 +P 21 14 +P 16 14 +endmonsters +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,25,25,26,26,26,26,25,20,21,20,25,26,26,26,26,25,25,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,24,26,26,26,26,24,0,0,0,24,26,26,26,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,24,26,26,26,26,24,0,0,0,24,26,26,26,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,24,26,26,26,26,24,0,0,0,24,26,26,26,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,24,25,25,25,25,24,0,0,0,24,25,25,25,25,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,25,25,26,26,26,26,25,20,21,20,25,26,26,26,26,25,20,21,20,25,26,26,26,26,25,25,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,24,26,26,26,26,24,0,0,0,24,26,26,26,26,24,0,0,0,24,26,26,26,26,24,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,24,26,26,26,26,24,0,0,0,24,26,26,26,26,24,0,0,0,24,26,26,26,26,24,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,24,26,26,26,26,24,0,0,0,24,26,26,26,26,24,0,0,0,24,26,26,26,26,24,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,24,25,25,25,25,24,0,0,0,24,25,25,25,25,24,0,0,0,24,25,25,25,25,24,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,25,26,26,26,26,25,20,21,20,25,26,26,26,26,25,20,21,20,25,26,26,26,26,25,20,21,20,25,26,26,26,26,25,20,21,21,20,4, +4,0,24,26,26,26,26,24,0,0,0,24,26,26,26,26,24,0,0,0,24,26,26,26,26,24,0,0,0,24,26,26,26,26,24,0,0,0,0,4, +4,0,24,26,26,26,26,24,0,0,0,24,26,26,26,26,24,0,0,0,24,26,26,26,26,24,0,0,0,24,26,26,26,26,24,0,0,0,0,4, +4,0,24,26,26,26,26,24,0,0,0,24,26,26,26,26,24,0,0,0,24,26,26,26,26,24,0,0,0,24,26,26,26,26,24,0,0,0,0,4, +4,0,24,25,25,25,25,24,0,0,0,24,25,25,25,25,24,0,0,0,24,25,25,25,25,24,0,0,0,24,25,25,25,25,24,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,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/level13.dat b/world1/level13.dat new file mode 100644 index 0000000..b937e35 --- /dev/null +++ b/world1/level13.dat @@ -0,0 +1,92 @@ +tileset green +bg 0 +hurryup 232 +endmaps +help +endhelp +monsters +1 2 24 +! 28 6 +a 11 12 +a 28 24 +a 29 18 +a 6 11 +C 9 5 +C 31 23 +S 24 28 +a 21 2 +a 37 10 +P 8 5 +P 9 5 +P 10 5 +P 11 5 +P 27 15 +P 28 15 +P 30 15 +P 29 15 +@ 35 27 +@ 37 25 +Y 36 26 +Y 34 28 +Y 4 26 +@ 3 25 +Y 9 25 +@ 10 25 +Y 7 14 +Y 12 14 +P 14 12 +P 5 12 +@ 13 13 +@ 6 13 +@ 28 11 +@ 28 7 +@ 5 7 +@ 3 9 +Y 6 6 +Y 4 8 +Y 13 6 +Y 15 8 +@ 16 8 +@ 14 7 +@ 30 11 +@ 30 7 +Y 29 11 +Y 29 7 +S 32 7 +endmonsters +exitdir 1 +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,20,20,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,25,25,25,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,20,20,20,24, +24,0,0,0,0,0,24,24,26,26,26,26,24,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,24,24,26,26,26,26,26,26,24,24,0,0,0,0,0,0,0,0,0,0,0,25,25,25,25,25,25,25,0,0,0,0,0,0,24, +24,20,0,0,24,24,26,26,26,26,26,26,26,26,24,24,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,24, +24,0,0,24,24,26,26,26,26,26,26,26,26,26,26,26,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,24,24,26,26,26,26,26,26,26,26,26,26,26,26,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,20,0,24,24,26,26,26,26,26,26,26,26,26,26,25,25,20,20,20,20,20,20,20,20,20,25,25,25,25,25,25,25,0,0,0,0,0,20,24, +24,0,0,0,24,25,26,26,26,26,26,26,26,26,25,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,24,25,26,26,26,26,26,26,25,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,20,0,0,0,0,24,25,26,26,26,26,25,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,24, +24,0,0,0,0,0,0,24,26,26,26,26,24,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,25,25,25,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,26,26,26,26,24,24,0,0,0,0,0,0,24, +24,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,26,26,26,26,26,26,24,24,0,0,0,0,20,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,26,26,26,26,26,26,26,26,24,24,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,26,26,26,26,26,26,26,26,26,26,24,24,0,0,0,24, +24,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,26,26,26,26,26,26,26,26,26,26,26,26,26,0,0,20,24, +24,0,0,0,0,0,0,29,0,17,17,0,29,0,0,0,0,0,0,0,5,0,26,26,26,26,26,26,26,26,26,26,26,26,26,26,0,0,0,24, +24,0,0,0,0,0,0,25,25,25,25,25,25,20,20,20,20,20,20,20,20,20,25,25,25,26,26,26,26,26,26,26,26,25,25,25,0,0,0,24, +24,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,25,25,26,26,26,26,25,25,24,0,0,0,0,29,24, +24,24,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,26,26,26,26,24,24,0,0,0,0,0,25,24, +24,24,24,25,0,0,0,25,25,25,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,24,25,25,25,25,24,0,0,0,0,0,25,24,24, +24,24,24,24,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,24,24,24, +24,24,24,24,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,24,24,24,24, +24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,24,24,24,24,24, +layer2 +27,25,11 +28,25,11 +29,25,11 +30,25,11 diff --git a/world1/level14.dat b/world1/level14.dat new file mode 100644 index 0000000..4814d71 --- /dev/null +++ b/world1/level14.dat @@ -0,0 +1,73 @@ +bgfile +bg 0 +hurryup 232 +endmaps +help +endhelp +monsters +1 20 28 +! 16 4 +a 22 22 +a 17 19 +a 21 17 +a 19 20 +a 24 20 +C 4 13 +C 37 13 +a 17 23 +Y 26 13 +Y 14 13 +Y 12 13 +Y 28 13 +Y 31 13 +Y 9 13 +@ 36 13 +@ 3 13 +@ 7 13 +@ 33 13 +P 30 20 +P 10 20 +P 24 4 +P 17 4 +P 16 4 +P 23 4 +@ 25 5 +@ 15 5 +@ 18 8 +@ 22 8 +P 20 23 +P 23 23 +P 17 23 +endmonsters +exitdir 1 +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,26,26,26,26,26,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,24,24,26,26,26,26,26,24,24,25,25,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,26,26,26,26,26,24,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,26,26,26,26,26,24,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,25,26,26,26,25,24,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,26,26,26,24,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,26,26,26,24,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,26,26,26,24,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,24,24,26,26,26,24,24,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,24, +24,25,20,21,21,22,22,21,21,20,25,25,25,20,21,21,20,24,24,26,26,26,24,24,20,21,21,20,25,25,25,20,21,21,22,21,21,20,25,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,24,24,26,26,26,24,24,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,24,24,26,26,26,26,26,24,24,11,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,11,24,24,26,26,26,26,26,26,26,24,24,11,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,11,24,24,26,26,26,26,26,26,26,26,26,24,24,11,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,24,24,26,26,26,26,26,26,26,26,26,26,26,24,24,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,17,0,24,24,26,26,26,26,26,26,26,26,26,26,26,24,24,0,17,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,25,25,25,24,24,26,26,26,26,26,26,26,26,26,26,26,24,24,25,25,25,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,24,25,26,26,26,26,26,26,26,26,26,25,24,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,25,26,26,26,26,26,26,26,25,24,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,25,25,25,25,25,25,25,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24, +24,0,0,0,0,29,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,29,0,0,0,24, +24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,24, +layer2 diff --git a/world1/level2.dat b/world1/level2.dat index 27a8278..6d14557 100644 --- a/world1/level2.dat +++ b/world1/level2.dat @@ -1,4 +1,4 @@ -tileset green +bgfile xx bg 0 hurryup 80 endmaps diff --git a/world1/level20.dat b/world1/level20.dat new file mode 100644 index 0000000..7452135 --- /dev/null +++ b/world1/level20.dat @@ -0,0 +1,46 @@ +tileset green +bg 0 +hurryup 30 +endmaps +monsters +a 19 5 +a 7 6 +r 27 7 +s 10 9 +s 23 9 +r 19 13 +s 4 15 +s 20 15 +s 28 15 +1 2 28 +endmonsters +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +***********000*******************000000* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +*0000000000000000000000000000000000~~~~* +*00000000000000000000000000000000000000* +*00000000000000000000000000000000000000* +**-********000*******************000000* +*0=00000*000000*0000000*0000000*0000000* +*0=000000000000000000000000000000000000* +*0=000000000000000000000000000000000000* +*0=000000000000000000000000000000000000* +*0=000000000000000000000000000000000000* +*0=000000000000000000000000000000000000* +*0=000000000000000000000000000000000000* +*0=000000000000000000000000000000^^^000* +*~~~~~~~~~0000~~~~~~~~~~000~~00~~~~~~-~* +*000000000000000000000000000000000000=0* +*000000000000000000000000000000000000=0* +*000000000000000000000000000000000000=0* +*000000000000000000000000000000000000=0* +*0000000^^^^^^^^000000000000000000000=0* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/world1/level21.dat b/world1/level21.dat new file mode 100644 index 0000000..3b30144 --- /dev/null +++ b/world1/level21.dat @@ -0,0 +1,562 @@ +bgfile +bg 0 +hurryup 90 +endmaps +help +endhelp +monsters +1 32 7 +r 33 23 +r 4 23 +P 34 23 +P 33 23 +P 6 23 +P 5 23 +Y 35 23 +Y 32 23 +Y 7 23 +Y 4 23 +@ 24 18 +@ 16 18 +@ 15 18 +@ 23 18 +P 27 16 +P 12 16 +Y 26 17 +Y 25 17 +Y 14 17 +Y 13 17 +a 23 17 +a 25 14 +a 12 15 +a 17 13 +r 35 28 +r 7 28 +r 10 7 +P 20 6 +P 19 6 +@ 22 6 +@ 17 6 +Y 27 7 +Y 12 7 +Y 28 7 +Y 11 7 +s 29 22 +s 12 22 +S 10 20 +S 30 20 +endmonsters +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,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,4, +4,27,27,27,27,27,27,1,1,1,1,1,1,1,1,1,25,25,25,25,25,25,25,25,1,1,1,1,1,1,1,1,1,27,27,27,27,27,27,4, +4,27,27,27,27,27,27,4,4,4,4,4,4,4,4,4,24,26,26,26,26,26,26,24,4,4,4,4,4,4,4,4,4,27,27,27,27,27,27,4, +4,27,27,27,27,27,27,4,4,4,4,4,4,4,4,4,24,26,26,26,26,26,26,24,4,4,4,4,4,4,4,4,4,27,27,27,27,27,27,4, +4,27,27,27,27,27,27,4,4,4,4,4,4,4,24,24,24,26,26,26,26,26,26,24,24,24,4,4,4,4,4,4,4,27,27,27,27,27,27,4, +4,27,27,27,27,27,27,4,4,4,4,4,24,24,24,26,26,26,26,26,26,26,26,26,26,24,24,24,4,4,4,4,4,27,27,27,27,27,27,4, +4,27,27,27,27,27,27,4,24,24,24,24,24,26,26,26,26,26,26,26,26,26,26,26,26,26,26,24,24,24,24,24,4,27,27,27,27,27,27,4, +4,27,27,27,27,27,27,4,24,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,24,4,27,27,27,27,27,27,4, +4,27,27,27,27,27,27,4,24,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,24,4,27,27,27,27,27,27,4, +4,27,27,27,27,27,27,4,24,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,24,4,27,27,27,27,27,27,4, +4,27,27,27,27,27,27,4,24,24,24,24,24,26,26,26,26,26,26,26,26,26,26,26,26,26,26,24,24,24,24,24,4,27,27,27,27,27,27,4, +4,27,27,27,27,27,27,4,4,4,4,4,24,24,24,26,26,26,26,26,26,26,26,26,26,24,24,24,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,4,24,24,24,26,26,26,26,26,26,24,24,24,4,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,4,4,4,4,26,26,26,26,26,26,4,4,4,4,27,27,27,27,27,27,27,27,27,27,27,27,4, +4,27,27,27,27,27,27,27,27,4,4,4,4,4,4,4,4,26,26,26,26,26,26,4,4,4,4,4,4,4,4,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,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,1,1,1,1,27,27,27,4, +4,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,27,27,27,27,4, +4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4, +4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4, +4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4, +4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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 +15,7,2 +16,7,1 +17,7,1 +18,7,1 +19,7,1 +20,7,1 +21,7,1 +22,7,1 +23,7,1 +24,7,3 +1,8,16 +2,8,16 +3,8,16 +4,8,16 +5,8,16 +6,8,16 +15,8,4 +16,8,24 +17,8,24 +18,8,24 +19,8,24 +20,8,24 +21,8,24 +22,8,24 +23,8,24 +24,8,4 +33,8,16 +34,8,16 +35,8,16 +36,8,16 +37,8,16 +38,8,16 +1,9,15 +2,9,15 +3,9,15 +4,9,15 +5,9,15 +6,9,15 +33,9,15 +34,9,15 +35,9,15 +36,9,15 +37,9,15 +38,9,15 +1,10,15 +2,10,15 +3,10,15 +4,10,15 +5,10,15 +6,10,15 +33,10,15 +34,10,15 +35,10,15 +36,10,15 +37,10,15 +38,10,15 +1,11,15 +2,11,15 +3,11,15 +4,11,15 +5,11,15 +6,11,15 +33,11,15 +34,11,15 +35,11,15 +36,11,15 +37,11,15 +38,11,15 +1,12,15 +2,12,15 +3,12,15 +4,12,15 +5,12,15 +6,12,15 +33,12,15 +34,12,15 +35,12,15 +36,12,15 +37,12,15 +38,12,15 +1,13,15 +2,13,15 +3,13,15 +4,13,15 +5,13,15 +6,13,15 +33,13,15 +34,13,15 +35,13,15 +36,13,15 +37,13,15 +38,13,15 +1,14,15 +2,14,15 +3,14,15 +4,14,15 +5,14,15 +6,14,15 +33,14,15 +34,14,15 +35,14,15 +36,14,15 +37,14,15 +38,14,15 +1,15,15 +2,15,15 +3,15,15 +4,15,15 +5,15,15 +6,15,15 +33,15,15 +34,15,15 +35,15,15 +36,15,15 +37,15,15 +38,15,15 +1,16,15 +2,16,15 +3,16,15 +4,16,15 +5,16,15 +6,16,15 +33,16,15 +34,16,15 +35,16,15 +36,16,15 +37,16,15 +38,16,15 +1,17,15 +2,17,15 +3,17,15 +4,17,15 +5,17,15 +6,17,15 +33,17,15 +34,17,15 +35,17,15 +36,17,15 +37,17,15 +38,17,15 +1,18,15 +2,18,15 +3,18,15 +4,18,15 +5,18,15 +6,18,15 +33,18,15 +34,18,15 +35,18,15 +36,18,15 +37,18,15 +38,18,15 +1,19,15 +2,19,15 +3,19,15 +4,19,15 +5,19,15 +6,19,15 +7,19,15 +8,19,15 +9,19,15 +10,19,15 +11,19,15 +12,19,15 +17,19,28 +18,19,28 +19,19,28 +20,19,28 +21,19,28 +22,19,28 +27,19,15 +28,19,15 +29,19,15 +30,19,15 +31,19,15 +32,19,15 +33,19,15 +34,19,15 +35,19,15 +36,19,15 +37,19,15 +38,19,15 +1,20,15 +2,20,15 +3,20,15 +4,20,15 +5,20,15 +6,20,15 +7,20,15 +8,20,15 +9,20,15 +10,20,15 +11,20,15 +12,20,15 +27,20,15 +28,20,15 +29,20,15 +30,20,15 +31,20,15 +32,20,15 +33,20,15 +34,20,15 +35,20,15 +36,20,15 +37,20,15 +38,20,15 +1,21,15 +2,21,15 +3,21,15 +4,21,15 +5,21,15 +6,21,15 +7,21,15 +8,21,15 +17,21,16 +18,21,16 +19,21,16 +20,21,16 +21,21,16 +22,21,16 +31,21,15 +32,21,15 +33,21,15 +34,21,15 +35,21,15 +36,21,15 +37,21,15 +38,21,15 +1,22,15 +2,22,15 +3,22,15 +4,22,15 +5,22,15 +6,22,15 +7,22,15 +8,22,15 +9,22,15 +10,22,15 +11,22,15 +12,22,15 +13,22,15 +14,22,15 +15,22,15 +16,22,15 +17,22,15 +18,22,15 +19,22,15 +20,22,15 +21,22,15 +22,22,15 +23,22,15 +24,22,15 +25,22,15 +26,22,15 +27,22,15 +28,22,15 +29,22,15 +30,22,15 +31,22,15 +32,22,15 +33,22,15 +34,22,15 +35,22,15 +36,22,15 +37,22,15 +38,22,15 +1,23,15 +2,23,15 +3,23,15 +4,23,15 +5,23,15 +6,23,15 +7,23,15 +8,23,15 +9,23,15 +10,23,15 +11,23,15 +12,23,15 +13,23,15 +14,23,15 +15,23,15 +16,23,15 +17,23,15 +18,23,15 +19,23,15 +20,23,15 +21,23,15 +22,23,15 +23,23,15 +24,23,15 +25,23,15 +26,23,15 +27,23,15 +28,23,15 +29,23,15 +30,23,15 +31,23,15 +32,23,15 +33,23,15 +34,23,15 +35,23,15 +36,23,15 +37,23,15 +38,23,15 +1,24,15 +2,24,15 +3,24,15 +8,24,15 +9,24,15 +10,24,15 +11,24,15 +12,24,15 +13,24,15 +14,24,15 +15,24,15 +16,24,15 +17,24,15 +18,24,15 +19,24,15 +20,24,15 +21,24,15 +22,24,15 +23,24,15 +24,24,15 +25,24,15 +26,24,15 +27,24,15 +28,24,15 +29,24,15 +30,24,15 +31,24,15 +36,24,15 +37,24,15 +38,24,15 +1,25,15 +2,25,15 +3,25,15 +4,25,15 +7,25,15 +8,25,15 +9,25,15 +10,25,15 +11,25,15 +12,25,15 +13,25,15 +14,25,15 +15,25,15 +16,25,15 +17,25,15 +18,25,15 +19,25,15 +20,25,15 +21,25,15 +22,25,15 +23,25,15 +24,25,15 +25,25,15 +26,25,15 +27,25,15 +28,25,15 +29,25,15 +30,25,15 +31,25,15 +32,25,15 +35,25,15 +36,25,15 +37,25,15 +38,25,15 +1,26,15 +2,26,15 +3,26,15 +4,26,15 +5,26,15 +6,26,15 +7,26,15 +8,26,15 +9,26,15 +10,26,15 +11,26,15 +12,26,15 +13,26,15 +14,26,15 +15,26,15 +16,26,15 +17,26,15 +18,26,15 +19,26,15 +20,26,15 +21,26,15 +22,26,15 +23,26,15 +24,26,15 +25,26,15 +26,26,15 +27,26,15 +28,26,15 +29,26,15 +30,26,15 +31,26,15 +32,26,15 +33,26,15 +34,26,15 +35,26,15 +36,26,15 +37,26,15 +38,26,15 +1,27,15 +2,27,15 +3,27,15 +4,27,15 +5,27,15 +6,27,15 +7,27,15 +8,27,15 +9,27,15 +10,27,15 +11,27,15 +12,27,15 +13,27,15 +14,27,15 +15,27,15 +16,27,15 +17,27,15 +18,27,15 +19,27,15 +20,27,15 +21,27,15 +22,27,15 +23,27,15 +24,27,15 +25,27,15 +26,27,15 +27,27,15 +28,27,15 +29,27,15 +30,27,15 +31,27,15 +32,27,15 +33,27,15 +34,27,15 +35,27,15 +36,27,15 +37,27,15 +38,27,15 +1,28,15 +2,28,15 +3,28,15 +4,28,15 +5,28,15 +6,28,15 +7,28,15 +8,28,15 +9,28,15 +10,28,15 +11,28,15 +12,28,15 +13,28,15 +14,28,15 +15,28,15 +16,28,15 +17,28,15 +18,28,15 +19,28,15 +20,28,15 +21,28,15 +22,28,15 +23,28,15 +24,28,15 +25,28,15 +26,28,15 +27,28,15 +28,28,15 +29,28,15 +30,28,15 +31,28,15 +32,28,15 +33,28,15 +34,28,15 +35,28,15 +36,28,15 +37,28,15 +38,28,15 diff --git a/world1/level3.dat b/world1/level3.dat index da87002..e01224e 100644 --- a/world1/level3.dat +++ b/world1/level3.dat @@ -1,4 +1,4 @@ -tileset green +bgfile backgrounds/forest2.png bg 0 hurryup 40 endmaps diff --git a/world1/level4.dat b/world1/level4.dat index 49319ea..529e22c 100644 --- a/world1/level4.dat +++ b/world1/level4.dat @@ -1,4 +1,4 @@ -tileset green +bgfile backgrounds/forest2.png bg 0 hurryup 120 endmaps diff --git a/world1/level5.5.dat b/world1/level5.5.dat new file mode 100644 index 0000000..921c3b8 --- /dev/null +++ b/world1/level5.5.dat @@ -0,0 +1,66 @@ +bgfile backgrounds/forest2.png +bg 0 +hurryup 30 +endmaps +help +endhelp +monsters +1 1 17 +! 20 15 +Y 36 9 +s 29 1 +r 17 16 +r 21 20 +Y 15 16 +Y 24 16 +@ 23 20 +@ 16 20 +P 25 12 +P 14 12 +@ 23 6 +@ 16 6 +r 21 12 +C 33 9 +C 26 9 +C 4 9 +s 13 1 +P 27 9 +@ 32 9 +@ 7 9 +Y 3 9 +P 12 9 +endmonsters +exitdir 1 +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,19,0,0,0,0,0,0,0,0,0,0,0,0,0,18,4,0,0,0,0,0,0,4,19,0,0,0,0,0,0,0,0,0,0,0,0,0,18,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,20,21,21,21,21,20,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,4,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,4,0,0,0,0,0,0,4,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,4,0,0,0,0,0,0,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4, +4,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,0,0,7,4, +4,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,0,0,7,4, +4,7,0,0,0,0,0,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,7,4, +4,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,0,0,7,4, +4,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,0,0,7,4, +4,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,0,0,7,4, +4,7,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,7,4, +4,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,0,0,0,1,1,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,1,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,10,1,4,4,4,4, +4,4,4,4,4,1,9,9,9,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,10,10,10,1,4,4,4,4,4, +4,4,4,4,4,4,1,1,1,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,1,1,1,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,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,1,1,1,1,0,0,0,0,0,0,0,0,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,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,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, +layer2 +1,10,8 +38,10,8 diff --git a/world1/level7.5.dat b/world1/level7.5.dat new file mode 100644 index 0000000..dc9d6a5 --- /dev/null +++ b/world1/level7.5.dat @@ -0,0 +1,82 @@ +tileset green +bg 0 +hurryup 30 +endmaps +help +endhelp +monsters +1 4 28 +S 9 3 +S 34 3 +r 3 8 +r 37 8 +r 9 13 +S 30 13 +S 3 18 +r 11 23 +S 35 23 +Y 28 23 +Y 11 23 +Y 30 23 +Y 9 23 +Y 7 23 +Y 5 23 +Y 3 23 +Y 32 23 +Y 34 23 +Y 36 23 +@ 30 18 +@ 32 18 +@ 36 18 +@ 34 18 +r 37 18 +@ 3 18 +@ 5 18 +@ 7 18 +@ 9 18 +P 32 13 +P 34 13 +P 36 13 +P 7 13 +P 5 13 +P 3 13 +@ 34 8 +@ 36 8 +@ 3 8 +@ 5 8 +P 36 3 +P 3 3 +! 33 28 +endmonsters +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,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,1,1,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, +4,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,1,1,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, +4,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,1,1,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, +4,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,1,1,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, +4,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,1,1,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, +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/level7.dat b/world1/level7.dat index 600f347..3fa7dcf 100644 --- a/world1/level7.dat +++ b/world1/level7.dat @@ -1,4 +1,4 @@ -tileset green +bgfile backgrounds/forest2.png bg 0 hurryup 30 endmaps diff --git a/world1/level8.5.dat b/world1/level8.5.dat new file mode 100644 index 0000000..dfafbe6 --- /dev/null +++ b/world1/level8.5.dat @@ -0,0 +1,48 @@ +bgfile +bg 0 +hurryup 30 +endmaps +help +endhelp +monsters +1 1 23 +! 21 23 +a 36 7 +a 2 9 +a 21 15 +a 12 23 +a 29 23 +s 28 1 +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,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,4,4,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,9,9,9,9,9,0,0,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,9,9,9,9,0,0,1,1,4, +4,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,0,0,18,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,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 diff --git a/world1/level8.dat b/world1/level8.dat index 515aa60..72a5da4 100644 --- a/world1/level8.dat +++ b/world1/level8.dat @@ -1,4 +1,4 @@ -tileset green +bgfile backgrounds/forest2.png bg 0 hurryup 60 endmaps diff --git a/world1/level80.dat b/world1/level80.dat new file mode 100644 index 0000000..c3a8d1a --- /dev/null +++ b/world1/level80.dat @@ -0,0 +1,67 @@ +tileset green +bg 0 +hurryup 60 +endmaps +help +endhelp +monsters +1 1 2 +r 33 7 +r 13 10 +@ 6 28 +@ 6 28 +@ 6 28 +@ 6 28 +@ 2 28 +@ 2 28 +@ 2 28 +@ 2 28 +@ 2 28 +@ 15 28 +@ 15 28 +@ 15 28 +@ 15 28 +@ 15 28 +Y 35 5 +Y 28 5 +@ 20 2 +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, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,3,0,0,0,0,0,0,0,0,2,1,1,1,1,3,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,3,0,0,0,0,0,0,2,4,4,4,4,4,4,3,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,3,0,0,0,0,2,4,4,4,4,4,4,4,4,3,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,3,0,0,2,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,0,0,0,1,16,16,16,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,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,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,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,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, +4,4,4,7,4,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,1,4, +4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,1,15,15,15,15,15,15,15,15,15,15,15,15,15,1,4,4, +4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,1,15,15,15,15,15,15,15,15,15,15,15,1,4,4,4, +4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,1,15,15,15,15,15,15,15,15,15,1,4,4,4,4, +4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,4,4,4,4,4,4,4,1,15,15,15,15,15,15,15,1,4,4,4,4,4, +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,1,1,4,4,4,4,4,4, diff --git a/world1/level9.5.dat b/world1/level9.5.dat new file mode 100644 index 0000000..b3c59c7 --- /dev/null +++ b/world1/level9.5.dat @@ -0,0 +1,67 @@ +tileset green +bg 0 +hurryup 90 +endmaps +help +endhelp +monsters +1 9 9 +! 23 15 +s 31 4 +r 36 9 +r 33 12 +r 37 15 +r 34 19 +r 35 23 +a 11 23 +a 5 26 +r 35 28 +a 22 28 +@ 33 9 +@ 37 9 +Y 37 28 +Y 36 28 +Y 35 28 +Y 34 28 +Y 33 28 +P 36 19 +P 35 19 +P 34 19 +Y 15 9 +Y 12 9 +Y 36 15 +Y 34 15 +Y 35 15 +endmonsters +exitdir 1 +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,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,4, +4,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,0,0,0,0,0,4, +4,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,0,0,0,0,0,4, +4,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,0,0,0,0,0,4, +4,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,0,0,0,0,0,4, +4,0,14,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,0,0,0,0,0,4, +4,1,1,1,1,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,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,4,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,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,4, +4,0,0,0,0,0,0,0,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,4, +4,0,0,0,0,0,0,0,0,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,4, +4,0,0,0,0,0,0,0,0,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,4, +4,0,0,0,0,0,0,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,4,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,4,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,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,4, +4,0,0,0,0,0,0,0,0,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,4, +4,0,0,0,0,0,0,0,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,4, +4,0,0,0,0,0,0,0,0,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,4, +4,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,4,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,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,4, +4,0,0,0,0,0,0,0,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,4, +4,0,0,0,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,10,4,0,0,0,0,0,0,0,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,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,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, +layer2 diff --git a/world1/level9.dat b/world1/level9.dat new file mode 100644 index 0000000..173fbb7 --- /dev/null +++ b/world1/level9.dat @@ -0,0 +1,132 @@ +bgfile backgrounds/forest2.png +bg 0 +hurryup 184 +endmaps +help +endhelp +monsters +1 5 26 +C 28 26 +C 35 3 +C 16 14 +r 36 9 +S 17 22 +Y 11 18 +Y 12 18 +Y 15 18 +Y 13 18 +Y 14 18 +Y 28 18 +Y 26 18 +Y 25 18 +Y 27 18 +Y 24 18 +@ 16 18 +@ 17 18 +@ 19 18 +@ 23 18 +@ 22 18 +@ 20 18 +Y 21 18 +Y 18 18 +P 3 3 +P 1 3 +@ 25 6 +@ 22 6 +@ 21 13 +@ 20 13 +@ 33 9 +@ 32 3 +Y 20 6 +Y 15 9 +Y 11 9 +Y 23 26 +Y 15 26 +Y 24 22 +@ 21 22 +@ 11 22 +@ 20 26 +@ 38 9 +a 28 14 +a 10 2 +Y 3 12 +r 2 3 +! 27 6 +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, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,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,10,10,10,10,10,10,10,10,10,10,10,10,10,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,1,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,1,1,1,1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,4,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,30,0,30,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,20,20,20,20,0,0,0,0,0,0,0,0,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,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,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,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,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,4, +4,20,20,20,20,0,0,0,1,1,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,1,1,3,0,0,0,0,0,7,0,4, +4,0,0,0,0,0,0,0,4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,4,3,0,0,0,0,7,0,4, +4,0,0,0,0,0,0,0,4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,4,4,3,0,0,0,7,0,4, +4,0,0,0,0,0,0,0,4,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,3,0,30,7,30,4, +4,20,20,20,20,0,0,0,4,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,1,1,1,1,4, +4,0,0,0,0,0,0,0,4,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,4,4, +4,0,0,0,0,0,0,0,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,4,4, +4,0,0,0,0,0,0,0,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,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, +layer2 +37,15,8 +10,19,28 +11,19,28 +12,19,28 +13,19,28 +14,19,28 +15,19,28 +16,19,28 +17,19,28 +18,19,28 +19,19,28 +20,19,28 +21,19,28 +22,19,28 +23,19,28 +24,19,28 +25,19,28 +26,19,28 +27,19,28 +28,19,28 +9,23,28 +10,23,28 +11,23,28 +12,23,28 +13,23,28 +14,23,28 +15,23,28 +16,23,28 +17,23,28 +18,23,28 +19,23,28 +20,23,28 +21,23,28 +22,23,28 +23,23,28 +24,23,28 +25,23,28 +26,23,28 +27,23,28 +28,23,28 +29,23,28 +37,23,7 +37,24,7 +37,25,7 +37,26,7 diff --git a/world1/level99.dat b/world1/level99.dat index d472485..daf8368 100644 --- a/world1/level99.dat +++ b/world1/level99.dat @@ -1,57 +1,51 @@ -tileset green +bgfile bg 0 hurryup 30 endmaps help endhelp monsters -1 31 24 -! 3 12 +1 26 13 +! 32 13 r 37 3 -r 20 6 -r 9 6 -s 10 8 r 36 24 -r 37 21 -r 37 18 -r 36 15 +P 1 13 +P 7 13 +s 5 1 +r 17 13 +@ 20 10 +@ 19 10 +r 37 12 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, +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,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,4,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,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,4, +4,0,0,0,0,0,0,0,0,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,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,9,9,0,9,9,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,10,10,10,10,0,0,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,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,4, -4,0,0,0,0,0,0,1,1,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,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,7,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,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,7,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,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,7,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,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,7,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,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,7,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,4, -4,1,1,1,1,20,20,20,20,20,20,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,1,1,1,1,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,0,0,0,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,0,0,0,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,1,1,1,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,0,0,0,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,0,0,0,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,1,1,1,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,0,0,0,4, -4,15,15,15,15,15,15,15,1,16,16,16,16,16,16,1,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,0,0,0,4, -4,15,15,15,15,15,15,15,1,15,15,15,15,15,15,1,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,1,1,1,4, -4,15,15,15,15,15,15,15,1,15,15,15,15,15,15,1,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,0,0,0,4, -4,15,15,15,15,15,15,15,1,15,15,15,15,15,15,1,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,1,1,1,1,1,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,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4, +4,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,1,1,1,4, +4,1,1,1,1,1,1,1,16,16,16,16,16,16,16,1,1,1,1,1,1,16,16,16,16,1,1,1,1,1,1,1,1,1,1,1,0,0,0,4, +4,4,4,4,4,4,4,4,15,15,15,15,15,15,15,15,15,15,15,15,1,15,15,15,15,4,4,4,4,4,4,4,4,4,4,4,0,0,0,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,4,4,4,4,4,4,4,4,4,4,4,1,1,1,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,4,4,4,4,4,4,4,4,4,4,4,0,0,0,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,4,4,4,4,4,4,4,4,4,4,4,0,0,0,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,4,4,4,4,4,4,4,4,4,4,4,1,1,1,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,4,4,4,4,4,4,4,4,4,4,4,0,0,0,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,4,4,4,4,4,4,4,4,4,4,4,0,0,0,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,4,4,4,4,4,4,4,4,4,4,4,1,1,1,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,4,4,4,4,4,4,4,4,4,4,4,0,0,0,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,4,4,4,4,4,4,4,4,4,4,4,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,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, layer2 -19,6,1 -22,6,1 -13,7,8 -17,7,8 -13,13,8 -17,13,8 -11,24,11