- Fixed bug with jumping off ladders
- Fixed issue when dropping throughbridges and moving at the same time - Can no longer climb while slamming/netting - Modified behaviour of flowertogem powerup - Level orderis now read from levels.dat - Editor now handles loading an empty level - Added sounds for teleportation and entering/exitting water - Fixed swimming in water behaviour - Added powerup: Mace
This commit is contained in:
parent
875de25da6
commit
5b272b4665
27
defs.h
27
defs.h
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
// size of flower straem when getting last flower
|
// size of flower straem when getting last flower
|
||||||
// (number of gems on each side)
|
// (number of gems on each side)
|
||||||
#define STREAMWID 6
|
#define STREAMWID 5
|
||||||
|
|
||||||
|
|
||||||
// puff of smoke
|
// puff of smoke
|
||||||
|
@ -59,8 +59,12 @@
|
||||||
#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 MACEEXPY 2 // Y size of mace explosion
|
||||||
|
|
||||||
|
|
||||||
// Limits
|
// Limits
|
||||||
|
#define MAXLEVELS 100
|
||||||
#define MAXMAPPINGS 50
|
#define MAXMAPPINGS 50
|
||||||
#define MAXMONSTERSPERLEVEL 40
|
#define MAXMONSTERSPERLEVEL 40
|
||||||
#define MAXLETTERHEIGHT 100
|
#define MAXLETTERHEIGHT 100
|
||||||
|
@ -85,7 +89,7 @@
|
||||||
/* enums */
|
/* enums */
|
||||||
|
|
||||||
/* sounds */
|
/* sounds */
|
||||||
#define MAXFX 15
|
#define MAXFX 18
|
||||||
#define FX_SHOOT 0
|
#define FX_SHOOT 0
|
||||||
#define FX_SLAM 1
|
#define FX_SLAM 1
|
||||||
#define FX_KILL 2
|
#define FX_KILL 2
|
||||||
|
@ -101,6 +105,9 @@
|
||||||
#define FX_MORPH 12
|
#define FX_MORPH 12
|
||||||
#define FX_BOOM 13
|
#define FX_BOOM 13
|
||||||
#define FX_SPRING 14
|
#define FX_SPRING 14
|
||||||
|
#define FX_TELEPORT 15
|
||||||
|
#define FX_SPLASH 16
|
||||||
|
#define FX_MACE 17
|
||||||
|
|
||||||
// Slope types
|
// Slope types
|
||||||
#define S_NOTSOLID 0
|
#define S_NOTSOLID 0
|
||||||
|
@ -108,7 +115,7 @@
|
||||||
#define S_SLOPE 2
|
#define S_SLOPE 2
|
||||||
|
|
||||||
// Sprite types
|
// Sprite types
|
||||||
#define MAXPTYPES 31
|
#define MAXPTYPES 33
|
||||||
#define P_PLAYER 0
|
#define P_PLAYER 0
|
||||||
#define P_RAT 1
|
#define P_RAT 1
|
||||||
#define P_CHEESE 2
|
#define P_CHEESE 2
|
||||||
|
@ -140,11 +147,14 @@
|
||||||
#define P_FTOGEM 28
|
#define P_FTOGEM 28
|
||||||
#define P_BOMB 29
|
#define P_BOMB 29
|
||||||
#define P_SHIELD 30
|
#define P_SHIELD 30
|
||||||
|
#define P_MACEPOWERUP 31
|
||||||
|
#define P_MACE 32
|
||||||
|
|
||||||
// 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
|
||||||
|
|
||||||
// Frame names
|
// Frame names
|
||||||
#define F_WALK1 0
|
#define F_WALK1 0
|
||||||
|
@ -284,6 +294,11 @@ typedef struct level_s {
|
||||||
} level_t;
|
} level_t;
|
||||||
level_t *level;
|
level_t *level;
|
||||||
|
|
||||||
|
typedef struct levelentry_s {
|
||||||
|
char *filename;
|
||||||
|
char *desc;
|
||||||
|
} levelentry_t;
|
||||||
|
|
||||||
typedef struct sprite_s {
|
typedef struct sprite_s {
|
||||||
int id; // what kind of sprite? (eg. player, cheese, rat)
|
int id; // what kind of sprite? (eg. player, cheese, rat)
|
||||||
int score; // player's score, for monsters how much they are worth
|
int score; // player's score, for monsters how much they are worth
|
||||||
|
@ -329,6 +344,7 @@ typedef struct sprite_s {
|
||||||
char name[MIDBUFLEN]; // Help text for help icons, otherwise not really used outside of debugging
|
char name[MIDBUFLEN]; // Help text for help icons, otherwise not really used outside of debugging
|
||||||
|
|
||||||
// player and monster
|
// player and monster
|
||||||
|
int swimming; // are we in the water?
|
||||||
int falling; // are we falling?
|
int falling; // are we falling?
|
||||||
int dropping; // are we purposely dropping through solid ground?
|
int dropping; // are we purposely dropping through solid ground?
|
||||||
int dropx,dropy;// coords of tile we dropped from
|
int dropx,dropy;// coords of tile we dropped from
|
||||||
|
@ -365,7 +381,7 @@ imageset_t imageset[MAXPTYPES];
|
||||||
|
|
||||||
/* external globals */
|
/* external globals */
|
||||||
extern SDL_Color black;
|
extern SDL_Color black;
|
||||||
extern SDL_Surface *screen, *temps;
|
extern SDL_Surface *screen, *temps, *levelbg;
|
||||||
extern sprite_t *sprite, *lastsprite, *player;
|
extern sprite_t *sprite, *lastsprite, *player;
|
||||||
extern level_t *curlevel;
|
extern level_t *curlevel;
|
||||||
extern tiletype_t fakeblock;
|
extern tiletype_t fakeblock;
|
||||||
|
@ -373,6 +389,7 @@ extern int gtime;
|
||||||
extern int timer;
|
extern int timer;
|
||||||
extern SDL_Color red;
|
extern SDL_Color red;
|
||||||
extern SDL_Color black;
|
extern SDL_Color black;
|
||||||
|
extern SDL_Color blue;
|
||||||
extern SDL_Color white;
|
extern SDL_Color white;
|
||||||
extern SDL_Color green;
|
extern SDL_Color green;
|
||||||
extern SDL_Color yellow;
|
extern SDL_Color yellow;
|
||||||
|
@ -386,6 +403,8 @@ extern int oldexitdir;
|
||||||
extern int levelcomplete;
|
extern int levelcomplete;
|
||||||
extern text_t *text, *lasttext;
|
extern text_t *text, *lasttext;
|
||||||
extern int cheat;
|
extern int cheat;
|
||||||
|
extern int nexthurryup;
|
||||||
|
extern levelentry_t levelentry[];
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -7,4 +7,4 @@
|
||||||
- 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 rc.c: update ismonster()
|
- in rc.c: update ismonster()
|
||||||
- in rc.c: add monster movement
|
- in rc.c: add monster/effect movement
|
||||||
|
|
242
edit.c
242
edit.c
|
@ -41,6 +41,8 @@ int main (int argc, char **argv) {
|
||||||
|
|
||||||
curlevelnum = 1;
|
curlevelnum = 1;
|
||||||
|
|
||||||
|
levelbg = NULL;
|
||||||
|
|
||||||
/* handle arguments */
|
/* handle arguments */
|
||||||
if (argc >= 2) {
|
if (argc >= 2) {
|
||||||
for (i = 1; i < argc; i++) {
|
for (i = 1; i < argc; i++) {
|
||||||
|
@ -62,6 +64,11 @@ int main (int argc, char **argv) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (loadlevellist()) {
|
||||||
|
printf("Error loading level list from levels.dat.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
/* initialise */
|
/* initialise */
|
||||||
initglobals();
|
initglobals();
|
||||||
|
|
||||||
|
@ -139,17 +146,19 @@ int main (int argc, char **argv) {
|
||||||
seltile = NULL;
|
seltile = NULL;
|
||||||
/* get tile number */
|
/* get tile number */
|
||||||
for (tt = tiletype; tt != NULL; tt = tt->next) {
|
for (tt = tiletype; tt != NULL; tt = tt->next) {
|
||||||
// is mouse over this one?
|
if (isplacabletile(tt->id)) {
|
||||||
if ((mx >= x) && (my >= y) && (mx <= x+TILEW-1) && (my <= y+TILEH-1)) {
|
// is mouse over this one?
|
||||||
seltile = tt;
|
if ((mx >= x) && (my >= y) && (mx <= x+TILEW-1) && (my <= y+TILEH-1)) {
|
||||||
selsprite = -1;
|
seltile = tt;
|
||||||
break;
|
selsprite = -1;
|
||||||
} else {
|
break;
|
||||||
// check next one
|
} else {
|
||||||
x += TILEW;
|
// check next one
|
||||||
if (x >= EDITORW) {
|
x += TILEW;
|
||||||
x = PALX;
|
if (x >= EDITORW) {
|
||||||
y += TILEH;
|
x = PALX;
|
||||||
|
y += TILEH;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -163,30 +172,31 @@ int main (int argc, char **argv) {
|
||||||
selsprite = -1;
|
selsprite = -1;
|
||||||
|
|
||||||
for (p = 0; p < MAXPTYPES; p++) {
|
for (p = 0; p < MAXPTYPES; p++) {
|
||||||
SDL_Surface *firstimg;
|
if (isplacablesprite(p)) {
|
||||||
int w,h;
|
SDL_Surface *firstimg;
|
||||||
|
int w,h;
|
||||||
|
|
||||||
/* select images */
|
/* select images */
|
||||||
firstimg = imageset[p].img[F_WALK1];
|
firstimg = imageset[p].img[F_WALK1];
|
||||||
w = firstimg->w;
|
w = firstimg->w;
|
||||||
h = firstimg->h;
|
h = firstimg->h;
|
||||||
if (h > maxh) maxh = h;
|
if (h > maxh) maxh = h;
|
||||||
|
|
||||||
// is mouse over it?
|
// is mouse over it?
|
||||||
if ((mx >= x) && (my >= y) && (mx <= x+w-1) && (my <= y+h-1)) {
|
if ((mx >= x) && (my >= y) && (mx <= x+w-1) && (my <= y+h-1)) {
|
||||||
selsprite = p;
|
selsprite = p;
|
||||||
seltile = NULL;
|
seltile = NULL;
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
// check next one
|
// check next one
|
||||||
x += w;
|
x += w;
|
||||||
if (x >= EDITORW-TILEW) {
|
if (x >= EDITORW-TILEW) {
|
||||||
x = SPALX;
|
x = SPALX;
|
||||||
y += maxh;
|
y += maxh;
|
||||||
maxh = 0;
|
maxh = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
// redraw palette with new selection
|
// redraw palette with new selection
|
||||||
drawpalette();
|
drawpalette();
|
||||||
|
@ -309,29 +319,7 @@ int main (int argc, char **argv) {
|
||||||
}
|
}
|
||||||
if (keys[SDLK_c]) {
|
if (keys[SDLK_c]) {
|
||||||
if (toggletimer == 0) {
|
if (toggletimer == 0) {
|
||||||
int offset,x,y;
|
clearlevel();
|
||||||
|
|
||||||
/* clear all sprites */
|
|
||||||
while (sprite) {
|
|
||||||
killsprite(sprite);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* clear level */
|
|
||||||
for (x = 0; x < LEVELW; x++) {
|
|
||||||
for (y = 0; y < LEVELH; y++) {
|
|
||||||
offset = y*LEVELW+x;
|
|
||||||
if ((x == 0) || (x == LEVELW-1)) {
|
|
||||||
curlevel->map[offset] = T_FULL;
|
|
||||||
} else if (y == LEVELH-1) {
|
|
||||||
curlevel->map[offset] = T_LAND;
|
|
||||||
} else {
|
|
||||||
curlevel->map[offset] = T_BLANK;
|
|
||||||
}
|
|
||||||
curlevel->map2[offset] = T_BLANK;
|
|
||||||
drawtile(screen,x,y);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
printf("cleared level\n");
|
|
||||||
toggletimer = 30;
|
toggletimer = 30;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -371,7 +359,10 @@ 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++;
|
||||||
loadlevel(curworld,curlevelnum);
|
if (loadlevel(curworld,curlevelnum)) {
|
||||||
|
printf("creating new level\n");
|
||||||
|
clearlevel();
|
||||||
|
}
|
||||||
draweditorlevel();
|
draweditorlevel();
|
||||||
drawsprites();
|
drawsprites();
|
||||||
toggletimer = 30;
|
toggletimer = 30;
|
||||||
|
@ -383,7 +374,10 @@ int main (int argc, char **argv) {
|
||||||
if (curlevelnum > 1) {
|
if (curlevelnum > 1) {
|
||||||
printf("Skipping to previous level.\n");
|
printf("Skipping to previous level.\n");
|
||||||
curlevelnum--;
|
curlevelnum--;
|
||||||
loadlevel(curworld,curlevelnum);
|
if (loadlevel(curworld,curlevelnum)) {
|
||||||
|
printf("creating new level\n");
|
||||||
|
clearlevel();
|
||||||
|
}
|
||||||
draweditorlevel();
|
draweditorlevel();
|
||||||
drawsprites();
|
drawsprites();
|
||||||
toggletimer = 30;
|
toggletimer = 30;
|
||||||
|
@ -517,22 +511,23 @@ void drawpalette(void) {
|
||||||
area.w = TILEW;
|
area.w = TILEW;
|
||||||
area.h = TILEH;
|
area.h = TILEH;
|
||||||
for (tt = tiletype; tt != NULL; tt = tt->next) {
|
for (tt = tiletype; tt != NULL; tt = tt->next) {
|
||||||
/* draw background */
|
if (isplacabletile(tt->id)) {
|
||||||
SDL_BlitSurface(bg->img[0], NULL, screen, &area);
|
/* draw background */
|
||||||
/* draw tile */
|
SDL_BlitSurface(bg->img[0], NULL, screen, &area);
|
||||||
SDL_BlitSurface(tt->img[0], NULL, screen, &area);
|
/* draw tile */
|
||||||
/* draw selector box */
|
SDL_BlitSurface(tt->img[0], NULL, screen, &area);
|
||||||
if (seltile == tt) {
|
/* draw selector box */
|
||||||
drawbox16(screen,area.x,area.y,area.x+area.w-1,area.y+area.h-1,&red,NULL);
|
if (seltile == tt) {
|
||||||
drawbox16(screen,area.x+1,area.y+1,area.x+area.w-2,area.y+area.h-2,&red,NULL);
|
drawbox16(screen,area.x,area.y,area.x+area.w-1,area.y+area.h-1,&red,NULL);
|
||||||
|
drawbox16(screen,area.x+1,area.y+1,area.x+area.w-2,area.y+area.h-2,&red,NULL);
|
||||||
|
}
|
||||||
|
/* move on to next position */
|
||||||
|
area.x += TILEW;
|
||||||
|
if (area.x >= EDITORW) {
|
||||||
|
area.x = PALX;
|
||||||
|
area.y += TILEH;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/* move on to next position */
|
|
||||||
area.x += TILEW;
|
|
||||||
if (area.x >= EDITORW) {
|
|
||||||
area.x = PALX;
|
|
||||||
area.y += TILEH;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_UpdateRect(screen, PALX,PALY,PALW,PALH);
|
SDL_UpdateRect(screen, PALX,PALY,PALW,PALH);
|
||||||
|
@ -545,28 +540,30 @@ void drawpalette(void) {
|
||||||
for (p = 0; p < MAXPTYPES; p++) {
|
for (p = 0; p < MAXPTYPES; p++) {
|
||||||
SDL_Surface *firstimg;
|
SDL_Surface *firstimg;
|
||||||
|
|
||||||
/* select images */
|
if (isplacablesprite(p)) {
|
||||||
firstimg = imageset[p].img[F_WALK1];
|
/* select images */
|
||||||
area.w = firstimg->w;
|
firstimg = imageset[p].img[F_WALK1];
|
||||||
area.h = firstimg->h;
|
area.w = firstimg->w;
|
||||||
if (area.h > maxheight) maxheight = area.h;
|
area.h = firstimg->h;
|
||||||
|
if (area.h > maxheight) maxheight = area.h;
|
||||||
|
|
||||||
/* clear bg */
|
/* clear bg */
|
||||||
drawbox16(screen,area.x,area.y,area.x+area.w,area.y+area.h,&black,&black);
|
drawbox16(screen,area.x,area.y,area.x+area.w,area.y+area.h,&black,&black);
|
||||||
/* draw sprite */
|
/* draw sprite */
|
||||||
SDL_BlitSurface(firstimg, NULL, screen, &area);
|
SDL_BlitSurface(firstimg, NULL, screen, &area);
|
||||||
/* draw selector box */
|
/* draw selector box */
|
||||||
if (selsprite == p) {
|
if (selsprite == p) {
|
||||||
drawbox16(screen,area.x,area.y, area.x+area.w-1,area.y+area.h-1,&red,NULL);
|
drawbox16(screen,area.x,area.y, area.x+area.w-1,area.y+area.h-1,&red,NULL);
|
||||||
drawbox16(screen,area.x+1,area.y+1, area.x+area.w-2,area.y+area.h-2,&red,NULL);
|
drawbox16(screen,area.x+1,area.y+1, area.x+area.w-2,area.y+area.h-2,&red,NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* move to next position */
|
/* move to next position */
|
||||||
area.x += area.w;
|
area.x += area.w;
|
||||||
if (area.x >= EDITORW-TILEW) {
|
if (area.x >= EDITORW-TILEW) {
|
||||||
area.x = SPALX;
|
area.x = SPALX;
|
||||||
area.y += maxheight;
|
area.y += maxheight;
|
||||||
maxheight = 0;
|
maxheight = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -582,7 +579,8 @@ int savelevel(int wnum, int lnum) {
|
||||||
sprite_t *s;
|
sprite_t *s;
|
||||||
|
|
||||||
|
|
||||||
sprintf(filename, "world%d/level%d.dat",wnum,lnum);
|
sprintf(filename,"world%d/%s",wnum,levelentry[lnum].filename);
|
||||||
|
|
||||||
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\n");
|
||||||
|
@ -646,3 +644,63 @@ int savelevel(int wnum, int lnum) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void clearlevel(void) {
|
||||||
|
int offset,x,y;
|
||||||
|
|
||||||
|
/* clear all sprites */
|
||||||
|
while (sprite) {
|
||||||
|
killsprite(sprite);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* clear level */
|
||||||
|
for (x = 0; x < LEVELW; x++) {
|
||||||
|
for (y = 0; y < LEVELH; y++) {
|
||||||
|
offset = y*LEVELW+x;
|
||||||
|
if ((x == 0) || (x == LEVELW-1)) {
|
||||||
|
curlevel->map[offset] = T_FULL;
|
||||||
|
} else if (y == LEVELH-1) {
|
||||||
|
curlevel->map[offset] = T_LAND;
|
||||||
|
} else {
|
||||||
|
curlevel->map[offset] = T_BLANK;
|
||||||
|
}
|
||||||
|
curlevel->map2[offset] = T_BLANK;
|
||||||
|
drawtile(screen,x,y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
modified = B_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
int isplacabletile(int tid) {
|
||||||
|
switch (tid) {
|
||||||
|
case T_TRAMPDOWN:
|
||||||
|
return B_FALSE;
|
||||||
|
}
|
||||||
|
return B_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
int isplacablesprite(int sid) {
|
||||||
|
switch (sid) {
|
||||||
|
case P_SPEED:
|
||||||
|
case P_NUMNETS:
|
||||||
|
case P_BIGNET:
|
||||||
|
case P_CLOUD:
|
||||||
|
case P_SPIT:
|
||||||
|
case P_PUFF:
|
||||||
|
case P_BOXING:
|
||||||
|
case P_GLOVE:
|
||||||
|
case P_DIAMOND:
|
||||||
|
case P_FTODIAMOND:
|
||||||
|
case P_FTOGEM:
|
||||||
|
case P_BOMB:
|
||||||
|
case P_SHIELD:
|
||||||
|
case P_MACEPOWERUP:
|
||||||
|
case P_MACE:
|
||||||
|
case P_GEMRED:
|
||||||
|
case P_GEMYELLOW:
|
||||||
|
case P_GEMPURPLE:
|
||||||
|
return B_FALSE;
|
||||||
|
}
|
||||||
|
return B_TRUE;
|
||||||
|
}
|
||||||
|
|
3
edit.h
3
edit.h
|
@ -21,4 +21,7 @@ void drawsprites(void);
|
||||||
int savelevel(int wnum, int lnum);
|
int savelevel(int wnum, int lnum);
|
||||||
void cleanup(void);
|
void cleanup(void);
|
||||||
void usage(void);
|
void usage(void);
|
||||||
|
void clearlevel(void);
|
||||||
|
|
||||||
|
int isplacabletile(int tid);
|
||||||
|
int isplacablesprite(int sid);
|
||||||
|
|
|
@ -4,6 +4,9 @@
|
||||||
/* global variables */
|
/* global variables */
|
||||||
int musicplaying;
|
int musicplaying;
|
||||||
|
|
||||||
|
levelentry_t levelentry[MAXLEVELS]; // level filenames etc
|
||||||
|
|
||||||
|
SDL_Surface *levelbg; // level background image
|
||||||
SDL_Surface *temps; // temporary surface
|
SDL_Surface *temps; // temporary surface
|
||||||
SDL_Surface *screen; // the actual video screen
|
SDL_Surface *screen; // the actual video screen
|
||||||
sprite_t *sprite; // head of sprite linked list
|
sprite_t *sprite; // head of sprite linked list
|
||||||
|
@ -19,6 +22,8 @@ level_t *curlevel; // the current level's data
|
||||||
|
|
||||||
int levelcomplete; // has the levle been finished?
|
int levelcomplete; // has the levle been finished?
|
||||||
|
|
||||||
|
int nexthurryup; // next hurryuptime for the level
|
||||||
|
|
||||||
int cheat;
|
int cheat;
|
||||||
|
|
||||||
tiletype_t fakeblock; // used for returning tiletypes from a function
|
tiletype_t fakeblock; // used for returning tiletypes from a function
|
||||||
|
@ -37,6 +42,7 @@ int toggletimer; // used for toggling between fullscreen mode
|
||||||
/* colours */
|
/* colours */
|
||||||
SDL_Color red;
|
SDL_Color red;
|
||||||
SDL_Color black;
|
SDL_Color black;
|
||||||
|
SDL_Color blue;
|
||||||
SDL_Color white;
|
SDL_Color white;
|
||||||
SDL_Color green;
|
SDL_Color green;
|
||||||
SDL_Color yellow;
|
SDL_Color yellow;
|
||||||
|
|
360
rc.c
360
rc.c
|
@ -70,6 +70,7 @@ sprite_t *lastsprite;
|
||||||
|
|
||||||
SDL_Color red = {255, 0, 0, 0};
|
SDL_Color red = {255, 0, 0, 0};
|
||||||
SDL_Color black = {0, 0, 0, 0};
|
SDL_Color black = {0, 0, 0, 0};
|
||||||
|
SDL_Color blue = {0, 0, 255, 0};
|
||||||
SDL_Color white = {255, 255, 255, 0};
|
SDL_Color white = {255, 255, 255, 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};
|
||||||
|
@ -89,6 +90,7 @@ int main (int argc, char **argv) {
|
||||||
curlevelnum = 1;
|
curlevelnum = 1;
|
||||||
musicplaying = B_FALSE;
|
musicplaying = B_FALSE;
|
||||||
cheat = B_FALSE;
|
cheat = B_FALSE;
|
||||||
|
levelbg = NULL;
|
||||||
|
|
||||||
/* handle arguments */
|
/* handle arguments */
|
||||||
if (argc >= 2) {
|
if (argc >= 2) {
|
||||||
|
@ -130,7 +132,15 @@ int main (int argc, char **argv) {
|
||||||
screen = SDL_SetVideoMode(640,480,16,SDL_SWSURFACE|SDL_DOUBLEBUF|vidargs);
|
screen = SDL_SetVideoMode(640,480,16,SDL_SWSURFACE|SDL_DOUBLEBUF|vidargs);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
srand(time(NULL));
|
||||||
|
|
||||||
if (loadimagesets()) {
|
if (loadimagesets()) {
|
||||||
|
printf("Error loading images.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (loadlevellist()) {
|
||||||
|
printf("Error loading level list from levels.dat.\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -244,7 +254,7 @@ int main (int argc, char **argv) {
|
||||||
|
|
||||||
|
|
||||||
if (keys[SDLK_q]) {
|
if (keys[SDLK_q]) {
|
||||||
gtime = curlevel->hurryuptime -1;
|
gtime = nexthurryup-1;
|
||||||
}
|
}
|
||||||
if (keys[SDLK_n]) {
|
if (keys[SDLK_n]) {
|
||||||
if (toggletimer == 0) {
|
if (toggletimer == 0) {
|
||||||
|
@ -287,19 +297,26 @@ int main (int argc, char **argv) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (keys[SDLK_UP]) {
|
if (keys[SDLK_UP]) {
|
||||||
if (isonladder(player) || isladderabove(player)) {
|
//if (isonladder(player) || isladderabove(player)) {
|
||||||
player->y -= getspeed(player);
|
if (player->climbing || isladderabove(player)) {
|
||||||
player->jumping = 0;
|
if (!player->netting && !player->slamming) {
|
||||||
player->falling = 0;
|
player->y -= getspeed(player);
|
||||||
player->climbing = B_TRUE;
|
player->jumping = 0;
|
||||||
|
player->falling = 0;
|
||||||
|
player->climbing = B_TRUE;
|
||||||
|
player->moved = B_TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (keys[SDLK_DOWN]) {
|
if (keys[SDLK_DOWN]) {
|
||||||
if (isonladder(player)) {
|
if (isonladder(player)) {
|
||||||
player->y += getspeed(player);
|
if (!player->netting && !player->slamming) {
|
||||||
player->jumping = 0;
|
player->y += getspeed(player);
|
||||||
player->falling = 0;
|
player->jumping = 0;
|
||||||
player->climbing = B_TRUE;
|
player->falling = 0;
|
||||||
|
player->climbing = B_TRUE;
|
||||||
|
player->moved = B_TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (keys[SDLK_x]) {
|
if (keys[SDLK_x]) {
|
||||||
|
@ -323,14 +340,13 @@ int main (int argc, char **argv) {
|
||||||
} else {
|
} else {
|
||||||
whichway = 0;
|
whichway = 0;
|
||||||
}
|
}
|
||||||
// TODO: change to splash
|
playfx(FX_SPLASH);
|
||||||
playfx(FX_JUMP);
|
|
||||||
jump(player, whichway);
|
jump(player, whichway);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else { // not in water
|
||||||
if (!player->jumping) {
|
if (!player->jumping) {
|
||||||
if (!player->falling) {
|
if (!player->falling) {
|
||||||
if (isonground(player) || isonladder(player)) {
|
if (isonground(player) || isonladder(player)) {
|
||||||
|
@ -342,9 +358,8 @@ int main (int argc, char **argv) {
|
||||||
player->dropx = player->x / TILEW;
|
player->dropx = player->x / TILEW;
|
||||||
player->dropy = player->y / TILEH;
|
player->dropy = player->y / TILEH;
|
||||||
}
|
}
|
||||||
} else {
|
} else { // jumping
|
||||||
int whichway;
|
int whichway;
|
||||||
player->climbing = B_FALSE;
|
|
||||||
if (keys[SDLK_RIGHT]) {
|
if (keys[SDLK_RIGHT]) {
|
||||||
whichway = 1;
|
whichway = 1;
|
||||||
} else if (keys[SDLK_LEFT]) {
|
} else if (keys[SDLK_LEFT]) {
|
||||||
|
@ -375,6 +390,28 @@ int main (int argc, char **argv) {
|
||||||
player->slamangle = 0;
|
player->slamangle = 0;
|
||||||
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 */
|
||||||
|
if (player->powerup == PW_MACE) {
|
||||||
|
sprite_t *s;
|
||||||
|
int found;
|
||||||
|
// use existing mace if it is there
|
||||||
|
found = B_FALSE;
|
||||||
|
for (s = sprite; s ; s = s->next) {
|
||||||
|
if (s->id == P_MACE) {
|
||||||
|
s->x = player->x;
|
||||||
|
s->y = player->y - (imageset[P_PLAYER].img[F_SHOOT]->h / 2) + 5;
|
||||||
|
found = B_TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!found) {
|
||||||
|
addsprite(P_MACE, player->x,
|
||||||
|
player->y - (imageset[P_PLAYER].img[F_SHOOT]->h / 2) + 5,
|
||||||
|
"mace");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (player->netcaught < player->netmax) {
|
if (player->netcaught < player->netmax) {
|
||||||
|
@ -530,7 +567,7 @@ void tick(void) {
|
||||||
|
|
||||||
|
|
||||||
/* check for hurryup*/
|
/* check for hurryup*/
|
||||||
if (gtime == curlevel->hurryuptime) {
|
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) && (!isfruit(s->id))) {
|
||||||
|
@ -542,7 +579,7 @@ void tick(void) {
|
||||||
stopmusic();
|
stopmusic();
|
||||||
Mix_PlayChannel(CH_HURRYUP, sfx[FX_HURRYUP], 0);
|
Mix_PlayChannel(CH_HURRYUP, sfx[FX_HURRYUP], 0);
|
||||||
}
|
}
|
||||||
} else if (gtime == curlevel->hurryuptime + 10) {
|
} else if (gtime == nexthurryup + 10) {
|
||||||
if (!levelcomplete) {
|
if (!levelcomplete) {
|
||||||
addsprite(P_CLOUD, 320,240,"cloud");
|
addsprite(P_CLOUD, 320,240,"cloud");
|
||||||
addtext(320,240,TEXTSIZE_HURRY, "Too slow!", &red,HURRYDELAY);
|
addtext(320,240,TEXTSIZE_HURRY, "Too slow!", &red,HURRYDELAY);
|
||||||
|
@ -585,6 +622,8 @@ void tick(void) {
|
||||||
|
|
||||||
void nextlevel(void) {
|
void nextlevel(void) {
|
||||||
char msg[SMALLBUFLEN];
|
char msg[SMALLBUFLEN];
|
||||||
|
SDL_Surface *tempt;
|
||||||
|
int wid;
|
||||||
|
|
||||||
// remove the player
|
// remove the player
|
||||||
removesprite(player);
|
removesprite(player);
|
||||||
|
@ -616,9 +655,22 @@ void nextlevel(void) {
|
||||||
/* reset level stats */
|
/* reset level stats */
|
||||||
level->gotpowerup = B_FALSE;
|
level->gotpowerup = B_FALSE;
|
||||||
|
|
||||||
sprintf(msg, " Level %02d-%02d ",curworld, curlevelnum);
|
sprintf(msg, "Level %d-%d",curworld, curlevelnum);
|
||||||
addtext(318,242,32,msg,&black,LEVELDELAY);
|
// calc width
|
||||||
addtext(320,240,32,msg,&green,LEVELDELAY);
|
tempt = TTF_RenderText_Solid(font[32], msg, black);
|
||||||
|
wid = tempt->w;
|
||||||
|
addtext(318,240-18+2,32,msg,&black,LEVELDELAY);
|
||||||
|
addtext(320,240-18,32,msg,&red,LEVELDELAY);
|
||||||
|
SDL_FreeSurface(tempt);
|
||||||
|
|
||||||
|
|
||||||
|
sprintf(msg, "%s", curlevel->name);
|
||||||
|
// calc width
|
||||||
|
tempt = TTF_RenderText_Solid(font[22], msg, black);
|
||||||
|
wid = tempt->w;
|
||||||
|
addtext(319,240+18+1,22,msg,&black,LEVELDELAY);
|
||||||
|
addtext(320,240+18,22,msg,&blue,LEVELDELAY);
|
||||||
|
SDL_FreeSurface(tempt);
|
||||||
|
|
||||||
/* reset player stats */
|
/* reset player stats */
|
||||||
player->netting = B_FALSE;
|
player->netting = B_FALSE;
|
||||||
|
@ -635,7 +687,12 @@ void jump(sprite_t *s, int dir) {
|
||||||
if (s->jumping) return;
|
if (s->jumping) return;
|
||||||
if (s->jumptimer) return;
|
if (s->jumptimer) return;
|
||||||
|
|
||||||
if (isonground(s) || isinwater(s)) {
|
// can only jump up when climbing
|
||||||
|
if (s->climbing && (dir == 0)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (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) {
|
||||||
|
@ -648,12 +705,16 @@ void jump(sprite_t *s, int dir) {
|
||||||
s->dir = s->jumpdir;
|
s->dir = s->jumpdir;
|
||||||
}
|
}
|
||||||
s->jumping = 1;
|
s->jumping = 1;
|
||||||
if (s->ontramp) {
|
if (s->climbing) {
|
||||||
|
s->jumpspeed = 3;
|
||||||
|
} else if (s->ontramp) {
|
||||||
s->jumpspeed = 7;
|
s->jumpspeed = 7;
|
||||||
} else {
|
} else {
|
||||||
s->jumpspeed = 5;
|
s->jumpspeed = 5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// stop climbing
|
||||||
|
player->climbing = B_FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -666,7 +727,7 @@ 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) {
|
||||||
gtime = 0;
|
nexthurryup = gtime + level->hurryuptime;
|
||||||
if (curmusic == fastmusic) {
|
if (curmusic == fastmusic) {
|
||||||
playmusic(normalmusic);
|
playmusic(normalmusic);
|
||||||
}
|
}
|
||||||
|
@ -1061,7 +1122,9 @@ void movesprite(sprite_t *s) {
|
||||||
if (isonground(s)) {
|
if (isonground(s)) {
|
||||||
if ((!s->falling) && (!s->jumping)) {
|
if ((!s->falling) && (!s->jumping)) {
|
||||||
if (!s->climbing && !s->dropping) {
|
if (!s->climbing && !s->dropping) {
|
||||||
adjustheight(s);
|
if (!isonladder(s)) {
|
||||||
|
adjustheight(s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1126,6 +1189,19 @@ void movesprite(sprite_t *s) {
|
||||||
s->y = player->y - (player->img->h/2) + 5;
|
s->y = player->y - (player->img->h/2) + 5;
|
||||||
s->dir = player->dir;
|
s->dir = player->dir;
|
||||||
}
|
}
|
||||||
|
} else if (s->id == P_MACE) { // mace slam effect
|
||||||
|
// dies when the player finishes slamming
|
||||||
|
if (!player->slamming) {
|
||||||
|
s->dead = D_FINAL;
|
||||||
|
} else {
|
||||||
|
double dist;
|
||||||
|
// keep it at the end of the slam
|
||||||
|
dist = (player->slamangle * (180/M_PI))/2;
|
||||||
|
|
||||||
|
s->x = player->x + cos(player->slamangle-(180*(M_PI/180)))*dist*player->dir;
|
||||||
|
s->y = player->y + sin(player->slamangle-(180*(M_PI/180)))*dist + imageset[P_MACEPOWERUP].img[F_WALK1]->h/2;
|
||||||
|
s->dir = player->dir;
|
||||||
|
}
|
||||||
} else if (s->id == P_RAT) {
|
} else if (s->id == P_RAT) {
|
||||||
if (!s->falling) {
|
if (!s->falling) {
|
||||||
int move = B_FALSE;
|
int move = B_FALSE;
|
||||||
|
@ -1517,7 +1593,7 @@ void movesprite(sprite_t *s) {
|
||||||
if ((s->img->h <= 3) || (s->img->w <= 3)) {
|
if ((s->img->h <= 3) || (s->img->w <= 3)) {
|
||||||
s->dead = D_FINAL;
|
s->dead = D_FINAL;
|
||||||
/* reset hurryup timer */
|
/* reset hurryup timer */
|
||||||
gtime = 0;
|
nexthurryup = gtime + level->hurryuptime;
|
||||||
} else {
|
} else {
|
||||||
SDL_Surface *ts;
|
SDL_Surface *ts;
|
||||||
/* get smaller */
|
/* get smaller */
|
||||||
|
@ -1582,10 +1658,15 @@ void dotileeffects(sprite_t *s) {
|
||||||
|
|
||||||
/* check where we are */
|
/* check where we are */
|
||||||
tt = gettileat(s->x,s->y-2,&tilex,&tiley);
|
tt = gettileat(s->x,s->y-2,&tilex,&tiley);
|
||||||
|
|
||||||
|
// 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->id == P_PLAYER || ismonster(s->id)) {
|
||||||
if (s->id != P_CLOUD) {
|
if (s->id != P_CLOUD) {
|
||||||
s->teleporting = 1;
|
if (!s->teleporting) {
|
||||||
|
playfx(FX_TELEPORT);
|
||||||
|
s->teleporting = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2212,11 +2293,21 @@ int isonbridge(sprite_t *s) {
|
||||||
return B_FALSE;
|
return B_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int isladder(int tid) {
|
||||||
|
switch (tid) {
|
||||||
|
case T_LADDER:
|
||||||
|
case T_LADDERTOP:
|
||||||
|
return B_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return B_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int isonladder(sprite_t *s) {
|
int isonladder(sprite_t *s) {
|
||||||
tiletype_t *tthere;
|
tiletype_t *tthere;
|
||||||
tthere = gettileat(s->x,s->y, NULL,NULL);
|
tthere = gettileat(s->x,s->y, NULL,NULL);
|
||||||
if ((tthere->id == T_LADDER) || (tthere->id == T_LADDERTOP)) {
|
if (isladder(tthere->id)) {
|
||||||
return B_TRUE;
|
return B_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2312,7 +2403,8 @@ int isongroundpoint(sprite_t *s, int x,int y) {
|
||||||
|
|
||||||
// when dropping, the tile you dropped from doesn't count
|
// when dropping, the tile you dropped from doesn't count
|
||||||
// as "ground".
|
// as "ground".
|
||||||
if (s->dropping && (tilex == s->dropx) && (tiley == s->dropy)) {
|
//if (s->dropping && (tilex == s->dropx) && (tiley == s->dropy)) {
|
||||||
|
if (s->dropping && (tiley == s->dropy)) {
|
||||||
return B_FALSE;
|
return B_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2387,10 +2479,48 @@ void dogravity(sprite_t *s) {
|
||||||
|
|
||||||
if (isbullet(s->id)) return;
|
if (isbullet(s->id)) return;
|
||||||
|
|
||||||
if (isonladder(s) && !s->falling && !s->jumping) {
|
//if (isonladder(s) && !s->falling && !s->jumping) {
|
||||||
|
/*
|
||||||
|
if (isonladder(s) ) {
|
||||||
s->falling = B_FALSE;
|
s->falling = B_FALSE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// update water stats
|
||||||
|
if (isinwater(s)) {
|
||||||
|
if (!s->swimming) {
|
||||||
|
s->swimming = B_TRUE;
|
||||||
|
playfx(FX_SPLASH);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (s->swimming) {
|
||||||
|
s->swimming = B_FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (s->climbing) {
|
||||||
|
int attop = B_FALSE;
|
||||||
|
// check if we are at the top of our ladder
|
||||||
|
//tt = gettileat(s->x, s->y - s->img->h-1,NULL,NULL);
|
||||||
|
|
||||||
|
if (!isonladder(s)) {
|
||||||
|
attop = B_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isonground(s)) {
|
||||||
|
if (!isongroundpoint(s, s->x, s->y-1)) {
|
||||||
|
attop = B_TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (attop) {
|
||||||
|
s->climbing = B_FALSE;
|
||||||
|
} else {
|
||||||
|
// don't do any more checking
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// handle jumps
|
// handle jumps
|
||||||
if (s->jumping) {
|
if (s->jumping) {
|
||||||
|
@ -2416,7 +2546,7 @@ void dogravity(sprite_t *s) {
|
||||||
s->fallspeed = 0;
|
s->fallspeed = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else { // not jumping
|
||||||
if (isonground(s) ) {
|
if (isonground(s) ) {
|
||||||
s->dropping = B_FALSE;
|
s->dropping = B_FALSE;
|
||||||
s->falling = B_FALSE;
|
s->falling = B_FALSE;
|
||||||
|
@ -2451,9 +2581,7 @@ void dogravity(sprite_t *s) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else if (s->slamming) {
|
||||||
|
|
||||||
if (s->slamming) {
|
|
||||||
int netx;
|
int netx;
|
||||||
double dist;
|
double dist;
|
||||||
int hitwall = B_FALSE;
|
int hitwall = B_FALSE;
|
||||||
|
@ -2473,12 +2601,47 @@ void dogravity(sprite_t *s) {
|
||||||
int pointsinc = 250;
|
int pointsinc = 250;
|
||||||
int psize = 6;
|
int psize = 6;
|
||||||
int gotsomething = B_FALSE;
|
int gotsomething = B_FALSE;
|
||||||
|
int macex,macey;
|
||||||
|
|
||||||
s->slamming = 0;
|
s->slamming = 0;
|
||||||
|
|
||||||
/* reset fruit type counter */
|
/* reset fruit type counter */
|
||||||
curfruittype = 0;
|
curfruittype = 0;
|
||||||
|
|
||||||
|
// if we have a mace, add an explosion and play a thump sound
|
||||||
|
if (player->powerup == PW_MACE) {
|
||||||
|
// play sound
|
||||||
|
playfx(FX_MACE);
|
||||||
|
|
||||||
|
// find location of mace
|
||||||
|
for (s2 = sprite; s2 ; s2 = s2->next) {
|
||||||
|
if (s2->id == P_MACE) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!s2) {
|
||||||
|
// should never happen
|
||||||
|
macex = 0;
|
||||||
|
macey = 0;
|
||||||
|
} else {
|
||||||
|
int xx,yy;
|
||||||
|
macex = s2->x;
|
||||||
|
macey = s2->y - s2->img->h/2;
|
||||||
|
|
||||||
|
// add explosion
|
||||||
|
puffin(-1, macex, macey, "nothing", 0);
|
||||||
|
for (yy = 0; yy < MACEEXPY; yy++) {
|
||||||
|
for (xx = 0; xx < MACEEXPX; xx++) {
|
||||||
|
puffin(-1, macex+xx*TILEW, macey-yy*TILEH, "nothing", 0);
|
||||||
|
puffin(-1, macex-xx*TILEW, macey-yy*TILEH, "nothing", 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* kill anything we've caught */
|
/* kill anything we've caught */
|
||||||
for (s2 = sprite; s2 ; s2 = s2->next) {
|
for (s2 = sprite; s2 ; s2 = s2->next) {
|
||||||
/* kill anything we have caught */
|
/* kill anything we have caught */
|
||||||
|
@ -2507,29 +2670,50 @@ void dogravity(sprite_t *s) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* kill anything we hit */
|
// if we have a powerup, centre of net is the mace position
|
||||||
for (s2 = sprite; s2 ; s2 = s2->next) {
|
if (player->powerup == PW_MACE) {
|
||||||
if ((s2->caughtby != s) && (!s2->dead) && (ismonster(s2->id))) {
|
xnet = macex;
|
||||||
xdiff = s2->x - xnet;
|
ynet = macey;
|
||||||
if (xdiff < 0) xdiff =-xdiff;
|
}
|
||||||
ydiff = (s2->y - s2->img->h/2) - ynet;
|
|
||||||
if (ydiff < 0) ydiff =-ydiff;
|
|
||||||
|
|
||||||
if ((xdiff <= s2->img->w) && (ydiff <= s2->img->h)) {
|
|
||||||
if (s2->id != P_CLOUD) {
|
|
||||||
/* dies and becomes a powerup */
|
|
||||||
s2->willbecome = poweruptypes[curpoweruptype];
|
|
||||||
if (poweruptypes[++curpoweruptype] == -1) {
|
|
||||||
curpoweruptype = 0;
|
|
||||||
}
|
|
||||||
die(s2);
|
|
||||||
pointsinc *= 2;
|
|
||||||
psize += 10;
|
|
||||||
|
|
||||||
gotsomething++;
|
// only check for hitting something if we already had a monster caught,
|
||||||
|
// or we have a mace
|
||||||
|
if (gotsomething || (player->powerup == PW_MACE)) {
|
||||||
|
/* kill anything we hit */
|
||||||
|
for (s2 = sprite; s2 ; s2 = s2->next) {
|
||||||
|
if ((s2->caughtby != s) && (!s2->dead) && (ismonster(s2->id))) {
|
||||||
|
int xthresh,ythresh;
|
||||||
|
|
||||||
|
xdiff = s2->x - xnet;
|
||||||
|
if (xdiff < 0) xdiff =-xdiff;
|
||||||
|
ydiff = (s2->y - s2->img->h/2) - ynet;
|
||||||
|
if (ydiff < 0) ydiff =-ydiff;
|
||||||
|
|
||||||
|
if (player->powerup == PW_MACE) {
|
||||||
|
xthresh = TILEW*MACEEXPX*2;
|
||||||
|
ythresh = TILEW*MACEEXPY*2;
|
||||||
|
} else {
|
||||||
|
xthresh = s2->img->w;
|
||||||
|
ythresh = s2->img->h;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
if ((xdiff <= xthresh) && (ydiff <= ythresh)) {
|
||||||
|
if (s2->id != P_CLOUD) {
|
||||||
|
/* dies and becomes a powerup */
|
||||||
|
s2->willbecome = poweruptypes[curpoweruptype];
|
||||||
|
if (poweruptypes[++curpoweruptype] == -1) {
|
||||||
|
curpoweruptype = 0;
|
||||||
|
}
|
||||||
|
die(s2);
|
||||||
|
pointsinc *= 2;
|
||||||
|
psize += 10;
|
||||||
|
|
||||||
|
gotsomething++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (gotsomething >= 1) {
|
if (gotsomething >= 1) {
|
||||||
|
@ -2563,8 +2747,8 @@ void dogravity(sprite_t *s) {
|
||||||
s->score += pointsinc;
|
s->score += pointsinc;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
} // end if slamangle > 180degrees
|
||||||
}
|
} // end if slamming
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2678,9 +2862,14 @@ int dofruiteffect(sprite_t *s) {
|
||||||
sprintf(tempm, "Big net!");
|
sprintf(tempm, "Big net!");
|
||||||
addtext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,POINTSDELAY);
|
addtext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,POINTSDELAY);
|
||||||
return B_TRUE;
|
return B_TRUE;
|
||||||
|
} else if (s->id == P_MACEPOWERUP) {
|
||||||
|
playfx(FX_POWERUP);
|
||||||
|
player->powerup = PW_MACE;
|
||||||
|
sprintf(tempm, "Mace Slam!");
|
||||||
|
addtext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,POINTSDELAY);
|
||||||
|
return B_TRUE;
|
||||||
} else if (s->id == P_BOXING) {
|
} else if (s->id == P_BOXING) {
|
||||||
playfx(FX_POWERUP);
|
playfx(FX_POWERUP);
|
||||||
//player->netbig = B_TRUE;
|
|
||||||
player->powerup = PW_BOXING;
|
player->powerup = PW_BOXING;
|
||||||
sprintf(tempm, "Boxing Glove!");
|
sprintf(tempm, "Boxing Glove!");
|
||||||
addtext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,POINTSDELAY);
|
addtext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,POINTSDELAY);
|
||||||
|
@ -2705,6 +2894,12 @@ int dofruiteffect(sprite_t *s) {
|
||||||
return B_TRUE;
|
return B_TRUE;
|
||||||
} else if (s->id == P_FTOGEM) {
|
} else if (s->id == P_FTOGEM) {
|
||||||
sprite_t *s2, *nexts;
|
sprite_t *s2, *nexts;
|
||||||
|
int howmany;
|
||||||
|
int puffdelay;
|
||||||
|
int gemtype = P_GEMYELLOW;
|
||||||
|
int xx;
|
||||||
|
tiletype_t *tt;
|
||||||
|
|
||||||
// convert all flowers to gems
|
// convert all flowers to gems
|
||||||
playfx(FX_MORPH);
|
playfx(FX_MORPH);
|
||||||
sprintf(tempm, "Make gems!");
|
sprintf(tempm, "Make gems!");
|
||||||
|
@ -2719,6 +2914,44 @@ int dofruiteffect(sprite_t *s) {
|
||||||
sprintf(s2->name, "made_gem");
|
sprintf(s2->name, "made_gem");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// and also make a stream of gems underneath us
|
||||||
|
howmany = (STREAMWID+1)*3;
|
||||||
|
// RIGHT
|
||||||
|
puffdelay = 0;
|
||||||
|
for (xx = s->x+TILEW; xx < s->x + (TILEW*howmany); xx += TILEW) {
|
||||||
|
// if on a wall, exit
|
||||||
|
tt = gettileat(xx,s->y-TILEH,NULL,NULL);
|
||||||
|
if (tt->solid) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
switch (puffdelay % 3) {
|
||||||
|
case 0: gemtype = P_GEMYELLOW; break;
|
||||||
|
case 1: gemtype = P_GEMRED; break;
|
||||||
|
case 2: gemtype = P_GEMPURPLE; break;
|
||||||
|
}
|
||||||
|
/* create a gem */
|
||||||
|
puffin(gemtype, xx, s->y, "gem", puffdelay);
|
||||||
|
|
||||||
|
puffdelay += 1;
|
||||||
|
}
|
||||||
|
// LEFT
|
||||||
|
puffdelay = 0;
|
||||||
|
for (xx = s->x+TILEW; xx > s->x - (TILEW*howmany); xx -= TILEW) {
|
||||||
|
// if on a wall, exit
|
||||||
|
tt = gettileat(xx,s->y-TILEH,NULL,NULL);
|
||||||
|
if (tt->solid) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
switch (puffdelay % 3) {
|
||||||
|
case 0: gemtype = P_GEMYELLOW; break;
|
||||||
|
case 1: gemtype = P_GEMRED; break;
|
||||||
|
case 2: gemtype = P_GEMPURPLE; break;
|
||||||
|
}
|
||||||
|
/* create a gem */
|
||||||
|
puffin(gemtype, xx, s->y, "gem", puffdelay);
|
||||||
|
puffdelay += 1;
|
||||||
|
}
|
||||||
return B_TRUE;
|
return B_TRUE;
|
||||||
} else if (s->id == P_BOMB) {
|
} else if (s->id == P_BOMB) {
|
||||||
sprite_t *s2, *nexts;
|
sprite_t *s2, *nexts;
|
||||||
|
@ -2781,9 +3014,6 @@ int dofruiteffect(sprite_t *s) {
|
||||||
}
|
}
|
||||||
/* create a flower */
|
/* create a flower */
|
||||||
puffin(flowertogem(s->id), xx, s->y, "flower", puffdelay);
|
puffin(flowertogem(s->id), xx, s->y, "flower", puffdelay);
|
||||||
//ss = addsprite(P_PUFF, xx,s->y,"puff", B_FALSE);
|
|
||||||
//ss->timer1 = -puffdelay;
|
|
||||||
//ss->timer3 = flowertogem(s->id);
|
|
||||||
|
|
||||||
puffdelay += 1;
|
puffdelay += 1;
|
||||||
}
|
}
|
||||||
|
@ -2796,9 +3026,6 @@ int dofruiteffect(sprite_t *s) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
puffin(flowertogem(s->id), xx, s->y, "flower", puffdelay);
|
puffin(flowertogem(s->id), xx, s->y, "flower", puffdelay);
|
||||||
//ss = addsprite(P_PUFF, xx,s->y,"puff", B_FALSE);
|
|
||||||
//ss->timer1 = -puffdelay;
|
|
||||||
//ss->timer3 = flowertogem(s->id);
|
|
||||||
puffdelay += 1;
|
puffdelay += 1;
|
||||||
}
|
}
|
||||||
playfx(FX_BONUS);
|
playfx(FX_BONUS);
|
||||||
|
@ -2822,7 +3049,8 @@ void usage(void) {
|
||||||
int canmove(sprite_t *pl) {
|
int canmove(sprite_t *pl) {
|
||||||
if (!pl->jumping && !pl->slamming ) {
|
if (!pl->jumping && !pl->slamming ) {
|
||||||
if (!pl->netting) {
|
if (!pl->netting) {
|
||||||
if (!isonladder(pl) || pl->falling || isonground(pl)) {
|
//if (!isonladder(pl) || pl->falling || isonground(pl)) {
|
||||||
|
if ( pl->climbing || pl->falling || isonground(pl)) {
|
||||||
return B_TRUE;
|
return B_TRUE;
|
||||||
}
|
}
|
||||||
} else if (pl->netting && pl->falling) { // netting and falling
|
} else if (pl->netting && pl->falling) { // netting and falling
|
||||||
|
@ -2879,6 +3107,9 @@ int initsound(void) {
|
||||||
loadfx(FX_MORPH, "morph.wav");
|
loadfx(FX_MORPH, "morph.wav");
|
||||||
loadfx(FX_BOOM, "boom.wav");
|
loadfx(FX_BOOM, "boom.wav");
|
||||||
loadfx(FX_SPRING, "spring.wav");
|
loadfx(FX_SPRING, "spring.wav");
|
||||||
|
loadfx(FX_TELEPORT, "teleport.wav");
|
||||||
|
loadfx(FX_SPLASH, "splash.wav");
|
||||||
|
loadfx(FX_MACE, "mace.wav");
|
||||||
|
|
||||||
|
|
||||||
// load sound effects
|
// load sound effects
|
||||||
|
@ -2981,8 +3212,7 @@ SDL_Surface *grabbehind(sprite_t *s, SDL_Surface *surf) {
|
||||||
// returns a random powerup
|
// returns a random powerup
|
||||||
int randompowerup(void) {
|
int randompowerup(void) {
|
||||||
int num;
|
int num;
|
||||||
num = rand() % 8;
|
num = rand() % 9;
|
||||||
|
|
||||||
|
|
||||||
switch (num) {
|
switch (num) {
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -3002,6 +3232,8 @@ int randompowerup(void) {
|
||||||
return P_BOMB;
|
return P_BOMB;
|
||||||
case 7:
|
case 7:
|
||||||
return P_SHIELD;
|
return P_SHIELD;
|
||||||
|
case 8:
|
||||||
|
return P_MACEPOWERUP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
1
rc.h
1
rc.h
|
@ -45,3 +45,4 @@ int randompowerup(void);
|
||||||
void dumpsprites(void);
|
void dumpsprites(void);
|
||||||
void countmonsters(void);
|
void countmonsters(void);
|
||||||
int getpoints(int id);
|
int getpoints(int id);
|
||||||
|
int isladder(int tid);
|
||||||
|
|
96
shared.c
96
shared.c
|
@ -48,6 +48,16 @@ int loadlevel(int wnum, int lnum) {
|
||||||
|
|
||||||
printf("Loading level %d-%d...",wnum,lnum);
|
printf("Loading level %d-%d...",wnum,lnum);
|
||||||
|
|
||||||
|
sprintf(filename,"world%d/%s",wnum,levelentry[lnum].filename);
|
||||||
|
//filename = levelentry[lnum].filename;
|
||||||
|
|
||||||
|
//sprintf(filename, "world%d/level%d.dat",wnum,lnum);
|
||||||
|
f = fopen(filename,"rt");
|
||||||
|
if (!f) {
|
||||||
|
printf("can't open level file %s\n",filename);
|
||||||
|
return B_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
// remember exit direction for current level
|
// remember exit direction for current level
|
||||||
// before loading the new one.
|
// before loading the new one.
|
||||||
if (level) {
|
if (level) {
|
||||||
|
@ -62,10 +72,17 @@ int loadlevel(int wnum, int lnum) {
|
||||||
if (level->animtiles) free(level->animtiles);
|
if (level->animtiles) free(level->animtiles);
|
||||||
|
|
||||||
level->id = 0;
|
level->id = 0;
|
||||||
sprintf(level->name, "Level %d-%d",wnum,lnum);
|
//sprintf(level->name, "Level %d-%d",wnum,lnum);
|
||||||
|
sprintf(level->name, "\"%s\"",levelentry[lnum].desc);
|
||||||
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;
|
||||||
if (cheat) {
|
if (cheat) {
|
||||||
|
@ -77,12 +94,6 @@ int loadlevel(int wnum, int lnum) {
|
||||||
level->powerupy = -1;
|
level->powerupy = -1;
|
||||||
|
|
||||||
|
|
||||||
sprintf(filename, "world%d/level%d.dat",wnum,lnum);
|
|
||||||
f = fopen(filename,"rt");
|
|
||||||
if (!f) {
|
|
||||||
printf("can't open level file\n");
|
|
||||||
return B_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* clear tiletype linked list */
|
/* clear tiletype linked list */
|
||||||
|
@ -294,7 +305,7 @@ printf("got %d monsters\n", numenemies);
|
||||||
case D_RIGHT:
|
case D_RIGHT:
|
||||||
printf("RIGHT"); break;
|
printf("RIGHT"); break;
|
||||||
case D_LEFT:
|
case D_LEFT:
|
||||||
printf("LEFT"); break;
|
printf("lEFT"); break;
|
||||||
case D_UP:
|
case D_UP:
|
||||||
printf("UP"); break;
|
printf("UP"); break;
|
||||||
case D_DOWN:
|
case D_DOWN:
|
||||||
|
@ -649,6 +660,7 @@ printf("got %d monsters\n", numenemies);
|
||||||
}
|
}
|
||||||
|
|
||||||
gtime = 0;
|
gtime = 0;
|
||||||
|
nexthurryup = level->hurryuptime;
|
||||||
|
|
||||||
printf("Done.\n");
|
printf("Done.\n");
|
||||||
/*
|
/*
|
||||||
|
@ -667,6 +679,7 @@ void setdefaults(sprite_t *s) {
|
||||||
s->speed = 1;
|
s->speed = 1;
|
||||||
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;
|
||||||
|
@ -1092,6 +1105,12 @@ int loadimagesets(void) {
|
||||||
loadspriteimage(P_SHIELD,F_WALK1, "sprites/shield.png");
|
loadspriteimage(P_SHIELD,F_WALK1, "sprites/shield.png");
|
||||||
imageset[P_SHIELD].numimages = 1;
|
imageset[P_SHIELD].numimages = 1;
|
||||||
|
|
||||||
|
loadspriteimage(P_MACEPOWERUP,F_WALK1, "sprites/macepowerup.png");
|
||||||
|
imageset[P_MACEPOWERUP].numimages = 1;
|
||||||
|
|
||||||
|
loadspriteimage(P_MACE,F_WALK1, "sprites/mace.png");
|
||||||
|
imageset[P_MACE].numimages = 1;
|
||||||
|
|
||||||
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);
|
||||||
|
@ -1214,6 +1233,8 @@ void drawsprite(sprite_t *s) {
|
||||||
}
|
}
|
||||||
} else if (s->id == P_GLOVE) {
|
} else if (s->id == P_GLOVE) {
|
||||||
frame = F_WALK1;
|
frame = F_WALK1;
|
||||||
|
} else if (s->id == P_MACE) {
|
||||||
|
frame = F_WALK1;
|
||||||
}
|
}
|
||||||
} else if (s->dead) {
|
} else if (s->dead) {
|
||||||
if (s == player) {
|
if (s == player) {
|
||||||
|
@ -1224,7 +1245,16 @@ void drawsprite(sprite_t *s) {
|
||||||
} else if (s->caughtby) {
|
} else if (s->caughtby) {
|
||||||
frame = F_CAUGHT;
|
frame = F_CAUGHT;
|
||||||
} else if (s->climbing) {
|
} else if (s->climbing) {
|
||||||
frame = F_CLIMB1 + ((timer/12) % 2);
|
//frame = F_CLIMB1 + ((timer/12) % 2);
|
||||||
|
if (s->moved) {
|
||||||
|
if ((timer/12) % 2 == 0) {
|
||||||
|
frame = F_CLIMB1;
|
||||||
|
} else {
|
||||||
|
frame = F_CLIMB2;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
frame = F_CLIMB1;
|
||||||
|
}
|
||||||
} else if (s->netting) {
|
} else if (s->netting) {
|
||||||
frame = F_SHOOT;
|
frame = F_SHOOT;
|
||||||
} else if (s->jumping) {
|
} else if (s->jumping) {
|
||||||
|
@ -1420,6 +1450,7 @@ int isfruit(int id) {
|
||||||
case P_HELP:
|
case P_HELP:
|
||||||
/* random powerups */
|
/* random powerups */
|
||||||
case P_BOXING:
|
case P_BOXING:
|
||||||
|
case P_MACEPOWERUP:
|
||||||
case P_FTODIAMOND:
|
case P_FTODIAMOND:
|
||||||
case P_FTOGEM:
|
case P_FTOGEM:
|
||||||
case P_BOMB:
|
case P_BOMB:
|
||||||
|
@ -1451,6 +1482,7 @@ int iseffect(int id) {
|
||||||
if (id == P_PUFF) return B_TRUE;
|
if (id == P_PUFF) 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;
|
||||||
|
|
||||||
return B_FALSE;
|
return B_FALSE;
|
||||||
}
|
}
|
||||||
|
@ -1669,11 +1701,12 @@ void drawtile(SDL_Surface *where, int x, int y) {
|
||||||
|
|
||||||
area.x = x * TILEW;
|
area.x = x * TILEW;
|
||||||
area.y = y * TILEH;
|
area.y = y * TILEH;
|
||||||
area.w = 0;
|
area.w = TILEW;
|
||||||
area.h = 0;
|
area.h = TILEH;
|
||||||
/* draw blank tile first */
|
/* draw blank tile first */
|
||||||
tt = gettile(curlevel->bgtileid);
|
tt = gettile(curlevel->bgtileid);
|
||||||
SDL_BlitSurface(tt->img[0], NULL, where, &area);
|
//SDL_BlitSurface(tt->img[0], NULL, where, &area);
|
||||||
|
SDL_BlitSurface(levelbg, &area, where, &area);
|
||||||
|
|
||||||
/* now draw real one */
|
/* now draw real one */
|
||||||
offset = y*LEVELW+x;
|
offset = y*LEVELW+x;
|
||||||
|
@ -1709,6 +1742,7 @@ void initglobals(void) {
|
||||||
/* colours */
|
/* colours */
|
||||||
red.r = 255; red.g = 0; red.b = 0;
|
red.r = 255; red.g = 0; red.b = 0;
|
||||||
black.r = 0; black.g = 0; black.b = 0;
|
black.r = 0; black.g = 0; black.b = 0;
|
||||||
|
blue.r = 0; blue.g = 0; blue.b = 255;
|
||||||
white.r = 255; white.g = 255; white.b = 255;
|
white.r = 255; white.g = 255; white.b = 255;
|
||||||
green.r = 0; green.g = 255; green.b = 0;
|
green.r = 0; green.g = 255; green.b = 0;
|
||||||
yellow.r = 255; yellow.g = 255; yellow.b = 0;
|
yellow.r = 255; yellow.g = 255; yellow.b = 0;
|
||||||
|
@ -1853,3 +1887,41 @@ int getpoints(int id) {
|
||||||
|
|
||||||
return points;
|
return points;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int loadlevellist(void) {
|
||||||
|
int lev;
|
||||||
|
FILE *f;
|
||||||
|
char buf[BUFLEN];
|
||||||
|
char *p;
|
||||||
|
|
||||||
|
f = fopen("levels.dat","r");
|
||||||
|
// format is:
|
||||||
|
//
|
||||||
|
// dummy,filename,description,
|
||||||
|
lev = 1;
|
||||||
|
fgets(buf, BUFLEN, f);
|
||||||
|
while (!feof(f)) {
|
||||||
|
p = strtok(buf, ",");
|
||||||
|
p = strtok(NULL, ",");
|
||||||
|
if (!p) {
|
||||||
|
printf("invalid level filename - line %d\n",lev);
|
||||||
|
return B_TRUE;
|
||||||
|
}
|
||||||
|
levelentry[lev].filename = strdup(p);
|
||||||
|
p = strtok(NULL, ",");
|
||||||
|
if (!p) {
|
||||||
|
printf("invalid level description - line %d\n",lev);
|
||||||
|
return B_TRUE;
|
||||||
|
}
|
||||||
|
p[strlen(p)-1] = '\0'; // strip newline
|
||||||
|
levelentry[lev].desc = strdup(p);
|
||||||
|
lev++;
|
||||||
|
fgets(buf, BUFLEN, f);
|
||||||
|
}
|
||||||
|
fclose(f);
|
||||||
|
|
||||||
|
printf("Read %d levels.\n",lev);
|
||||||
|
|
||||||
|
return B_FALSE;
|
||||||
|
}
|
||||||
|
|
1
shared.h
1
shared.h
|
@ -37,5 +37,6 @@ 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 loadlevellist(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 126 KiB |
Binary file not shown.
Before Width: | Height: | Size: 976 B After Width: | Height: | Size: 1.1 KiB |
|
@ -33,9 +33,9 @@ exitdir 1
|
||||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,18,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,19,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
|
|
|
@ -57,7 +57,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,1,1,1,1,1,27,27,27,27,27,27,4,
|
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,1,1,1,1,1,27,27,27,27,27,27,4,
|
||||||
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,1,4,4,4,4,4,27,27,27,27,27,27,4,
|
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,1,4,4,4,4,4,27,27,27,27,27,27,4,
|
||||||
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,1,4,4,4,4,4,4,27,27,27,27,27,27,4,
|
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,1,4,4,4,4,4,4,27,27,27,27,27,27,4,
|
||||||
4,27,27,27,27,27,27,1,1,1,27,27,27,27,27,27,27,27,27,27,27,1,1,1,1,4,4,4,4,4,4,4,4,27,27,27,27,27,27,4,
|
4,27,27,27,27,27,27,1,1,1,27,27,27,27,27,27,27,27,27,27,27,1,1,1,1,1,4,4,4,4,4,4,4,27,27,27,27,27,27,4,
|
||||||
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||||
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||||
1,1,1,1,27,27,27,27,27,27,27,27,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,27,27,27,27,27,27,27,27,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,
|
||||||
|
|
|
@ -26,7 +26,7 @@ Y 20 4
|
||||||
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,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,18,23,19,0,0,4,
|
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,4,4,4,4,4,4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,4,4,4,4,4,4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,4,4,4,4,4,4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,4,4,4,4,4,4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,4,4,4,4,4,4,27,27,27,27,27,27,1,1,27,27,27,27,27,27,27,27,27,27,27,27,27,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,4,4,4,4,4,4,27,27,27,27,27,27,1,1,27,27,27,27,27,27,27,27,27,27,27,27,27,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
|
@ -55,3 +55,4 @@ exitdir 1
|
||||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||||
|
layer2
|
||||||
|
|
|
@ -8,6 +8,7 @@ But don't fall on them!
|
||||||
endhelp
|
endhelp
|
||||||
monsters
|
monsters
|
||||||
1 4 27
|
1 4 27
|
||||||
|
! 20 15
|
||||||
r 19 15
|
r 19 15
|
||||||
r 5 7
|
r 5 7
|
||||||
r 35 7
|
r 35 7
|
||||||
|
@ -31,12 +32,11 @@ r 4 23
|
||||||
@ 2 23
|
@ 2 23
|
||||||
? 10 19
|
? 10 19
|
||||||
? 16 19
|
? 16 19
|
||||||
! 20 15
|
|
||||||
endmonsters
|
endmonsters
|
||||||
exitdir -2
|
exitdir -2
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,18,23,23,23,23,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
|
@ -49,7 +49,7 @@ exitdir -2
|
||||||
4,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,23,19,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
|
@ -64,3 +64,4 @@ exitdir -2
|
||||||
4,0,0,0,0,0,0,0,0,0,6,11,11,5,0,0,0,0,0,0,0,0,0,0,0,0,6,11,11,5,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,6,11,11,5,0,0,0,0,0,0,0,0,0,0,0,0,6,11,11,5,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
|
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
|
||||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,
|
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,4,4,4,4,
|
||||||
|
layer2
|
||||||
|
|
|
@ -6,7 +6,7 @@ help
|
||||||
Drop through bridges with Down+X
|
Drop through bridges with Down+X
|
||||||
endhelp
|
endhelp
|
||||||
monsters
|
monsters
|
||||||
1 4 27
|
! 20 8
|
||||||
r 10 4
|
r 10 4
|
||||||
r 11 12
|
r 11 12
|
||||||
r 33 12
|
r 33 12
|
||||||
|
@ -32,25 +32,25 @@ Y 6 24
|
||||||
P 8 4
|
P 8 4
|
||||||
@ 26 8
|
@ 26 8
|
||||||
? 21 8
|
? 21 8
|
||||||
! 20 8
|
1 24 8
|
||||||
endmonsters
|
endmonsters
|
||||||
exitdir 1
|
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,18,23,19,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,1,20,20,21,21,21,21,21,21,21,21,20,20,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,1,20,20,21,21,21,21,21,21,21,21,20,20,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,18,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,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,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,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,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,1,20,20,21,21,21,21,21,21,21,21,20,20,1,0,0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,4,
|
4,0,0,0,1,20,20,21,21,21,21,21,21,21,21,20,20,1,0,0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,19,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,1,20,20,20,20,20,20,20,20,20,20,20,20,1,0,0,0,4,
|
4,0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,1,20,20,20,20,20,20,20,20,20,20,20,20,1,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
|
@ -65,3 +65,4 @@ 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,
|
||||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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
|
||||||
|
|
|
@ -46,7 +46,7 @@ exitdir -2
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,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,18,19,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
|
|
|
@ -49,7 +49,7 @@ exitdir -2
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,18,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,19,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,9,9,9,9,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,9,9,9,9,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
|
|
|
@ -29,19 +29,19 @@ a 4 8
|
||||||
endmonsters
|
endmonsters
|
||||||
exitdir 1
|
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,18,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,23,19,0,0,4,
|
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,18,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,23,23,19,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,24,24,24,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,24,24,24,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,18,19,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,4,
|
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,4,
|
||||||
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,4,
|
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,4,
|
||||||
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,4,
|
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,4,
|
||||||
|
|
|
@ -5,7 +5,6 @@ endmaps
|
||||||
help
|
help
|
||||||
endhelp
|
endhelp
|
||||||
monsters
|
monsters
|
||||||
1 22 15
|
|
||||||
! 20 12
|
! 20 12
|
||||||
@ 11 5
|
@ 11 5
|
||||||
@ 12 9
|
@ 12 9
|
||||||
|
@ -47,11 +46,12 @@ r 10 12
|
||||||
r 29 12
|
r 29 12
|
||||||
r 6 15
|
r 6 15
|
||||||
r 31 15
|
r 31 15
|
||||||
|
1 20 12
|
||||||
endmonsters
|
endmonsters
|
||||||
exitdir 2
|
exitdir 2
|
||||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,18,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,19,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
|
|
|
@ -7,19 +7,13 @@ endhelp
|
||||||
monsters
|
monsters
|
||||||
1 15 12
|
1 15 12
|
||||||
! 3 12
|
! 3 12
|
||||||
Y 10 12
|
|
||||||
@ 17 17
|
|
||||||
P 25 21
|
P 25 21
|
||||||
Y 13 12
|
|
||||||
Y 11 12
|
|
||||||
Y 12 12
|
|
||||||
@ 18 17
|
|
||||||
@ 15 17
|
|
||||||
@ 16 17
|
|
||||||
P 24 21
|
P 24 21
|
||||||
P 23 21
|
P 23 21
|
||||||
P 26 21
|
P 26 21
|
||||||
r 37 3
|
r 37 3
|
||||||
|
r 20 6
|
||||||
|
r 9 6
|
||||||
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,
|
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,
|
||||||
|
@ -28,29 +22,35 @@ 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,1,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,4,
|
||||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,1,1,1,1,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,1,1,1,1,4,
|
4,1,1,1,1,20,20,20,20,20,20,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,20,20,20,20,20,20,20,20,20,20,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,0,0,0,0,0,0,0,0,0,0,0,0,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,15,15,15,15,15,15,15,1,16,16,16,16,16,16,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,15,15,15,15,15,15,15,1,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,0,0,0,0,0,4,
|
||||||
4,15,15,15,15,15,15,15,1,15,15,15,15,15,15,1,0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,0,0,0,0,0,0,0,4,
|
4,15,15,15,15,15,15,15,1,15,15,15,15,15,15,1,0,7,0,0,20,20,20,20,20,20,20,20,20,20,20,0,0,0,0,0,0,0,0,4,
|
||||||
4,15,15,15,15,15,15,15,1,15,15,15,15,15,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
4,15,15,15,15,15,15,15,1,15,15,15,15,15,15,1,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||||
4,15,15,15,15,15,15,15,1,15,15,15,15,15,15,1,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
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,0,0,0,0,0,4,
|
||||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
|
||||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
|
||||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
||||||
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
|
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
|
||||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||||
layer2
|
layer2
|
||||||
|
19,6,1
|
||||||
|
22,6,1
|
||||||
|
13,7,8
|
||||||
|
17,7,8
|
||||||
|
13,13,8
|
||||||
|
17,13,8
|
||||||
11,24,11
|
11,24,11
|
||||||
|
|
|
@ -1,67 +0,0 @@
|
||||||
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,
|
|
Loading…
Reference in New Issue