diff --git a/data/backgrounds/snow1.png b/data/backgrounds/snow1.png index 95ee64d..96666ff 100644 Binary files a/data/backgrounds/snow1.png and b/data/backgrounds/snow1.png differ diff --git a/data/levels/level60.dat b/data/levels/level60.dat index 46e3d3d..6bcb790 100644 --- a/data/levels/level60.dat +++ b/data/levels/level60.dat @@ -6,7 +6,7 @@ endhelp monsters 0 4 14 134 35 14 -152 19 14 +152 19 18 endmonsters exitdir 1 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, diff --git a/data/map.dat b/data/map.dat index e7d67e5..a125180 100644 --- a/data/map.dat +++ b/data/map.dat @@ -58,6 +58,7 @@ 412,level412.dat,Test Tubes 420,level420.dat,Water Feature 60,level60.dat,King Fly +601,level601.dat,NEW LEVEL 109,level109.dat,THE END SO FAR 99,level99.dat,TEST LEVEL 0,intro.dat,INTRO diff --git a/data/newtiles/ice.png b/data/newtiles/ice.png index 1aa0882..a3a0a02 100644 Binary files a/data/newtiles/ice.png and b/data/newtiles/ice.png differ diff --git a/data/newtiles/icetop.png b/data/newtiles/icetop.png index 09e870a..2ae95fd 100644 Binary files a/data/newtiles/icetop.png and b/data/newtiles/icetop.png differ diff --git a/data/tiledefs.dat b/data/tiledefs.dat index 71574f7..65f8837 100644 --- a/data/tiledefs.dat +++ b/data/tiledefs.dat @@ -559,3 +559,21 @@ id 5 solid 0 file newtiles/clothbg.png end + +tile icicle +id 5 +solid 0 +file newtiles/icicle.png +end + +tile icebg +id 5 +solid 0 +file newtiles/icebg.png +end + +tile icebridge +id 17 +solid 2 +file newtiles/icebridge.png +end diff --git a/defs.h b/defs.h index 1c5d2cb..b01c789 100644 --- a/defs.h +++ b/defs.h @@ -397,7 +397,7 @@ #define S_SLOPE 2 // Sprite types -#define MAXPTYPES 153 +#define MAXPTYPES 154 #define P_PLAYER 0 #define P_RAT 1 #define P_CHEESE 2 @@ -556,6 +556,7 @@ #define P_WINGBOOTS 150 #define P_BIGUMBRELLA 151 #define P_KINGFLY 152 +#define P_SUPERUMBRELLA 153 #define FLY_FLYTIME 150 diff --git a/rc.c b/rc.c index a74f237..f0e14fd 100644 --- a/rc.c +++ b/rc.c @@ -1657,6 +1657,9 @@ void die(sprite_t *s) { case P_KINGSNAIL: addsprite(P_BIGSCUBA, (640/2), 0, "bigscuba"); break; + case P_KINGFLY: + addsprite(P_SUPERUMBRELLA, (640/2), 0, "bigumbrella"); + break; } } else if ((s->id == P_SNAIL) && (s->lives > 0)) { // snails can't die but turn into slugs instead sprite_t *newsp; @@ -3626,13 +3629,17 @@ int movesprite(sprite_t *s) { } s->timer2--; - if (s->timer2 == 0) { - if (s->timer1 == KFS_FLY1) { - s->timer1 = KFS_HORZWAIT; - s->timer3 = s->y; - } else { - s->timer1 = KFS_VERTWAIT; - s->timer3 = s->x; + if (s->timer2 <= 0) { + if ((s->y >= s->img->h*4) && (s->y <= (480-s->img->h*2))) { + if ((s->x >= s->img->w) && (s->x <= 640-(s->img->w))) { + if (s->timer1 == KFS_FLY1) { + s->timer1 = KFS_HORZWAIT; + s->timer3 = s->y; + } else { + s->timer1 = KFS_VERTWAIT; + s->timer3 = s->x; + } + } } } } else if (s->timer1 == KFS_HORZWAIT) { @@ -6734,6 +6741,8 @@ void dogravity(sprite_t *s) { ontheground = B_FALSE; } else if ((s->id == P_BIGSCUBA) && (s->y < 480/2)) { ontheground = B_FALSE; + } else if ((s->id == P_SUPERUMBRELLA) && (s->y < 480/2)) { + ontheground = B_FALSE; } else { ontheground = isonground(s); } @@ -7365,12 +7374,34 @@ int dofruiteffect(sprite_t *pp, sprite_t *s) { if (player) { player->permmask = B_TRUE; player->hasmask = B_TRUE; - addoutlinetext(player->x,player->y - player->img->h/2, TEXTSIZE_LIFE, "SUPER MASK!", &cyan,&black,POINTSDELAY, TT_NORM); + if ((player->lives > 0) && !player->dead) { + addoutlinetext(player->x,player->y - player->img->h/2, TEXTSIZE_LIFE, "SUPER MASK!", &cyan,&black,POINTSDELAY, TT_NORM); + } } if (player2) { player2->permmask = B_TRUE; player2->hasmask = B_TRUE; - addoutlinetext(player2->x,player2->y - player2->img->h/2, TEXTSIZE_LIFE, "SUPER MASK!", &cyan,&black,POINTSDELAY, TT_NORM); + if ((player2->lives > 0) && !player2->dead) { + addoutlinetext(player2->x,player2->y - player2->img->h/2, TEXTSIZE_LIFE, "SUPER MASK!", &cyan,&black,POINTSDELAY, TT_NORM); + } + } + return B_TRUE; + } else if (s->id == P_SUPERUMBRELLA) { + // both players + playfx(FX_POWERUP); + if (player) { + player->permumbrella = B_TRUE; + player->umbrella = B_TRUE; + if ((player->lives > 0) && !player->dead) { + addoutlinetext(player->x,player->y - player->img->h/2, TEXTSIZE_LIFE, "SUPER UMBRELLA!", &cyan,&black,POINTSDELAY, TT_NORM); + } + } + if (player2) { + player2->permumbrella = B_TRUE; + player2->umbrella = B_TRUE; + if ((player2->lives > 0) && !player2->dead) { + addoutlinetext(player2->x,player2->y - player2->img->h/2, TEXTSIZE_LIFE, "SUPER UMBRELLA!", &cyan,&black,POINTSDELAY, TT_NORM); + } } return B_TRUE; } else if (s->id == P_NUMNETS) { @@ -11852,7 +11883,15 @@ void doplayermovement(sprite_t *pl) { } } - } + if (pl->falling) { + if (pl->umbrella) pl->umbrellaup = B_TRUE; + } + + } else { + if (pl->falling) { + if (pl->umbrella) pl->umbrellaup = B_FALSE; + } + } if (keydown(pnum,KEY_DOWN)) { if ((pl->swimming) && (pl->hasmask)) { // swimming @@ -11869,15 +11908,6 @@ void doplayermovement(sprite_t *pl) { pl->x = ladderx; } } - - if (pl->falling) { - if (pl->umbrella) pl->umbrellaup = B_TRUE; - } - - } else { - if (pl->falling) { - if (pl->umbrella) pl->umbrellaup = B_FALSE; - } } // Jump if (keydown(pnum,KEY_JUMP)) { diff --git a/shared.c b/shared.c index d48c9ef..6edc999 100644 --- a/shared.c +++ b/shared.c @@ -1604,6 +1604,9 @@ int loadimagesets(void) { loadspriteimage(P_BIGUMBRELLA,F_WALK1, "sprites/bigumbrella.png"); imageset[P_BIGUMBRELLA].numimages = 1; + loadspriteimage(P_SUPERUMBRELLA,F_WALK1, "sprites/superumbrella.png"); + imageset[P_SUPERUMBRELLA].numimages = 1; + loadspriteimage(P_CAMERA,F_WALK1, "sprites/camera.png"); imageset[P_CAMERA].numimages = 1; @@ -2459,6 +2462,7 @@ int isfruit(int id) { /* super powerups */ case P_BIGSPEED: case P_BIGSCUBA: + case P_SUPERUMBRELLA: return FT_SUPER; /* permenant powerups */ case P_SPEED: @@ -3373,6 +3377,7 @@ void setfruitinfo(void) { setinfo(P_HELMET, "Helmet","Gives you a suit of armour which will protect you from death.", "helmet.png"); setinfo(P_BIGSPEED, "Big Speed Up", "Makes you walk faster, permenantly!", "bigspeed.png"); setinfo(P_BIGSCUBA, "Big Scuba Mask", "Permenantly gives you fast underwater movement.", "bigscuba.png"); + setinfo(P_SUPERUMBRELLA, "Big Umbrella", "Bestows you with an umbrella which can survive death!", "superumbrella.png"); setinfo(P_MASKPOWERUP, "Scuba Mask", "Allows you to move fast underwater.", "maskpowerup.png"); setinfo(P_WINGBOOTS, "Winged Boots", "These magical boots cause you to grow wings, allowing to you jump again while in mid-air!", "wingboots.png"); @@ -3404,7 +3409,7 @@ void setfruitinfo(void) { setinfo(P_MAGNET, "Magnet", "Collecting this powerup will align the magnetic forces of the earth in your favour, attracting all nearby fruits towards you.", "magnet.png"); setinfo(P_BADMAGNET, "Red Skull", "This skull curses you and will repel fruits away from you, denying you access to them!", "badmagnet.png"); setinfo(P_JETPACK, "Jetpack", "For the remainder of the current level, the jetpack's thrust will add to your jumping ability!", "jetpack.png"); - setinfo(P_UMBRELLA, "Umbrella", "Slows your descent, giving you more time to contemplate your rat eradication quest.", "umbrella.png"); + setinfo(P_UMBRELLA, "Umbrella", "Slows your descent, giving you more time to contemplate your rat eradication quest. Activate this useful item by holding UP while falling.", "umbrella.png"); setinfo(P_CAMERA, "Camera", "Creates a bright flash of light, blinding all enemies.", "camera.png"); setinfo(P_ZAPPOWERUP, "Bug Zapper", "Zaps nearby enemies with miniature bolts of lightning", "zapper.png"); setinfo(P_SKULL, "Green Skull", "Avoid these at all costs! The green skull will shrink your net to miniscule proportions for the remainder of the level.", "skull.png"); @@ -4088,27 +4093,29 @@ void drawplayer(sprite_t *s, SDL_Rect *where) { // draw umbrella if (s->umbrella && s->umbrellaup) { - if (!s->swimming && !s->climbing) { - SDL_Rect umarea; - if (s->netting) { - if (s->dir == D_RIGHT) { - umarea.x = s->x - 11 - 10; + if ((levelcomplete != LV_CLOUD) && (levelcomplete != LV_CLOUDLOOP)) { + if (!s->swimming && !s->climbing) { + SDL_Rect umarea; + if (s->netting) { + if (s->dir == D_RIGHT) { + umarea.x = s->x - 11 - 10; + } else { + umarea.x = s->x - 11 + 10; + } + umarea.y = s->y - s->img->h - 2; + } else if (s->falling) { + if (s->dir == D_RIGHT) { + umarea.x = s->x - 11 - 8; + } else { + umarea.x = s->x - 11 + 8; + } + umarea.y = s->y - s->img->h - 9; } else { - umarea.x = s->x - 11 + 10; + umarea.x = s->x - 11; + umarea.y = s->y - s->img->h - 2; } - umarea.y = s->y - s->img->h - 2; - } else if (s->falling) { - if (s->dir == D_RIGHT) { - umarea.x = s->x - 11 - 8; - } else { - umarea.x = s->x - 11 + 8; - } - umarea.y = s->y - s->img->h - 9; - } else { - umarea.x = s->x - 11; - umarea.y = s->y - s->img->h - 2; + doblit(imageset[P_BIGUMBRELLA].img[F_WALK1], screen, &umarea); } - doblit(imageset[P_BIGUMBRELLA].img[F_WALK1], screen, &umarea); } } diff --git a/website/info.html b/website/info.html index dc5e7b3..59786a9 100644 --- a/website/info.html +++ b/website/info.html @@ -49,7 +49,7 @@
Powerup BellRings if a permenant powerup is going to appear on the level
HoneyCoats your net in a layer of sticky honey, allowing it to pick up fruits from afar.
Scuba MaskAllows you to move fast underwater. -
UmbrellaSlows your descent, giving you more time to contemplate your rat eradication quest. +
UmbrellaSlows your descent, giving you more time to contemplate your rat eradication quest. Activate this useful item by holding UP while falling.
Winged BootsThese magical boots cause you to grow wings, allowing to you jump again while in mid-air!
CardKeep a look out for these useful items. Collect a full poker hand for a secret bonus!  Temporary Powerups @@ -88,5 +88,6 @@ Super Powerups
Big Speed UpMakes you walk faster, permenantly!
Big Scuba MaskPermenantly gives you fast underwater movement. - +
Big UmbrellaBestows you with an umbrella which can survive death! +