- Added new tiles: honeycomb, cave, up/down signs
- Added new fruit: diamond - Level transitions are now smoother - Levels now contain exitdir (which way to scroll when completed) - Added random powerups on each level (if you define a position in the editor) - Added temp powerup: boxing glove
33
defs.h
|
@ -35,7 +35,7 @@
|
|||
#define POINTSDELAY 40
|
||||
#define BONUSDELAY 50
|
||||
#define HURRYDELAY 50
|
||||
#define LEVELDELAY 70
|
||||
#define LEVELDELAY 80
|
||||
#define HELPDELAY 80
|
||||
|
||||
|
||||
|
@ -100,7 +100,7 @@
|
|||
#define S_SLOPE 2
|
||||
|
||||
// Sprite types
|
||||
#define MAXPTYPES 23
|
||||
#define MAXPTYPES 27
|
||||
#define P_PLAYER 0
|
||||
#define P_RAT 1
|
||||
#define P_CHEESE 2
|
||||
|
@ -124,6 +124,14 @@
|
|||
#define P_PUFF 20
|
||||
#define P_GEMYELLOW 21
|
||||
#define P_GEMPURPLE 22
|
||||
#define P_POWERUPPOS 23
|
||||
#define P_BOXING 24 // this is the powerup
|
||||
#define P_GLOVE 25 // this is the glove on the end of the net
|
||||
#define P_DIAMOND 26
|
||||
|
||||
// powerups
|
||||
#define PW_NONE 0
|
||||
#define PW_BOXING 1 // boxing glove
|
||||
|
||||
// Frame names
|
||||
#define F_WALK1 0
|
||||
|
@ -143,6 +151,15 @@
|
|||
#define F_SLAM4 14
|
||||
#define F_SLAM5 15
|
||||
|
||||
|
||||
// Level states
|
||||
#define LV_INIT 5 // just loaded, waiting for monsters to appear
|
||||
#define LV_INPROGRESS 0 // regular game play
|
||||
#define LV_CLEAR 1 // all monsters dead
|
||||
#define LV_WAIT 2 // LEVEL COMPLETE displayed, delay to collect fruits
|
||||
#define LV_FINAL 3 // delay 5 seconds more...
|
||||
#define LV_NEXTLEV 4 // end of delay, nextlevel() in 5 seconds
|
||||
|
||||
// Tile types
|
||||
#define T_BLANK 0
|
||||
#define T_LAND 1
|
||||
|
@ -180,6 +197,8 @@
|
|||
// directions
|
||||
#define D_RIGHT (1)
|
||||
#define D_LEFT (-1)
|
||||
#define D_UP (-2)
|
||||
#define D_DOWN (2)
|
||||
|
||||
|
||||
/* data structures */
|
||||
|
@ -238,9 +257,14 @@ typedef struct level_s {
|
|||
struct level_s *prev;
|
||||
int p1x; /* player 1 start pos */
|
||||
int p1y;
|
||||
int powerupx; /* powerup position */
|
||||
int powerupy; /* powerup position */
|
||||
int gotpowerup; /* has the random powerup appeared yet? */
|
||||
int exitdir; /* which way to scroll on level completion */
|
||||
int nummonsters;
|
||||
initialmonster_t initm[MAXMONSTERSPERLEVEL];
|
||||
int hurryuptime;
|
||||
int poweruptime;
|
||||
} level_t;
|
||||
level_t *level;
|
||||
|
||||
|
@ -269,11 +293,13 @@ typedef struct sprite_s {
|
|||
int nety; // y position of end of net (used when shooting >1 net)
|
||||
int netxstart; // x position of start of net
|
||||
int netystart; // y position of start of net
|
||||
int powerup; // what temp powerup does the player have?
|
||||
|
||||
// monster only
|
||||
int willbecome; // what fruit this will become when dead
|
||||
int angry; // is this sprite in ANGRY mode for its AI?
|
||||
struct sprite_s *caughtby; // who has us in their net? NULL if nobody
|
||||
int quickdie; // die without bouncing?
|
||||
int caughtstate; // are we caught by a net? being pulled in or caught?
|
||||
int jumptimer; // delay before we will jump
|
||||
int flies; // can we fly?
|
||||
|
@ -336,6 +362,9 @@ extern TTF_Font *font[];
|
|||
extern int musicplaying;
|
||||
extern Mix_Music *music, *normalmusic, *fastmusic;
|
||||
extern Mix_Chunk *sfx[];
|
||||
extern int oldexitdir;
|
||||
extern int levelcomplete;
|
||||
extern text_t *text, *lasttext;
|
||||
|
||||
|
||||
#endif
|
||||
|
|
43
edit.c
|
@ -208,12 +208,12 @@ int main (int argc, char **argv) {
|
|||
y = (my / TILEH);
|
||||
|
||||
/* checks */
|
||||
// can only have one player start pos
|
||||
if (selsprite == P_PLAYER) {
|
||||
// can only have one player/powerup pos
|
||||
if ((selsprite == P_PLAYER) || (selsprite == P_POWERUPPOS)) {
|
||||
/* does a player start pos already exist? */
|
||||
sprite_t *s;
|
||||
for (s = sprite ; s ; s = s->next) {
|
||||
if (s->id == P_PLAYER) {
|
||||
if (s->id == selsprite) {
|
||||
// if so, just move it
|
||||
s->x = x*TILEW+(TILEW/2);
|
||||
s->y = y*TILEH+TILEH;
|
||||
|
@ -241,9 +241,9 @@ int main (int argc, char **argv) {
|
|||
/* place selected sprite at mouse position
|
||||
(locked to a tile) */
|
||||
if (selsprite == P_HELP) {
|
||||
addsprite(selsprite, x*TILEW+(TILEW/2),y*TILEH+TILEH,"FILL ME IN", B_TRUE);
|
||||
addsprite(selsprite, x*TILEW+(TILEW/2),y*TILEH+TILEH,"FILL ME IN" );
|
||||
} else {
|
||||
addsprite(selsprite, x*TILEW+(TILEW/2),y*TILEH+TILEH,"something", B_TRUE);
|
||||
addsprite(selsprite, x*TILEW+(TILEW/2),y*TILEH+TILEH,"something" );
|
||||
}
|
||||
printf("added a sprite\n");
|
||||
toggletimer = 30;
|
||||
|
@ -312,6 +312,36 @@ int main (int argc, char **argv) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* exit direction */
|
||||
if (toggletimer == 0) {
|
||||
if (keys[SDLK_h]) {
|
||||
printf("Exit direction set to LEFT.\n");
|
||||
curlevel->exitdir = D_LEFT;
|
||||
toggletimer = 30;
|
||||
modified = B_TRUE;
|
||||
}
|
||||
if (keys[SDLK_j]) {
|
||||
printf("Exit direction set to DOWN.\n");
|
||||
curlevel->exitdir = D_DOWN;
|
||||
toggletimer = 30;
|
||||
modified = B_TRUE;
|
||||
}
|
||||
if (keys[SDLK_k]) {
|
||||
printf("Exit direction set to UP.\n");
|
||||
curlevel->exitdir = D_UP;
|
||||
toggletimer = 30;
|
||||
modified = B_TRUE;
|
||||
}
|
||||
if (keys[SDLK_l]) {
|
||||
printf("Exit direction set to RIGHT.\n");
|
||||
curlevel->exitdir = D_RIGHT;
|
||||
toggletimer = 30;
|
||||
modified = B_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
/* next level */
|
||||
if (keys[SDLK_RIGHT]) {
|
||||
if (toggletimer == 0) {
|
||||
|
@ -563,6 +593,9 @@ int savelevel(int wnum, int lnum) {
|
|||
}
|
||||
fprintf(f, "endmonsters\n");
|
||||
|
||||
/* exit dir */
|
||||
fprintf(f, "exitdir %d\n",curlevel->exitdir);
|
||||
|
||||
/* level data */
|
||||
for (y = 0; y < LEVELH; y++) {
|
||||
for (x = 0; x < LEVELW; x++) {
|
||||
|
|
|
@ -13,10 +13,16 @@ sprite_t *player; // pointer to the player's sprite
|
|||
Mix_Music *music, *fastmusic, *normalmusic;
|
||||
Mix_Chunk *sfx[MAXFX];
|
||||
|
||||
text_t *text, *lasttext;
|
||||
|
||||
level_t *curlevel; // the current level's data
|
||||
|
||||
int levelcomplete; // has the levle been finished?
|
||||
|
||||
tiletype_t fakeblock; // used for returning tiletypes from a function
|
||||
|
||||
int oldexitdir; // exit direction of previous level
|
||||
|
||||
int vidargs; // arguments for SetVideo call
|
||||
|
||||
TTF_Font *font[MAXLETTERHEIGHT];
|
||||
|
|
After Width: | Height: | Size: 693 B |
After Width: | Height: | Size: 663 B |
After Width: | Height: | Size: 695 B |
After Width: | Height: | Size: 625 B |
After Width: | Height: | Size: 487 B |
After Width: | Height: | Size: 663 B |
After Width: | Height: | Size: 607 B |
After Width: | Height: | Size: 622 B |
576
rc.c
|
@ -30,6 +30,7 @@ char tempm[BUFLEN];
|
|||
|
||||
tiletype_t fakeblock;
|
||||
|
||||
|
||||
/* the order in which fruit will appear */
|
||||
int fruittypes[] = {
|
||||
P_CHEESE,
|
||||
|
@ -59,14 +60,13 @@ int fpsstart = 0;
|
|||
int curworld = 1;
|
||||
int curlevelnum;
|
||||
level_t *curlevel;
|
||||
int levelcomplete = B_FALSE;
|
||||
int levelcompletetime = -1;
|
||||
|
||||
sprite_t *sprite = NULL; /* main sprite list */
|
||||
sprite_t *player;
|
||||
sprite_t *lastsprite;
|
||||
|
||||
text_t *text, *lasttext;
|
||||
|
||||
|
||||
SDL_Color red = {255, 0, 0, 0};
|
||||
SDL_Color black = {0, 0, 0, 0};
|
||||
|
@ -171,7 +171,11 @@ int main (int argc, char **argv) {
|
|||
}
|
||||
|
||||
|
||||
drawlevel();
|
||||
//levelcomplete = LV_FINAL;
|
||||
curlevelnum-- ; // since nexlevel() will increment it
|
||||
nextlevel();
|
||||
//drawlevel();
|
||||
/* TODO: place player */
|
||||
flip();
|
||||
|
||||
timer = 0;
|
||||
|
@ -180,13 +184,6 @@ int main (int argc, char **argv) {
|
|||
player->score = 0;
|
||||
|
||||
while (1) {
|
||||
/*
|
||||
removetext();
|
||||
for (s = sprite ; s ; s = s->next) {
|
||||
removesprite(s);
|
||||
}
|
||||
removenetting(player);
|
||||
*/
|
||||
removeall();
|
||||
|
||||
/* check for death & update movement status*/
|
||||
|
@ -209,12 +206,12 @@ int main (int argc, char **argv) {
|
|||
}
|
||||
|
||||
/* check for end of level */
|
||||
if (levelcomplete == 1) {
|
||||
if (levelcomplete == LV_CLEAR) {
|
||||
addtext(318,242,32,"Level Complete!",&black,LEVELDELAY);
|
||||
addtext(320,240,32,"Level Complete!",&yellow,LEVELDELAY);
|
||||
levelcomplete = 2;
|
||||
levelcomplete = LV_WAIT;
|
||||
playfx(FX_WINLEVEL);
|
||||
} else if (levelcomplete == 2) {
|
||||
} else if (levelcomplete == LV_WAIT) {
|
||||
int mcount = 0;
|
||||
sprite_t *s2;
|
||||
|
||||
|
@ -229,7 +226,7 @@ int main (int argc, char **argv) {
|
|||
}
|
||||
if (mcount == 0) {
|
||||
levelcompletetime = gtime;
|
||||
levelcomplete = 3;
|
||||
levelcomplete = LV_FINAL;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -244,6 +241,12 @@ int main (int argc, char **argv) {
|
|||
if (keys[SDLK_q]) {
|
||||
gtime = curlevel->hurryuptime -1;
|
||||
}
|
||||
if (keys[SDLK_n]) {
|
||||
if (toggletimer == 0) {
|
||||
nextlevel();
|
||||
toggletimer = 50;
|
||||
}
|
||||
}
|
||||
if (keys[SDLK_RETURN]) {
|
||||
if (toggletimer == 0) {
|
||||
SDL_WM_ToggleFullScreen(screen);
|
||||
|
@ -347,6 +350,27 @@ int main (int argc, char **argv) {
|
|||
}
|
||||
player->netlen = 0;
|
||||
player->netdir = player->dir;
|
||||
|
||||
/* handle boxing glove */
|
||||
if (player->powerup == PW_BOXING) {
|
||||
sprite_t *s;
|
||||
int found;
|
||||
// use existing glove if it is there
|
||||
found = B_FALSE;
|
||||
for (s = sprite; s ; s = s->next) {
|
||||
if (s->id == P_GLOVE) {
|
||||
s->x = player->x;
|
||||
s->y = player->y - (imageset[P_PLAYER].img[F_SHOOT]->h / 2) + 5;
|
||||
found = B_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
addsprite(P_GLOVE, player->x,
|
||||
player->y - (imageset[P_PLAYER].img[F_SHOOT]->h / 2) + 5,
|
||||
"glove");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -385,6 +409,11 @@ int main (int argc, char **argv) {
|
|||
movetext();
|
||||
|
||||
|
||||
if (levelcomplete == LV_INIT) {
|
||||
// only player
|
||||
dogravity(player);
|
||||
dotileeffects(player);
|
||||
} else {
|
||||
/* gravity */
|
||||
for (s = sprite ; s ; s = s->next) {
|
||||
dogravity(s);
|
||||
|
@ -394,14 +423,11 @@ int main (int argc, char **argv) {
|
|||
for (s = sprite ; s ; s = s->next) {
|
||||
dotileeffects(s);
|
||||
}
|
||||
}
|
||||
|
||||
/* check collisions */
|
||||
//for (s = sprite ; s ; s = s->next) {
|
||||
// checkcollide(s);
|
||||
//}
|
||||
checkcollide(player);
|
||||
|
||||
|
||||
drawscore();
|
||||
|
||||
drawnetting(player);
|
||||
|
@ -439,7 +465,7 @@ void tick(void) {
|
|||
gtime++;
|
||||
|
||||
|
||||
/* */
|
||||
/* check for hurryup*/
|
||||
if (gtime == curlevel->hurryuptime) {
|
||||
if (!levelcomplete) {
|
||||
for (s = sprite; s; s = s->next) {
|
||||
|
@ -454,17 +480,36 @@ void tick(void) {
|
|||
}
|
||||
} else if (gtime == curlevel->hurryuptime + 10) {
|
||||
if (!levelcomplete) {
|
||||
addsprite(P_CLOUD, 320,240,"cloud", B_FALSE);
|
||||
addsprite(P_CLOUD, 320,240,"cloud");
|
||||
addtext(320,240,TEXTSIZE_HURRY, "Too slow!", &red,HURRYDELAY);
|
||||
playfx(FX_TOOSLOW);
|
||||
}
|
||||
}
|
||||
|
||||
/* check for random power up */
|
||||
if ((curlevel->powerupx != -1) && (curlevel->powerupy != -1)) {
|
||||
if (!curlevel->gotpowerup) {
|
||||
if (gtime == curlevel->poweruptime) {
|
||||
if (!levelcomplete) {
|
||||
/* add a random powerup at the right position */
|
||||
/* IMPORTANT: the name 'random_up' is important as it tells addsprite() to
|
||||
give it a higher doomcount */
|
||||
puffin(randompowerup(),
|
||||
curlevel->powerupx*TILEW + (TILEW/2),
|
||||
curlevel->powerupy*TILEH + TILEH - 1,
|
||||
"random_up",0);
|
||||
curlevel->gotpowerup = B_TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* 5 seconds after level completion */
|
||||
if (levelcomplete == 3) {
|
||||
if (levelcomplete == LV_FINAL) {
|
||||
if (gtime - levelcompletetime >= 5) {
|
||||
if (!player->dead) {
|
||||
levelcomplete = LV_NEXTLEV;
|
||||
nextlevel();
|
||||
}
|
||||
}
|
||||
|
@ -475,20 +520,44 @@ void tick(void) {
|
|||
}
|
||||
|
||||
void nextlevel(void) {
|
||||
char msg[SMALLBUFLEN];
|
||||
|
||||
// remove the player
|
||||
removesprite(player);
|
||||
|
||||
// don't want the player flashing
|
||||
player->invuln = 0;
|
||||
|
||||
/* in case we skipped the level due to a powerup etc */
|
||||
levelcomplete = LV_NEXTLEV;
|
||||
|
||||
/* go to next level */
|
||||
curlevelnum++;
|
||||
if (!musicplaying || (curmusic == fastmusic)) {
|
||||
playmusic(normalmusic);
|
||||
}
|
||||
|
||||
// these two handle the scroll effect to the next level
|
||||
loadlevel(curworld,curlevelnum);
|
||||
drawlevel();
|
||||
levelcomplete = B_FALSE;
|
||||
|
||||
|
||||
/* reset game stats */
|
||||
levelcomplete = LV_INIT;
|
||||
levelcompletetime = -1;
|
||||
|
||||
/* 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);
|
||||
|
||||
/* reset player stats */
|
||||
player->netting = B_FALSE;
|
||||
player->slamming = B_FALSE;
|
||||
player->jumping = B_FALSE;
|
||||
player->powerup = B_FALSE;
|
||||
}
|
||||
|
||||
void jump(sprite_t *s, int dir) {
|
||||
|
@ -560,7 +629,7 @@ void die(sprite_t *s) {
|
|||
}
|
||||
|
||||
if (mcount == 0) {
|
||||
levelcomplete = 1;
|
||||
levelcomplete = LV_CLEAR;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -592,7 +661,6 @@ void checkcollide(sprite_t *s) {
|
|||
if (collide) {
|
||||
/* check for colission with our net */
|
||||
if ((s->netting) && (!s2->caughtby)) {
|
||||
if (s->netcaught < s->netmax) {
|
||||
if (ismonster(s2->id) && s2->id != P_CLOUD) {
|
||||
xdiff = (s->x + s->netlen*s->netdir) - s2->x;
|
||||
if (xdiff < 0) xdiff = -xdiff;
|
||||
|
@ -600,6 +668,31 @@ void checkcollide(sprite_t *s) {
|
|||
if (ydiff < 0) ydiff = -ydiff;
|
||||
|
||||
if ((xdiff <= s2->img->w/2) && (ydiff <= s2->img->h)) {
|
||||
// we hit something!
|
||||
|
||||
// if we have a boxing glove, it dies
|
||||
if (s->powerup == PW_BOXING) {
|
||||
s2->dead = D_BOUNCING;// die as soon as it hits a wall
|
||||
s2->bounces = 1;
|
||||
s2->quickdie = B_TRUE;
|
||||
|
||||
/* go FAST in the direction player is facing */
|
||||
s2->xs = s->dir * 5;
|
||||
s2->ys = 0;
|
||||
|
||||
/* slightly raise the sprite to avoid isonground() being true */
|
||||
s2->y -= 3;
|
||||
|
||||
/* make sure we're not too high since we'll never get lower now */
|
||||
if (s2->y <= TILEH) s2->y = TILEH+1;
|
||||
|
||||
// become something special
|
||||
s2->willbecome = P_DIAMOND;
|
||||
|
||||
playfx(FX_KILL);
|
||||
} else {
|
||||
// otherwise we caught it if we have enough nets
|
||||
if (s->netcaught < s->netmax) {
|
||||
s2->caughtby = s;
|
||||
s2->jumping = 0;
|
||||
s2->falling = 0;
|
||||
|
@ -608,6 +701,7 @@ void checkcollide(sprite_t *s) {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
/* check for collision with us */
|
||||
xdiff = s->x - s2->x;
|
||||
|
@ -687,6 +781,15 @@ void movesprite(sprite_t *s) {
|
|||
int rv;
|
||||
tiletype_t *tt;
|
||||
|
||||
if (levelcomplete == LV_INIT) {
|
||||
// most things can't move in this state
|
||||
if ((s->id != P_PUFF) && (s->id != P_PLAYER)) {
|
||||
// caught or dead sprites can move, in case
|
||||
// the player catches something before level start time
|
||||
if ((!s->caughtby) && (!s->dead)) return;
|
||||
}
|
||||
}
|
||||
|
||||
/* timer */
|
||||
if (s->doomcount) {
|
||||
s->doomcount--;
|
||||
|
@ -765,13 +868,12 @@ void movesprite(sprite_t *s) {
|
|||
} else {
|
||||
/* bounch around the screen 3 times */
|
||||
bouncesprite(s);
|
||||
if ((s->bounces >= 2) && (s->ys > 0)) {
|
||||
if ((s->bounces >= 2) && (s->ys >= 0)) {
|
||||
// make sure we're not on the ground
|
||||
if (!isonground(s)) {
|
||||
int tx,ty;
|
||||
tiletype_t *tt;
|
||||
tt = gettileat(s->x,s->y,&tx,&ty);
|
||||
|
||||
//int tx,ty;
|
||||
//tiletype_t *tt;
|
||||
//tt = gettileat(s->x,s->y,&tx,&ty);
|
||||
s->dead = D_LASTBOUNCE;
|
||||
}
|
||||
}
|
||||
|
@ -787,35 +889,9 @@ void movesprite(sprite_t *s) {
|
|||
}
|
||||
} else { /* bounce around, stop when we hit the ground */
|
||||
bouncesprite(s);
|
||||
/* OLD BOUNCE CODE
|
||||
if (s->x >= (640-TILEW- s->img->w/2)) {
|
||||
if (s->xs > 0) {
|
||||
s->xs = -s->xs;
|
||||
s->bounces++;
|
||||
}
|
||||
} else if (s->x <= TILEW + s->img->w/2) {
|
||||
if (s->xs < 0) {
|
||||
s->xs = -s->xs;
|
||||
s->bounces++;
|
||||
}
|
||||
}
|
||||
|
||||
if (s->y >= (480-(s->img->h/2))) {
|
||||
if (s->ys > 0) {
|
||||
s->ys = -s->ys;
|
||||
s->bounces++;
|
||||
}
|
||||
} else if (s->y <= s->img->h) {
|
||||
if (s->ys < 0) {
|
||||
s->ys = -s->ys;
|
||||
s->bounces++;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
if ((s->ys > 0) && (s->y >= TILEH)) {
|
||||
if (isonground(s)) {
|
||||
if ((s->ys >= 0) && (s->y >= TILEH)) {
|
||||
if (s->quickdie || isonground(s)) {
|
||||
int x,y,ty;
|
||||
s->dead = D_FINAL;
|
||||
/* change into a fruit */
|
||||
|
@ -829,7 +905,7 @@ void movesprite(sprite_t *s) {
|
|||
if (x < (TILEW)) x = TILEW;
|
||||
|
||||
//addsprite(s->willbecome, x, y, "Fruit", B_FALSE);
|
||||
puffin(s->willbecome, x, y, 0);
|
||||
puffin(s->willbecome, x, y, "fruit", 0);
|
||||
//ss = addsprite(P_PUFF, x, y, "Fruit", B_FALSE);
|
||||
//ss->timer3 = s->willbecome;
|
||||
|
||||
|
@ -937,13 +1013,23 @@ void movesprite(sprite_t *s) {
|
|||
// finished animating
|
||||
if (s->timer1 == PUFFAPPEAR) {
|
||||
// create a gem/fruit/etc
|
||||
addsprite(s->timer3, s->x,s->y,"gem", B_FALSE);
|
||||
addsprite(s->timer3, s->x,s->y,s->name );
|
||||
} else if (s->timer1 >= PUFFFRAMES) {
|
||||
s->dead = D_FINAL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else if (s->id == P_GLOVE) { // boxing glove effect
|
||||
// dies when the player finshes netting
|
||||
if (!player->netting) {
|
||||
s->dead = D_FINAL;
|
||||
} else {
|
||||
// keep it at the end of the net
|
||||
s->x = player->x + (player->netdir * player->netlen);
|
||||
s->y = player->y - (player->img->h/2) + 5;
|
||||
s->dir = player->dir;
|
||||
}
|
||||
} else if (s->id == P_RAT) {
|
||||
if (!s->falling) {
|
||||
int move = B_FALSE;
|
||||
|
@ -1149,7 +1235,7 @@ printf("can shoot again\n");
|
|||
if (shoot) {
|
||||
// if our shooting timer is okay
|
||||
if (s->timer1 == 0) {
|
||||
ss = addsprite(P_SPIT,s->x,s->y - s->img->h/2,"spit", B_FALSE);
|
||||
ss = addsprite(P_SPIT,s->x,s->y - s->img->h/2,"spit" );
|
||||
ss->ys = 0;
|
||||
ss->xs = s->dir * (getspeed(s)*2);
|
||||
ss->dir = s->dir;
|
||||
|
@ -1236,6 +1322,13 @@ printf("can shoot again\n");
|
|||
s->ys = -s->ys;
|
||||
}
|
||||
|
||||
/* check for top of screen */
|
||||
// TODO: later, remove this when we can wrap around
|
||||
if ((s->y <= s->img->h) && (s->ys < 0)) {
|
||||
s->ys = -s->ys;
|
||||
}
|
||||
|
||||
|
||||
/* move */
|
||||
s->x += s->xs;
|
||||
s->y += s->ys;
|
||||
|
@ -1428,11 +1521,18 @@ void dotileeffects(sprite_t *s) {
|
|||
}
|
||||
|
||||
|
||||
// initial transition to a new level
|
||||
void drawlevel(void) {
|
||||
int x,y;
|
||||
SDL_Rect area;
|
||||
int speed = 16;
|
||||
int dstx,dsty,xdis,ydis,dis;
|
||||
int turns;
|
||||
int pspeed;
|
||||
SDL_Rect area,dst;
|
||||
int speed = TILEW;
|
||||
SDL_Surface *playerbg;
|
||||
|
||||
/* TODO: chekc for memory leak here with temps -
|
||||
need to free it at the end? */
|
||||
if (temps) {
|
||||
SDL_FreeSurface(temps);
|
||||
temps = NULL;
|
||||
|
@ -1443,6 +1543,18 @@ void drawlevel(void) {
|
|||
screen->format->Gmask,screen->format->Bmask,
|
||||
screen->format->Amask);
|
||||
|
||||
// change player to floating image
|
||||
player->img = imageset[P_PLAYER].img[F_SHOOT];
|
||||
|
||||
// create buffer for player background
|
||||
playerbg = SDL_CreateRGBSurface(SDL_SWSURFACE,
|
||||
player->img->w, player->img->h,
|
||||
screen->format->BitsPerPixel, screen->format->Rmask,
|
||||
screen->format->Gmask,screen->format->Bmask,
|
||||
screen->format->Amask);
|
||||
|
||||
|
||||
// draw the full level onto a temporary surface
|
||||
for (x = 0; x < LEVELW; x++) {
|
||||
for (y = 0; y < LEVELH; y++) {
|
||||
drawtile(temps,x,y);
|
||||
|
@ -1450,16 +1562,231 @@ void drawlevel(void) {
|
|||
}
|
||||
|
||||
|
||||
// figure out where the player's new start position is
|
||||
dstx = (curlevel->p1x * TILEW) + (TILEW/2);
|
||||
dsty = (curlevel->p1y * TILEH) + TILEH-2;
|
||||
|
||||
// figure out distance to newposition
|
||||
xdis = player->x - dstx; if (xdis < 0) xdis = -xdis;
|
||||
ydis = player->y - dsty; if (ydis < 0) ydis = -ydis;
|
||||
if (xdis > ydis) dis = xdis;
|
||||
else dis = ydis;
|
||||
|
||||
// figure out how many loops it will take to scroll to the next level
|
||||
switch (oldexitdir) {
|
||||
case D_LEFT:
|
||||
case D_RIGHT:
|
||||
turns = 640 / TILEW;
|
||||
break;
|
||||
case D_UP:
|
||||
case D_DOWN:
|
||||
default:
|
||||
turns = 480 / TILEH;
|
||||
break;
|
||||
}
|
||||
turns -= 4; // just to be safe
|
||||
|
||||
// figure out how fast player needs to move to get there in time
|
||||
pspeed = dis / turns;
|
||||
|
||||
|
||||
|
||||
if (oldexitdir == D_LEFT) {
|
||||
// blit a column at a time to the real screen, shuffling
|
||||
// the real one along.
|
||||
for (x = 0; x < 640; x += speed) {
|
||||
// move player
|
||||
movetostart(player,dstx,dsty,pspeed);
|
||||
|
||||
// shuffle real screen
|
||||
area.x = 0;
|
||||
area.y = 0;
|
||||
if (x > 639) {
|
||||
area.w = 639;
|
||||
} else area.w = x;
|
||||
area.w = 640-TILEW;
|
||||
area.h = 480;
|
||||
SDL_BlitSurface(temps, &area, screen, &area);
|
||||
SDL_UpdateRect(screen, area.x, area.y, area.w, area.h);
|
||||
|
||||
dst.x = TILEW;
|
||||
dst.y = 0;
|
||||
dst.w = 0;
|
||||
dst.h = 0;
|
||||
SDL_BlitSurface(screen, &area, screen, &dst);
|
||||
|
||||
// blit next column from temp surface (take last column first)
|
||||
area.x = 640-x;
|
||||
area.y = 0;
|
||||
area.w = TILEW;
|
||||
area.h = 480;
|
||||
|
||||
|
||||
|
||||
dst.x = 0;
|
||||
dst.y = 0;
|
||||
dst.w = 0;
|
||||
dst.h = 0;
|
||||
SDL_BlitSurface(temps, &area, screen, &dst);
|
||||
|
||||
// remember area behind player
|
||||
grabbehind(player, playerbg);
|
||||
|
||||
// draw player
|
||||
drawsprite(player);
|
||||
|
||||
// update screen
|
||||
SDL_UpdateRect(screen, 0,0,640,480);
|
||||
|
||||
// remove player
|
||||
area.x = player->x - player->img->w/2;
|
||||
area.y = player->y - player->img->h;
|
||||
area.w = 0;
|
||||
area.h = 0;
|
||||
SDL_BlitSurface(playerbg, NULL, screen, &area );
|
||||
}
|
||||
} else if (oldexitdir == D_UP) {
|
||||
// blit a row at a time to the real screen, shuffling
|
||||
// the real one along.
|
||||
for (y = 0; y < 480; y += speed) {
|
||||
// move player
|
||||
movetostart(player,dstx,dsty,pspeed);
|
||||
|
||||
// shuffle real screen
|
||||
area.x = 0;
|
||||
area.y = 0;
|
||||
area.w = 640;
|
||||
area.h = 480-TILEH;
|
||||
|
||||
dst.x = 0;
|
||||
dst.y = TILEH;
|
||||
dst.w = 0;
|
||||
dst.h = 0;
|
||||
SDL_BlitSurface(screen, &area, screen, &dst);
|
||||
|
||||
// blit next row from temp surface (take last column first)
|
||||
area.x = 0;
|
||||
area.y = 480-y;
|
||||
area.w = 640;
|
||||
area.h = TILEH;
|
||||
|
||||
dst.x = 0;
|
||||
dst.y = 0;
|
||||
dst.w = 0;
|
||||
dst.h = 0;
|
||||
SDL_BlitSurface(temps, &area, screen, &dst);
|
||||
|
||||
// remember area behind player
|
||||
grabbehind(player, playerbg);
|
||||
|
||||
// draw player
|
||||
drawsprite(player);
|
||||
|
||||
// update screen
|
||||
SDL_UpdateRect(screen, 0,0,640,480);
|
||||
|
||||
// remove player
|
||||
area.x = player->x - player->img->w/2;
|
||||
area.y = player->y - player->img->h;
|
||||
area.w = 0;
|
||||
area.h = 0;
|
||||
SDL_BlitSurface(playerbg, NULL, screen, &area );
|
||||
}
|
||||
} else if (oldexitdir == D_DOWN) {
|
||||
// blit a row at a time to the real screen, shuffling
|
||||
// the real one along.
|
||||
for (y = 0; y < 480; y += speed) {
|
||||
// move player
|
||||
movetostart(player,dstx,dsty,pspeed);
|
||||
|
||||
// shuffle real screen
|
||||
area.x = 0;
|
||||
area.y = TILEH;
|
||||
area.w = 640;
|
||||
area.h = 480-TILEH;
|
||||
|
||||
dst.x = 0;
|
||||
dst.y = 0;
|
||||
dst.w = 0;
|
||||
dst.h = 0;
|
||||
SDL_BlitSurface(screen, &area, screen, &dst);
|
||||
|
||||
// blit next row from temp surface (take last column first)
|
||||
area.x = 0;
|
||||
area.y = y;
|
||||
area.w = 640;
|
||||
area.h = TILEH;
|
||||
|
||||
dst.x = 0;
|
||||
dst.y = 480-TILEH;
|
||||
dst.w = 0;
|
||||
dst.h = 0;
|
||||
SDL_BlitSurface(temps, &area, screen, &dst);
|
||||
|
||||
// remember area behind player
|
||||
grabbehind(player, playerbg);
|
||||
|
||||
// draw player
|
||||
drawsprite(player);
|
||||
|
||||
// update screen
|
||||
SDL_UpdateRect(screen, 0,0,640,480);
|
||||
|
||||
// remove player
|
||||
area.x = player->x - player->img->w/2;
|
||||
area.y = player->y - player->img->h;
|
||||
area.w = 0;
|
||||
area.h = 0;
|
||||
SDL_BlitSurface(playerbg, NULL, screen, &area );
|
||||
}
|
||||
} else { // right, or default
|
||||
// blit a column at a time to the real screen, shuffling
|
||||
// the real one along.
|
||||
for (x = 0; x < 640; x += speed) {
|
||||
|
||||
// move player
|
||||
movetostart(player,dstx,dsty,pspeed);
|
||||
|
||||
// shuffle real screen
|
||||
area.x = TILEW;
|
||||
area.y = 0;
|
||||
area.w = 640-TILEW;
|
||||
area.h = 480;
|
||||
|
||||
dst.x = 0;
|
||||
dst.y = 0;
|
||||
dst.w = 0;
|
||||
dst.h = 0;
|
||||
SDL_BlitSurface(screen, &area, screen, &dst);
|
||||
|
||||
// blit next column from temp surface (take last column first)
|
||||
area.x = x;
|
||||
area.y = 0;
|
||||
area.w = TILEW;
|
||||
area.h = 480;
|
||||
|
||||
dst.x = 640-TILEW;
|
||||
dst.y = 0;
|
||||
dst.w = 0;
|
||||
dst.h = 0;
|
||||
SDL_BlitSurface(temps, &area, screen, &dst);
|
||||
|
||||
// remember area behind player
|
||||
grabbehind(player, playerbg);
|
||||
|
||||
// draw player
|
||||
drawsprite(player);
|
||||
|
||||
// update screen
|
||||
SDL_UpdateRect(screen, 0,0,640,480);
|
||||
|
||||
// remove player
|
||||
area.x = player->x - player->img->w/2;
|
||||
area.y = player->y - player->img->h;
|
||||
area.w = 0;
|
||||
area.h = 0;
|
||||
SDL_BlitSurface(playerbg, NULL, screen, &area );
|
||||
}
|
||||
}
|
||||
|
||||
SDL_FreeSurface(playerbg);
|
||||
|
||||
levelcomplete = B_FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1532,23 +1859,10 @@ int addtext(int x, int y, int size, char *string, SDL_Color *c, int delay) {
|
|||
|
||||
|
||||
/* copy background buffer (ie. tiles) to screen, erasing sprites */
|
||||
void removeall(void) {
|
||||
void fruit(void) {
|
||||
SDL_BlitSurface(temps, NULL, screen, NULL);
|
||||
}
|
||||
|
||||
void removetext(void) {
|
||||
SDL_Rect sarea;
|
||||
text_t *t;
|
||||
|
||||
for (t = text ; t ; t = t->next) {
|
||||
sarea.x = 0;
|
||||
sarea.y = 0;
|
||||
sarea.w = t->bgarea.w;
|
||||
sarea.h = t->bgarea.h;
|
||||
|
||||
SDL_BlitSurface(t->bg, &sarea, screen, &t->bgarea);
|
||||
}
|
||||
}
|
||||
|
||||
void movetext(void) {
|
||||
text_t *t,*nextt;
|
||||
|
@ -1626,39 +1940,11 @@ void drawtext(void) {
|
|||
|
||||
}
|
||||
|
||||
void killtext(text_t *t) {
|
||||
text_t *nextone, *lastone;
|
||||
|
||||
|
||||
if (t->bg) {
|
||||
SDL_FreeSurface(t->bg);
|
||||
t->bg = NULL;
|
||||
}
|
||||
if (t->img) {
|
||||
SDL_FreeSurface(t->img);
|
||||
t->img = NULL;
|
||||
}
|
||||
|
||||
nextone = t->next;
|
||||
if (nextone != NULL) {
|
||||
nextone->prev = t->prev;
|
||||
} else { /*last text */
|
||||
lasttext = t->prev;
|
||||
}
|
||||
|
||||
if (t->prev == NULL) {
|
||||
/* first text */
|
||||
nextone = text->next;
|
||||
free(text);
|
||||
text = nextone;
|
||||
} else {
|
||||
lastone = t->prev;
|
||||
free (lastone->next );
|
||||
lastone->next = nextone;
|
||||
}
|
||||
/* copy background buffer (ie. tiles) to screen, erasing sprites */
|
||||
void removeall(void) {
|
||||
SDL_BlitSurface(temps, NULL, screen, NULL);
|
||||
}
|
||||
|
||||
|
||||
void drawnetting(sprite_t *s) {
|
||||
int sx;
|
||||
SDL_Rect area;
|
||||
|
@ -2205,6 +2491,13 @@ 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_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);
|
||||
return B_TRUE;
|
||||
} else if (s->id == P_HELP) {
|
||||
playfx(FX_POWERUP);
|
||||
addtext(320,240,TEXTSIZE_HELP, s->name, &white,HELPDELAY);
|
||||
|
@ -2235,7 +2528,7 @@ int dofruiteffect(sprite_t *s) {
|
|||
break;
|
||||
}
|
||||
/* create a flower */
|
||||
puffin(flowertogem(s->id), xx, s->y, 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);
|
||||
|
@ -2250,7 +2543,7 @@ int dofruiteffect(sprite_t *s) {
|
|||
if (tt->solid) {
|
||||
break;
|
||||
}
|
||||
puffin(flowertogem(s->id), xx, s->y, 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);
|
||||
|
@ -2396,10 +2689,55 @@ void channeldone(int channel) {
|
|||
|
||||
|
||||
|
||||
void puffin(int willbecome, int x, int y, int delay) {
|
||||
sprite_t *ss;
|
||||
ss = addsprite(P_PUFF, x, y, "puff", B_FALSE);
|
||||
ss->timer3 = willbecome;
|
||||
ss->timer1 = -delay;
|
||||
// move player towards new position
|
||||
void movetostart(sprite_t *p, int dstx, int dsty, int speed) {
|
||||
if (p->x < dstx) {
|
||||
p->x += speed;
|
||||
if (p->x > dstx) p->x = dstx;
|
||||
}
|
||||
if (p->x > dstx) {
|
||||
p->x -= speed;
|
||||
if (p->x < dstx) p->x = dstx;
|
||||
}
|
||||
if (p->y < dsty) {
|
||||
p->y += speed;
|
||||
if (p->y > dsty) p->y = dsty;
|
||||
}
|
||||
if (p->y > dsty) {
|
||||
p->y -= speed;
|
||||
if (p->y < dsty) p->y = dsty;
|
||||
}
|
||||
}
|
||||
|
||||
// grabs area behind a sprite into a temp buffer
|
||||
SDL_Surface *grabbehind(sprite_t *s, SDL_Surface *surf) {
|
||||
SDL_Rect area;
|
||||
|
||||
// remember area behind player
|
||||
area.x = s->x - s->img->w/2;
|
||||
area.y = s->y - s->img->h;
|
||||
area.w = s->img->w;
|
||||
area.h = s->img->h;
|
||||
SDL_BlitSurface(screen, &area, surf, NULL);
|
||||
|
||||
return surf;
|
||||
}
|
||||
|
||||
// returns a random powerup
|
||||
int randompowerup(void) {
|
||||
int num;
|
||||
num = rand() % 4;
|
||||
|
||||
|
||||
switch (num) {
|
||||
case 0:
|
||||
default:
|
||||
return P_SPEED;
|
||||
case 1:
|
||||
return P_BIGNET;
|
||||
case 2:
|
||||
return P_NUMNETS;
|
||||
case 3:
|
||||
return P_BOXING;
|
||||
}
|
||||
}
|
||||
|
|
6
rc.h
|
@ -3,9 +3,7 @@ int addtext(int x, int y, int size, char *string, SDL_Color *c, int delay);
|
|||
void drawscore(void);
|
||||
void drawtext(void);
|
||||
void movetext(void);
|
||||
void killtext(text_t *t);
|
||||
void removeall(void);
|
||||
void removetext(void);
|
||||
void drawlevel(void);
|
||||
void removesprite(sprite_t *s);
|
||||
void removenetting(sprite_t *s);
|
||||
|
@ -40,4 +38,6 @@ void playfx(int num);
|
|||
void playmusic(Mix_Music *toplay);
|
||||
void stopmusic(void);
|
||||
void channeldone(int channel);
|
||||
void puffin(int willbecome, int x, int y, int delay);
|
||||
void movetostart(sprite_t *p, int dstx, int dsty, int speed);
|
||||
SDL_Surface *grabbehind(sprite_t *s, SDL_Surface *surf);
|
||||
int randompowerup(void);
|
||||
|
|
196
shared.c
|
@ -43,8 +43,18 @@ int loadlevel(int wnum, int lnum) {
|
|||
int numenemies = 0;
|
||||
|
||||
|
||||
|
||||
printf("Loading level %d-%d...",wnum,lnum);
|
||||
|
||||
// remember exit direction for current level
|
||||
// before loading the new one.
|
||||
if (level) {
|
||||
oldexitdir = level->exitdir;
|
||||
} else {
|
||||
oldexitdir = D_RIGHT;
|
||||
}
|
||||
|
||||
|
||||
if (!level) level = malloc(sizeof(level_t));
|
||||
|
||||
if (level->animtiles) free(level->animtiles);
|
||||
|
@ -56,8 +66,12 @@ int loadlevel(int wnum, int lnum) {
|
|||
|
||||
/* default */
|
||||
level->hurryuptime = 30;
|
||||
level->poweruptime = 5;
|
||||
level->p1x = 0;
|
||||
level->p1y = 0;
|
||||
level->powerupx = -1;
|
||||
level->powerupy = -1;
|
||||
|
||||
|
||||
sprintf(filename, "world%d/level%d.dat",wnum,lnum);
|
||||
f = fopen(filename,"rt");
|
||||
|
@ -84,7 +98,12 @@ int loadlevel(int wnum, int lnum) {
|
|||
tiletype = tt;
|
||||
}
|
||||
|
||||
/* clear player linked list */
|
||||
/* remove all onscreen text */
|
||||
while (text) {
|
||||
killtext(text);
|
||||
}
|
||||
|
||||
/* clear sprite linked list (leave player) */
|
||||
if (sprite != NULL) {
|
||||
while (sprite->next) {
|
||||
killsprite(sprite->next);
|
||||
|
@ -227,6 +246,9 @@ int loadlevel(int wnum, int lnum) {
|
|||
if (monid == P_PLAYER) {
|
||||
level->p1x = x;
|
||||
level->p1y = y;
|
||||
} else if (monid == P_POWERUPPOS) {
|
||||
level->powerupx = x;
|
||||
level->powerupy = y;
|
||||
} else {
|
||||
/* place the monster */
|
||||
level->initm[level->nummonsters].startx = x*TILEW+(TILEW/2);
|
||||
|
@ -252,12 +274,39 @@ int loadlevel(int wnum, int lnum) {
|
|||
fgets(buf, BUFLEN, f);
|
||||
}
|
||||
|
||||
/* this reads the first line of the level */
|
||||
/* this reads the next line after monster defs */
|
||||
fgets(buf, BUFLEN, f);
|
||||
}
|
||||
|
||||
printf("got %d monsters\n", numenemies);
|
||||
|
||||
/* exitdir ? */
|
||||
if (strstr(buf, "exitdir")) {
|
||||
p = strtok(buf, " "); // "exitdir"
|
||||
p = strtok(NULL, " ");
|
||||
level->exitdir = atoi(p);
|
||||
printf("Exit direction is ");
|
||||
switch (level->exitdir) {
|
||||
case D_RIGHT:
|
||||
printf("RIGHT"); break;
|
||||
case D_LEFT:
|
||||
printf("LEFT"); break;
|
||||
case D_UP:
|
||||
printf("UP"); break;
|
||||
case D_DOWN:
|
||||
printf("DOWN"); break;
|
||||
default:
|
||||
level->exitdir = D_RIGHT;
|
||||
printf("*INVALID*");
|
||||
break;
|
||||
}
|
||||
printf("\n");
|
||||
fgets(buf, BUFLEN, f);
|
||||
} else {
|
||||
level->exitdir = D_RIGHT;
|
||||
printf("Defaulting to exitdir of RIGHT.\n");
|
||||
}
|
||||
|
||||
/* check whether we've got a new or old level version */
|
||||
if (strstr(buf, ",")) {
|
||||
/* new version */
|
||||
|
@ -517,26 +566,50 @@ printf("got %d monsters\n", numenemies);
|
|||
/* set current level pointer */
|
||||
curlevel = level;
|
||||
|
||||
/* add player */
|
||||
/* add player if required */
|
||||
if (player == NULL) {
|
||||
addsprite(P_PLAYER, (curlevel->p1x * TILEW) + (TILEW/2),
|
||||
(curlevel->p1y * TILEH) + TILEH-2 , "Player" , B_TRUE);
|
||||
} else {
|
||||
(curlevel->p1y * TILEH) + TILEH-2 , "Player" );
|
||||
player = lastsprite;
|
||||
}
|
||||
|
||||
|
||||
#ifdef __EDITOR
|
||||
/* add powerup pos if it exists */
|
||||
if ((level->powerupx != -1) && (level->powerupy != -1)) {
|
||||
addsprite(P_POWERUPPOS, (curlevel->powerupx * TILEW) + (TILEW/2),
|
||||
(curlevel->powerupy * TILEH) + TILEH-2 , "poweruppos" );
|
||||
}
|
||||
#endif
|
||||
|
||||
/*else {
|
||||
player->x = (curlevel->p1x * TILEW) + (TILEW/2);
|
||||
player->y = (curlevel->p1y * TILEH) + TILEH-2;
|
||||
}
|
||||
player = lastsprite;
|
||||
*/
|
||||
|
||||
/* add monsters */
|
||||
for (i = 0; i < level->nummonsters; i++) {
|
||||
char name[MIDBUFLEN];
|
||||
int delay;
|
||||
|
||||
if (level->initm[i].id == P_HELP) {
|
||||
strncpy(name, level->initm[i].help, MIDBUFLEN);
|
||||
} else {
|
||||
strcpy(name, "Monster");
|
||||
}
|
||||
|
||||
if (ismonster(level->initm[i].id)) {
|
||||
delay = 20;
|
||||
} else {
|
||||
delay = 0;
|
||||
}
|
||||
#ifdef __EDITOR
|
||||
addsprite(level->initm[i].id,
|
||||
level->initm[i].startx, level->initm[i].starty, name, B_TRUE);
|
||||
level->initm[i].startx, level->initm[i].starty, name );
|
||||
#else
|
||||
puffin(level->initm[i].id, level->initm[i].startx, level->initm[i].starty, name, delay );
|
||||
#endif
|
||||
}
|
||||
|
||||
gtime = 0;
|
||||
|
@ -570,6 +643,7 @@ void setdefaults(sprite_t *s) {
|
|||
s->netbig = 0;
|
||||
s->dropping = 0;
|
||||
s->dropx = -1;
|
||||
s->quickdie = B_FALSE;
|
||||
s->dropy = -1;
|
||||
s->falling = 0;
|
||||
s->fallspeed = 0;
|
||||
|
@ -609,6 +683,9 @@ void setdefaults(sprite_t *s) {
|
|||
case P_BURGER:
|
||||
s->score = 400;
|
||||
break;
|
||||
case P_DIAMOND:
|
||||
s->score = 500;
|
||||
break;
|
||||
case P_FLOWERYELLOW:
|
||||
s->score = 5;
|
||||
break;
|
||||
|
@ -643,7 +720,7 @@ void setdefaults(sprite_t *s) {
|
|||
}
|
||||
|
||||
/* initial is TRUE if we are populating the level for the first time */
|
||||
sprite_t *addsprite(int id, int x, int y, char *name , int initial) {
|
||||
sprite_t *addsprite(int id, int x, int y, char *name ) {
|
||||
sprite_t *s;
|
||||
|
||||
if (sprite == NULL) {
|
||||
|
@ -684,13 +761,19 @@ sprite_t *addsprite(int id, int x, int y, char *name , int initial) {
|
|||
|
||||
setdefaults(s);
|
||||
|
||||
if (!initial) {
|
||||
// initial fruits don't time out
|
||||
#ifndef __EDITOR
|
||||
if ((levelcomplete != LV_NEXTLEV) && (levelcomplete != LV_INIT)) {
|
||||
if (isfruit(s->id)) {
|
||||
if (s->id != P_HELP) { // help icons don't time out
|
||||
// random powerups stay for longer
|
||||
if (!strcmp(s->name, "random_up")) {
|
||||
s->doomcount = 900;
|
||||
} else {
|
||||
s->doomcount = 500;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
s->next = NULL;
|
||||
|
||||
|
@ -977,6 +1060,18 @@ int loadimagesets(void) {
|
|||
loadspriteimage(P_GEMPURPLE,F_WALK1, "sprites/gem-purple.png");
|
||||
imageset[P_GEMPURPLE].numimages = 1;
|
||||
|
||||
loadspriteimage(P_POWERUPPOS,F_WALK1, "sprites/poweruppos.png");
|
||||
imageset[P_POWERUPPOS].numimages = 1;
|
||||
|
||||
loadspriteimage(P_BOXING,F_WALK1, "sprites/boxing.png");
|
||||
imageset[P_BOXING].numimages = 1;
|
||||
|
||||
loadspriteimage(P_GLOVE,F_WALK1, "sprites/boxing.png");
|
||||
imageset[P_GLOVE].numimages = 1;
|
||||
|
||||
loadspriteimage(P_DIAMOND,F_WALK1, "sprites/diamond.png");
|
||||
imageset[P_DIAMOND].numimages = 1;
|
||||
|
||||
for (i = 0; i < PUFFFRAMES; i++) {
|
||||
char name[SMALLBUFLEN];
|
||||
sprintf(name, "sprites/puff%d.png",i);
|
||||
|
@ -994,6 +1089,7 @@ int loadimagesets(void) {
|
|||
/* generate rotated/flipped images */
|
||||
for (p = 0; p < MAXPTYPES; p++) {
|
||||
/* rotated */
|
||||
// TODO: need to free tempimg ? */
|
||||
if (!isfruit(p) && !isbullet(p) && !iseffect(p)) {
|
||||
tempimg = rotozoomSurface(imageset[p].img[F_DEAD],90,1,0);
|
||||
imageset[p].img[F_DEAD2] = SDL_DisplayFormat(tempimg);
|
||||
|
@ -1078,6 +1174,9 @@ void drawsprite(sprite_t *s) {
|
|||
SDL_Rect area;
|
||||
int frame;
|
||||
|
||||
if ((s == player) && (levelcomplete == LV_NEXTLEV)) {
|
||||
frame = F_SHOOT;
|
||||
} else {
|
||||
/* select frame */
|
||||
if (isfruit(s->id)) {
|
||||
frame = F_WALK1;
|
||||
|
@ -1093,6 +1192,8 @@ void drawsprite(sprite_t *s) {
|
|||
} else {
|
||||
frame = s->timer1;
|
||||
}
|
||||
} else if (s->id == P_GLOVE) {
|
||||
frame = F_WALK1;
|
||||
}
|
||||
} else if (s->dead) {
|
||||
if (s == player) {
|
||||
|
@ -1139,6 +1240,7 @@ void drawsprite(sprite_t *s) {
|
|||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/* x-flip if required */
|
||||
if (s->dir == -1) {
|
||||
|
@ -1285,17 +1387,24 @@ int isflower(int id) {
|
|||
|
||||
int isfruit(int id) {
|
||||
switch (id) {
|
||||
/* fruits */
|
||||
case P_CHEESE:
|
||||
case P_ICECREAM:
|
||||
case P_CHIPS:
|
||||
case P_BURGER:
|
||||
case P_DIAMOND:
|
||||
/* normal powerups */
|
||||
case P_SPEED:
|
||||
case P_NUMNETS:
|
||||
case P_BIGNET:
|
||||
case P_HELP:
|
||||
/* random powerups */
|
||||
case P_BOXING:
|
||||
/* flowers */
|
||||
case P_FLOWERYELLOW:
|
||||
case P_FLOWERRED:
|
||||
case P_FLOWERPURPLE:
|
||||
/* gems */
|
||||
case P_GEMYELLOW:
|
||||
case P_GEMRED:
|
||||
case P_GEMPURPLE:
|
||||
|
@ -1314,6 +1423,8 @@ int isbullet(int id) {
|
|||
|
||||
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;
|
||||
|
||||
return B_FALSE;
|
||||
}
|
||||
|
@ -1475,6 +1586,7 @@ int chartomonster(char ch) {
|
|||
case 'P': return P_FLOWERPURPLE;
|
||||
case 'C': return P_COKE;
|
||||
case '*': return P_GEMRED;
|
||||
case '!': return P_POWERUPPOS;
|
||||
}
|
||||
|
||||
return -1;
|
||||
|
@ -1493,6 +1605,7 @@ char monstertochar(int id ) {
|
|||
case P_FLOWERPURPLE: return 'P';
|
||||
case P_COKE: return 'C';
|
||||
case P_GEMRED: return '*';
|
||||
case P_POWERUPPOS: return '!';
|
||||
}
|
||||
|
||||
return '\0';
|
||||
|
@ -1586,3 +1699,66 @@ int ismonster(int id) {
|
|||
|
||||
return B_FALSE;
|
||||
}
|
||||
|
||||
|
||||
void puffin(int willbecome, int x, int y, char *name, int delay) {
|
||||
sprite_t *ss;
|
||||
ss = addsprite(P_PUFF, x, y, "puff" );
|
||||
ss->timer3 = willbecome;
|
||||
ss->timer1 = -delay;
|
||||
strncpy(ss->name, name, MIDBUFLEN);
|
||||
}
|
||||
|
||||
/*
|
||||
void removetext(void) {
|
||||
SDL_Rect sarea;
|
||||
text_t *t;
|
||||
|
||||
for (t = text ; t ; t = t->next) {
|
||||
sarea.x = 0;
|
||||
sarea.y = 0;
|
||||
sarea.w = t->bgarea.w;
|
||||
sarea.h = t->bgarea.h;
|
||||
|
||||
SDL_BlitSurface(t->bg, &sarea, screen, &t->bgarea);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
void killtext(text_t *t) {
|
||||
text_t *nextone, *lastone;
|
||||
|
||||
|
||||
if (t->bg) {
|
||||
SDL_FreeSurface(t->bg);
|
||||
t->bg = NULL;
|
||||
}
|
||||
if (t->img) {
|
||||
SDL_FreeSurface(t->img);
|
||||
t->img = NULL;
|
||||
}
|
||||
|
||||
nextone = t->next;
|
||||
if (nextone != NULL) {
|
||||
nextone->prev = t->prev;
|
||||
} else { /*last text */
|
||||
lasttext = t->prev;
|
||||
}
|
||||
|
||||
if (t->prev == NULL) {
|
||||
/* first text */
|
||||
nextone = text->next;
|
||||
free(text);
|
||||
text = nextone;
|
||||
} else {
|
||||
lastone = t->prev;
|
||||
free (lastone->next );
|
||||
lastone->next = nextone;
|
||||
}
|
||||
|
||||
/* if we're killing text during LV_INIT, it must have been
|
||||
the level announcement. That means that we can start
|
||||
moving.
|
||||
*/
|
||||
if (levelcomplete == LV_INIT) levelcomplete = LV_INPROGRESS;
|
||||
}
|
||||
|
|
5
shared.h
|
@ -8,7 +8,7 @@
|
|||
int loadlevel(int wnum, int lnum);
|
||||
void setdefaults(sprite_t *s);
|
||||
int loadtiletypes(char *filename);
|
||||
sprite_t *addsprite(int id,int x, int y, char *name, int initial);
|
||||
sprite_t *addsprite(int id,int x, int y, char *name);
|
||||
tiletype_t *gettileat(int pixx,int pixy, int *tilex, int *tiley);
|
||||
int loadimagesets(void);
|
||||
int isbullet(int id);
|
||||
|
@ -31,8 +31,9 @@ char monstertochar(int id);
|
|||
tiletype_t *gettile(int tid);
|
||||
void drawtile(SDL_Surface *s, int x, int y);
|
||||
void initglobals(void);
|
||||
void killtext(text_t *t);
|
||||
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);
|
||||
#endif
|
||||
|
||||
|
|
After Width: | Height: | Size: 701 B |
After Width: | Height: | Size: 936 B |
After Width: | Height: | Size: 299 B |
20
world1/BAK
|
@ -10,7 +10,6 @@ monsters
|
|||
1 3 19
|
||||
? 7 19
|
||||
? 12 19
|
||||
@ 16 14
|
||||
@ 30 15
|
||||
@ 31 15
|
||||
P 21 15
|
||||
|
@ -18,17 +17,20 @@ P 21 15
|
|||
@ 20 15
|
||||
Y 23 15
|
||||
Y 19 15
|
||||
P 36 14
|
||||
Y 2 15
|
||||
Y 1 15
|
||||
Y 24 19
|
||||
Y 22 19
|
||||
Y 20 19
|
||||
r 18 15
|
||||
r 27 15
|
||||
P 36 14
|
||||
Y 34 19
|
||||
@ 35 19
|
||||
P 36 19
|
||||
endmonsters
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,18,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
|
@ -40,13 +42,13 @@ endmonsters
|
|||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,4,
|
||||
4,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
4,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,0,0,0,0,0,4,4,
|
||||
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,4,4,4,4,4,1,1,1,1,1,4,4,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
|
|
|
@ -28,6 +28,7 @@ Y 34 19
|
|||
@ 35 19
|
||||
P 36 19
|
||||
endmonsters
|
||||
exitdir 1
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
tileset green
|
||||
bg 0
|
||||
hurryup 30
|
||||
hurryup 60
|
||||
endmaps
|
||||
help
|
||||
endhelp
|
||||
|
@ -33,33 +33,34 @@ P 38 24
|
|||
S 31 24
|
||||
r 20 21
|
||||
endmonsters
|
||||
exitdir 1
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,1,1,20,20,21,21,21,21,22,22,22,22,22,22,21,21,21,20,20,1,1,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,20,20,21,21,21,20,20,1,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,1,1,20,20,21,21,21,21,22,22,22,22,22,22,21,21,21,20,20,1,1,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,1,1,20,20,20,21,21,21,22,22,22,22,22,22,21,21,21,21,20,20,20,1,1,1,1,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,1,20,20,20,20,20,20,20,20,20,20,20,20,20,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,4,4,4,4,4,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,4,4,4,4,4,4,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,1,1,1,20,20,20,20,20,20,20,20,20,20,20,1,1,1,1,4,4,4,4,4,4,4,4,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
1,1,1,1,20,20,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,22,22,22,22,21,21,21,21,21,20,20,20,20,20,20,1,1,1,1,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||
4,27,27,27,27,27,1,1,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,1,1,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||
4,1,1,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,1,1,28,28,28,28,28,28,28,1,4,
|
||||
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||
4,27,27,27,27,27,1,1,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,1,1,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||
4,1,1,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||
4,27,27,27,27,27,1,1,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,1,1,1,1,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,1,1,1,1,4,
|
||||
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||
4,27,27,27,1,28,28,28,28,28,28,28,28,28,28,28,28,28,1,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,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,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,4,4,4,4,4,4,4,27,27,27,27,27,27,4,
|
||||
4,27,27,27,27,27,27,1,1,1,28,28,28,28,28,28,28,28,28,28,28,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,27,27,27,27,27,27,27,27,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,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,1,1,1,1,
|
||||
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
||||
|
|
|
@ -1,46 +1,87 @@
|
|||
tileset green
|
||||
bg 0
|
||||
hurryup 30
|
||||
hurryup 60
|
||||
endmaps
|
||||
help
|
||||
endhelp
|
||||
monsters
|
||||
1 3 28
|
||||
C 33 7
|
||||
C 11 13
|
||||
r 13 5
|
||||
r 19 21
|
||||
r 7 17
|
||||
S 28 24
|
||||
s 23 1
|
||||
1 5 28
|
||||
a 23 18
|
||||
a 14 10
|
||||
a 21 7
|
||||
r 36 12
|
||||
r 2 16
|
||||
r 2 8
|
||||
r 38 4
|
||||
r 35 20
|
||||
r 4 24
|
||||
C 23 1
|
||||
C 7 1
|
||||
P 24 28
|
||||
P 23 28
|
||||
P 25 28
|
||||
P 25 19
|
||||
@ 16 19
|
||||
@ 18 19
|
||||
@ 20 19
|
||||
@ 22 19
|
||||
Y 36 16
|
||||
Y 37 16
|
||||
Y 3 12
|
||||
Y 2 12
|
||||
Y 3 20
|
||||
Y 2 20
|
||||
Y 36 8
|
||||
Y 37 8
|
||||
Y 37 24
|
||||
Y 36 24
|
||||
@ 37 20
|
||||
@ 36 20
|
||||
@ 3 24
|
||||
@ 2 24
|
||||
@ 2 16
|
||||
@ 3 16
|
||||
@ 37 12
|
||||
@ 36 12
|
||||
@ 3 8
|
||||
@ 2 4
|
||||
@ 2 8
|
||||
@ 3 4
|
||||
@ 36 4
|
||||
@ 37 4
|
||||
@ 17 1
|
||||
@ 23 1
|
||||
P 20 1
|
||||
P 19 1
|
||||
P 21 1
|
||||
endmonsters
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,20,20,20,20,20,20,20,20,20,20,20,25,25,25,25,25,25,25,25,25,25,25,20,20,20,20,20,20,20,20,20,20,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,26,26,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,25,24,24,24,24,24,24,24,26,26,26,26,26,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,20,20,20,20,0,0,0,0,0,0,0,0,25,24,24,24,24,24,24,26,26,26,26,26,26,26,26,0,0,0,0,0,0,0,20,20,20,20,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,25,24,24,24,24,24,24,24,26,26,26,26,26,26,25,25,25,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,26,24,24,24,24,24,24,24,26,26,26,26,26,24,24,24,24,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,26,26,26,24,24,24,24,24,26,26,26,26,24,24,24,24,24,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,20,20,20,20,0,0,0,0,0,0,26,26,26,26,26,26,26,26,26,26,26,26,24,24,24,24,24,24,25,0,0,0,0,0,20,20,20,20,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,25,26,26,26,26,26,26,26,26,26,26,26,24,24,24,24,24,24,24,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,24,25,25,26,26,26,26,26,26,26,26,26,24,24,24,24,24,24,24,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,25,24,24,24,25,25,25,26,26,26,26,26,26,26,24,24,24,24,24,24,25,0,0,0,0,0,0,0,0,4,
|
||||
4,20,20,20,20,0,0,0,0,0,24,24,24,24,24,24,26,26,26,26,26,26,26,26,26,24,24,24,24,24,24,0,0,0,0,20,20,20,20,4,
|
||||
4,0,0,0,0,0,0,0,0,0,24,24,24,24,24,26,26,26,26,26,26,26,26,26,26,26,24,24,24,24,24,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,24,24,24,24,26,26,26,26,26,26,26,26,26,26,26,24,24,24,24,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,24,24,24,24,26,26,26,26,26,26,26,26,26,26,26,24,24,24,24,0,0,0,0,0,0,0,0,0,4,
|
||||
4,20,20,20,20,0,0,0,0,0,0,24,24,24,24,26,26,26,26,26,26,26,26,26,26,26,24,24,24,24,0,0,0,0,0,20,20,20,20,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,24,24,24,24,26,26,26,26,26,26,26,26,26,26,26,24,24,24,24,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,24,24,24,26,26,26,26,26,26,26,26,26,26,26,24,24,24,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,24,24,24,25,25,25,25,25,25,25,25,25,26,25,24,24,24,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,20,20,20,20,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,24,24,24,26,24,24,24,24,0,0,0,0,0,0,20,20,20,20,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,24,26,24,24,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,24,26,24,24,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,26,24,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,20,20,20,20,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,26,24,0,0,0,0,0,0,0,0,0,20,20,20,20,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,1,1,20,20,21,21,21,21,22,22,22,22,22,22,21,21,21,20,20,1,1,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,20,20,21,21,21,20,20,1,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,1,1,20,20,21,21,21,21,22,22,22,22,22,22,21,21,21,20,20,1,1,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,1,1,20,20,20,21,21,21,22,22,22,22,22,22,21,21,21,21,20,20,20,1,1,1,1,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,1,20,20,20,20,20,20,20,20,20,20,20,20,20,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,4,4,4,4,4,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,4,4,4,4,4,4,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,1,1,1,20,20,20,20,20,20,20,20,20,20,20,1,1,1,1,4,4,4,4,4,4,4,4,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
1,1,1,1,20,20,20,20,20,20,20,21,21,21,21,21,22,22,22,22,22,22,22,22,22,21,21,21,21,21,20,20,20,20,20,20,1,1,1,1,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
||||
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,
|
||||
|
|
|
@ -24,11 +24,12 @@ r 9 4
|
|||
? 27 4
|
||||
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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,4,4,4,4,4,4,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,4,4,4,4,4,4,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,1,1,1,1,1,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,3,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
|
|
|
@ -31,7 +31,9 @@ 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,
|
||||
|
|
|
@ -36,19 +36,19 @@ endmonsters
|
|||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,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,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,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,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,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,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,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,
|
||||
|
|
|
@ -39,6 +39,7 @@ Y 26 8
|
|||
@ 33 16
|
||||
Y 7 16
|
||||
endmonsters
|
||||
exitdir -2
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
|
@ -51,12 +52,12 @@ endmonsters
|
|||
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,2,20,20,21,21,21,21,21,20,20,3,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,0,0,0,0,0,0,0,0,0,4,3,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,2,4,4,0,0,0,0,0,0,0,0,0,4,4,3,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,2,4,4,4,0,0,0,0,0,0,0,0,0,4,4,4,3,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,1,1,1,1,1,1,1,1,4,4,4,4,1,1,1,0,0,0,1,1,1,4,4,4,4,1,1,1,1,1,1,1,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,28,28,28,28,28,28,28,28,28,3,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,27,27,27,27,27,27,27,27,27,4,3,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,2,4,4,27,27,27,27,27,27,27,27,27,4,4,3,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,2,4,4,4,27,27,27,27,27,27,27,27,27,4,4,4,3,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,1,1,1,1,1,1,1,1,4,4,4,4,1,1,1,27,27,27,1,1,1,4,4,4,4,1,1,1,1,1,1,1,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
|
|
|
@ -43,6 +43,7 @@ r 22 9
|
|||
r 26 13
|
||||
r 16 17
|
||||
endmonsters
|
||||
exitdir -2
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
|
@ -70,6 +71,6 @@ endmonsters
|
|||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,16,16,16,16,16,16,16,16,16,16,16,16,16,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,17,17,17,17,17,17,17,17,17,17,17,17,17,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,27,27,27,27,27,27,27,27,27,27,27,27,27,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,31,31,31,31,31,31,31,31,31,31,31,31,31,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
|
|
|
@ -24,7 +24,9 @@ Y 30 13
|
|||
Y 38 13
|
||||
Y 9 8
|
||||
Y 2 8
|
||||
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,
|
||||
|
@ -36,8 +38,8 @@ endmonsters
|
|||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,1,1,8,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,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,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,1,1,1,1,1,8,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,
|
||||
|
|
|
@ -5,6 +5,7 @@ endmaps
|
|||
help
|
||||
endhelp
|
||||
monsters
|
||||
1 18 15
|
||||
@ 11 5
|
||||
@ 12 9
|
||||
@ 27 9
|
||||
|
@ -39,7 +40,6 @@ Y 4 28
|
|||
Y 6 28
|
||||
a 31 3
|
||||
a 7 19
|
||||
1 18 15
|
||||
r 27 5
|
||||
r 16 5
|
||||
r 10 12
|
||||
|
@ -47,6 +47,7 @@ r 29 12
|
|||
r 6 15
|
||||
r 31 15
|
||||
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,
|
||||
|
@ -63,17 +64,17 @@ endmonsters
|
|||
4,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,20,20,20,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,10,10,10,10,10,10,10,10,10,10,10,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,25,25,25,25,25,0,0,0,0,0,10,10,10,10,10,10,10,10,10,10,10,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,1,11,11,11,11,11,0,0,0,0,0,0,0,0,11,11,11,11,11,1,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,4,1,1,1,1,1,11,11,11,11,11,11,11,11,1,1,1,1,1,4,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,1,1,1,1,1,1,1,1,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
|
||||
4,27,27,27,27,27,27,27,27,27,1,11,11,11,11,11,0,0,0,0,0,0,0,0,11,11,11,11,11,1,27,27,27,27,27,27,27,27,27,4,
|
||||
4,27,27,27,27,27,27,27,27,27,4,1,1,1,1,1,11,11,11,11,11,11,11,11,1,1,1,1,1,4,27,27,27,27,27,27,27,27,27,4,
|
||||
4,27,27,27,27,27,27,27,27,27,27,4,4,4,4,4,1,1,1,1,1,1,1,1,4,4,4,4,4,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,4,4,4,4,4,4,4,4,4,4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||
4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,12,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,13,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,
|
||||
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
|
||||
|
|