From feb4ae56151acc074f668f8994b072e23f2d37e2 Mon Sep 17 00:00:00 2001 From: Rob Pearce Date: Wed, 29 Oct 2008 23:00:12 +0000 Subject: [PATCH] Added new powerup - machine gun --- data/sounds/alarm.wav | Bin 0 -> 57834 bytes data/sounds/gun.wav | Bin 0 -> 6470 bytes data/sprites/gunner.png | Bin 0 -> 392 bytes defs.h | 15 +- globals.h | 1 + rc.c | 308 +++++++++++++++++++++++++++------------- shared.c | 40 +++++- 7 files changed, 262 insertions(+), 102 deletions(-) create mode 100644 data/sounds/alarm.wav create mode 100644 data/sounds/gun.wav create mode 100644 data/sprites/gunner.png diff --git a/data/sounds/alarm.wav b/data/sounds/alarm.wav new file mode 100644 index 0000000000000000000000000000000000000000..d6abc618a20975faaa93053b32d5a2c23bd60bcc GIT binary patch literal 57834 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 P;k2%(=Gp36oyPeO>MA7) literal 0 HcmV?d00001 diff --git a/data/sounds/gun.wav b/data/sounds/gun.wav new file mode 100644 index 0000000000000000000000000000000000000000..6e0fd6feb95ccf4c0326bb7af3e49907581be46a GIT binary patch literal 6470 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 literal 0 HcmV?d00001 diff --git a/data/sprites/gunner.png b/data/sprites/gunner.png new file mode 100644 index 0000000000000000000000000000000000000000..fe9e24bb513bd9428ba12fc8c0687ac848e52acc GIT binary patch literal 392 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3&Vd9T(EcfWS|IVfk$L9 z0|U1(2s1Lwnj--eWH0gbb!ET7CC8wt6>b!D2`FS;;u=xnoS&PUnpeW$nvz+Pnxc?Y zsSuD@nxhb$ky@0Sn5U4IU!)Ko;GC0LkXTfrqYzMzU0dk5i=$xk_tzEQ>=^Q%7kAhdzAA3d_~X0lMXtf`vzI*Iu-G znqgs{aVjpowerup == PW_CLOCK) { Mix_ResumeMusic(); losepowerup(player); } else if ((curlevel->iced == WATER_INPROGRESS) || (curlevel->iced == WATER_COMPLETE)) { curlevel->iced = B_FALSE; undoflood(); + } else if (player->powerup == PW_GUNNER) { + losepowerup(player); } // kill all cards, so we don't have a pokereffect during endoflevel @@ -442,6 +449,11 @@ int main (int argc, char **argv) { } } } + if (player->powerup == PW_GUNNER) { // red overlay for machine gunner + if (levelcomplete != LV_DOPOKER) { + SDL_BlitSurface(redbox,NULL,screen,NULL); + } + } /********************************************** * Move sprites @@ -733,11 +745,22 @@ int main (int argc, char **argv) { */ flip(); + + /********************************************** + * Timers + */ if (!paused) { if (++timer == 100) timer = 0; } if (toggletimer > 0) toggletimer--; + + if (player->powerup == PW_GUNNER) { + // delay between shots + if (gundelay > 0) { + gundelay--; + } + } fpscount++; tick(); @@ -796,8 +819,9 @@ void tick(void) { } } - // handle clock effect + // handle visual countdown timers if (levelcomplete == LV_INPROGRESS) { + // clock if (player->powerup == PW_CLOCK) { char tempm[SMALLBUFLEN]; // text @@ -837,6 +861,24 @@ void tick(void) { undoflood(); } } + // handle gunner effect + if (player->powerup == PW_GUNNER) { + char tempm[SMALLBUFLEN]; + // text + if (guntime > 0) { + sprintf(tempm, "%d",guntime); + addoutlinetext(320,120,TEXTSIZE_LEVEL, tempm, &red,&black,15, TT_NORM); + } + // never reach hurryup time + resethurryup(curlevel); + + // decrement counter + guntime--; + if (guntime < 0) { + // finished! + losepowerup(player); + } + } } @@ -1595,6 +1637,10 @@ int movesprite(sprite_t *s) { int rv; tiletype_t *tt; + if ((s == player) && (player->powerup == PW_GUNNER)) { + return B_FALSE; + } + if (levelcomplete == LV_INIT) { // most things can't move in this state @@ -1928,9 +1974,11 @@ if (s->id == P_PUFF) printf("PUFF WITH DOOMCOUNT!\n"); // appeared on top of us if ((xdiff <= player->img->w/2 + newsp->img->w/2) && (ydiff <= player->img->h/2 + newsp->img->h/2)) { - // bonus! - getfruit(player, newsp, 4); - addoutlinetext(player->x,player->y - (player->img->h*1.5), TEXTSIZE_MULTI, "Nice catch!", &green,&black,MULTIDELAY, TT_NORM); + if ((!player->dead) && (player->powerup != PW_GUNNER)) { + // bonus! + getfruit(player, newsp, 4); + addoutlinetext(player->x,player->y - (player->img->h*1.5), TEXTSIZE_MULTI, "Nice catch!", &green,&black,MULTIDELAY, TT_NORM); + } } } @@ -3104,6 +3152,13 @@ void dotileeffects(sprite_t *s) { return; } + // no tile efffects for machine gun + if (player->powerup == PW_GUNNER) { + if (s == player) { + return; + } + } + /* check where we are */ tt = gettileat(s->x,s->y-2,&tilex,&tiley); @@ -4396,6 +4451,7 @@ void dogravity(sprite_t *s) { tiletype_t *tt; int tilex,tiley; + if (s->id == P_PINKCLOUD) return; // only player can move if you have a clock @@ -4405,6 +4461,13 @@ void dogravity(sprite_t *s) { } } + // no gravity for player if you have the machine gun + if (player->powerup == PW_GUNNER) { + if (s == player) { + return; + } + } + // if we were on a trampoline and are now not, it releases */ tt = gettileat(s->x,s->y,&tilex,&tiley); if (s->ontramp) { @@ -5467,6 +5530,15 @@ int dofruiteffect(sprite_t *s) { addoutlinetext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,&black,POINTSDELAY, TT_NORM); player->doublejump = B_TRUE; return B_TRUE; + } else if (s->id == P_GUN) { + playfx(FX_ALARM); + sprintf(tempm, "Machine gunner!"); + gunorigx = player->x; + gunorigy = player->y; + guntime = 10; + gundelay = 0; // used to control shooting speed + player->powerup = PW_GUNNER; + return B_TRUE; } else if (s->id == P_SKULL) { playfx(FX_SKULL); sprintf(tempm, "Power Down!"); @@ -5661,6 +5733,8 @@ int initsound(void) { loadfx(FX_SKULL, "skull.wav"); loadfx(FX_1UP, "1up.wav"); loadfx(FX_CATCH, "catch.wav"); + loadfx(FX_GUN, "gun.wav"); + loadfx(FX_ALARM, "alarm.wav"); // load sound effects for (i = 0; i < MAXFX; i++) { @@ -6126,7 +6200,11 @@ void checkcollideall(void) { /* check collisions for player and effects */ for (s = sprite ; s ; s = s->next) { - if ((s == player) || needscollisions(s->id)) { + if (s == player) { + if (player->powerup != PW_GUNNER) { + checkcollide(s); + } + } else if (needscollisions(s->id)) { checkcollide(s); } } @@ -7220,106 +7298,138 @@ if (cheat) { Player movement ************************************************************/ if ((!paused) && (!levelcomplete != LV_DOPOKER) && (levelcomplete != LV_CLOUDLOOP)) { - if ((!player->dead) && (!player->teleporting)) { - int moveok = B_FALSE; - if (player->climbing) { - tiletype_t *tt; - // can only move left/right if we're at the bottom of a ladder - tt = gettileat(player->x,player->y, NULL,NULL); - if (tt->solid) { - moveok = B_TRUE; + if (player->powerup == PW_GUNNER) { + // move crosshairs + if (keydown(SDLK_RIGHT)) { + if (player->x < 640-(TILEW/2)) { + player->x += GUNNERSPEED; + } + } + if (keydown(SDLK_LEFT)) { + if (player->x > (TILEW/2)) { + player->x -= GUNNERSPEED; + } + } + if (keydown(SDLK_DOWN)) { + if (player->y < 480-(TILEH/2)) { + player->y += GUNNERSPEED; } - tt = gettileat(player->x,player->y+TILEH, NULL,NULL); - if (tt->solid ) { - moveok = B_TRUE; - } - } else moveok = B_TRUE; - - if (moveok) { - if (keydown(SDLK_RIGHT)) { - if (canmove(player)) { - movex(player, getspeed(player)); - } - if (canturn(player)) { - player->dir = D_RIGHT; - } - } else if (keydown(SDLK_LEFT)) { - if (canmove(player)) { - movex(player, -getspeed(player)); - } - if (canturn(player)) { - player->dir = D_LEFT; - } - } } - if (keydown(SDLK_UP)) { - if (!player->netting && !player->slamming && !player->jumping) { - if (player->climbing) { - int ladderx = isladderabove(player); - // if tile above is non-solid, or a ladder - if (ladderx || !isroofabove(player)) { - // lock to ladder + if (player->y > (TILEH/2)) { + player->y -= GUNNERSPEED; + } + } + if (keydown(SDLK_z)) { + // shoot - add explosion + if (gundelay == 0) { + playfx(FX_GUN); + addsprite(P_SMASH, player->x, player->y+(TILEH/2), "gunexplosion"); + gundelay = GUNNERDELAY; + } + } + } else { + if ((!player->dead) && (!player->teleporting)) { + int moveok = B_FALSE; + if (player->climbing) { + tiletype_t *tt; + // can only move left/right if we're at the bottom of a ladder + tt = gettileat(player->x,player->y, NULL,NULL); + if (tt->solid) { + moveok = B_TRUE; + } + tt = gettileat(player->x,player->y+TILEH, NULL,NULL); + if (tt->solid ) { + moveok = B_TRUE; + } + } else moveok = B_TRUE; + + if (moveok) { + if (keydown(SDLK_RIGHT)) { + if (canmove(player)) { + movex(player, getspeed(player)); + } + if (canturn(player)) { + player->dir = D_RIGHT; + } + } else if (keydown(SDLK_LEFT)) { + if (canmove(player)) { + movex(player, -getspeed(player)); + } + if (canturn(player)) { + player->dir = D_LEFT; + } + } + } + + if (keydown(SDLK_UP)) { + if (!player->netting && !player->slamming && !player->jumping) { + if (player->climbing) { + int ladderx = isladderabove(player); + // if tile above is non-solid, or a ladder + if (ladderx || !isroofabove(player)) { + // lock to ladder + if (ladderx) { + player->x = ladderx; // lock to ladder + } + // continue climbing + player->y -= getspeed(player); + player->jumping = 0; + player->falling = 0; + player->climbing = B_TRUE; + player->moved = MV_WALK; + } + } else {// not climbing + int ladderx = isladderabove(player); if (ladderx) { player->x = ladderx; // lock to ladder + // start climbing + player->y -= getspeed(player); + player->jumping = 0; + player->falling = 0; + player->climbing = B_TRUE; + player->moved = MV_WALK; } - // continue climbing - player->y -= getspeed(player); - player->jumping = 0; - player->falling = 0; - player->climbing = B_TRUE; - player->moved = MV_WALK; + } - } else {// not climbing - int ladderx = isladderabove(player); - if (ladderx) { - player->x = ladderx; // lock to ladder - // start climbing - player->y -= getspeed(player); - player->jumping = 0; - player->falling = 0; - player->climbing = B_TRUE; - player->moved = MV_WALK; - } - } - } - } - if (keydown(SDLK_DOWN)) { - if (!player->netting && !player->slamming && !player->jumping) { - int ladderx = isonladder(player); - if (ladderx) { - player->y += getspeed(player); - player->jumping = 0; - player->falling = 0; - player->climbing = B_TRUE; - player->moved = MV_WALK; - // lock player to centre of ladder - player->x = ladderx; - } - } - } - // Jump - if (keydown(SDLK_x)) { - trytojump(player); - } else if (player->jumping && player->doublejump) { - // have to let go of jump button to double jump - if (!player->doublejumpready) { - player->doublejumpready = B_TRUE; - } - } - // Shoot - if (keydown(SDLK_z)) { + } if (keydown(SDLK_DOWN)) { - trytoslam(player); - } else { - trytoshoot(player); + if (!player->netting && !player->slamming && !player->jumping) { + int ladderx = isonladder(player); + if (ladderx) { + player->y += getspeed(player); + player->jumping = 0; + player->falling = 0; + player->climbing = B_TRUE; + player->moved = MV_WALK; + // lock player to centre of ladder + player->x = ladderx; + } + } + } + // Jump + if (keydown(SDLK_x)) { + trytojump(player); + } else if (player->jumping && player->doublejump) { + // have to let go of jump button to double jump + if (!player->doublejumpready) { + player->doublejumpready = B_TRUE; + } + } + // Shoot + if (keydown(SDLK_z)) { + if (keydown(SDLK_DOWN)) { + trytoslam(player); + } else { + trytoshoot(player); + } } - } - // Slam - if (keydown(SDLK_c)) { - trytoslam(player); + // Slam + if (keydown(SDLK_c)) { + trytoslam(player); + } } } } @@ -8635,5 +8745,13 @@ void stopteleporting(sprite_t *s) { } void losepowerup(sprite_t *s) { + if (s->powerup == PW_GUNNER) { + // go back to original position + player->x = gunorigx; + player->y = gunorigy; + // invulnerable for a little while + player->invuln = INVULNTIME/2; + } s->powerup = B_FALSE; + } diff --git a/shared.c b/shared.c index 88e1e8c..cfd37ca 100644 --- a/shared.c +++ b/shared.c @@ -1007,7 +1007,6 @@ int loadimagesets(void) { healthbar[HF_RED] = IMG_Load(tempfile); // green square for flyspray effect - greenbox = SDL_CreateRGBSurface(SDL_SWSURFACE, screen->w, screen->h, @@ -1016,6 +1015,15 @@ int loadimagesets(void) { SDL_FillRect(greenbox, NULL, SDL_MapRGB(greenbox->format, 0, 150, 0)); SDL_SetAlpha(greenbox, SDL_SRCALPHA,80); + // red square for gunner effect + redbox = SDL_CreateRGBSurface(SDL_SWSURFACE, + screen->w, + screen->h, + screen->format->BitsPerPixel, screen->format->Rmask, + screen->format->Gmask,screen->format->Bmask, 0); + SDL_FillRect(redbox, NULL, SDL_MapRGB(greenbox->format, 150, 0, 0)); + SDL_SetAlpha(redbox, SDL_SRCALPHA,80); + loadspriteimage(P_PLAYER,F_WALK1, "sprites/pdwarf.png"); loadspriteimage(P_PLAYER,F_JUMP, "sprites/pdwarfjump.png"); @@ -1299,6 +1307,9 @@ int loadimagesets(void) { loadspriteimage(P_WINGBOOTS,F_WALK1, "sprites/wingboots.png"); imageset[P_WINGBOOTS].numimages = 1; + loadspriteimage(P_GUN,F_WALK1, "sprites/gunner.png"); + imageset[P_GUN].numimages = 1; + // wings loadspriteimage(P_WINGLEFT,0, "sprites/wingleft0.png"); // standing loadspriteimage(P_WINGLEFT,1, "sprites/wingleft1.png"); // jumping @@ -1532,6 +1543,11 @@ void drawsprite(sprite_t *s) { SDL_Rect area; int frame = 0; + // don't show caught mosnters in gunner mode + if ((s != player) && (s->caughtby == player) && (player->powerup == PW_GUNNER)) { + return; + } + if ((s == player) && (levelcomplete == LV_NEXTLEV)) { frame = F_SHOOT; if (curlevel->exitdir == D_RIGHT) { @@ -1957,6 +1973,7 @@ int isfruit(int id) { case P_CANNONPOWERUP: case P_CLOVER: case P_ACCORDION: + case P_GUN: case P_SKULL: return FT_TEMP; /* flowers */ @@ -2571,7 +2588,7 @@ int loadlevellist(void) { int randompowerup(void) { int num; - num = rand() % 31; + num = rand() % 32; switch (num) { case 0: @@ -2637,6 +2654,8 @@ int randompowerup(void) { return P_WINGBOOTS; case 30: return P_SKULL; + case 31: + return P_GUN; } } @@ -2768,6 +2787,7 @@ void setfruitinfo(void) { setinfo(P_UFO, "UFO", "Calls in a powerful meteor strike!", "ufo.png"); setinfo(P_TAP, "Tap", "The leaky tap will flood the level with water for 20 seconds, allowing you to access hard to reach areas.", "tap.png"); setinfo(P_ACCORDION, "Accordion", "Makes your nets enormous", "accordion.png"); + setinfo(P_GUN, "Gunner", "Temporarily equips you with a super powerful machine gun!", "gunner.png"); setinfo(P_SKULL, "Skull", "Avoid these at all costs! The skull will cause you to lose all net powerups.", "skull.png"); setinfo(P_CLOVER, "4-Leaf Clover", "Increases your luck...", "clover.png"); @@ -3173,7 +3193,21 @@ void drawplayer(sprite_t *s, SDL_Rect *where) { #ifndef __EDITOR - // only raw wings in certain states + if (player->powerup == PW_GUNNER) { + // just draw crosshairs + // box + drawbox16(screen, s->x-(TILEW/2),s->y-(TILEH/2),s->x+(TILEW/2),s->y+(TILEH/2), &green, NULL); + // littlebox + drawbox16(screen, s->x-1,s->y-1,s->x+1,s->y+1, &green, NULL); + // lines + drawline16(screen, s->x, 0, s->x, s->y-(TILEH/2), green); // top + drawline16(screen, s->x, s->y+(TILEH/2), s->x, 480-1, green); // bottom + drawline16(screen, 0, s->y, s->x-(TILEW/2), s->y, green); // left + drawline16(screen, s->x+(TILEW/2), s->y, 640-1, s->y, green); // right + return; + } + + // only draw wings in certain states switch (levelcomplete) { case LV_NEXTLEV: case LV_CLOUDLOOP: