- feature: new tile - Web

- feature: hit P to pause
- feature: add sparkles to net
- feature: now reading background image file from level.dat
	(replaced level->tileset with level->bgfile)
- feature: added swimming frames for player
- feature: show level # at top of screen
- feature: added backgrounds for future worlds
- feature: new powerup - stop time
- feature: new powerup - trophy (all perm powerups)
- feature: new powerup - gold ring (points for walking)
- feature: new powerup - silver ring (points for jumping)
- feature: new powerup - helmet (protects you from dying once)
- feature: new powerup - bonus x2 (extends fruit streams)
- feature: new powerup - bell (warns when the random powerup is a perm one)
- tweak: random powerup now decided at start of level, to allow bell powerup to work
- tweak: increase mace powerup image size
- tweak: Bombs now kill monsters which you have caught
- tweak: All fruits now worth more points
- tweak: Moved display of lives down slightly
- bugfix: spider movement
- bugfix: don't play sound when you try to shoot/jump while climbing
- bugfix: fruits shouldn't hold down trampolines
- bugfix: mace kills shouldn't give powerups
- bugfix: mace slam collision detection now works better
This commit is contained in:
Rob Pearce 2008-10-03 07:37:05 +00:00
parent 8a50413b98
commit 55ce7e640f
83 changed files with 2664 additions and 519 deletions

BIN
backgrounds/beach1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 KiB

BIN
backgrounds/beach2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 KiB

BIN
backgrounds/fire1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 402 KiB

BIN
backgrounds/fire2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 KiB

BIN
backgrounds/forest.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 KiB

BIN
backgrounds/forest2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 494 KiB

BIN
backgrounds/sky1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 KiB

BIN
backgrounds/sky2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 KiB

BIN
backgrounds/snow1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 KiB

BIN
backgrounds/snow2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 KiB

52
defs.h
View File

@ -26,6 +26,10 @@
#define PUFFSPEED 4 // how fast it animates (smaller = faster) #define PUFFSPEED 4 // how fast it animates (smaller = faster)
#define PUFFAPPEAR 4 // frame at which puff will turn into a gem #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 // text sizes
#define TEXTSIZE_POINTS 10 #define TEXTSIZE_POINTS 10
#define TEXTSIZE_SCORE 14 #define TEXTSIZE_SCORE 14
@ -38,6 +42,7 @@
#define TEXTSIZE_LIFE 36 #define TEXTSIZE_LIFE 36
#define TEXTSIZE_BOMB 36 #define TEXTSIZE_BOMB 36
#define TEXTSIZE_HURRY 50 #define TEXTSIZE_HURRY 50
#define TEXTSIZE_PAUSED 50
#define TEXTSIZE_GAMEOVER 50 #define TEXTSIZE_GAMEOVER 50
// text delays // text delays
@ -74,7 +79,15 @@
#define NETSPEED 9 // how fast the player's net moves #define NETSPEED 9 // how fast the player's net moves
#define POWERUPTIME 15 // # secs before a powerup appears #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 #define MACEEXPY 2 // Y size of mace explosion
@ -83,7 +96,7 @@
#define MAXMAPPINGS 50 #define MAXMAPPINGS 50
#define MAXMONSTERSPERLEVEL 40 #define MAXMONSTERSPERLEVEL 40
#define MAXLETTERHEIGHT 100 #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 MAXHELP 5
#define MAXTILEFRAMES 10 // max number of frames for animated tiles #define MAXTILEFRAMES 10 // max number of frames for animated tiles
@ -104,7 +117,7 @@
/* enums */ /* enums */
/* sounds */ /* sounds */
#define MAXFX 19 #define MAXFX 24
#define FX_SHOOT 0 #define FX_SHOOT 0
#define FX_SLAM 1 #define FX_SLAM 1
#define FX_KILL 2 #define FX_KILL 2
@ -125,6 +138,10 @@
#define FX_MACE 17 #define FX_MACE 17
#define FX_LIFE 18 #define FX_LIFE 18
#define FX_GAMEOVER 19 #define FX_GAMEOVER 19
#define FX_OW 20
#define FX_BELL 21
#define FX_CLOCK 22
#define FX_ARMOR 23
// Slope types // Slope types
#define S_NOTSOLID 0 #define S_NOTSOLID 0
@ -132,7 +149,7 @@
#define S_SLOPE 2 #define S_SLOPE 2
// Sprite types // Sprite types
#define MAXPTYPES 33 #define MAXPTYPES 43
#define P_PLAYER 0 #define P_PLAYER 0
#define P_RAT 1 #define P_RAT 1
#define P_CHEESE 2 #define P_CHEESE 2
@ -166,12 +183,25 @@
#define P_SHIELD 30 #define P_SHIELD 30
#define P_MACEPOWERUP 31 #define P_MACEPOWERUP 31
#define P_MACE 32 #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 // powerups
#define PW_NONE 0 #define PW_NONE 0
#define PW_BOXING 1 // boxing glove #define PW_BOXING 1 // boxing glove
#define PW_BOMB 2 // bomb #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 // Frame names
#define F_WALK1 0 #define F_WALK1 0
@ -190,6 +220,8 @@
#define F_SLAM3 13 #define F_SLAM3 13
#define F_SLAM4 14 #define F_SLAM4 14
#define F_SLAM5 15 #define F_SLAM5 15
#define F_SWIM1 16
#define F_SWIM2 17
// Level states // Level states
@ -292,7 +324,7 @@ typedef struct text_s {
typedef struct level_s { typedef struct level_s {
int id; int id;
int bgtileid; int bgtileid;
char *tileset; char bgfile[MIDBUFLEN];
char name[SMALLBUFLEN]; char name[SMALLBUFLEN];
int map[LEVELW*LEVELH]; int map[LEVELW*LEVELH];
int map2[LEVELW*LEVELH]; // second map layer int map2[LEVELW*LEVELH]; // second map layer
@ -305,6 +337,7 @@ typedef struct level_s {
int powerupx; /* powerup position */ int powerupx; /* powerup position */
int powerupy; /* powerup position */ int powerupy; /* powerup position */
int gotpowerup; /* has the random powerup appeared yet? */ 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 exitdir; /* which way to scroll on level completion */
int nummonsters; int nummonsters;
initialmonster_t initm[MAXMONSTERSPERLEVEL]; initialmonster_t initm[MAXMONSTERSPERLEVEL];
@ -331,6 +364,7 @@ typedef struct sprite_s {
// player only // player only
int lives; int lives;
int recoiling; // this happens after you get hit while wearing armour
int slamming; // are we slamming our net (player only) int slamming; // are we slamming our net (player only)
double slamangle;// are what point around is our net? double slamangle;// are what point around is our net?
int netting; // are we shooting our net out? 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 netspeed; // how fast does our net shoot out?
int netdir; // which way is our net going (left/right) int netdir; // which way is our net going (left/right)
int netlen; // how far our is our net? 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 nety; // y position of end of net (used when shooting >1 net)
int netxstart; // x position of start of net int netxstart; // x position of start of net
int netystart; // y 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 ontramp; // on a trampoline?
int trampx; // x,y coords for trampoline we are/were on int trampx; // x,y coords for trampoline we are/were on
int trampy; // 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 // monster only
int willbecome; // what fruit this will become when dead int willbecome; // what fruit this will become when dead

View File

@ -6,5 +6,6 @@
- in shared.c: IF NOT AN EFFECT: add entry to chartomonster - in shared.c: IF NOT AN EFFECT: add entry to chartomonster
- in shared.c: update isflower(), isfruit(), isbullet(), iseffect(); - in shared.c: update isflower(), isfruit(), isbullet(), iseffect();
- in shared.c: IF A GEM: update flowertogem() - in shared.c: IF A GEM: update flowertogem()
- in edit.c: update isplacable()
- in rc.c: update ismonster() - in rc.c: update ismonster()
- in rc.c: add monster/effect movement - in rc.c: add monster/effect movement

View File

@ -0,0 +1,5 @@
- Get photo
- Resize to 640x480
- layer->colors->brightness, select -127
- layer->colors->brightness, select -70
- save to backgrounds/

21
edit.c
View File

@ -99,6 +99,12 @@ int main (int argc, char **argv) {
screen = SDL_SetVideoMode(EDITORW,EDITORH,16,SDL_SWSURFACE|SDL_DOUBLEBUF|vidargs); screen = SDL_SetVideoMode(EDITORW,EDITORH,16,SDL_SWSURFACE|SDL_DOUBLEBUF|vidargs);
#endif #endif
/* init tiles */
if (loadtiletypes("green.tiles")) {
printf("Cannot initialise tiles\n");
exit(1);
}
if (loadimagesets()) { if (loadimagesets()) {
return 1; return 1;
} }
@ -370,9 +376,15 @@ int main (int argc, char **argv) {
if (toggletimer == 0) { if (toggletimer == 0) {
printf("Skipping to next level.\n"); printf("Skipping to next level.\n");
curlevelnum++; curlevelnum++;
if (loadlevel(curworld,curlevelnum)) { if ((curlevelnum >= numlevels) || loadlevel(curworld,curlevelnum)) {
printf("creating new level\n"); char tempbuf[BUFLEN];
clearlevel(); 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(); draweditorlevel();
drawsprites(); drawsprites();
@ -594,11 +606,11 @@ int savelevel(int wnum, int lnum) {
f = fopen(filename,"wt"); f = fopen(filename,"wt");
if (!f) { if (!f) {
printf("can't open level file\n"); printf("can't open level file '%s'\n",filename);
return B_TRUE; 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, "bg %d\n",level->bgtileid);
fprintf(f, "hurryup %d\n",level->hurryuptime); fprintf(f, "hurryup %d\n",level->hurryuptime);
@ -699,6 +711,7 @@ int isplacablesprite(int sid) {
case P_CLOUD: case P_CLOUD:
case P_SPIT: case P_SPIT:
case P_PUFF: case P_PUFF:
case P_SMASH:
case P_BOXING: case P_BOXING:
case P_GLOVE: case P_GLOVE:
case P_DIAMOND: case P_DIAMOND:

208
green.tiles Normal file
View File

@ -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

View File

@ -1,20 +1,20 @@
1,level1.dat,Ratcatching school 1,level1.dat,Ratcatching School
2,level2.dat,Powerup school 2,level2.dat,Powerup School
3,level3.dat,Spike school 3,level3.dat,Spike School
4,level4.dat,Bridge school 4,level4.dat,Bridge School
5,level5.dat,Hole in the hill 5,level5.dat,Hole in the Hill
7,level6.dat,Roller school 6,level6.dat,Roller School
6,level5.5.dat,The Pit 7,level7.dat,Platforms and Ladders
8,level7.dat,Platforms and Ladders 8,level9.dat,The Garden
12,level9.dat,The Garden 9,level10.dat,Planks
14,level10.dat,Planks 10,level11.dat,The Hive
15,level11.dat,The Hive 11,level5.5.dat,Spike Pit
9,level7.5.dat,The Snake Pit 12,level7.5.dat,Snake Holes
16,level11.5.dat,Underground Lakes 13,level11.5.dat,Underground Lakes
17,level12.dat,Bee Pods 14,level12.dat,Bee Pods
18,level13.dat,Dual Hives 15,level13.dat,Dual Hives
19,level14.dat,The Chimney 16,level14.dat,The Chimney
10,level8.dat,Smile! 17,level8.dat,Smile!
11,level8.5.dat,Look out above... 18,level8.5.dat,Look out above...
19,level21.dat,Island
99,level99.dat,TEST LEVEL 99,level99.dat,TEST LEVEL
13,level9.5.dat,Back and Forth

BIN
newtiles/webleft.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 B

BIN
newtiles/webright.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 560 B

485
rc.c
View File

@ -28,6 +28,12 @@ Mix_Music *curmusic = NULL; // pointer to currently playing music
char tempm[BUFLEN]; char tempm[BUFLEN];
int playedbell;
int clocktime;
SDL_Surface *pausedtext, *pausedshadow;
int paused;
tiletype_t fakeblock; tiletype_t fakeblock;
@ -45,8 +51,13 @@ int fruittypes[] = {
int poweruptypes[] = { int poweruptypes[] = {
P_SPEED, P_SPEED,
P_NUMNETS, P_NUMNETS,
P_BELL,
P_BIGNET, P_BIGNET,
P_GEMBOOST,
P_NUMNETS, P_NUMNETS,
P_GEMBOOST,
P_NUMNETS,
P_HELMET,
-1 -1
}; };
@ -74,6 +85,7 @@ SDL_Color black = {0, 0, 0, 0};
SDL_Color blue = {0, 0, 255, 0}; SDL_Color blue = {0, 0, 255, 0};
SDL_Color cyan = {0, 255, 255, 0}; SDL_Color cyan = {0, 255, 255, 0};
SDL_Color white = {255, 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 green = {0, 255, 0, 0};
SDL_Color yellow = {255, 255, 0, 0}; SDL_Color yellow = {255, 255, 0, 0};
@ -202,6 +214,12 @@ int main (int argc, char **argv) {
return 1; return 1;
} }
/* init tiles */
if (loadtiletypes("green.tiles")) {
printf("Cannot initialise tiles\n");
exit(1);
}
playmusic(normalmusic); playmusic(normalmusic);
if (loadlevel(curworld,curlevelnum)) { if (loadlevel(curworld,curlevelnum)) {
return 1; return 1;
@ -220,6 +238,18 @@ int main (int argc, char **argv) {
player->score = 0; player->score = 0;
player->lives = 3; 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) { while (1) {
removeall(); removeall();
@ -287,11 +317,26 @@ int main (int argc, char **argv) {
keys = SDL_GetKeyState(NULL); keys = SDL_GetKeyState(NULL);
if (keys[SDLK_p]) {
if (toggletimer == 0) {
if (paused) {
paused = B_FALSE;
} else {
paused = B_TRUE;
}
toggletimer = 80;
}
}
if (keys[SDLK_ESCAPE]) {
return 1;
}
if (!paused) {
if (keys[SDLK_q]) { if (keys[SDLK_q]) {
gtime = nexthurryup-1; gtime = nexthurryup-1;
} }
if (keys[SDLK_p]) { if (keys[SDLK_l]) {
if (toggletimer == 0) { if (toggletimer == 0) {
addscore(player, 100001); addscore(player, 100001);
toggletimer = 80; toggletimer = 80;
@ -303,9 +348,9 @@ int main (int argc, char **argv) {
toggletimer = 50; toggletimer = 50;
} }
} }
// dump sprites
if (keys[SDLK_d]) { if (keys[SDLK_d]) {
if (toggletimer == 0) { if (toggletimer == 0) {
// dump sprites
dumpsprites(); dumpsprites();
toggletimer = 50; toggletimer = 50;
} }
@ -316,9 +361,6 @@ int main (int argc, char **argv) {
toggletimer = 50; toggletimer = 50;
} }
} }
if (keys[SDLK_ESCAPE]) {
return 1;
}
if ((!player->dead) && (!player->teleporting)) { if ((!player->dead) && (!player->teleporting)) {
if (keys[SDLK_RIGHT]) { if (keys[SDLK_RIGHT]) {
@ -427,7 +469,7 @@ int main (int argc, char **argv) {
player->netxstart = player->x - (player->img->w/2)*player->dir; player->netxstart = player->x - (player->img->w/2)*player->dir;
player->netystart = player->y; player->netystart = player->y;
/* handle boxing glove */ /* handle mace */
if (player->powerup == PW_MACE) { if (player->powerup == PW_MACE) {
sprite_t *s; sprite_t *s;
int found; int found;
@ -436,14 +478,14 @@ int main (int argc, char **argv) {
for (s = sprite; s ; s = s->next) { for (s = sprite; s ; s = s->next) {
if (s->id == P_MACE) { if (s->id == P_MACE) {
s->x = player->x; s->x = player->x;
s->y = player->y - (imageset[P_PLAYER].img[F_SHOOT]->h / 2) + 5; s->y = player->y - (imageset[player->id].img[F_SHOOT]->h / 2) + 5;
found = B_TRUE; found = B_TRUE;
} }
} }
if (!found) { if (!found) {
addsprite(P_MACE, player->x, addsprite(P_MACE, player->x,
player->y - (imageset[P_PLAYER].img[F_SHOOT]->h / 2) + 5, player->y - (imageset[player->id].img[F_SHOOT]->h / 2) + 5,
"mace"); "mace");
} }
} }
@ -471,14 +513,14 @@ int main (int argc, char **argv) {
for (s = sprite; s ; s = s->next) { for (s = sprite; s ; s = s->next) {
if (s->id == P_GLOVE) { if (s->id == P_GLOVE) {
s->x = player->x; s->x = player->x;
s->y = player->y - (imageset[P_PLAYER].img[F_SHOOT]->h / 2) + 5; s->y = player->y - (imageset[player->id].img[F_SHOOT]->h / 2) + 5;
found = B_TRUE; found = B_TRUE;
} }
} }
if (!found) { if (!found) {
addsprite(P_GLOVE, player->x, addsprite(P_GLOVE, player->x,
player->y - (imageset[P_PLAYER].img[F_SHOOT]->h / 2) + 5, player->y - (imageset[player->id].img[F_SHOOT]->h / 2) + 5,
"glove"); "glove");
} }
} }
@ -487,8 +529,11 @@ int main (int argc, char **argv) {
} }
} }
} }
}
if (!paused) {
if (player->powerup != PW_CLOCK) {
// for each animated tile on the level... // for each animated tile on the level...
for (animtile = curlevel->animtiles; animtile && *animtile != -1; animtile++) { for (animtile = curlevel->animtiles; animtile && *animtile != -1; animtile++) {
int offset,numframes; int offset,numframes;
@ -512,6 +557,7 @@ int main (int argc, char **argv) {
} }
} }
}
// move sprites // move sprites
for (s = sprite; s ; s = s->next) { for (s = sprite; s ; s = s->next) {
@ -536,8 +582,41 @@ int main (int argc, char **argv) {
} }
} }
/* check collisions */ // bell flash effect
checkcollide(player); 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) {
if ((s == player) || needscollisions(s->id)) {
checkcollide(s);
}
}
}
drawscore(); drawscore();
@ -547,13 +626,29 @@ int main (int argc, char **argv) {
for (s = sprite ; s ; s = s->next) { for (s = sprite ; s ; s = s->next) {
if (s->id != P_PUFF) drawsprite(s); if (s->id != P_PUFF) drawsprite(s);
} }
/* draw puffs sprites */ /* draw puff sprites */
for (s = sprite ; s ; s = s->next) { for (s = sprite ; s ; s = s->next) {
if (s->id == P_PUFF) drawsprite(s); if (s->id == P_PUFF) drawsprite(s);
} }
/* draw text */ /* draw text */
drawtext(); drawtext();
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? */ /* is screen shaking? */
if (player->powerup == PW_BOMB) { if (player->powerup == PW_BOMB) {
if (timer % 5 == 0) { if (timer % 5 == 0) {
@ -580,13 +675,21 @@ int main (int argc, char **argv) {
} }
}
// Update screen
flip(); flip();
if (!paused) {
if (++timer == 100) timer = 0; if (++timer == 100) timer = 0;
}
if (toggletimer > 0) toggletimer--; if (toggletimer > 0) toggletimer--;
if (!paused) {
tick(); tick();
} }
}
return 0; return 0;
@ -605,12 +708,33 @@ void tick(void) {
if (fpsticks - fpsstart >= 1000) { if (fpsticks - fpsstart >= 1000) {
gtime++; 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*/ /* check for hurryup*/
if (gtime == nexthurryup) { if (gtime == nexthurryup) {
if (!levelcomplete) { if (!levelcomplete) {
for (s = sprite; s; s = s->next) { for (s = sprite; s; s = s->next) {
if ((s != player) && (!isfruit(s->id))) { if ((s != player) && (ismonster(s->id))) {
s->angry = B_TRUE; s->angry = B_TRUE;
} }
} }
@ -633,9 +757,11 @@ void tick(void) {
if (gtime == curlevel->poweruptime) { if (gtime == curlevel->poweruptime) {
if (!levelcomplete) { if (!levelcomplete) {
/* add a random powerup at the right position */ /* 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 /* IMPORTANT: the name 'random_up' is important as it tells addsprite() to
give it a higher doomcount */ give it a higher doomcount */
puffin(randompowerup(), puffin(level->poweruptype,
curlevel->powerupx*TILEW + (TILEW/2), curlevel->powerupx*TILEW + (TILEW/2),
curlevel->powerupy*TILEH + TILEH - 1, curlevel->powerupy*TILEH + TILEH - 1,
"random_up",0); "random_up",0);
@ -666,7 +792,6 @@ void nextlevel(void) {
// remove the player // remove the player
removesprite(player); removesprite(player);
/* in case we skipped the level due to a powerup etc */ /* in case we skipped the level due to a powerup etc */
levelcomplete = LV_NEXTLEV; levelcomplete = LV_NEXTLEV;
@ -693,8 +818,14 @@ void nextlevel(void) {
/* reset level stats */ /* reset level stats */
level->gotpowerup = B_FALSE; level->gotpowerup = B_FALSE;
if (player->hasbell) {
playedbell = B_FALSE;
} else {
playedbell = BELL_DONEFLASH;
}
sprintf(msg, "Level %d-%d",curworld, curlevelnum); 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); sprintf(msg, "%s", curlevel->name);
@ -706,12 +837,20 @@ void nextlevel(void) {
player->jumping = B_FALSE; player->jumping = B_FALSE;
player->powerup = B_FALSE; player->powerup = B_FALSE;
if (cheat) { if (cheat) {
player->speed = 2; player->speed = 2;
} }
// reset timer
timer = 0;
} }
void jump(sprite_t *s, int dir) { void jump(sprite_t *s, int dir) {
// 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->jumping) return;
if (s->jumptimer) return; if (s->jumptimer) return;
@ -719,8 +858,9 @@ void jump(sprite_t *s, int dir) {
if (s->climbing && (dir == 0)) { if (s->climbing && (dir == 0)) {
return; return;
} }
}
if (isonground(s) || isinwater(s) || isonladder(s)) { if (s->recoiling || isonground(s) || isinwater(s) || isonladder(s)) {
if (ismonster(s->id)) { if (ismonster(s->id)) {
s->jumpdir = dir; s->jumpdir = dir;
if (s->jumpdir != 0) { if (s->jumpdir != 0) {
@ -743,6 +883,9 @@ void jump(sprite_t *s, int dir) {
} }
// stop climbing // stop climbing
s->climbing = B_FALSE; s->climbing = B_FALSE;
// stop recoiling
s->recoiling = B_FALSE;
// play a sound effect if this is the player
if (s == player) { if (s == player) {
if (player->ontramp) { if (player->ontramp) {
playfx(FX_SPRING); playfx(FX_SPRING);
@ -762,16 +905,35 @@ void die(sprite_t *s) {
// We already do this in the cloud movement routine, but // We already do this in the cloud movement routine, but
// this handles cases where the cloud hasn't appeared yet. // this handles cases where the cloud hasn't appeared yet.
if (s == player) { if (s == player) {
// 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; nexthurryup = gtime + level->hurryuptime;
if (curmusic == fastmusic) { if (curmusic == fastmusic) {
playmusic(normalmusic); playmusic(normalmusic);
} }
// reset powerup types // reset powerup types
curpoweruptype = 0; curpoweruptype = 0;
}
if (s == player) {
int tnum;
/* lose a life */ /* lose a life */
player->lives--; player->lives--;
@ -782,6 +944,7 @@ void die(sprite_t *s) {
tnum = rand() % MAXDEATHTEXT; tnum = rand() % MAXDEATHTEXT;
addoutlinetext(player->x,player->y,TEXTSIZE_DEATH,deathtext[tnum],&red,&black,DIEDELAY); addoutlinetext(player->x,player->y,TEXTSIZE_DEATH,deathtext[tnum],&red,&black,DIEDELAY);
} }
}
/* release anything we've caught */ /* release anything we've caught */
for (s2 = sprite->next ; s2 ; s2 = s2->next) { for (s2 = sprite->next ; s2 ; s2 = s2->next) {
@ -824,6 +987,8 @@ void countmonsters(void) {
void cleanup(void) { void cleanup(void) {
int i; int i;
SDL_FreeSurface(pausedtext);
SDL_FreeSurface(pausedshadow);
Mix_HaltMusic(); Mix_HaltMusic();
Mix_CloseAudio(); Mix_CloseAudio();
for (i = 1; i < MAXLETTERHEIGHT; i++) { for (i = 1; i < MAXLETTERHEIGHT; i++) {
@ -840,6 +1005,7 @@ void checkcollide(sprite_t *s) {
int ythresh; int ythresh;
int netsleft; int netsleft;
// for all other sprites
for (s2 = sprite ; s2 ; s2 = s2->next) { for (s2 = sprite ; s2 ; s2 = s2->next) {
if (s2 == s) continue; if (s2 == s) continue;
@ -924,8 +1090,8 @@ void checkcollide(sprite_t *s) {
(ydiff <= s->img->h/2 + s2->img->h/2)) { (ydiff <= s->img->h/2 + s2->img->h/2)) {
/* COLLISION! */ /* COLLISION! */
// was it with the player? // are we the player?
if (s == player) { // TODO: redundant - we only ever call checkcollide() for the player! if (s == player) {
//if (isfruit(s2->id) && (s2->teleporting == 0)) { //if (isfruit(s2->id) && (s2->teleporting == 0)) {
if (isfruit(s2->id)) { if (isfruit(s2->id)) {
int gotscore = s2->score; int gotscore = s2->score;
@ -945,6 +1111,13 @@ void checkcollide(sprite_t *s) {
die(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 } // end for each sprite
@ -994,13 +1167,21 @@ void movesprite(sprite_t *s) {
if (levelcomplete == LV_INIT) { if (levelcomplete == LV_INIT) {
// most things can't move in this state // 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 // caught or dead sprites can move, in case
// the player catches something before level start time // the player catches something before level start time
if ((!s->caughtby) && (!s->dead)) return; 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 */ /* timer */
if (s->doomcount) { if (s->doomcount) {
s->doomcount--; s->doomcount--;
@ -1196,7 +1377,7 @@ void movesprite(sprite_t *s) {
} else if (s->jumptimer % 20 == 0) { } else if (s->jumptimer % 20 == 0) {
s->dir = -s->dir; 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: /* SUMMARY:
timer1: timer1:
indicates current frame. if < 0, don't draw. indicates current frame. if < 0, don't draw.
@ -1225,9 +1406,11 @@ void movesprite(sprite_t *s) {
// finished animating // finished animating
if (s->timer1 == PUFFAPPEAR) { if (s->timer1 == PUFFAPPEAR) {
// create a gem/fruit/etc // create a gem/fruit/etc
if (s->id == P_PUFF) {
if (s->timer3 >= 0) { if (s->timer3 >= 0) {
addsprite(s->timer3, s->x,s->y,s->name ); addsprite(s->timer3, s->x,s->y,s->name );
} }
}
} else if (s->timer1 >= PUFFFRAMES) { } else if (s->timer1 >= PUFFFRAMES) {
s->dead = D_FINAL; s->dead = D_FINAL;
} }
@ -1610,16 +1793,16 @@ void movesprite(sprite_t *s) {
if (xdiff < 0) xdiff =-xdiff; if (xdiff < 0) xdiff =-xdiff;
if ((player->y > s->y) && (xdiff <= (TILEW*2)) && (s->timer1 == 0)) { if ((player->y > s->y) && (xdiff <= (TILEW*2)) && (s->timer1 == 0)) {
s->timer1 = 100; s->timer1 = 200;
s->flies = B_FALSE; s->flies = B_FALSE;
s->falling = B_TRUE; s->falling = B_TRUE;
s->fallspeed = 8; s->fallspeed = 8;
} else { } else {
int tx,ty;
s->flies = B_TRUE; s->flies = B_TRUE;
/* if there's a hole in front of us */ /* 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) { if (tt->solid == S_NOTSOLID) {
move = B_FALSE; move = B_FALSE;
} else { } else {
@ -1716,7 +1899,7 @@ void dotileeffects(sprite_t *s) {
// teleporters // teleporters
if ((tt->id == T_TELEPORT) || (tt->id == T_TELEPORT2)) { if ((tt->id == T_TELEPORT) || (tt->id == T_TELEPORT2)) {
if (s->id == P_PLAYER || ismonster(s->id)) { if (s == player || ismonster(s->id)) {
if (s->id != P_CLOUD) { if (s->id != P_CLOUD) {
if (!s->teleporting) { if (!s->teleporting) {
playfx(FX_TELEPORT); playfx(FX_TELEPORT);
@ -1736,13 +1919,17 @@ void dotileeffects(sprite_t *s) {
if (tt->id == T_RIGHT) { if (tt->id == T_RIGHT) {
if (!ismonster(s->id) && !isfruit(s->id)) { if (!ismonster(s->id) && !isfruit(s->id)) {
if (player->powerup != PW_CLOCK) {
movex(s, 1.5); movex(s, 1.5);
} }
}
finished = B_TRUE; finished = B_TRUE;
} else if (tt->id == T_LEFT) { } else if (tt->id == T_LEFT) {
if (!ismonster(s->id) && !isfruit(s->id)) { if (!ismonster(s->id) && !isfruit(s->id)) {
if (player->powerup != PW_CLOCK) {
movex(s, -1.5); movex(s, -1.5);
} }
}
finished = B_TRUE; finished = B_TRUE;
} else if (tt->spikes) { } else if (tt->spikes) {
if (!isfruit(s->id) && !iseffect(s->id) && !isbullet(s->id)) { if (!isfruit(s->id) && !iseffect(s->id) && !isbullet(s->id)) {
@ -1821,7 +2008,7 @@ void drawlevel(void) {
SDL_DisplayFormat(temps); SDL_DisplayFormat(temps);
// change player to floating image // 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 // create buffer for player background
playerbg = SDL_CreateRGBSurface(SDL_SWSURFACE, playerbg = SDL_CreateRGBSurface(SDL_SWSURFACE,
@ -2079,7 +2266,7 @@ double getspeed(sprite_t *s ) {
int id = s->id; int id = s->id;
double speed = 1; double speed = 1;
if (id == P_PLAYER) { if (s == player) {
speed = s->speed; speed = s->speed;
} else if (id == P_RAT) { } else if (id == P_RAT) {
if (s->angry) speed = 1.5; if (s->angry) speed = 1.5;
@ -2091,8 +2278,8 @@ double getspeed(sprite_t *s ) {
if (s->angry) speed = 2; if (s->angry) speed = 2;
else speed = 1; else speed = 1;
} else if (id == P_SPIDER) { } else if (id == P_SPIDER) {
if (s->angry) speed = 1.5; if (s->angry) speed = 2;
else speed = 2; else speed = 1.5;
} else if (id == P_CHEESE) { } else if (id == P_CHEESE) {
speed = 0; speed = 0;
} }
@ -2195,35 +2382,35 @@ void drawscore(void) {
SDL_FreeSurface(score); SDL_FreeSurface(score);
// lives // 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 // lives - show 1 less than lives
area.x = 20; area.x = 20;
area.y = 20; area.y = 25;
area.w = 0; area.w = 0;
area.h = 0; area.h = 0;
for (i = 1; i < player->lives; i++) { for (i = 1; i < player->lives; i++) {
SDL_BlitSurface(head, NULL, screen, &area); SDL_BlitSurface(head, NULL, screen, &area);
area.x += (head->w + 3); 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) { void drawtext(void) {
@ -2279,6 +2466,7 @@ void removeall(void) {
void drawnetting(sprite_t *s) { void drawnetting(sprite_t *s) {
int sx; int sx;
int xx;
SDL_Rect area; SDL_Rect area;
if (s->netting) { if (s->netting) {
@ -2311,7 +2499,12 @@ void drawnetting(sprite_t *s) {
for (y = dis; y < s->img->h; y += dis) { for (y = dis; y < s->img->h; y += dis) {
yy = s->y - s->img->h; yy = s->y - s->img->h;
yy += y; 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); //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) { } else if (s->slamming) {
double dist; double dist;
int x,y; int x,y;
int ii;
dist = (s->slamangle * (180/M_PI))/2; dist = (s->slamangle * (180/M_PI))/2;
s->netxstart = s->x + cos(s->slamangle-(180*(M_PI/180)))*dist*s->dir; 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; 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; 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); drawline16(screen,s->x,s->y - s->img->h/2,x, y, white);
/* right line */ /* right line */
x = s->x + cos(s->slamangle+(5*(M_PI/180))-(180*(M_PI/180)))*dist*s->dir; 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; 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); 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; tiletype_t *tt;
int tilex,tiley; 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 */ // if we were on a trampoline and are now not, it releases */
tt = gettileat(s->x,s->y,&tilex,&tiley); tt = gettileat(s->x,s->y,&tilex,&tiley);
@ -2652,6 +2858,22 @@ void dogravity(sprite_t *s) {
} }
} }
// 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 ? */ /* have we hit a roof ? */
/* can jump through one tile, but not two or more */ /* can jump through one tile, but not two or more */
if (isroofabove(s) && isroofnabove(s,2)) { if (isroofabove(s) && isroofnabove(s,2)) {
@ -2688,6 +2910,7 @@ void dogravity(sprite_t *s) {
if (s->netting % 2 == 0) { if (s->netting % 2 == 0) {
if (s->netspeed > -NETSPEED) s->netspeed--; if (s->netspeed > -NETSPEED) s->netspeed--;
else { else {
if (s->netlen <= 0) {
s->netting = 0; s->netting = 0;
for (s2 = sprite ; s2 ; s2 = s2->next) { for (s2 = sprite ; s2 ; s2 = s2->next) {
if ((s2->caughtby == s) && (s2->caughtstate == C_NETTING)) { if ((s2->caughtby == s) && (s2->caughtstate == C_NETTING)) {
@ -2696,6 +2919,7 @@ void dogravity(sprite_t *s) {
} }
} }
} }
}
} else if (s->slamming) { } else if (s->slamming) {
int netx; int netx;
double dist; double dist;
@ -2745,11 +2969,20 @@ void dogravity(sprite_t *s) {
macey = s2->y - s2->img->h/2; macey = s2->y - s2->img->h/2;
// add explosion // add explosion
puffin(-1, macex, macey, "nothing", 0); //puffin(-1, macex, macey, "nothing", 0);
for (yy = 0; yy < MACEEXPY; yy++) { addsprite(P_SMASH, macex, macey, "smash");
for (xx = 0; xx < MACEEXPX; xx++) { addsprite(P_SMASH, macex+TILEW, macey, "smash");
puffin(-1, macex+xx*TILEW, macey-yy*TILEH, "nothing", 0); addsprite(P_SMASH, macex-TILEW, macey, "smash");
puffin(-1, macex-xx*TILEW, macey-yy*TILEH, "nothing", 0); 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,21 +3038,36 @@ void dogravity(sprite_t *s) {
ydiff = (s2->y - s2->img->h/2) - ynet; ydiff = (s2->y - s2->img->h/2) - ynet;
if (ydiff < 0) ydiff =-ydiff; if (ydiff < 0) ydiff =-ydiff;
/*
if (player->powerup == PW_MACE) { if (player->powerup == PW_MACE) {
xthresh = TILEW*MACEEXPX*2; xthresh = TILEW*MACEEXPX*2;
ythresh = TILEW*MACEEXPY*2; ythresh = TILEW*MACEEXPY*2;
} else { } else {
*/
xthresh = s2->img->w; xthresh = s2->img->w;
ythresh = s2->img->h; ythresh = s2->img->h;
} //}
if ((xdiff <= xthresh) && (ydiff <= ythresh)) { if ((xdiff <= xthresh) && (ydiff <= ythresh)) {
if (s2->id != P_CLOUD) { if (s2->id != P_CLOUD) {
/* dies and becomes a powerup */ /* dies and becomes a powerup */
// 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]; s2->willbecome = poweruptypes[curpoweruptype];
if (poweruptypes[++curpoweruptype] == -1) { if (poweruptypes[++curpoweruptype] == -1) {
curpoweruptype = 0; 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); die(s2);
pointsinc *= 2; pointsinc *= 2;
psize += 10; psize += 10;
@ -2932,6 +3180,23 @@ int movex(sprite_t *s,double amt) {
} }
s->moved = B_TRUE; 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; return B_FALSE;
} }
@ -2978,6 +3243,36 @@ int dofruiteffect(sprite_t *s) {
sprintf(tempm, "Big net!"); sprintf(tempm, "Big net!");
addoutlinetext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,&black,POINTSDELAY); addoutlinetext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,&black,POINTSDELAY);
return B_TRUE; 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) { } else if (s->id == P_MACEPOWERUP) {
playfx(FX_POWERUP); playfx(FX_POWERUP);
player->powerup = PW_MACE; player->powerup = PW_MACE;
@ -2990,6 +3285,30 @@ int dofruiteffect(sprite_t *s) {
sprintf(tempm, "Boxing Glove!"); sprintf(tempm, "Boxing Glove!");
addoutlinetext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,&black,POINTSDELAY); addoutlinetext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,&black,POINTSDELAY);
return B_TRUE; 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) { } else if (s->id == P_FTODIAMOND) {
sprite_t *s2, *nexts; sprite_t *s2, *nexts;
// convert all flowers to diamonds // convert all flowers to diamonds
@ -3069,6 +3388,16 @@ int dofruiteffect(sprite_t *s) {
puffdelay += 1; puffdelay += 1;
} }
return B_TRUE; 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) { } else if (s->id == P_BOMB) {
sprite_t *s2, *nexts; sprite_t *s2, *nexts;
@ -3086,6 +3415,8 @@ int dofruiteffect(sprite_t *s) {
s2->dead = D_FINAL; s2->dead = D_FINAL;
} else if (ismonster(s2->id)) { } else if (ismonster(s2->id)) {
s2->willbecome = P_DIAMOND; s2->willbecome = P_DIAMOND;
s2->caughtby = NULL;
die(s2); die(s2);
} }
} }
@ -3118,7 +3449,7 @@ int dofruiteffect(sprite_t *s) {
} }
/* if so, create a left/right stream of flowers */ /* if so, create a left/right stream of flowers */
if (!found) { if (!found) {
int howmany = STREAMWID + 1; int howmany = (STREAMWID + 1) * player->gemboost;
int puffdelay; int puffdelay;
// RIGHT // RIGHT
@ -3229,6 +3560,10 @@ int initsound(void) {
loadfx(FX_MACE, "mace.wav"); loadfx(FX_MACE, "mace.wav");
loadfx(FX_LIFE, "life.wav"); loadfx(FX_LIFE, "life.wav");
loadfx(FX_GAMEOVER, "gameover.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 // load sound effects
@ -3328,34 +3663,6 @@ SDL_Surface *grabbehind(sprite_t *s, SDL_Surface *surf) {
return 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) { void dumpsprites(void) {
sprite_t *s; sprite_t *s;
int i = 0; int i = 0;

1
rc.h
View File

@ -42,7 +42,6 @@ void stopmusic(void);
void channeldone(int channel); void channeldone(int channel);
void movetostart(sprite_t *p, int dstx, int dsty, double xspeed,double yspeed); void movetostart(sprite_t *p, int dstx, int dsty, double xspeed,double yspeed);
SDL_Surface *grabbehind(sprite_t *s, SDL_Surface *surf); SDL_Surface *grabbehind(sprite_t *s, SDL_Surface *surf);
int randompowerup(void);
void dumpsprites(void); void dumpsprites(void);
void countmonsters(void); void countmonsters(void);
int getpoints(int id); int getpoints(int id);

269
shared.c
View File

@ -69,6 +69,9 @@ int loadlevel(int wnum, int lnum) {
if (!level) level = malloc(sizeof(level_t)); if (!level) level = malloc(sizeof(level_t));
/* set current level pointer */
curlevel = level;
if (level->animtiles) free(level->animtiles); if (level->animtiles) free(level->animtiles);
level->id = levelentry[lnum].id; level->id = levelentry[lnum].id;
@ -77,11 +80,6 @@ int loadlevel(int wnum, int lnum) {
level->prev = NULL; level->prev = NULL;
level->next = 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 */ /* default */
level->hurryuptime = 30; 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 */ /* remove all onscreen text */
while (text) { while (text) {
killtext(text); killtext(text);
@ -126,12 +107,13 @@ int loadlevel(int wnum, int lnum) {
} }
/* read tileset */ /* read tileset */
/*
fgets(buf, BUFLEN, f); fgets(buf, BUFLEN, f);
if (strstr(buf, "tileset") == buf) { if (strstr(buf, "tileset") == buf) {
p = strtok(buf, " "); p = strtok(buf, " ");
p = strtok(NULL, " "); p = strtok(NULL, " ");
/* strip newline */ // strip newline
p[strlen(p)-1] = '\0'; p[strlen(p)-1] = '\0';
@ -150,6 +132,36 @@ int loadlevel(int wnum, int lnum) {
printf("invalid tileset file in line: '%s'\n",buf); printf("invalid tileset file in line: '%s'\n",buf);
return B_TRUE; 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 */ /* read background tile */
fgets(buf, BUFLEN, f); fgets(buf, BUFLEN, f);
@ -182,6 +194,7 @@ int loadlevel(int wnum, int lnum) {
level->nummonsters = 0; level->nummonsters = 0;
/* read tile defs */ /* read tile defs */
// TODO: remove all of this, don't need it with new level format
nmappings = 0; nmappings = 0;
fgets(buf, BUFLEN, f); fgets(buf, BUFLEN, f);
while (!strstr(buf, "endmaps")) { while (!strstr(buf, "endmaps")) {
@ -264,6 +277,7 @@ int loadlevel(int wnum, int lnum) {
} else if (monid == P_POWERUPPOS) { } else if (monid == P_POWERUPPOS) {
level->powerupx = x; level->powerupx = x;
level->powerupy = y; level->powerupy = y;
level->poweruptype = randompowerup();
} else { } else {
/* place the monster */ /* place the monster */
level->initm[level->nummonsters].startx = x*TILEW+(TILEW/2); level->initm[level->nummonsters].startx = x*TILEW+(TILEW/2);
@ -609,8 +623,6 @@ int loadlevel(int wnum, int lnum) {
free(help[i]); free(help[i]);
} }
/* set current level pointer */
curlevel = level;
/* add player if required */ /* add player if required */
if (player == NULL) { if (player == NULL) {
@ -677,34 +689,41 @@ printf(".\n");
void setdefaults(sprite_t *s) { void setdefaults(sprite_t *s) {
// player powerup stats
s->speed = 1; 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->teleporting = 0;
s->climbing = 0; s->climbing = 0;
s->powerup = 0;
s->jumping = 0; s->jumping = 0;
s->jumpspeed = 0; s->jumpspeed = 0;
s->jumpdir = 1; s->jumpdir = 1;
s->timer1 = 0; s->timer1 = 0;
s->timer2 = 0; s->timer2 = 0;
s->timer3 = 0; s->timer3 = 0;
s->netting = 0;
s->netmax = 1;
s->netcaught = 0;
s->netbig = 0;
s->dropping = 0; s->dropping = 0;
s->dropx = -1; s->dropx = -1;
s->dropy = -1;
s->ontramp = B_FALSE; s->ontramp = B_FALSE;
s->trampx = -1; s->trampx = -1;
s->trampy = -1; s->trampy = -1;
s->quickdie = B_FALSE; s->quickdie = B_FALSE;
s->dropy = -1;
s->falling = 0; s->falling = 0;
s->fallspeed = 0; s->fallspeed = 0;
s->dir = 1; s->dir = 1;
s->slamming = 0;
s->dead = 0; s->dead = 0;
s->angry = 0; s->angry = 0;
s->invuln = 0;
s->jumptimer = 0; s->jumptimer = 0;
s->bullet = NULL; s->bullet = NULL;
@ -715,6 +734,7 @@ void setdefaults(sprite_t *s) {
switch (s->id) { switch (s->id) {
case P_BEE: case P_BEE:
case P_CLOUD: case P_CLOUD:
case P_SPIDER:
s->flies = B_TRUE; s->flies = B_TRUE;
break; break;
default: default:
@ -834,6 +854,23 @@ int loadtiletypes(char *filename) {
int uniq = 0 ; 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; state = 0;
f = fopen(filename,"rt"); f = fopen(filename,"rt");
if (!f) { if (!f) {
@ -993,7 +1030,28 @@ int loadimagesets(void) {
loadspriteimage(P_PLAYER,F_SLAM3, "sprites/dslam3.png"); loadspriteimage(P_PLAYER,F_SLAM3, "sprites/dslam3.png");
loadspriteimage(P_PLAYER,F_SLAM4, "sprites/dslam4.png"); loadspriteimage(P_PLAYER,F_SLAM4, "sprites/dslam4.png");
loadspriteimage(P_PLAYER,F_SLAM5, "sprites/dslam5.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_WALK1, "sprites/snake.png");
loadspriteimage(P_SNAKE,F_JUMP, "sprites/snakejump.png"); loadspriteimage(P_SNAKE,F_JUMP, "sprites/snakejump.png");
@ -1064,9 +1122,16 @@ int loadimagesets(void) {
loadspriteimage(P_BIGNET,F_WALK1, "sprites/bignet.png"); loadspriteimage(P_BIGNET,F_WALK1, "sprites/bignet.png");
imageset[P_BIGNET].numimages = 1; 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"); loadspriteimage(P_HELP,F_WALK1, "sprites/help.png");
imageset[P_HELP].numimages = 1; 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"); loadspriteimage(P_FLOWERYELLOW,F_WALK1, "sprites/flower-yellow.png");
imageset[P_FLOWERRED].numimages = 1; imageset[P_FLOWERRED].numimages = 1;
@ -1116,12 +1181,39 @@ int loadimagesets(void) {
loadspriteimage(P_MACE,F_WALK1, "sprites/mace.png"); loadspriteimage(P_MACE,F_WALK1, "sprites/mace.png");
imageset[P_MACE].numimages = 1; 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++) { for (i = 0; i < PUFFFRAMES; i++) {
char name[SMALLBUFLEN]; char name[SMALLBUFLEN];
sprintf(name, "sprites/puff%d.png",i); sprintf(name, "sprites/puff%d.png",i);
loadspriteimage(P_PUFF,i, name); loadspriteimage(P_PUFF,i, name);
sprintf(name, "sprites/puff%d.png",i);
loadspriteimage(P_SMASH,i, name);
} }
imageset[P_PUFF].numimages = PUFFFRAMES; 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 */ /* bullets */
loadspriteimage(P_SPIT,F_WALK1, "sprites/spit.png"); loadspriteimage(P_SPIT,F_WALK1, "sprites/spit.png");
@ -1134,7 +1226,7 @@ int loadimagesets(void) {
for (p = 0; p < MAXPTYPES; p++) { for (p = 0; p < MAXPTYPES; p++) {
int fr; int fr;
int angle = 90; int angle = 90;
/* rotated */ /* rotated death images */
// TODO: need to free tempimg ? */ // TODO: need to free tempimg ? */
if (!isfruit(p) && !isbullet(p) && !iseffect(p)) { if (!isfruit(p) && !isbullet(p) && !iseffect(p)) {
for (fr = F_DEAD2; fr <= F_DEAD4; fr++) { for (fr = F_DEAD2; fr <= F_DEAD4; fr++) {
@ -1148,6 +1240,7 @@ int loadimagesets(void) {
for (i = 0; i < imageset[p].numimages; i++) { for (i = 0; i < imageset[p].numimages; i++) {
SDL_Surface *origi; SDL_Surface *origi;
if (!isfruit(p) && !iseffect(p)) {
SDL_SetColorKey(imageset[p].img[i], SDL_SetColorKey(imageset[p].img[i],
SDL_SRCCOLORKEY, SDL_MapRGB(screen->format, 0, 0, 0)); SDL_SRCCOLORKEY, SDL_MapRGB(screen->format, 0, 0, 0));
@ -1218,7 +1311,7 @@ int loadimagesets(void) {
SDL_SetColorKey(imageset[p].img[MAXFRAMES*3+i], SDL_SetColorKey(imageset[p].img[MAXFRAMES*3+i],
SDL_SRCCOLORKEY, SDL_MapRGB(imageset[p].img[MAXFRAMES*3+i]->format, 101, 0, 0)); 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)) { } else if (isbullet(s->id)) {
frame = F_WALK1; frame = F_WALK1;
} else if (iseffect(s->id)) { } else if (iseffect(s->id)) {
if (s->id == P_PUFF) { if ((s->id == P_PUFF) || (s->id == P_SMASH) || (s->id == P_SPARKLE)) {
if (s->timer1 >= PUFFFRAMES) { if (s->timer1 >= imageset[s->id].numimages) {
frame = PUFFFRAMES-1; frame = imageset[s->id].numimages - 1;
} else if (s->timer1 < 0) { } else if (s->timer1 < 0) {
// don't draw // don't draw
return; return;
@ -1272,6 +1365,12 @@ void drawsprite(sprite_t *s) {
} else { } else {
frame = F_CLIMB1; 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) { } else if (s->netting) {
frame = F_SHOOT; frame = F_SHOOT;
} else if (s->jumping) { } else if (s->jumping) {
@ -1310,9 +1409,11 @@ void drawsprite(sprite_t *s) {
} }
/* x-flip if required */ /* x-flip if required */
if (!isfruit(s->id) && !iseffect(s->id)) {
if (s->dir == -1) { if (s->dir == -1) {
frame += MAXFRAMES; frame += MAXFRAMES;
} }
}
/* make red if required */ /* make red if required */
if (s->angry) { if (s->angry) {
frame += (MAXFRAMES*2); frame += (MAXFRAMES*2);
@ -1460,18 +1561,25 @@ int isfruit(int id) {
case P_CHIPS: case P_CHIPS:
case P_BURGER: case P_BURGER:
case P_DIAMOND: case P_DIAMOND:
/* normal powerups */ /* permenant powerups */
case P_SPEED: case P_SPEED:
case P_NUMNETS: case P_NUMNETS:
case P_BIGNET: case P_BIGNET:
case P_HELP: case P_HELP:
/* random powerups */ case P_GEMBOOST:
case P_BELL:
/* one-off level only powerups */
case P_BOXING: case P_BOXING:
case P_MACEPOWERUP: case P_MACEPOWERUP:
case P_FTODIAMOND: case P_FTODIAMOND:
case P_FTOGEM: case P_FTOGEM:
case P_BOMB: case P_BOMB:
case P_HELMET:
case P_SHIELD: case P_SHIELD:
case P_TROPHY:
case P_RINGSILVER:
case P_RINGGOLD:
case P_CLOCK:
/* flowers */ /* flowers */
case P_FLOWERYELLOW: case P_FLOWERYELLOW:
case P_FLOWERRED: case P_FLOWERRED:
@ -1497,6 +1605,8 @@ int isbullet(int id) {
int iseffect(int id) { int iseffect(int id) {
if (id == P_PUFF) return B_TRUE; 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_POWERUPPOS) return B_TRUE;
if (id == P_GLOVE) return B_TRUE; if (id == P_GLOVE) return B_TRUE;
if (id == P_MACE) return B_TRUE; if (id == P_MACE) return B_TRUE;
@ -1504,6 +1614,12 @@ int iseffect(int id) {
return B_FALSE; return B_FALSE;
} }
int needscollisions(int id) {
if (id == P_SMASH) return B_TRUE;
return B_FALSE;
}
#ifdef OPENGL #ifdef OPENGL
inline void drawpixel16(SDL_Surface *screen, int x, int y, SDL_Color c) 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 the level announcement. That means that we can start
moving. moving.
*/ */
if (levelcomplete == LV_INIT) levelcomplete = LV_INPROGRESS; if (levelcomplete == LV_INIT) {
levelcomplete = LV_INPROGRESS;
}
} }
// returns score of given fruit type // returns score of given fruit type
@ -1886,19 +2004,19 @@ int getpoints(int id) {
int points; int points;
switch (id) { switch (id) {
case P_CHEESE: case P_CHEESE:
points = 100; points = 1000;
break; break;
case P_ICECREAM: case P_ICECREAM:
points = 200; points = 1500;
break; break;
case P_CHIPS: case P_CHIPS:
points = 300; points = 2000;
break; break;
case P_BURGER: case P_BURGER:
points = 400; points = 2500;
break; break;
case P_DIAMOND: case P_DIAMOND:
points = 500; points = 3000;
break; break;
case P_FLOWERYELLOW: case P_FLOWERYELLOW:
points = 5; points = 5;
@ -1970,3 +2088,60 @@ int loadlevellist(void) {
return B_FALSE; 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;
}

View File

@ -19,6 +19,7 @@ int gettileframecount(int tid);
int isfruit(int id); int isfruit(int id);
int isflower(int id); int isflower(int id);
int iseffect(int id); int iseffect(int id);
int needscollisions(int id);
int candoslopes(int sid); int candoslopes(int sid);
int flowertogem(int id); int flowertogem(int id);
inline void drawpixel16(SDL_Surface *screen, int x, int y, SDL_Color c); 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); void puffin(int willbecome, int x, int y, char *name, int delay);
SDL_Surface *loadspriteimage(int spriteid, int frame, char *filename); SDL_Surface *loadspriteimage(int spriteid, int frame, char *filename);
int getpoints(int id); int getpoints(int id);
int randompowerup(void);
int loadlevellist(void); int loadlevellist(void);
int ispermenant(int pid);
#endif #endif

BIN
sounds/armor.wav Normal file

Binary file not shown.

BIN
sounds/bell.wav Normal file

Binary file not shown.

BIN
sounds/clock.wav Normal file

Binary file not shown.

BIN
sounds/ow.wav Normal file

Binary file not shown.

Binary file not shown.

BIN
sounds/splash-old2.wav Normal file

Binary file not shown.

Binary file not shown.

BIN
sprites/armor.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 655 B

BIN
sprites/armorclimb1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 465 B

BIN
sprites/armorclimb2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 541 B

BIN
sprites/armorfall.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 611 B

BIN
sprites/armorjump.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 631 B

BIN
sprites/armorshoot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 895 B

BIN
sprites/armorslam1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 761 B

BIN
sprites/armorslam2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 582 B

BIN
sprites/armorslam3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 540 B

BIN
sprites/armorslam4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

BIN
sprites/armorslam5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 697 B

BIN
sprites/armorswim1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 831 B

BIN
sprites/armorswim2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 B

BIN
sprites/bell.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 B

After

Width:  |  Height:  |  Size: 195 B

BIN
sprites/clock.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
sprites/dswim1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
sprites/dswim2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
sprites/gemboost.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 B

BIN
sprites/helmet.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1005 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

After

Width:  |  Height:  |  Size: 217 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 191 B

After

Width:  |  Height:  |  Size: 196 B

BIN
sprites/ring-gold.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 973 B

BIN
sprites/ring-silver.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 837 B

BIN
sprites/sparkle0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 B

BIN
sprites/sparkle1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

BIN
sprites/sparkle2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

BIN
sprites/sparkle3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

BIN
sprites/sparkle4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

BIN
sprites/sparkle5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

BIN
sprites/sparkle6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 B

After

Width:  |  Height:  |  Size: 204 B

BIN
sprites/trophy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -1,4 +1,4 @@
tileset green bgfile backgrounds/forest.png
bg 0 bg 0
hurryup 30 hurryup 30
endmaps endmaps

View File

@ -1,4 +1,4 @@
tileset green bgfile backgrounds/forest2.png
bg 0 bg 0
hurryup 60 hurryup 60
endmaps endmaps
@ -33,6 +33,7 @@ P 36 24
P 38 24 P 38 24
S 31 24 S 31 24
r 20 21 r 20 21
s 37 9
endmonsters endmonsters
exitdir 1 exitdir 1
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
@ -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,27,27,27,27,27,27,27,27,27,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,1,1,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,1,1,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4, 4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,1,1,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,1,1,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,27,27,27,27,27,27,27,27,27,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,1,1,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,1,1,27,27,27,27,27,27,27,27,27,27,27,27,4,
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4, 4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
@ -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, 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 layer2
1,1,19
38,1,18
8,6,28 8,6,28
9,6,28 9,6,28
10,6,28 10,6,28
@ -88,19 +91,14 @@ layer2
17,7,27 17,7,27
18,7,27 18,7,27
19,7,27 19,7,27
31,8,28 1,9,19
32,8,28
33,8,28
34,8,28
35,8,28
36,8,28
37,8,28
15,9,27 15,9,27
16,9,27 16,9,27
17,9,27 17,9,27
18,9,27 18,9,27
19,9,27 19,9,27
20,9,27 20,9,27
38,9,18
8,10,28 8,10,28
9,10,28 9,10,28
10,10,28 10,10,28
@ -118,6 +116,7 @@ layer2
22,10,28 22,10,28
23,10,28 23,10,28
24,10,28 24,10,28
1,14,19
8,14,28 8,14,28
9,14,28 9,14,28
10,14,28 10,14,28
@ -144,6 +143,7 @@ layer2
19,15,27 19,15,27
22,15,27 22,15,27
23,15,27 23,15,27
38,17,18
5,18,28 5,18,28
6,18,28 6,18,28
7,18,28 7,18,28
@ -204,8 +204,10 @@ layer2
33,25,28 33,25,28
34,25,28 34,25,28
35,25,28 35,25,28
1,26,19
26,26,27 26,26,27
27,26,27 27,26,27
28,26,27 28,26,27
29,26,27 29,26,27
30,26,27 30,26,27
38,26,18

97
world1/level11.5.dat Normal file
View File

@ -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

68
world1/level12.dat Normal file
View File

@ -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

92
world1/level13.dat Normal file
View File

@ -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

73
world1/level14.dat Normal file
View File

@ -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

View File

@ -1,4 +1,4 @@
tileset green bgfile xx
bg 0 bg 0
hurryup 80 hurryup 80
endmaps endmaps

46
world1/level20.dat Normal file
View File

@ -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*
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

562
world1/level21.dat Normal file
View File

@ -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

View File

@ -1,4 +1,4 @@
tileset green bgfile backgrounds/forest2.png
bg 0 bg 0
hurryup 40 hurryup 40
endmaps endmaps

View File

@ -1,4 +1,4 @@
tileset green bgfile backgrounds/forest2.png
bg 0 bg 0
hurryup 120 hurryup 120
endmaps endmaps

66
world1/level5.5.dat Normal file
View File

@ -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

82
world1/level7.5.dat Normal file
View File

@ -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

View File

@ -1,4 +1,4 @@
tileset green bgfile backgrounds/forest2.png
bg 0 bg 0
hurryup 30 hurryup 30
endmaps endmaps

48
world1/level8.5.dat Normal file
View File

@ -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

View File

@ -1,4 +1,4 @@
tileset green bgfile backgrounds/forest2.png
bg 0 bg 0
hurryup 60 hurryup 60
endmaps endmaps

67
world1/level80.dat Normal file
View File

@ -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,

67
world1/level9.5.dat Normal file
View File

@ -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

132
world1/level9.dat Normal file
View File

@ -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

View File

@ -1,57 +1,51 @@
tileset green bgfile
bg 0 bg 0
hurryup 30 hurryup 30
endmaps endmaps
help help
endhelp endhelp
monsters monsters
1 31 24 1 26 13
! 3 12 ! 32 13
r 37 3 r 37 3
r 20 6
r 9 6
s 10 8
r 36 24 r 36 24
r 37 21 P 1 13
r 37 18 P 7 13
r 36 15 s 5 1
r 17 13
@ 20 10
@ 19 10
r 37 12
endmonsters endmonsters
exitdir 1 exitdir 1
17,17,17,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,4, 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,
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,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,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,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,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,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,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,4,4,4,4,4,4,4,4,4,4,4,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,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
layer2 layer2
19,6,1
22,6,1
13,7,8
17,7,8
13,13,8
17,13,8
11,24,11