From 1ca89f9f6df1541919e95e9474db517a8cef19dd Mon Sep 17 00:00:00 2001 From: Rob Pearce Date: Mon, 6 Nov 2006 09:16:19 +0000 Subject: [PATCH] --- blank.bmp | Bin 822 -> 822 bytes greentiles | 41 +++ level8.dat | 50 +-- rc | Bin 88167 -> 97458 bytes rc.c | 831 +++++++++++++++++++++++++++++++++++++++-------- rc.h | 33 +- spider.bmp | Bin 1398 -> 1398 bytes spidercaught.bmp | Bin 1398 -> 1398 bytes spiderfall.bmp | Bin 2238 -> 2238 bytes spiderjump.bmp | Bin 1482 -> 1482 bytes svn-commit.tmp | 37 --- 11 files changed, 785 insertions(+), 207 deletions(-) delete mode 100644 svn-commit.tmp diff --git a/blank.bmp b/blank.bmp index 4b7beea27a4c4729c8fdea67db12ae458e22ea51..25506bae21f3bd74ea0baa79d38a6a5ef27c1d5f 100644 GIT binary patch literal 822 scmZ?rHDhJ~12Z700mK4O%*Y@C7H0s;AK`;whyVk_|4}p=0wXvC0D+VO761SM literal 822 zcmZ?rHDhJ~12Z700mK4O%*Y@C7H0s;AK`;whyVjaAVVPWD2E}3c*Q`KWT*#fAqmmi VJ*1jXlH>>>>000>>>>>>>>>>>>>>000<<<<<<00* -*00000000000000000000000000000000000000* -*00000000000000000000000000000000000000* -*00000000000000000000000000000000000000* -*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^* +*0.100000000000000000000000000000000r00* +****************000000000000000********* +*000000000000000000000000000000*0000000* +*000000000000000000000000000000*0r00000* +*000000000000000000000000000000*~~~~~~~* +*000000000000000000000000000000*0000000* +*000000000000000000000000000000*00000r0* +*0000000<<<<<<<<<<<<<<<<<<<<<<<*~~~~~~~* +*000000000000000000000000000000*0000000* +*000000000000000000000000000000*0000000* +*000000000000000000000000000000*00r0000* +*000000000000000000000000000000*~~~~~~~* +*000000000000000000000000000000*0000000* +*>>>>>>>>>>>>>>>>>>>>>>>>>00000*0000000* +*0000000000a0000000000000000000*000r000* +*000000000000000000000000000000*~~~~~~~* +*000000000000000000000000000000*0000000* +*0000a000000000000000000000^^^^*0000000* +*0;00000000000000000000000/*****0000000* +*0:0000000000000000000a00/******000r000* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/rc b/rc index f7da44312cfa31e7adaf6719c3fafed49be196b3..803ae047cc84b73ce45355bb7a54822255f29951 100755 GIT binary patch literal 97458 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 JDtj6S{|{!nD{cS) literal 88167 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 L$cl=bN1gu#YR8}t diff --git a/rc.c b/rc.c index affc7cd..73d2c37 100644 --- a/rc.c +++ b/rc.c @@ -29,21 +29,23 @@ tiletype_t fakeblock; int fruittypes[] = { 2, - 2, + 9, + 10, + 11, + -1 +}; + + +int poweruptypes[] = { 3, - 2, - 2, 4, - 2, - 2, 5, - 2, - 2, 4, -1 }; int curfruittype = 0; +int curpoweruptype = 0; int gtime = 0; int fpsticks = 0; @@ -161,8 +163,24 @@ int main (int argc, char **argv) { if (levelcomplete == 1) { addtext(318,242,32,"Level Complete!",&black); addtext(320,240,32,"Level Complete!",&yellow); - levelcompletetime = gtime; levelcomplete = 2; + } else if (levelcomplete == 2) { + int mcount = 0; + sprite_t *s2; + + /* when all monsters have become fruits */ + for (s2 = sprite->next ; s2 ; s2 = s2->next) { + if (ismonster(s2->id)) { + if (s2->id != P_CLOUD) { + mcount++; + break; + } + } + } + if (mcount == 0) { + levelcompletetime = gtime; + levelcomplete = 3; + } } @@ -183,9 +201,9 @@ int main (int argc, char **argv) { return 1; } - if (!player->dead) { + if ((!player->dead) && (!player->teleporting)) { if (keys[SDLK_RIGHT]) { - if (!player->jumping) { + if ((!player->jumping) && (!player->slamming)) { if (!isonladder(player) || player->falling || isonground(player)) { movex(player, getspeed(player)); } @@ -193,7 +211,7 @@ int main (int argc, char **argv) { player->dir = 1; } if (keys[SDLK_LEFT]) { - if (!player->jumping) { + if ((!player->jumping) && (!player->slamming)) { if (!isonladder(player) || player->falling || isonground(player)) { movex(player, -getspeed(player)); } @@ -217,25 +235,33 @@ int main (int argc, char **argv) { } } if (keys[SDLK_x]) { - if (!player->jumping) { - if (!player->falling) { - if (isonground(player) || isonladder(player)) { - int whichway; - player->climbing = B_FALSE; - if (keys[SDLK_RIGHT]) { - whichway = 1; - } else if (keys[SDLK_LEFT]) { - whichway = -1; - } else { - whichway = 0; + if (isinwater(player)) { + player->jumping = B_FALSE; + player->falling = B_FALSE; + if (!isroofabove(player)) { + player->y -= (getspeed(player)*3); + } + } else { + if (!player->jumping) { + if (!player->falling) { + if (isonground(player) || isonladder(player)) { + int whichway; + player->climbing = B_FALSE; + if (keys[SDLK_RIGHT]) { + whichway = 1; + } else if (keys[SDLK_LEFT]) { + whichway = -1; + } else { + whichway = 0; + } + jump(player, whichway); } - jump(player, whichway); } } } } if (keys[SDLK_z]) { - if (!player->netting) { + if ((!player->netting) && (!player->slamming)) { if (keys[SDLK_DOWN]) { /* slam */ if ((!player->slamming) && (isonground(player))) { @@ -278,9 +304,10 @@ int main (int argc, char **argv) { } /* check collisions */ - for (s = sprite ; s ; s = s->next) { - checkcollide(s); - } + //for (s = sprite ; s ; s = s->next) { + // checkcollide(s); + //} + checkcollide(player); /* draw text */ drawtext(); @@ -329,13 +356,15 @@ void tick(void) { } } if (gtime == curlevel->hurryuptime + 10) { - addsprite(P_CLOUD, 320,240,"cloud"); - addtext(320,240,50, "Too slow!", &red); + if (!levelcomplete) { + addsprite(P_CLOUD, 320,240,"cloud"); + addtext(320,240,50, "Too slow!", &red); + } } /* 5 seconds after level completion */ - if (levelcomplete) { - if (gtime - levelcompletetime == 5) { + if (levelcomplete == 3) { + if (gtime - levelcompletetime >= 5) { if (!player->dead) { nextlevel(); } @@ -356,22 +385,36 @@ void nextlevel(void) { } void jump(sprite_t *s, int dir) { + if (s->jumping) return; + if (s->jumptimer) return; + if (isonground(s)) { - s->jumpdir = dir; - if (s->jumpdir != 0) { - s->dir = s->jumpdir; + if (ismonster(s->id)) { + s->jumpdir = dir; + if (s->jumpdir != 0) { + s->dir = s->jumpdir; + } + s->jumptimer = 60; + } else { + s->jumpdir = dir; + if (s->jumpdir != 0) { + s->dir = s->jumpdir; + } + s->jumping = 1; + s->jumpspeed = 5; } - s->jumping = 1; - s->jumpspeed = 5; } } void die(sprite_t *s) { int mcount = 0; sprite_t *s2; + /* clouds can't die like this */ + if (s->id == P_CLOUD) return; + /* release anything we've caught */ for (s2 = sprite->next ; s2 ; s2 = s2->next) { - if (s2->caughtby == player) { + if (s2->caughtby == s) { s2->caughtby = NULL; s2->angry = B_TRUE; } @@ -381,17 +424,21 @@ void die(sprite_t *s) { s->netting = 0; s->slamming = 0; - /* any mosnters left? */ - for (s2 = sprite->next ; s2 ; s2 = s2->next) { - if (ismonster(s2->id) && !s2->dead) { - mcount++; + /* any monsters left? */ + if (!levelcomplete) { + for (s2 = sprite->next ; s2 ; s2 = s2->next) { + if (ismonster(s2->id) && !s2->dead) { + if (s2->id != P_CLOUD) { + mcount++; + break; + } + } + } + + if (mcount == 0) { + levelcomplete = 1; } } - - if (mcount == 0) { - levelcomplete = 1; - } - } void cleanup(void) { @@ -423,10 +470,10 @@ void checkcollide(sprite_t *s) { if (ismonster(s2->id) && s2->id != P_CLOUD) { xdiff = (s->x + s->netlen*s->netdir) - s2->x; if (xdiff < 0) xdiff = -xdiff; - ydiff = s->netystart - s2->y; + ydiff = s->netystart - (s2->y - s2->img->h/2); if (ydiff < 0) ydiff = -ydiff; - if ((xdiff <= s2->img->w) && (ydiff <= s2->img->h)) { + if ((xdiff <= s2->img->w/2) && (ydiff <= s2->img->h)) { s2->caughtby = s; s2->jumping = 0; s2->falling = 0; @@ -439,7 +486,7 @@ void checkcollide(sprite_t *s) { /* check for collision with us */ xdiff = s->x - s2->x; if (xdiff < 0) xdiff = -xdiff; - ydiff = (s->y-s->img->h/2) - (s2->y-s2->img->h/2); + ydiff = (s->y-(s->img->h/2)) - (s2->y-(s2->img->h/2)); if (ydiff < 0) ydiff = -ydiff; if ((xdiff <= s->img->w/2 + s2->img->w/2) && @@ -447,7 +494,7 @@ void checkcollide(sprite_t *s) { /* COLLISION! */ if (isfruit(s2->id)) { if (s == player) { - int gotscore = 500; + int gotscore = s2->score; /* kill the fruit */ s2->dead = 4; /* handle fruit effects */ @@ -459,7 +506,7 @@ void checkcollide(sprite_t *s) { s->score += gotscore; } } - if (ismonster(s2->id)) { + if (ismonster(s2->id) || isbullet(s2->id)) { if ((s == player) && (!s->invuln)) { die(s); } @@ -528,8 +575,9 @@ void movesprite(sprite_t *s) { } return; } else if (s->dead == 1) { /* just set to dead */ - s->xs = ((rand() % 7)) - 3; - s->ys = ((rand() % 3) + 2) * -1; + //s->xs = ((rand() % 7)) - 3; + s->xs = ((rand() % 14) / 2) - 3; + s->ys = ((rand() % 3) + 3) * -1; s->dead = 2; s->bounces = 0; if (s == player) { @@ -634,15 +682,57 @@ void movesprite(sprite_t *s) { if (x > (640-TILEW)) x = 640-TILEW; if (x < (TILEW)) x = TILEW; - addsprite(fruittypes[curfruittype], x, y, "Fruit"); - if (fruittypes[++curfruittype] == -1) { - curfruittype = 0; - } + addsprite(s->willbecome, x, y, "Fruit"); } } } return; + } else if (s->teleporting > 0) { + SDL_Surface *ts; + if (timer % 2 == 0) { + /* shrink */ + if (s->teleporting == 1) { + ts = rotozoomSurfaceXY(s->img,0, 0.9 , 0.9 ,0); + s->img = ts; + } else { + ts = rotozoomSurfaceXY(s->img,0, 0.9 , 0.9 ,0); + SDL_FreeSurface(s->img); + s->img = ts; + } + + if ((s->img->w <= 2) || (s->img->h <= 2)) { + /* go to tele dest */ + int x,y; + /* find destination */ + for (y = 0; y < LEVELH; y++) { + for (x = 0; x < LEVELW; x++) { + tt = gettile(curlevel->map[y*LEVELW+x]); + if (tt->id == T_TELEPORTDEST) { + /* teleport there */ + s->x = (x * TILEW) + (TILEW/2); + s->y = (y * TILEH) + TILEH-2; + } + } + } + s->teleporting = -1; + } else s->teleporting++; + } + } else if (s->teleporting < 0) { + double size; + if (timer % 2 == 0) { + /* grow */ + size = (double)-s->teleporting / 10; + + SDL_FreeSurface(s->img); + if (size >= 1) { + s->teleporting = 0; + s->img = imageset[s->id].img[F_WALK1]; + } else { + s->img = rotozoomSurfaceXY(imageset[s->id].img[F_WALK1],0,size,size,0); + s->teleporting--; + } + } } else if (s->jumping) { movex(s, s->jumpdir*getspeed(s)); return; @@ -656,7 +746,17 @@ void movesprite(sprite_t *s) { } } - if (s->id == P_RAT) { + if (s->jumptimer) { + s->jumptimer--; + if (s->jumptimer == 0) { + s->jumping = 1; + s->jumpspeed = 5; + if (s->jumpdir != 0) s->dir = s->jumpdir; + return; + } else if (s->jumptimer % 20 == 0) { + s->dir = -s->dir; + } + } else if (s->id == P_RAT) { if (!s->falling) { int move = B_FALSE; int xdiff, absxdiff; @@ -701,7 +801,7 @@ void movesprite(sprite_t *s) { } if (s->angry) { - if ((player->dead == 0) && (!s->jumping)) { + if ((player->dead == 0) && (!s->jumping) && (!s->jumptimer)) { /* if player is above us, jump */ if (player->y < s->y) { if ((xdiff >= (TILEW*2)) && (xdiff <= (TILEW*3))) { @@ -730,6 +830,107 @@ void movesprite(sprite_t *s) { } } } + } else if (s->id == P_SNAKE) { + if (!s->falling) { + int move = B_FALSE; + int xdiff, absxdiff,ydiff; + + + /* distance to player */ + xdiff = player->x - s->x; + if (xdiff < 0) absxdiff = -xdiff; + else absxdiff = xdiff; + + tt = gettileat(s->x + s->dir+getspeed(s),s->y,NULL,NULL); + /* if there's a hole in front of us */ + if (tt->solid == S_NOTSOLID) { + if ((player->y > s->y) && (s->angry)) { + /* if player is below, fall off */ + if (xdiff <= (TILEW*8)) { + move = B_TRUE; + } + } else if (player->y == s->y) { + if (s->angry) { + /* if player is at same level and close, jump */ + if ((s->dir == 1) && (xdiff > 0) && (xdiff <= (TILEW*7))) { + jump(s,1); + } else if ((s->dir == -1) && (xdiff < 0) && (xdiff >= -(TILEW*7))) { + jump(s,-1); + } + } + } + } else { + move = B_TRUE; + } + + /* shoot */ + ydiff = player->y - s->y; + if (ydiff < 0) ydiff =-ydiff; + + if (ydiff <= (TILEH*4)) { + sprite_t *ss; + int shoot = B_FALSE; + if (s->bullet == NULL) { + if ( (player->x < s->x) && (s->dir == -1) ) { + shoot = B_TRUE; + } else if ( (player->x < s->x) && (s->dir == -1) ) { + shoot = B_TRUE; + } + } + if (shoot) { + 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; + ss->owner = s; + + s->bullet = ss; + } + } + + /* either move or turn around */ + if (move) { + rv = movex(s, s->dir*getspeed(s)); + if (rv) { + /* if we couldn't move (hit a wall), turn */ + s->dir = -s->dir; + } + } else { + s->dir = -s->dir; + } + + + if (s->angry) { + if ((player->dead == 0) && (!s->jumping) && (!s->jumptimer)) { + /* if player is above us, jump */ + if (player->y < s->y) { + if ((xdiff >= (TILEW*2)) && (xdiff <= (TILEW*3))) { + /* jump right */ + jump(s, 1); + } else if ((xdiff <= -(TILEW*2)) && (xdiff >= -(TILEW*3))) { + /* jump left */ + jump(s, -1); + } else if (s->y - player->y <= (TILEH*6)) { + if ((xdiff >= 0) && (xdiff < (TILEW*2))) { + /* jump up */ + jump(s, 0); + } else if ((xdiff <= 0) && (xdiff > -(TILEW*2))) { + /* jump up */ + jump(s, 0); + } + } else { + /* jump whichever way we're facing */ + /* + s->jumpdir = s->dir; + s->jumping = 1; + s->jumpspeed = 5; + */ + } + } + } + } + } + } else if (s->id == P_BEE) { double absxs,absys; if ((s->xs == -99) || (s->ys == -99)) { @@ -749,13 +950,13 @@ void movesprite(sprite_t *s) { /* can we move? */ - tt = gettileat(s->x + absxs*((s->img->w/2)+2), s->y-(s->img->h/2),NULL,NULL); - if (tt->solid) { + tt = gettileat(s->x + absxs*((s->img->w/2)+8), s->y-(s->img->h/2),NULL,NULL); + if ((tt->solid) || (tt->spikes )) { /* turn */ s->xs = -s->xs; } tt = gettileat(s->x, s->y-(s->img->h/2) + absys*((s->img->h/2)+8),NULL,NULL); - if ((tt->solid) || (tt->id == T_SPIKES)) { + if ((tt->solid) || (tt->spikes)) { /* turn */ s->ys = -s->ys; } @@ -774,7 +975,7 @@ void movesprite(sprite_t *s) { } else if (s->falling) { /* if we are about to hit spikes, go back up */ tt = gettileat(s->x,s->y + 8,NULL,NULL); - if (tt->id == T_SPIKES) { + if (tt->spikes) { /* go back up */ s->flies = B_TRUE; s->falling = B_FALSE; @@ -803,7 +1004,7 @@ void movesprite(sprite_t *s) { /* drop if player is close */ xdiff = player->x - s->x; if (xdiff < 0) xdiff =-xdiff; - if ((player->y > s->y) && (xdiff <= (TILEW))) { + if ((player->y > s->y) && (xdiff <= (TILEW*2))) { s->flies = B_FALSE; s->falling = B_TRUE; s->fallspeed = 8; @@ -832,6 +1033,10 @@ void movesprite(sprite_t *s) { } } } + } else if (s->id == P_SPIT) { + if (movex(s, s->xs)) { + s->dead = 4; + } } else if (s->id == P_CLOUD) { if ((player->dead) || (levelcomplete)) { if ((s->img->h <= 3) || (s->img->w <= 3)) { @@ -848,17 +1053,28 @@ void movesprite(sprite_t *s) { } } else { if ((s->xs == -99) || (s->ys == -99)) { - s->ys = 0; + s->ys = 0.5; s->xs = 1; } s->x += s->xs; + s->y += s->ys; if (s->x >= (640 - s->img->w/2 - 5)) { s->xs = -s->xs; + s->x = 640 - s->img->w/2 - 6; } if (s->x <= (s->img->w/2 + 5)) { s->xs = -s->xs; + s->x = s->img->w/2 + 6; + } + if (s->y >= (480 - s->img->h/2 - 5)) { + s->ys = -s->ys; + s->y = 480 - s->img->h/2 - 6; + } + if (s->y <= (s->img->h/2 + 5)) { + s->ys = -s->ys; + s->y = s->img->h/2 + 6; } @@ -887,7 +1103,14 @@ void dotileeffects(sprite_t *s) { if (s->jumping || s->dead || s->caughtby) { return; } - + + /* check where we are */ + tt = gettileat(s->x,s->y-2,NULL,NULL); + if ((tt->id == T_TELEPORT) || (tt->id == T_TELEPORT2)) { + s->teleporting = 1; + } + + /* check under us */ tt = gettileat(s->x,s->y+3,NULL,NULL); while (!finished) { if (tt->id == T_RIGHT) { @@ -900,10 +1123,12 @@ void dotileeffects(sprite_t *s) { movex(s, -1.5); } finished = B_TRUE; - } else if (tt->id == T_SPIKES) { + } else if (tt->spikes) { if (!isfruit(s->id)) { if (!s->invuln) { - die(s); + if (s->id != P_CLOUD) { + die(s); + } } } finished = B_TRUE; @@ -991,6 +1216,7 @@ int loadlevel(int lnum) { int i; mapping_t mapping[MAXMAPPINGS]; int nmappings = 0; + tiletype_t *lasttile; level = malloc(sizeof(level_t)); @@ -1070,7 +1296,7 @@ int loadlevel(int lnum) { printf("invalid background tile id: %d\n",level->bgtileid); return B_TRUE; } - printf("Background tile id is %d (%s)\n",level->bgtileid,(gettile(level->bgtileid)->name)); + //printf("Background tile id is %d (%s)\n",level->bgtileid,(gettile(level->bgtileid)->name)); } else { printf("invalid background tile id line: '%s'\n",buf); return B_TRUE; @@ -1082,7 +1308,7 @@ int loadlevel(int lnum) { p = strtok(buf, " "); p = strtok(NULL, " "); level->hurryuptime = atoi(p); - printf("Hurryup time is %d\n",level->hurryuptime); + //printf("Hurryup time is %d\n",level->hurryuptime); } else { printf("invalid hurryup time line: '%s'\n",buf); return B_TRUE; @@ -1116,63 +1342,111 @@ int loadlevel(int lnum) { fgets(buf, BUFLEN, f); while (!feof(f)) { for (p = buf; *p; p++) { - if (*p == '~') { - tileid = T_LAND; - } else if (*p == '=') { - tileid = T_LADDER; - } else if (*p == '-') { - tileid = T_LADDERTOP; - } else if (*p == '>') { - tileid = T_RIGHT; - } else if (*p == '<') { - tileid = T_LEFT; - } else if (*p == '^') { - tileid = T_SPIKES; - } else if (*p == 'c') { - tileid = level->bgtileid; - level->initm[level->nummonsters].startx = x*TILEW+(TILEW/2); - level->initm[level->nummonsters].starty = y*TILEH+(TILEH-2); - level->initm[level->nummonsters].id = P_CLOUD; - level->nummonsters++; - } else if (*p == 'r') { - tileid = level->bgtileid; - level->initm[level->nummonsters].startx = x*TILEW+(TILEW/2); - level->initm[level->nummonsters].starty = y*TILEH+(TILEH-2); - level->initm[level->nummonsters].id = P_RAT; - level->nummonsters++; - } else if (*p == 'a') { - tileid = level->bgtileid; - level->initm[level->nummonsters].startx = x*TILEW+(TILEW/2); - level->initm[level->nummonsters].starty = y*TILEH+(TILEH-2); - level->initm[level->nummonsters].id = P_BEE; - level->nummonsters++; - } else if (*p == 's') { - tileid = level->bgtileid; - level->initm[level->nummonsters].startx = x*TILEW+(TILEW/2); - level->initm[level->nummonsters].starty = y*TILEH+TILEH; - level->initm[level->nummonsters].id = P_SPIDER; - level->nummonsters++; - } else if (*p == '*') { - tileid = T_FULL; - } else if (*p == '/') { - tileid = T_SLOPEUP; - } else if (*p == '\\') { - tileid = T_SLOPEDOWN; - } else if (*p == '1') { - tileid = level->bgtileid; - level->p1x = x; - level->p1y = y; - } else { - int n,found = 0; - /* search mappings */ - for (n = 0; n < nmappings; n++) { - if (mapping[n].ch == *p) { - tileid = mapping[n].tnum; - found = B_TRUE; - break; - } + int n,found = 0; + /* search mappings */ + for (n = 0; n < nmappings; n++) { + if (mapping[n].ch == *p) { + tileid = mapping[n].tnum; + found = B_TRUE; + break; } - if (!found) { + } + if (!found) { + + if (*p == '~') { + tileid = T_LAND; + } else if (*p == '=') { + tileid = T_LADDER; + } else if (*p == '-') { + tileid = T_LADDERTOP; + } else if (*p == '{') { + tileid = T_WATERTOP; + } else if (*p == '}') { + tileid = T_WATER; + } else if (*p == '>') { + tileid = T_RIGHT; + } else if (*p == '<') { + tileid = T_LEFT; + } else if (*p == '^') { + tileid = T_SPIKES; + } else if (*p == 'c') { + tileid = level->bgtileid; + level->initm[level->nummonsters].startx = x*TILEW+(TILEW/2); + level->initm[level->nummonsters].starty = y*TILEH+(TILEH-2); + level->initm[level->nummonsters].id = P_CLOUD; + level->nummonsters++; + } else if (*p == 'r') { + /* figure out background type */ + if (lasttile->solid) { + tileid = level->map[(y-1)*LEVELW+x]; + } else { + tileid = lasttile->id; + } + + // tileid = level->bgtileid; + level->initm[level->nummonsters].startx = x*TILEW+(TILEW/2); + level->initm[level->nummonsters].starty = y*TILEH+(TILEH-2); + level->initm[level->nummonsters].id = P_RAT; + level->nummonsters++; + } else if (*p == 'S') { + /* figure out background type */ + if (lasttile->solid) { + tileid = level->map[(y-1)*LEVELW+x]; + } else { + tileid = lasttile->id; + } + + // tileid = level->bgtileid; + level->initm[level->nummonsters].startx = x*TILEW+(TILEW/2); + level->initm[level->nummonsters].starty = y*TILEH+(TILEH-2); + level->initm[level->nummonsters].id = P_SNAKE; + level->nummonsters++; + } else if (*p == 'a') { + /* figure out background type */ + if (lasttile->solid) { + tileid = level->map[(y-1)*LEVELW+x]; + } else { + tileid = lasttile->id; + } + + level->initm[level->nummonsters].startx = x*TILEW+(TILEW/2); + level->initm[level->nummonsters].starty = y*TILEH+(TILEH-2); + level->initm[level->nummonsters].id = P_BEE; + level->nummonsters++; + } else if (*p == 's') { + /* figure out background type */ + if (lasttile->solid) { + tileid = level->map[(y-1)*LEVELW+x]; + } else { + tileid = lasttile->id; + } + + level->initm[level->nummonsters].startx = x*TILEW+(TILEW/2); + level->initm[level->nummonsters].starty = y*TILEH+TILEH; + level->initm[level->nummonsters].id = P_SPIDER; + level->nummonsters++; + } else if (*p == '*') { + tileid = T_FULL; + } else if (*p == ';') { + tileid = T_TELEPORT; + } else if (*p == ':') { + tileid = T_TELEPORT2; + } else if (*p == '.') { + tileid = T_TELEPORTDEST; + } else if (*p == '/') { + tileid = T_SLOPEUP; + } else if (*p == '\\') { + tileid = T_SLOPEDOWN; + } else if (*p == '1') { + /* figure out background type */ + if (lasttile->solid) { + tileid = level->map[(y-1)*LEVELW+x]; + } else { + tileid = lasttile->id; + } + level->p1x = x; + level->p1y = y; + } else { tileid = level->bgtileid; } } @@ -1187,6 +1461,8 @@ int loadlevel(int lnum) { return B_TRUE; } level->map[y*LEVELW+x] = tileid; + + lasttile = gettile(tileid); x++; } if (x < LEVELW+1) { @@ -1273,6 +1549,8 @@ int loadtiletypes(char *filename) { /* defaults */ t->id = 0; + t->water = B_FALSE; + t->spikes = B_FALSE; t->solid = B_TRUE; for (i = 0; i < TILEW; i++) { t->lowness[i] = 0; @@ -1283,7 +1561,7 @@ int loadtiletypes(char *filename) { } } else if (state == 1) { /* inside a definition */ if (strstr(buf, "end") == buf) { - printf("got tile %d: %s (solid=%d)\n",t->id,t->name,t->solid); + //printf("got tile %d: %s (solid=%d)\n",t->id,t->name,t->solid); state = 0; } else if (strstr(buf, "id") == buf) { p = strtok(buf, " "); @@ -1301,6 +1579,14 @@ int loadtiletypes(char *filename) { p = strtok(buf, " "); p = strtok(NULL, " "); t->solid = atoi(p); + } else if (strstr(buf, "spikes") == buf) { + p = strtok(buf, " "); + p = strtok(NULL, " "); + t->spikes = atoi(p); + } else if (strstr(buf, "water") == buf) { + p = strtok(buf, " "); + p = strtok(NULL, " "); + t->water = atoi(p); } else if (strstr(buf, "file") == buf) { p = strtok(buf, " "); p = strtok(NULL, " "); @@ -1332,6 +1618,8 @@ int loadimagesets(void) { int p,i; SDL_Surface *tempimg; + SDL_Surface *reds; + imageset[P_PLAYER].img[F_WALK1] = IMG_Load("pdwarf.png"); imageset[P_PLAYER].img[F_JUMP] = IMG_Load("pdwarfjump.png"); imageset[P_PLAYER].img[F_FALL] = IMG_Load("pdwarffall.png"); @@ -1342,6 +1630,15 @@ int loadimagesets(void) { imageset[P_PLAYER].img[F_CLIMB2] = IMG_Load("dclimb2.png"); imageset[P_PLAYER].numimages = 10; + imageset[P_SNAKE].img[F_WALK1] = IMG_Load("snake.bmp"); + imageset[P_SNAKE].img[F_JUMP] = IMG_Load("snakejump.bmp"); + imageset[P_SNAKE].img[F_FALL] = IMG_Load("snakejump.bmp"); + imageset[P_SNAKE].img[F_CAUGHT] = IMG_Load("snakecaught.bmp"); + imageset[P_SNAKE].img[F_DEAD] = IMG_Load("snakedead.bmp"); + /* next 3 are auto generated */ + imageset[P_SNAKE].numimages = 8; + + imageset[P_RAT].img[F_WALK1] = IMG_Load("rat.bmp"); imageset[P_RAT].img[F_JUMP] = IMG_Load("ratjump.bmp"); imageset[P_RAT].img[F_FALL] = IMG_Load("ratjump.bmp"); @@ -1376,6 +1673,15 @@ int loadimagesets(void) { imageset[P_CHEESE].img[F_WALK1] = IMG_Load("cheese.bmp"); imageset[P_CHEESE].numimages = 1; + imageset[P_ICECREAM].img[F_WALK1] = IMG_Load("icecream.bmp"); + imageset[P_ICECREAM].numimages = 1; + + imageset[P_CHIPS].img[F_WALK1] = IMG_Load("chips.bmp"); + imageset[P_CHIPS].numimages = 1; + + imageset[P_BURGER].img[F_WALK1] = IMG_Load("burger.bmp"); + imageset[P_BURGER].numimages = 1; + imageset[P_SPEED].img[F_WALK1] = IMG_Load("speed.bmp"); imageset[P_SPEED].numimages = 1; @@ -1385,9 +1691,16 @@ int loadimagesets(void) { imageset[P_BIGNET].img[F_WALK1] = IMG_Load("bignet.bmp"); imageset[P_BIGNET].numimages = 1; + /* bullets */ + imageset[P_SPIT].img[F_WALK1] = IMG_Load("spit.bmp"); + imageset[P_SPIT].numimages = 1; + + + + /* generate rotated/flipped images */ for (p = 0; p < MAXPTYPES; p++) { - if (!isfruit(p)) { + if (!isfruit(p) && !isbullet(p)) { tempimg = rotozoomSurface(imageset[p].img[F_DEAD],90,1,0); imageset[p].img[F_DEAD2] = SDL_DisplayFormat(tempimg); @@ -1399,12 +1712,67 @@ int loadimagesets(void) { } for (i = 0; i < imageset[p].numimages; i++) { + SDL_Surface *origi; + SDL_SetColorKey(imageset[p].img[i], SDL_SRCCOLORKEY, SDL_MapRGB(screen->format, 0, 0, 0)); + origi = imageset[p].img[i]; + + /* flipped image */ imageset[p].img[MAXFRAMES+i] = rotozoomSurfaceXY(imageset[p].img[i], 0, -1,1,0); + SDL_SetColorKey(imageset[p].img[MAXFRAMES+i], + SDL_SRCCOLORKEY, SDL_MapRGB(screen->format, 0, 0, 0)); + + + + /* angry image */ + reds = SDL_CreateRGBSurface(SDL_SWSURFACE, + origi->w, + origi->h, + origi->format->BitsPerPixel, origi->format->Rmask, + origi->format->Gmask,origi->format->Bmask, 0); + SDL_FillRect(reds, NULL, SDL_MapRGB(reds->format, 255, 0, 0)); + SDL_SetAlpha(reds, SDL_SRCALPHA,100); + + imageset[p].img[MAXFRAMES*2+i] = rotozoomSurfaceXY(origi, 0, 1,1,0); + + + SDL_BlitSurface(reds, NULL, imageset[p].img[MAXFRAMES*2+i], NULL); + SDL_FreeSurface(reds); + + temps = SDL_DisplayFormat(imageset[p].img[MAXFRAMES*2+i]); + SDL_FreeSurface(imageset[p].img[MAXFRAMES*2+i]); + imageset[p].img[MAXFRAMES*2+i] = temps; + + SDL_SetColorKey(imageset[p].img[MAXFRAMES*2+i], + SDL_SRCCOLORKEY, SDL_MapRGB(imageset[p].img[MAXFRAMES*2+i]->format, 101, 0, 0)); + + + /* flipped angry image */ + reds = SDL_CreateRGBSurface(SDL_SWSURFACE, + origi->w, + origi->h, + origi->format->BitsPerPixel, origi->format->Rmask, + origi->format->Gmask,origi->format->Bmask, 0); + SDL_FillRect(reds, NULL, SDL_MapRGB(reds->format, 255, 0, 0)); + SDL_SetAlpha(reds, SDL_SRCALPHA,100); + + imageset[p].img[MAXFRAMES*3+i] = rotozoomSurfaceXY(origi, 0, -1,1,0); + + + SDL_BlitSurface(reds, NULL, imageset[p].img[MAXFRAMES*3+i], NULL); + SDL_FreeSurface(reds); + + temps = SDL_DisplayFormat(imageset[p].img[MAXFRAMES*3+i]); + SDL_FreeSurface(imageset[p].img[MAXFRAMES*3+i]); + imageset[p].img[MAXFRAMES*3+i] = temps; + + SDL_SetColorKey(imageset[p].img[MAXFRAMES*3+i], + SDL_SRCCOLORKEY, SDL_MapRGB(imageset[p].img[MAXFRAMES*3+i]->format, 101, 0, 0)); + } } @@ -1413,23 +1781,29 @@ int loadimagesets(void) { double getspeed(sprite_t *s ) { int id = s->id; + double speed = 1; if (id == P_PLAYER) { - return s->speed; + speed = s->speed; } else if (id == P_RAT) { - if (s->angry) return 1.5; - else return 1; + if (s->angry) speed = 1.5; + else speed = 1; + } else if (id == P_SNAKE) { + if (s->angry) speed = 1.5; + else speed = 1; } else if (id == P_BEE) { - if (s->angry) return 2; - else return 1; + if (s->angry) speed = 2; + else speed = 1; } else if (id == P_SPIDER) { - if (s->angry) return 1.5; - else return 2; + if (s->angry) speed = 1.5; + else speed = 2; } else if (id == P_CHEESE) { - return 0; + speed = 0; } - return 1; + if (isinwater(s)) speed /= 2; + + return speed; } @@ -1599,6 +1973,7 @@ void killtext(text_t *t) { void setdefaults(sprite_t *s) { s->speed = 1; + s->teleporting = 0; s->climbing = 0; s->jumping = 0; s->jumpspeed = 0; @@ -1614,6 +1989,12 @@ void setdefaults(sprite_t *s) { s->dead = 0; s->angry = 0; s->invuln = 0; + s->jumptimer = 0; + + s->bullet = NULL; + s->owner = NULL; + + s->willbecome = P_CHEESE; switch (s->id) { case P_BEE: @@ -1626,6 +2007,24 @@ void setdefaults(sprite_t *s) { } + switch (s->id) { + case P_CHEESE: + s->score = 500; + break; + case P_ICECREAM: + s->score = 1000; + break; + case P_CHIPS: + s->score = 2000; + break; + case P_BURGER: + s->score = 4000; + break; + default: + break; + + } + s->caughtby = NULL; s->caughtstate = 0; @@ -1635,7 +2034,7 @@ void setdefaults(sprite_t *s) { s->timer = 0; } -int addsprite(int id, int x, int y, char *name ) { +sprite_t *addsprite(int id, int x, int y, char *name ) { sprite_t *s; if (sprite == NULL) { @@ -1684,7 +2083,7 @@ int addsprite(int id, int x, int y, char *name ) { lastsprite = s; - return B_FALSE; + return s; } int loadsprites(void) { @@ -1780,6 +2179,8 @@ void drawsprite(sprite_t *s) { /* select frame */ if (isfruit(s->id)) { frame = F_WALK1; + } else if (isbullet(s->id)) { + frame = F_WALK1; } else if (s->dead) { if (s == player) { frame = F_DEAD; @@ -1794,7 +2195,7 @@ void drawsprite(sprite_t *s) { frame = F_JUMP; } else if (s->falling) { frame = F_FALL; - } else { + } else if (!s->teleporting) { if ((s->id == P_SPIDER) && (s->ys != -99)) { frame = F_FALL; } else { @@ -1810,12 +2211,17 @@ void drawsprite(sprite_t *s) { } } + /* x-flip if required */ if (s->dir == -1) { frame += MAXFRAMES; } + /* make red if required */ + if (s->angry) { + frame += (MAXFRAMES*2); + } - if (s->id != P_CLOUD) { + if ((s->id != P_CLOUD) && (!s->teleporting)) { s->img = imageset[s->id].img[frame]; } @@ -1895,6 +2301,17 @@ void removenetting(sprite_t *s) { void killsprite(sprite_t *s) { sprite_t *nextone, *lastone; + sprite_t *s2; + + /* remove references to this sprite before removing it */ + for (s2 = sprite ; s2 ; s2 = s2->next) { + if (s2->owner == s) { + s2->owner = NULL; + } + if (s2->bullet == s) { + s2->bullet = NULL; + } + } nextone = s->next; if (nextone != NULL) { @@ -1969,6 +2386,30 @@ int isladderabove(sprite_t *s) { return B_FALSE; } +int isinwater(sprite_t *s) { + tiletype_t *tt; + tt = gettileat(s->x, s->y - s->img->h/2, NULL, NULL); + if (tt->water) { + return B_TRUE; + } + + return B_FALSE; +} + +int isroofabove(sprite_t *s) { + tiletype_t *tt; + + /* get tile above sprite's head */ + tt = gettileat(s->x, s->y - s->img->h,NULL,NULL); + if (tt->solid) return B_TRUE; + tt = gettileat(s->x + s->img->w/2, s->y - s->img->h,NULL,NULL); + if (tt->solid) return B_TRUE; + tt = gettileat(s->x - s->img->w/2, s->y - s->img->h,NULL,NULL); + if (tt->solid) return B_TRUE; + + return B_FALSE; +} + int isonground(sprite_t *s) { /* get tile below sprite's feet */ if (isongroundpoint(s, s->x, s->y)) { @@ -2031,6 +2472,8 @@ void dogravity(sprite_t *s) { if (s->dead) return; if (s->flies) return; + if (isbullet(s->id)) return; + if (isonladder(s) && !s->falling && !s->jumping) { s->falling = B_FALSE; return; @@ -2057,7 +2500,11 @@ void dogravity(sprite_t *s) { s->fallspeed = 1; } s->falling = B_TRUE; - s->y += s->fallspeed; + if (isinwater(s)) { + s->y += (s->fallspeed/2); + } else { + s->y += s->fallspeed; + } if ((timer % 10 == 0) && (s->fallspeed < FALLSPEED)) { s->fallspeed++; } @@ -2089,6 +2536,9 @@ void dogravity(sprite_t *s) { s->slamming = 0; + /* reset fruit type counter */ + curfruittype = 0; + /* kill anything we've caught */ for (s2 = sprite; s2 ; s2 = s2->next) { /* kill anything we have caught */ @@ -2097,6 +2547,12 @@ void dogravity(sprite_t *s) { tt = gettileat(s2->x,s2->y+2,NULL,NULL); /* if on ground, monster dies */ if ((tt == NULL) || (tt->solid)) { + /* becomes a fruit */ + s2->willbecome = fruittypes[curfruittype]; + /* increment fruit type */ + if (fruittypes[++curfruittype] == -1) { + curfruittype = 0; + } die(s2); pointsinc *= 2; psize += 10; @@ -2119,6 +2575,11 @@ void dogravity(sprite_t *s) { if ((xdiff <= s2->img->w) && (ydiff <= s2->img->h)) { if (s2->id != P_CLOUD) { + /* becomes a powerup */ + s2->willbecome = poweruptypes[curpoweruptype]; + if (poweruptypes[++curpoweruptype] == -1) { + curpoweruptype = 0; + } die(s2); pointsinc *= 2; psize += 10; @@ -2166,9 +2627,11 @@ int movex(sprite_t *s,double amt) { tt = gettileat(s->x, s->y, &tilex,&tiley); + if (amt > 0) amtdir = 1; else (amtdir = -1); + curx = s->x; cury = s->y; @@ -2251,6 +2714,9 @@ int dofruiteffect(sprite_t *s) { int isfruit(int id) { switch (id) { case P_CHEESE: + case P_ICECREAM: + case P_CHIPS: + case P_BURGER: case P_SPEED: case P_NUMNETS: case P_BIGNET: @@ -2261,15 +2727,35 @@ int isfruit(int id) { return B_FALSE; } +int isbullet(int id) { + if (id == P_SPIT) return B_TRUE; + + return B_FALSE; +} + int ismonster(int id) { if (id == P_RAT) return B_TRUE; if (id == P_BEE) return B_TRUE; if (id == P_SPIDER) return B_TRUE; + if (id == P_SNAKE) return B_TRUE; if (id == P_CLOUD) return B_TRUE; return B_FALSE; } +inline void drawpixel32(SDL_Surface *screen, int x, int y, SDL_Color c) +{ + Uint32 *bufp; + + /* check x/y */ + if (x >= screen->w) return; + if (y >= screen->h) return; + if (x < 0) return; + if (y < 0) return; + + bufp = (Uint32 *)screen->pixels + (y*screen->pitch / 2) + x; + *bufp = SDL_MapRGB(screen->format, c.r, c.g, c.b); +} inline void drawpixel16(SDL_Surface *screen, int x, int y, SDL_Color c) { @@ -2372,3 +2858,64 @@ void drawbox16(SDL_Surface *screen, int x1, int y1, int x2, int y2, SDL_Color *c drawline16(screen,x2,y1,x2,y2,*c); } + + +int getcolor(SDL_Surface *dest, int x, int y, SDL_Color *col) { + Uint32 pixel; + int bpp = dest->format->BytesPerPixel; + char *ppos; + unsigned char r,g,b,a; + + + ppos = (char *) dest->pixels; + + /* offset y */ + ppos += (dest->pitch * y); + /* offset x */ + ppos += (bpp * x); + + memcpy(&pixel, ppos, bpp); + + + if (dest->format->BitsPerPixel == 32) { + SDL_GetRGBA(pixel, dest->format, &r,&g,&b, &a); + col->r = r; + col->g = g; + col->b = b; + col->unused = a; + } else if (dest->format->BitsPerPixel == 16) { + SDL_GetRGB(pixel, dest->format, &r,&g,&b); + col->r = r; + col->g = g; + col->b = b; + } else if (dest->format->BitsPerPixel == 8) { + *col = dest->format->palette->colors[(Uint8)pixel]; + } + + + return 0; + +/* + bpp = dest->format->BytesPerPixel; + + if (bpp != 2) { + printf("bpp isnt 2!!!\n"); + fflush(stdout); + } + + //pixel = (Uint32 *) (dest->pixels + (y * dest->w) + x) ; + pixel = (Uint32 *) (dest->pixels + y * dest->pitch + x * bpp); + + + + SDL_GetRGB(*pixel,dest->format, + &col->r, + &col->g, + &col->b ); + + return 0; +*/ + + + +} diff --git a/rc.h b/rc.h index 6a56727..22736e4 100644 --- a/rc.h +++ b/rc.h @@ -34,7 +34,7 @@ #define S_SOLID 1 #define S_SLOPE 2 -#define MAXPTYPES 9 +#define MAXPTYPES 14 #define P_PLAYER 0 #define P_RAT 1 #define P_CHEESE 2 @@ -44,6 +44,11 @@ #define P_BEE 6 #define P_SPIDER 7 #define P_CLOUD 8 +#define P_ICECREAM 9 +#define P_CHIPS 10 +#define P_BURGER 11 +#define P_SNAKE 12 +#define P_SPIT 13 #define F_WALK1 0 #define F_JUMP 1 @@ -67,6 +72,12 @@ #define T_RIGHT 8 #define T_LEFT 9 #define T_SPIKES 10 +#define T_TELEPORT 11 +#define T_TELEPORT2 12 +#define T_TELEPORTDEST 13 +#define T_WATER 14 +#define T_WATERTOP 15 +#define T_WATERSPIKES 16 @@ -80,6 +91,8 @@ typedef struct tiletype_s { char name[SMALLBUFLEN]; int lowness[TILEW]; int solid; + int water; + int spikes; SDL_Surface *img; struct tiletype_s *next; struct tiletype_s *prev; @@ -132,8 +145,12 @@ typedef struct sprite_s { int jumping; int jumpdir; + int willbecome; + int angry; + int teleporting; + int dead; int invuln; int bounces; @@ -157,6 +174,7 @@ typedef struct sprite_s { int netystart; int timer; + int jumptimer; int moved; @@ -164,6 +182,10 @@ typedef struct sprite_s { double xs,ys; + + struct sprite_s *bullet; + struct sprite_s *owner; + double x,y; int dir; SDL_Surface *img; @@ -174,7 +196,7 @@ typedef struct sprite_s { } sprite_t; typedef struct imageset_s { - SDL_Surface *img[MAXFRAMES*2]; + SDL_Surface *img[MAXFRAMES*4]; int numimages; } imageset_t; imageset_t imageset[MAXPTYPES]; @@ -188,7 +210,7 @@ void movetext(void); void killtext(text_t *t); void removeall(void); void removetext(void); -int addsprite(int id,int x, int y, char *name); +sprite_t *addsprite(int id,int x, int y, char *name); int loadtiletypes(char *filename); tiletype_t *gettileat(int pixx,int pixy, int *tilex, int *tiley); int loadlevel(int lnum); @@ -204,6 +226,8 @@ void dogravity(sprite_t *s); void dotileeffects(sprite_t *s); int movex(sprite_t *s,double amt); void movesprite(sprite_t *s); +int isinwater(sprite_t *s); +int isroofabove(sprite_t *s); int isonground(sprite_t *s); int isongroundpoint(sprite_t *s, int x, int y); int isonladder(sprite_t *s); @@ -211,6 +235,7 @@ int isladderabove(sprite_t *s); int isfruit(int id); int dofruiteffect(sprite_t *s); int ismonster(int id); +int isbullet(int id); void killsprite(sprite_t *s); void checkcollide(sprite_t *s); void die(sprite_t *s); @@ -223,5 +248,7 @@ void tick(void); inline void drawpixel16(SDL_Surface *screen, int x, int y, SDL_Color c); +inline void drawpixel32(SDL_Surface *screen, int x, int y, SDL_Color c); inline void drawbox16(SDL_Surface *screen, int x1,int y1,int x2,int y2,SDL_Color *c,SDL_Color *fc); void drawline16(SDL_Surface *screen, int x1, int y1, int x2, int y2, SDL_Color c); +int getcolor(SDL_Surface *dest, int x, int y, SDL_Color *col); diff --git a/spider.bmp b/spider.bmp index 4c7be4e5d72008647c0ebcd5cb9053624936f8ff..c01390351cb3e03b35f747b1ed0ec66a754cf55c 100644 GIT binary patch literal 1398 zcmdUru@1s83`E_5wd%;gPAA6Bh@IbI&d2q?(j!+at8U~}h=D4$F3$Nm>Ero2N%x~bU0=S!qIUHmz7j-oZPC+?{rIau9Rz11wm4TH`9520 z8~F|N9A6=sbzFF3uus?=gv~a5e+nTnGEgBp}S*^VbLa&xO literal 1398 zcmdUru@1s83`EVqiWnK#>BPv4*!dl1K92uNuest{buFht46S1KYG0m{KAx|=)aQoW zA+VkakLkvsaI1EUr;n!4-7t{-ny-O5%H%z&5B2&-D(B&M?IDx diff --git a/spidercaught.bmp b/spidercaught.bmp index 7921af70bced2a6aa9069a8cafe0fda07be35e8c..187ae1f256c64f8f76228859897025fb95110f69 100644 GIT binary patch literal 1398 zcmds$y$-@K41~?ViWnK#>BPv4*m)i1JRI*;j+}b9ZQPoLfhw^a=R5yY?d|^9T753C z9rhmkh`q4`tl1U!&mDISc+;IvTxPxVJu>nIXZR*O1V?Fkz!lPR5tE(ML!LJ;OwRxD zmhT4QY>~PE literal 1398 zcmds$y$-@K41~?ViWnK#>BPv4*m)gh9**}4*PME|N}Pm+fhe(D=R5yY?d|^9T3#2} z31^RU#M#&Z*6fP=*N!I#yqV4?ZnNZkkF0#bBYYKJf~&NAz!lPR6O%3JCC|(Ylkpmy_e=#J}L9mMY!k(6@Xvb$Uh><~XasYJ+b`i0MN@2Ettlg&rP}cs?3Ko%<3I w%#kHQ{ze;2A{b5=W`0YbAFV4vTJeNOB@*A|m-rl6lAT^}_vbd{bwxbm z9B~dfo3uwv>4Exd$CH6Sgkczd?b0LZ;izvvxs%yR>mOjz&?UGan?|J>jw_c&MFPZL zna@C~7;Ca5BAhQLcY`UbhEH9hTN+1fC$9z7yVO^SJE1_)Y~uAPFp%XiOHeAPeHW?d zmePp*$tMdD8h)0eT;o|!fbO-n^L6qaU(1YVQxykHbNyt;trYdNFCy}ZHa`! Uc0nc_)m+=Ug(`il=Yk-Y-_V89^8f$< literal 2238 zcmcgqF%H5&3_CU^W`x-3#K;5K`4c0r>cqc_dln|WCf5V0RJkbU*iLA<-ui9I&jq=| zIpQ2}HffKX(gXeHjwb_uNW=Z>AuW;?js~}r8<~x?_5~IVU4jd8Xw)ijTp3ywMZs|m zC3MM>$hp*Fi43bahs-kb>rrW}d_tsfq#=!VaQ zc-Nz!2o-b7QLXi?CqVj$Rv7^fgAy5Llh2;SWosn_E4jt9B6nM>dh%tuuhd;80_RH> zo*+cp2w%_B{%X}47wr?_MmYY9Y?xN0_HiSe7{c7Nd~JkEh{9bmYV=eAQM6xJIu S;i~3Z*DZAEV?7rHx%~pdnbNxe diff --git a/spiderjump.bmp b/spiderjump.bmp index 0a4e0d9289ab9995530b369f2e90c644ae51ce40..6d7906efe557e69b07ffb2a9fc62497c2e4c85b9 100644 GIT binary patch delta 158 zcmX@beTsVnD~oIc7-;CJBQqGlprK*1B8#3fL;^^{L_q>THk<^j)1T-Y6ECMb? diff --git a/svn-commit.tmp b/svn-commit.tmp deleted file mode 100644 index 2d0dca9..0000000 --- a/svn-commit.tmp +++ /dev/null @@ -1,37 +0,0 @@ -initial checkin ---This line, and those below, will be ignored-- - -AM full.bmp -AM sky.bmp -A emptylevel -AM slopedown.bmp -AM right.bmp -AM laddertop.bmp -A level1.dat -AM blank.bmp -AM pdwarf.png -A Makefile.windows -AM pjump.bmp -AM ladder.bmp -AM player.bmp -AM cheese.bmp -AM pfall.bmp -A Makefile -A level.dat -AM ratdead.bmp -AM dwarf.jpg -A rc.c -A rc.h -AM land.bmp -AM ratcaught.bmp -A greentiles -AM pdwarfjump.png -AM rat.bmp -AM oldblank.bmp -A tiles.conf -AM slopeup.bmp -AM pdwarffall.png -A testlevel -AM left.bmp -AM spikes.bmp -A Makefile.posix