- 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
|
||||
// (number of gems on each side)
|
||||
#define STREAMWID 6
|
||||
#define STREAMWID 5
|
||||
|
||||
|
||||
// puff of smoke
|
||||
|
@ -59,8 +59,12 @@
|
|||
#define NETSPEED 9 // how fast the player's net moves
|
||||
#define POWERUPTIME 15 // # secs before a powerup appears
|
||||
|
||||
#define MACEEXPX 4 // X size of mace explosion
|
||||
#define MACEEXPY 2 // Y size of mace explosion
|
||||
|
||||
|
||||
// Limits
|
||||
#define MAXLEVELS 100
|
||||
#define MAXMAPPINGS 50
|
||||
#define MAXMONSTERSPERLEVEL 40
|
||||
#define MAXLETTERHEIGHT 100
|
||||
|
@ -85,7 +89,7 @@
|
|||
/* enums */
|
||||
|
||||
/* sounds */
|
||||
#define MAXFX 15
|
||||
#define MAXFX 18
|
||||
#define FX_SHOOT 0
|
||||
#define FX_SLAM 1
|
||||
#define FX_KILL 2
|
||||
|
@ -101,6 +105,9 @@
|
|||
#define FX_MORPH 12
|
||||
#define FX_BOOM 13
|
||||
#define FX_SPRING 14
|
||||
#define FX_TELEPORT 15
|
||||
#define FX_SPLASH 16
|
||||
#define FX_MACE 17
|
||||
|
||||
// Slope types
|
||||
#define S_NOTSOLID 0
|
||||
|
@ -108,7 +115,7 @@
|
|||
#define S_SLOPE 2
|
||||
|
||||
// Sprite types
|
||||
#define MAXPTYPES 31
|
||||
#define MAXPTYPES 33
|
||||
#define P_PLAYER 0
|
||||
#define P_RAT 1
|
||||
#define P_CHEESE 2
|
||||
|
@ -140,11 +147,14 @@
|
|||
#define P_FTOGEM 28
|
||||
#define P_BOMB 29
|
||||
#define P_SHIELD 30
|
||||
#define P_MACEPOWERUP 31
|
||||
#define P_MACE 32
|
||||
|
||||
// powerups
|
||||
#define PW_NONE 0
|
||||
#define PW_BOXING 1 // boxing glove
|
||||
#define PW_BOMB 2 // bomb
|
||||
#define PW_MACE 3 // made
|
||||
|
||||
// Frame names
|
||||
#define F_WALK1 0
|
||||
|
@ -284,6 +294,11 @@ typedef struct level_s {
|
|||
} level_t;
|
||||
level_t *level;
|
||||
|
||||
typedef struct levelentry_s {
|
||||
char *filename;
|
||||
char *desc;
|
||||
} levelentry_t;
|
||||
|
||||
typedef struct sprite_s {
|
||||
int id; // what kind of sprite? (eg. player, cheese, rat)
|
||||
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
|
||||
|
||||
// player and monster
|
||||
int swimming; // are we in the water?
|
||||
int falling; // are we falling?
|
||||
int dropping; // are we purposely dropping through solid ground?
|
||||
int dropx,dropy;// coords of tile we dropped from
|
||||
|
@ -365,7 +381,7 @@ imageset_t imageset[MAXPTYPES];
|
|||
|
||||
/* external globals */
|
||||
extern SDL_Color black;
|
||||
extern SDL_Surface *screen, *temps;
|
||||
extern SDL_Surface *screen, *temps, *levelbg;
|
||||
extern sprite_t *sprite, *lastsprite, *player;
|
||||
extern level_t *curlevel;
|
||||
extern tiletype_t fakeblock;
|
||||
|
@ -373,6 +389,7 @@ extern int gtime;
|
|||
extern int timer;
|
||||
extern SDL_Color red;
|
||||
extern SDL_Color black;
|
||||
extern SDL_Color blue;
|
||||
extern SDL_Color white;
|
||||
extern SDL_Color green;
|
||||
extern SDL_Color yellow;
|
||||
|
@ -386,6 +403,8 @@ extern int oldexitdir;
|
|||
extern int levelcomplete;
|
||||
extern text_t *text, *lasttext;
|
||||
extern int cheat;
|
||||
extern int nexthurryup;
|
||||
extern levelentry_t levelentry[];
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -7,4 +7,4 @@
|
|||
- in shared.c: update isflower(), isfruit(), isbullet(), iseffect();
|
||||
- in shared.c: IF A GEM: update flowertogem()
|
||||
- in rc.c: update ismonster()
|
||||
- in rc.c: add monster movement
|
||||
- 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;
|
||||
|
||||
levelbg = NULL;
|
||||
|
||||
/* handle arguments */
|
||||
if (argc >= 2) {
|
||||
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 */
|
||||
initglobals();
|
||||
|
||||
|
@ -139,17 +146,19 @@ int main (int argc, char **argv) {
|
|||
seltile = NULL;
|
||||
/* get tile number */
|
||||
for (tt = tiletype; tt != NULL; tt = tt->next) {
|
||||
// is mouse over this one?
|
||||
if ((mx >= x) && (my >= y) && (mx <= x+TILEW-1) && (my <= y+TILEH-1)) {
|
||||
seltile = tt;
|
||||
selsprite = -1;
|
||||
break;
|
||||
} else {
|
||||
// check next one
|
||||
x += TILEW;
|
||||
if (x >= EDITORW) {
|
||||
x = PALX;
|
||||
y += TILEH;
|
||||
if (isplacabletile(tt->id)) {
|
||||
// is mouse over this one?
|
||||
if ((mx >= x) && (my >= y) && (mx <= x+TILEW-1) && (my <= y+TILEH-1)) {
|
||||
seltile = tt;
|
||||
selsprite = -1;
|
||||
break;
|
||||
} else {
|
||||
// check next one
|
||||
x += TILEW;
|
||||
if (x >= EDITORW) {
|
||||
x = PALX;
|
||||
y += TILEH;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -163,30 +172,31 @@ int main (int argc, char **argv) {
|
|||
selsprite = -1;
|
||||
|
||||
for (p = 0; p < MAXPTYPES; p++) {
|
||||
SDL_Surface *firstimg;
|
||||
int w,h;
|
||||
if (isplacablesprite(p)) {
|
||||
SDL_Surface *firstimg;
|
||||
int w,h;
|
||||
|
||||
/* select images */
|
||||
firstimg = imageset[p].img[F_WALK1];
|
||||
w = firstimg->w;
|
||||
h = firstimg->h;
|
||||
if (h > maxh) maxh = h;
|
||||
/* select images */
|
||||
firstimg = imageset[p].img[F_WALK1];
|
||||
w = firstimg->w;
|
||||
h = firstimg->h;
|
||||
if (h > maxh) maxh = h;
|
||||
|
||||
// is mouse over it?
|
||||
if ((mx >= x) && (my >= y) && (mx <= x+w-1) && (my <= y+h-1)) {
|
||||
selsprite = p;
|
||||
seltile = NULL;
|
||||
break;
|
||||
} else {
|
||||
// check next one
|
||||
x += w;
|
||||
if (x >= EDITORW-TILEW) {
|
||||
x = SPALX;
|
||||
y += maxh;
|
||||
maxh = 0;
|
||||
// is mouse over it?
|
||||
if ((mx >= x) && (my >= y) && (mx <= x+w-1) && (my <= y+h-1)) {
|
||||
selsprite = p;
|
||||
seltile = NULL;
|
||||
break;
|
||||
} else {
|
||||
// check next one
|
||||
x += w;
|
||||
if (x >= EDITORW-TILEW) {
|
||||
x = SPALX;
|
||||
y += maxh;
|
||||
maxh = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
// redraw palette with new selection
|
||||
drawpalette();
|
||||
|
@ -309,29 +319,7 @@ int main (int argc, char **argv) {
|
|||
}
|
||||
if (keys[SDLK_c]) {
|
||||
if (toggletimer == 0) {
|
||||
int offset,x,y;
|
||||
|
||||
/* clear all sprites */
|
||||
while (sprite) {
|
||||
killsprite(sprite);
|
||||
}
|
||||
|
||||
/* clear level */
|
||||
for (x = 0; x < LEVELW; x++) {
|
||||
for (y = 0; y < LEVELH; y++) {
|
||||
offset = y*LEVELW+x;
|
||||
if ((x == 0) || (x == LEVELW-1)) {
|
||||
curlevel->map[offset] = T_FULL;
|
||||
} else if (y == LEVELH-1) {
|
||||
curlevel->map[offset] = T_LAND;
|
||||
} else {
|
||||
curlevel->map[offset] = T_BLANK;
|
||||
}
|
||||
curlevel->map2[offset] = T_BLANK;
|
||||
drawtile(screen,x,y);
|
||||
}
|
||||
}
|
||||
printf("cleared level\n");
|
||||
clearlevel();
|
||||
toggletimer = 30;
|
||||
}
|
||||
}
|
||||
|
@ -371,7 +359,10 @@ int main (int argc, char **argv) {
|
|||
if (toggletimer == 0) {
|
||||
printf("Skipping to next level.\n");
|
||||
curlevelnum++;
|
||||
loadlevel(curworld,curlevelnum);
|
||||
if (loadlevel(curworld,curlevelnum)) {
|
||||
printf("creating new level\n");
|
||||
clearlevel();
|
||||
}
|
||||
draweditorlevel();
|
||||
drawsprites();
|
||||
toggletimer = 30;
|
||||
|
@ -383,7 +374,10 @@ int main (int argc, char **argv) {
|
|||
if (curlevelnum > 1) {
|
||||
printf("Skipping to previous level.\n");
|
||||
curlevelnum--;
|
||||
loadlevel(curworld,curlevelnum);
|
||||
if (loadlevel(curworld,curlevelnum)) {
|
||||
printf("creating new level\n");
|
||||
clearlevel();
|
||||
}
|
||||
draweditorlevel();
|
||||
drawsprites();
|
||||
toggletimer = 30;
|
||||
|
@ -517,22 +511,23 @@ void drawpalette(void) {
|
|||
area.w = TILEW;
|
||||
area.h = TILEH;
|
||||
for (tt = tiletype; tt != NULL; tt = tt->next) {
|
||||
/* draw background */
|
||||
SDL_BlitSurface(bg->img[0], NULL, screen, &area);
|
||||
/* draw tile */
|
||||
SDL_BlitSurface(tt->img[0], NULL, screen, &area);
|
||||
/* draw selector box */
|
||||
if (seltile == tt) {
|
||||
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);
|
||||
if (isplacabletile(tt->id)) {
|
||||
/* draw background */
|
||||
SDL_BlitSurface(bg->img[0], NULL, screen, &area);
|
||||
/* draw tile */
|
||||
SDL_BlitSurface(tt->img[0], NULL, screen, &area);
|
||||
/* draw selector box */
|
||||
if (seltile == tt) {
|
||||
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);
|
||||
|
@ -545,28 +540,30 @@ void drawpalette(void) {
|
|||
for (p = 0; p < MAXPTYPES; p++) {
|
||||
SDL_Surface *firstimg;
|
||||
|
||||
/* select images */
|
||||
firstimg = imageset[p].img[F_WALK1];
|
||||
area.w = firstimg->w;
|
||||
area.h = firstimg->h;
|
||||
if (area.h > maxheight) maxheight = area.h;
|
||||
if (isplacablesprite(p)) {
|
||||
/* select images */
|
||||
firstimg = imageset[p].img[F_WALK1];
|
||||
area.w = firstimg->w;
|
||||
area.h = firstimg->h;
|
||||
if (area.h > maxheight) maxheight = area.h;
|
||||
|
||||
/* clear bg */
|
||||
drawbox16(screen,area.x,area.y,area.x+area.w,area.y+area.h,&black,&black);
|
||||
/* draw sprite */
|
||||
SDL_BlitSurface(firstimg, NULL, screen, &area);
|
||||
/* draw selector box */
|
||||
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+1,area.y+1, area.x+area.w-2,area.y+area.h-2,&red,NULL);
|
||||
}
|
||||
/* clear bg */
|
||||
drawbox16(screen,area.x,area.y,area.x+area.w,area.y+area.h,&black,&black);
|
||||
/* draw sprite */
|
||||
SDL_BlitSurface(firstimg, NULL, screen, &area);
|
||||
/* draw selector box */
|
||||
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+1,area.y+1, area.x+area.w-2,area.y+area.h-2,&red,NULL);
|
||||
}
|
||||
|
||||
/* move to next position */
|
||||
area.x += area.w;
|
||||
if (area.x >= EDITORW-TILEW) {
|
||||
area.x = SPALX;
|
||||
area.y += maxheight;
|
||||
maxheight = 0;
|
||||
/* move to next position */
|
||||
area.x += area.w;
|
||||
if (area.x >= EDITORW-TILEW) {
|
||||
area.x = SPALX;
|
||||
area.y += maxheight;
|
||||
maxheight = 0;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -582,7 +579,8 @@ int savelevel(int wnum, int lnum) {
|
|||
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");
|
||||
if (!f) {
|
||||
printf("can't open level file\n");
|
||||
|
@ -646,3 +644,63 @@ int savelevel(int wnum, int lnum) {
|
|||
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);
|
||||
void cleanup(void);
|
||||
void usage(void);
|
||||
void clearlevel(void);
|
||||
|
||||
int isplacabletile(int tid);
|
||||
int isplacablesprite(int sid);
|
||||
|
|
|
@ -4,6 +4,9 @@
|
|||
/* global variables */
|
||||
int musicplaying;
|
||||
|
||||
levelentry_t levelentry[MAXLEVELS]; // level filenames etc
|
||||
|
||||
SDL_Surface *levelbg; // level background image
|
||||
SDL_Surface *temps; // temporary surface
|
||||
SDL_Surface *screen; // the actual video screen
|
||||
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 nexthurryup; // next hurryuptime for the level
|
||||
|
||||
int cheat;
|
||||
|
||||
tiletype_t fakeblock; // used for returning tiletypes from a function
|
||||
|
@ -37,6 +42,7 @@ int toggletimer; // used for toggling between fullscreen mode
|
|||
/* colours */
|
||||
SDL_Color red;
|
||||
SDL_Color black;
|
||||
SDL_Color blue;
|
||||
SDL_Color white;
|
||||
SDL_Color green;
|
||||
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 black = {0, 0, 0, 0};
|
||||
SDL_Color blue = {0, 0, 255, 0};
|
||||
SDL_Color white = {255, 255, 255, 0};
|
||||
SDL_Color green = {0, 255, 0, 0};
|
||||
SDL_Color yellow = {255, 255, 0, 0};
|
||||
|
@ -89,6 +90,7 @@ int main (int argc, char **argv) {
|
|||
curlevelnum = 1;
|
||||
musicplaying = B_FALSE;
|
||||
cheat = B_FALSE;
|
||||
levelbg = NULL;
|
||||
|
||||
/* handle arguments */
|
||||
if (argc >= 2) {
|
||||
|
@ -130,7 +132,15 @@ int main (int argc, char **argv) {
|
|||
screen = SDL_SetVideoMode(640,480,16,SDL_SWSURFACE|SDL_DOUBLEBUF|vidargs);
|
||||
#endif
|
||||
|
||||
srand(time(NULL));
|
||||
|
||||
if (loadimagesets()) {
|
||||
printf("Error loading images.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (loadlevellist()) {
|
||||
printf("Error loading level list from levels.dat.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -244,7 +254,7 @@ int main (int argc, char **argv) {
|
|||
|
||||
|
||||
if (keys[SDLK_q]) {
|
||||
gtime = curlevel->hurryuptime -1;
|
||||
gtime = nexthurryup-1;
|
||||
}
|
||||
if (keys[SDLK_n]) {
|
||||
if (toggletimer == 0) {
|
||||
|
@ -287,19 +297,26 @@ int main (int argc, char **argv) {
|
|||
}
|
||||
}
|
||||
if (keys[SDLK_UP]) {
|
||||
if (isonladder(player) || isladderabove(player)) {
|
||||
player->y -= getspeed(player);
|
||||
player->jumping = 0;
|
||||
player->falling = 0;
|
||||
player->climbing = B_TRUE;
|
||||
//if (isonladder(player) || isladderabove(player)) {
|
||||
if (player->climbing || isladderabove(player)) {
|
||||
if (!player->netting && !player->slamming) {
|
||||
player->y -= getspeed(player);
|
||||
player->jumping = 0;
|
||||
player->falling = 0;
|
||||
player->climbing = B_TRUE;
|
||||
player->moved = B_TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (keys[SDLK_DOWN]) {
|
||||
if (isonladder(player)) {
|
||||
player->y += getspeed(player);
|
||||
player->jumping = 0;
|
||||
player->falling = 0;
|
||||
player->climbing = B_TRUE;
|
||||
if (!player->netting && !player->slamming) {
|
||||
player->y += getspeed(player);
|
||||
player->jumping = 0;
|
||||
player->falling = 0;
|
||||
player->climbing = B_TRUE;
|
||||
player->moved = B_TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (keys[SDLK_x]) {
|
||||
|
@ -323,14 +340,13 @@ int main (int argc, char **argv) {
|
|||
} else {
|
||||
whichway = 0;
|
||||
}
|
||||
// TODO: change to splash
|
||||
playfx(FX_JUMP);
|
||||
playfx(FX_SPLASH);
|
||||
jump(player, whichway);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
} else {
|
||||
} else { // not in water
|
||||
if (!player->jumping) {
|
||||
if (!player->falling) {
|
||||
if (isonground(player) || isonladder(player)) {
|
||||
|
@ -342,9 +358,8 @@ int main (int argc, char **argv) {
|
|||
player->dropx = player->x / TILEW;
|
||||
player->dropy = player->y / TILEH;
|
||||
}
|
||||
} else {
|
||||
} else { // jumping
|
||||
int whichway;
|
||||
player->climbing = B_FALSE;
|
||||
if (keys[SDLK_RIGHT]) {
|
||||
whichway = 1;
|
||||
} else if (keys[SDLK_LEFT]) {
|
||||
|
@ -375,6 +390,28 @@ int main (int argc, char **argv) {
|
|||
player->slamangle = 0;
|
||||
player->netxstart = player->x - (player->img->w/2)*player->dir;
|
||||
player->netystart = player->y;
|
||||
|
||||
/* handle boxing glove */
|
||||
if (player->powerup == PW_MACE) {
|
||||
sprite_t *s;
|
||||
int found;
|
||||
// use existing mace if it is there
|
||||
found = B_FALSE;
|
||||
for (s = sprite; s ; s = s->next) {
|
||||
if (s->id == P_MACE) {
|
||||
s->x = player->x;
|
||||
s->y = player->y - (imageset[P_PLAYER].img[F_SHOOT]->h / 2) + 5;
|
||||
found = B_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
addsprite(P_MACE, player->x,
|
||||
player->y - (imageset[P_PLAYER].img[F_SHOOT]->h / 2) + 5,
|
||||
"mace");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
if (player->netcaught < player->netmax) {
|
||||
|
@ -530,7 +567,7 @@ void tick(void) {
|
|||
|
||||
|
||||
/* check for hurryup*/
|
||||
if (gtime == curlevel->hurryuptime) {
|
||||
if (gtime == nexthurryup) {
|
||||
if (!levelcomplete) {
|
||||
for (s = sprite; s; s = s->next) {
|
||||
if ((s != player) && (!isfruit(s->id))) {
|
||||
|
@ -542,7 +579,7 @@ void tick(void) {
|
|||
stopmusic();
|
||||
Mix_PlayChannel(CH_HURRYUP, sfx[FX_HURRYUP], 0);
|
||||
}
|
||||
} else if (gtime == curlevel->hurryuptime + 10) {
|
||||
} else if (gtime == nexthurryup + 10) {
|
||||
if (!levelcomplete) {
|
||||
addsprite(P_CLOUD, 320,240,"cloud");
|
||||
addtext(320,240,TEXTSIZE_HURRY, "Too slow!", &red,HURRYDELAY);
|
||||
|
@ -585,6 +622,8 @@ void tick(void) {
|
|||
|
||||
void nextlevel(void) {
|
||||
char msg[SMALLBUFLEN];
|
||||
SDL_Surface *tempt;
|
||||
int wid;
|
||||
|
||||
// remove the player
|
||||
removesprite(player);
|
||||
|
@ -616,9 +655,22 @@ void nextlevel(void) {
|
|||
/* reset level stats */
|
||||
level->gotpowerup = B_FALSE;
|
||||
|
||||
sprintf(msg, " Level %02d-%02d ",curworld, curlevelnum);
|
||||
addtext(318,242,32,msg,&black,LEVELDELAY);
|
||||
addtext(320,240,32,msg,&green,LEVELDELAY);
|
||||
sprintf(msg, "Level %d-%d",curworld, curlevelnum);
|
||||
// calc width
|
||||
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 */
|
||||
player->netting = B_FALSE;
|
||||
|
@ -635,7 +687,12 @@ void jump(sprite_t *s, int dir) {
|
|||
if (s->jumping) 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)) {
|
||||
s->jumpdir = dir;
|
||||
if (s->jumpdir != 0) {
|
||||
|
@ -648,12 +705,16 @@ void jump(sprite_t *s, int dir) {
|
|||
s->dir = s->jumpdir;
|
||||
}
|
||||
s->jumping = 1;
|
||||
if (s->ontramp) {
|
||||
if (s->climbing) {
|
||||
s->jumpspeed = 3;
|
||||
} else if (s->ontramp) {
|
||||
s->jumpspeed = 7;
|
||||
} else {
|
||||
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
|
||||
// this handles cases where the cloud hasn't appeared yet.
|
||||
if (s == player) {
|
||||
gtime = 0;
|
||||
nexthurryup = gtime + level->hurryuptime;
|
||||
if (curmusic == fastmusic) {
|
||||
playmusic(normalmusic);
|
||||
}
|
||||
|
@ -1061,7 +1122,9 @@ void movesprite(sprite_t *s) {
|
|||
if (isonground(s)) {
|
||||
if ((!s->falling) && (!s->jumping)) {
|
||||
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->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) {
|
||||
if (!s->falling) {
|
||||
int move = B_FALSE;
|
||||
|
@ -1517,7 +1593,7 @@ void movesprite(sprite_t *s) {
|
|||
if ((s->img->h <= 3) || (s->img->w <= 3)) {
|
||||
s->dead = D_FINAL;
|
||||
/* reset hurryup timer */
|
||||
gtime = 0;
|
||||
nexthurryup = gtime + level->hurryuptime;
|
||||
} else {
|
||||
SDL_Surface *ts;
|
||||
/* get smaller */
|
||||
|
@ -1582,10 +1658,15 @@ void dotileeffects(sprite_t *s) {
|
|||
|
||||
/* check where we are */
|
||||
tt = gettileat(s->x,s->y-2,&tilex,&tiley);
|
||||
|
||||
// teleporters
|
||||
if ((tt->id == T_TELEPORT) || (tt->id == T_TELEPORT2)) {
|
||||
if (s->id == P_PLAYER || ismonster(s->id)) {
|
||||
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;
|
||||
}
|
||||
|
||||
int isladder(int tid) {
|
||||
switch (tid) {
|
||||
case T_LADDER:
|
||||
case T_LADDERTOP:
|
||||
return B_TRUE;
|
||||
}
|
||||
|
||||
return B_FALSE;
|
||||
}
|
||||
|
||||
|
||||
int isonladder(sprite_t *s) {
|
||||
tiletype_t *tthere;
|
||||
tthere = gettileat(s->x,s->y, NULL,NULL);
|
||||
if ((tthere->id == T_LADDER) || (tthere->id == T_LADDERTOP)) {
|
||||
if (isladder(tthere->id)) {
|
||||
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
|
||||
// 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;
|
||||
}
|
||||
|
||||
|
@ -2387,10 +2479,48 @@ void dogravity(sprite_t *s) {
|
|||
|
||||
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;
|
||||
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
|
||||
if (s->jumping) {
|
||||
|
@ -2416,7 +2546,7 @@ void dogravity(sprite_t *s) {
|
|||
s->fallspeed = 0;
|
||||
}
|
||||
|
||||
} else {
|
||||
} else { // not jumping
|
||||
if (isonground(s) ) {
|
||||
s->dropping = B_FALSE;
|
||||
s->falling = B_FALSE;
|
||||
|
@ -2451,9 +2581,7 @@ void dogravity(sprite_t *s) {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (s->slamming) {
|
||||
} else if (s->slamming) {
|
||||
int netx;
|
||||
double dist;
|
||||
int hitwall = B_FALSE;
|
||||
|
@ -2473,12 +2601,47 @@ void dogravity(sprite_t *s) {
|
|||
int pointsinc = 250;
|
||||
int psize = 6;
|
||||
int gotsomething = B_FALSE;
|
||||
int macex,macey;
|
||||
|
||||
s->slamming = 0;
|
||||
|
||||
/* reset fruit type counter */
|
||||
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 */
|
||||
for (s2 = sprite; s2 ; s2 = s2->next) {
|
||||
/* kill anything we have caught */
|
||||
|
@ -2507,29 +2670,50 @@ void dogravity(sprite_t *s) {
|
|||
}
|
||||
}
|
||||
|
||||
/* kill anything we hit */
|
||||
for (s2 = sprite; s2 ; s2 = s2->next) {
|
||||
if ((s2->caughtby != s) && (!s2->dead) && (ismonster(s2->id))) {
|
||||
xdiff = s2->x - xnet;
|
||||
if (xdiff < 0) xdiff =-xdiff;
|
||||
ydiff = (s2->y - s2->img->h/2) - ynet;
|
||||
if (ydiff < 0) ydiff =-ydiff;
|
||||
// if we have a powerup, centre of net is the mace position
|
||||
if (player->powerup == PW_MACE) {
|
||||
xnet = macex;
|
||||
ynet = macey;
|
||||
}
|
||||
|
||||
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) {
|
||||
|
@ -2563,8 +2747,8 @@ void dogravity(sprite_t *s) {
|
|||
s->score += pointsinc;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
} // end if slamangle > 180degrees
|
||||
} // end if slamming
|
||||
}
|
||||
|
||||
|
||||
|
@ -2678,9 +2862,14 @@ int dofruiteffect(sprite_t *s) {
|
|||
sprintf(tempm, "Big net!");
|
||||
addtext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,POINTSDELAY);
|
||||
return B_TRUE;
|
||||
} else if (s->id == P_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) {
|
||||
playfx(FX_POWERUP);
|
||||
//player->netbig = B_TRUE;
|
||||
player->powerup = PW_BOXING;
|
||||
sprintf(tempm, "Boxing Glove!");
|
||||
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;
|
||||
} else if (s->id == P_FTOGEM) {
|
||||
sprite_t *s2, *nexts;
|
||||
int howmany;
|
||||
int puffdelay;
|
||||
int gemtype = P_GEMYELLOW;
|
||||
int xx;
|
||||
tiletype_t *tt;
|
||||
|
||||
// convert all flowers to gems
|
||||
playfx(FX_MORPH);
|
||||
sprintf(tempm, "Make gems!");
|
||||
|
@ -2719,6 +2914,44 @@ int dofruiteffect(sprite_t *s) {
|
|||
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;
|
||||
} else if (s->id == P_BOMB) {
|
||||
sprite_t *s2, *nexts;
|
||||
|
@ -2781,9 +3014,6 @@ int dofruiteffect(sprite_t *s) {
|
|||
}
|
||||
/* create a flower */
|
||||
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;
|
||||
}
|
||||
|
@ -2796,9 +3026,6 @@ int dofruiteffect(sprite_t *s) {
|
|||
break;
|
||||
}
|
||||
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;
|
||||
}
|
||||
playfx(FX_BONUS);
|
||||
|
@ -2822,7 +3049,8 @@ void usage(void) {
|
|||
int canmove(sprite_t *pl) {
|
||||
if (!pl->jumping && !pl->slamming ) {
|
||||
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;
|
||||
}
|
||||
} else if (pl->netting && pl->falling) { // netting and falling
|
||||
|
@ -2879,6 +3107,9 @@ int initsound(void) {
|
|||
loadfx(FX_MORPH, "morph.wav");
|
||||
loadfx(FX_BOOM, "boom.wav");
|
||||
loadfx(FX_SPRING, "spring.wav");
|
||||
loadfx(FX_TELEPORT, "teleport.wav");
|
||||
loadfx(FX_SPLASH, "splash.wav");
|
||||
loadfx(FX_MACE, "mace.wav");
|
||||
|
||||
|
||||
// load sound effects
|
||||
|
@ -2981,8 +3212,7 @@ SDL_Surface *grabbehind(sprite_t *s, SDL_Surface *surf) {
|
|||
// returns a random powerup
|
||||
int randompowerup(void) {
|
||||
int num;
|
||||
num = rand() % 8;
|
||||
|
||||
num = rand() % 9;
|
||||
|
||||
switch (num) {
|
||||
case 0:
|
||||
|
@ -3002,6 +3232,8 @@ int randompowerup(void) {
|
|||
return P_BOMB;
|
||||
case 7:
|
||||
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 countmonsters(void);
|
||||
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);
|
||||
|
||||
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
|
||||
// before loading the new one.
|
||||
if (level) {
|
||||
|
@ -62,10 +72,17 @@ int loadlevel(int wnum, int lnum) {
|
|||
if (level->animtiles) free(level->animtiles);
|
||||
|
||||
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->next = NULL;
|
||||
|
||||
/* load background image */
|
||||
// TODO: read this from the level file rather than hardcoding
|
||||
if (levelbg) SDL_FreeSurface(levelbg);
|
||||
|
||||
levelbg = IMG_Load("backgrounds/forest.png");
|
||||
|
||||
/* default */
|
||||
level->hurryuptime = 30;
|
||||
if (cheat) {
|
||||
|
@ -77,12 +94,6 @@ int loadlevel(int wnum, int lnum) {
|
|||
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 */
|
||||
|
@ -294,7 +305,7 @@ printf("got %d monsters\n", numenemies);
|
|||
case D_RIGHT:
|
||||
printf("RIGHT"); break;
|
||||
case D_LEFT:
|
||||
printf("LEFT"); break;
|
||||
printf("lEFT"); break;
|
||||
case D_UP:
|
||||
printf("UP"); break;
|
||||
case D_DOWN:
|
||||
|
@ -649,6 +660,7 @@ printf("got %d monsters\n", numenemies);
|
|||
}
|
||||
|
||||
gtime = 0;
|
||||
nexthurryup = level->hurryuptime;
|
||||
|
||||
printf("Done.\n");
|
||||
/*
|
||||
|
@ -667,6 +679,7 @@ void setdefaults(sprite_t *s) {
|
|||
s->speed = 1;
|
||||
s->teleporting = 0;
|
||||
s->climbing = 0;
|
||||
s->powerup = 0;
|
||||
s->jumping = 0;
|
||||
s->jumpspeed = 0;
|
||||
s->jumpdir = 1;
|
||||
|
@ -1092,6 +1105,12 @@ int loadimagesets(void) {
|
|||
loadspriteimage(P_SHIELD,F_WALK1, "sprites/shield.png");
|
||||
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++) {
|
||||
char name[SMALLBUFLEN];
|
||||
sprintf(name, "sprites/puff%d.png",i);
|
||||
|
@ -1214,6 +1233,8 @@ void drawsprite(sprite_t *s) {
|
|||
}
|
||||
} else if (s->id == P_GLOVE) {
|
||||
frame = F_WALK1;
|
||||
} else if (s->id == P_MACE) {
|
||||
frame = F_WALK1;
|
||||
}
|
||||
} else if (s->dead) {
|
||||
if (s == player) {
|
||||
|
@ -1224,7 +1245,16 @@ void drawsprite(sprite_t *s) {
|
|||
} else if (s->caughtby) {
|
||||
frame = F_CAUGHT;
|
||||
} 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) {
|
||||
frame = F_SHOOT;
|
||||
} else if (s->jumping) {
|
||||
|
@ -1420,6 +1450,7 @@ int isfruit(int id) {
|
|||
case P_HELP:
|
||||
/* random powerups */
|
||||
case P_BOXING:
|
||||
case P_MACEPOWERUP:
|
||||
case P_FTODIAMOND:
|
||||
case P_FTOGEM:
|
||||
case P_BOMB:
|
||||
|
@ -1451,6 +1482,7 @@ int iseffect(int id) {
|
|||
if (id == P_PUFF) return B_TRUE;
|
||||
if (id == P_POWERUPPOS) return B_TRUE;
|
||||
if (id == P_GLOVE) return B_TRUE;
|
||||
if (id == P_MACE) return B_TRUE;
|
||||
|
||||
return B_FALSE;
|
||||
}
|
||||
|
@ -1669,11 +1701,12 @@ void drawtile(SDL_Surface *where, int x, int y) {
|
|||
|
||||
area.x = x * TILEW;
|
||||
area.y = y * TILEH;
|
||||
area.w = 0;
|
||||
area.h = 0;
|
||||
area.w = TILEW;
|
||||
area.h = TILEH;
|
||||
/* draw blank tile first */
|
||||
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 */
|
||||
offset = y*LEVELW+x;
|
||||
|
@ -1709,6 +1742,7 @@ void initglobals(void) {
|
|||
/* colours */
|
||||
red.r = 255; red.g = 0; red.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;
|
||||
green.r = 0; green.g = 255; green.b = 0;
|
||||
yellow.r = 255; yellow.g = 255; yellow.b = 0;
|
||||
|
@ -1853,3 +1887,41 @@ int getpoints(int id) {
|
|||
|
||||
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);
|
||||
SDL_Surface *loadspriteimage(int spriteid, int frame, char *filename);
|
||||
int getpoints(int id);
|
||||
int loadlevellist(void);
|
||||
#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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,18,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,19,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
|
|
|
@ -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,1,4,4,4,4,4,27,27,27,27,27,27,4,
|
||||
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,1,4,4,4,4,4,4,27,27,27,27,27,27,4,
|
||||
4,27,27,27,27,27,27,1,1,1,27,27,27,27,27,27,27,27,27,27,27,1,1,1,1,4,4,4,4,4,4,4,4,27,27,27,27,27,27,4,
|
||||
4,27,27,27,27,27,27,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,
|
||||
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
|
||||
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,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,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,
|
||||
layer2
|
||||
|
|
|
@ -8,6 +8,7 @@ But don't fall on them!
|
|||
endhelp
|
||||
monsters
|
||||
1 4 27
|
||||
! 20 15
|
||||
r 19 15
|
||||
r 5 7
|
||||
r 35 7
|
||||
|
@ -31,12 +32,11 @@ r 4 23
|
|||
@ 2 23
|
||||
? 10 19
|
||||
? 16 19
|
||||
! 20 15
|
||||
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,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,
|
||||
|
@ -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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,
|
||||
layer2
|
||||
|
|
|
@ -6,7 +6,7 @@ help
|
|||
Drop through bridges with Down+X
|
||||
endhelp
|
||||
monsters
|
||||
1 4 27
|
||||
! 20 8
|
||||
r 10 4
|
||||
r 11 12
|
||||
r 33 12
|
||||
|
@ -32,25 +32,25 @@ Y 6 24
|
|||
P 8 4
|
||||
@ 26 8
|
||||
? 21 8
|
||||
! 20 8
|
||||
1 24 8
|
||||
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,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,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,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,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,
|
||||
|
@ -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,
|
||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,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,
|
||||
|
|
|
@ -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,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,18,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,19,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,9,9,9,9,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
|
|
|
@ -29,19 +29,19 @@ a 4 8
|
|||
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,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,18,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,23,23,19,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,24,24,24,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,18,19,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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
|
||||
endhelp
|
||||
monsters
|
||||
1 22 15
|
||||
! 20 12
|
||||
@ 11 5
|
||||
@ 12 9
|
||||
|
@ -47,11 +46,12 @@ r 10 12
|
|||
r 29 12
|
||||
r 6 15
|
||||
r 31 15
|
||||
1 20 12
|
||||
endmonsters
|
||||
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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,
|
||||
|
|
|
@ -7,19 +7,13 @@ endhelp
|
|||
monsters
|
||||
1 15 12
|
||||
! 3 12
|
||||
Y 10 12
|
||||
@ 17 17
|
||||
P 25 21
|
||||
Y 13 12
|
||||
Y 11 12
|
||||
Y 12 12
|
||||
@ 18 17
|
||||
@ 15 17
|
||||
@ 16 17
|
||||
P 24 21
|
||||
P 23 21
|
||||
P 26 21
|
||||
r 37 3
|
||||
r 20 6
|
||||
r 9 6
|
||||
endmonsters
|
||||
exitdir 1
|
||||
17,17,17,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,4,
|
||||
|
@ -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,1,1,1,1,1,1,1,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,1,1,1,1,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,1,1,1,1,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,15,15,15,15,15,15,15,1,16,16,16,16,16,16,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,15,15,15,15,15,15,15,1,15,15,15,15,15,15,1,0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,0,0,0,0,0,0,0,0,4,
|
||||
4,15,15,15,15,15,15,15,1,15,15,15,15,15,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,15,15,15,15,15,15,15,1,15,15,15,15,15,15,1,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,1,1,1,1,20,20,20,20,20,20,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,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,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,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,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,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,1,
|
||||
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
layer2
|
||||
19,6,1
|
||||
22,6,1
|
||||
13,7,8
|
||||
17,7,8
|
||||
13,13,8
|
||||
17,13,8
|
||||
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