From 9146ee5ab1e8ae18e92df785560904a6bbfce1a7 Mon Sep 17 00:00:00 2001 From: Rob Pearce Date: Sat, 17 Aug 2013 21:53:59 +0000 Subject: [PATCH] - [+] when weighing a trampoline down, move sprite down to lowness of "trampdown" tile. - [+] check difficulty curve - [+] Level 1-17 (mountaineering) - [+] move to level 19 due to difficulty. - [+] increase hurryup period to 60 seconds - [+] 2-9 a lot harder now that planets shoot - move later. - [+] sand castle - unintentionally hard to get up. fixed - [+] don't draw anchor powerup on king cloud - [+] don't create magic lamp coins on top of spikes - [+] redraw egg.png (ant food from king ant) - [+] draw player 2 death text in correct player colour - [+] allow player 1 be mrs dwarf - press 1up/2up again on mode selection screen --- data/levels/mountaineering.dat | 2 +- data/levels/sandcastle.dat | 2 - data/map.dat | 6 +- data/sprites/egg.png | Bin 1272 -> 1087 bytes data/sprites/fireup1.png | Bin 0 -> 281 bytes data/sprites/fireup2.png | Bin 0 -> 282 bytes data/sprites/fireup3.png | Bin 0 -> 279 bytes data/sprites/fireup4.png | Bin 0 -> 282 bytes data/sprites/p1ready_alt.png | Bin 0 -> 37671 bytes data/sprites/p2ready_alt.png | Bin 0 -> 15118 bytes defs.h | 2 +- globals.h | 1 + rc.c | 153 ++++++++++++++++++++++----------- rc.h | 1 + shared.c | 64 +++++++------- 15 files changed, 145 insertions(+), 86 deletions(-) create mode 100644 data/sprites/fireup1.png create mode 100644 data/sprites/fireup2.png create mode 100644 data/sprites/fireup3.png create mode 100644 data/sprites/fireup4.png create mode 100644 data/sprites/p1ready_alt.png create mode 100644 data/sprites/p2ready_alt.png diff --git a/data/levels/mountaineering.dat b/data/levels/mountaineering.dat index 928885f..eaeddb3 100644 --- a/data/levels/mountaineering.dat +++ b/data/levels/mountaineering.dat @@ -1,6 +1,6 @@ bgfile forest.png bg 0 -hurryup 30 +hurryup 60 help Jump in the direction of the logs... endhelp diff --git a/data/levels/sandcastle.dat b/data/levels/sandcastle.dat index baad1be..b421834 100644 --- a/data/levels/sandcastle.dat +++ b/data/levels/sandcastle.dat @@ -15,8 +15,6 @@ monsters 6 16 7 7 31 11 7 8 11 -49 27 21 -49 13 21 16 9 8 16 31 8 16 29 8 diff --git a/data/map.dat b/data/map.dat index 47d950a..62ca69b 100644 --- a/data/map.dat +++ b/data/map.dat @@ -14,9 +14,9 @@ 14,theisland.dat,The Island 15,beecaverns.dat,Bee Caverns 16,thehive.dat,The Hive -17,mountaineering.dat,Mountaineering 18,backyardone.dat,Backyard One 19,beepods.dat,Bee Pods +17,mountaineering.dat,Mountaineering 20,kingrat.dat,King Rat 21,thebeach.dat,The Beach 22,observationpost.dat,Observation Post @@ -26,7 +26,6 @@ 26,sandbars.dat,Sand Bars 27,fishbowls.dat,Fishbowls 28,twistylittlepassages.dat,Twisty Little Passages -29,loopyplants.dat,Loopy Plants 30,divingpool.dat,Diving Pool 31,portraitgallery1.dat,Portrait Gallery #1 32,thechimney.dat,The Chimney @@ -34,6 +33,7 @@ 34,frogs.dat,Frogs 35,sandcastle.dat,Sand Castle 36,divideandconquer.dat,Divide and Conquer +29,loopyplants.dat,Loopy Plants 37,bewaretherapids.dat,Beware the rapids! 38,bunkers.dat,Bunkers 39,lookoutabove.dat,Look out above... @@ -100,4 +100,4 @@ 100,kingcat.dat,King Cat 101,theendsofar.dat,THE END SO FAR 102,testlevel.dat,TEST LEVEL -101,intro.dat,INTRO +101,intro.dat,Rat Catcher Level Editor v0.665 diff --git a/data/sprites/egg.png b/data/sprites/egg.png index f2561bb14bcb014423d325601c6ac79675d04023..5c0b6f5c05a214b3aa727af5a9613a9311dab6f2 100644 GIT binary patch delta 976 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 literal 0 HcmV?d00001 diff --git a/data/sprites/fireup3.png b/data/sprites/fireup3.png new file mode 100644 index 0000000000000000000000000000000000000000..5bd128c001da237edb05a87afacf36f96563ec9a GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^96-#)!3HEdkIOdzDaPU;cPEB*=VV?2Ic!PZ?k)`f zf$*zChF>pGgtNdSvY3H^?+6GpPSxg<1`4v5c>21s-{s)r;$ptDYN;zwXu7A1V~E7% z-hOMY!v+E_?rLpo@BHAZp0H)-gly-4$;>;iie8dxsSbCWo6zkk=vnA7Id|IMeUcC6 ze^8yR;X7riJHv}pJ*7VFVdQ&MBb@0AAu`7XSbN literal 0 HcmV?d00001 diff --git a/data/sprites/fireup4.png b/data/sprites/fireup4.png new file mode 100644 index 0000000000000000000000000000000000000000..fc082f85706e05112318ccd8577a518f40ea5a2f GIT binary patch literal 282 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

Q+Fk+8HyqRV%@DXVj*xL2!gF#y4i!%42JLx; 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 lvq?UJedObw8I=gU3YQx(tz+{Jarmour = B_FALSE; if (s == player) { - s->id = P_PLAYER; + s->id = swapplayers ? P_PLAYER2 : P_PLAYER; } else { - s->id = P_PLAYER2; + s->id = swapplayers ? P_PLAYER : P_PLAYER2; } // become invulnerable temporarily makeinvuln(s); @@ -2052,7 +2057,7 @@ void die(sprite_t *s) { // draw text tnum = rand() % MAXDEATHTEXT; - addoutlinetext(s->x,s->y,TEXTSIZE_DEATH,deathtext[tnum],&red,&black,DIEDELAY, TT_NORM); + addoutlinetext(s->x,s->y,TEXTSIZE_DEATH,deathtext[tnum],getptextcol(s),&black,DIEDELAY, TT_NORM); /* release anything we've caught */ for (s2 = sprite; s2 ; s2 = s2->next) { @@ -2879,8 +2884,6 @@ int movesprite(sprite_t *s) { } } - - if (s->caughtby) { if (s->caughtby->slamming) { /* */ @@ -6879,7 +6882,8 @@ void dotileeffects(sprite_t *s) { drawtile(temps, s->trampx, s->trampy); } } else { - tiletype_t *temptile; + tiletype_t *temptile, *tt; + int xoff; // remember we were on it so it can release s->ontramp = B_TRUE; s->trampx = tilex; @@ -6899,6 +6903,11 @@ void dotileeffects(sprite_t *s) { curlevel->map2[tiley*LEVELW+tilex] = getuniq(T_TRAMPDOWN); } drawtile(temps, tilex, tiley); + + // move player to new trampoline height + tt = gettile(T_TRAMPDOWN); + xoff = s->x - (tilex*TILEW); + s->y = (tiley * TILEH) + tt->lowness[xoff]; } } finished = B_TRUE; @@ -9854,7 +9863,7 @@ int dofruiteffect(sprite_t *pp, sprite_t *s) { for (xx = 0; xx < LEVELW; xx++) { for (yy = 0; yy < (LEVELH-1); yy++) { tt = gettileat(xx*TILEW,yy*TILEH, NULL,NULL); - if (!tt->solid) { + if (!tt->solid && !tt->spikes) { // check tile below tt = gettileat(xx*TILEW,(yy+1)*TILEH, NULL,NULL); if (tt->id == T_LAND) { @@ -10262,7 +10271,7 @@ int dofruiteffect(sprite_t *pp, sprite_t *s) { newc->img = imageset[s->timer1].img[F_WALK1]; } else { // is this possible?! - addoutlinetext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, "Full cards!",&red,&black,POINTSDELAY,TT_NORM); + addoutlinetext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, "Full cards!",getptextcol(s),&black,POINTSDELAY,TT_NORM); } return B_TRUE; } else if (isflower(s->id)) { @@ -10324,6 +10333,8 @@ void usage(void) { printf(" -hp xx Connect to hiscore_server on port xx.\n"); printf(" -js Joystick test mode.\n"); printf(" -as Auto screenshot mode (dumps to /tmp/levelxx.bmp).\n"); + printf(" -t Enable tutorial (ie. help text).\n"); + printf(" -s Enable swapplayers mode (ie. player 1 is Mrs Dwarf)\n"); printf("\n"); } @@ -12084,7 +12095,7 @@ void handleinput(void) { // toggle fullscreen - if (keydown(0, SDLK_F3)) { + if (keydown(0, SDLK_F3) || keydown(0, SDLK_BACKSLASH)) { if (toggletimer == 0) { // always pause first paused = B_TRUE; @@ -12288,7 +12299,7 @@ if (cheat) { py = (curlevel->p1y * TILEH) + TILEH-2; want1up = B_TRUE; - player = addsprite(P_PLAYER, px, py, "Player 1" ); + player = addsprite(swapplayers ? P_PLAYER2 : P_PLAYER, px, py, "Player 1" ); setdefaults(player); puffin(-1, px, py-TILEH, "nothing", 0); puffin(-1, px, py, "nothing", 0); @@ -12298,11 +12309,11 @@ if (cheat) { if (gamemode == GM_EASY) { player->permarmour = B_TRUE; player->armour = B_TRUE; - player->id = P_ARMOUR; + player->id = swapplayers ? P_ARMOUR2 : P_ARMOUR; } else { player->permarmour = B_FALSE; player->armour = B_FALSE; - player->id = P_PLAYER; + player->id = swapplayers ? P_PLAYER2 : P_PLAYER; } player->lives = INITPLAYERLIVES; @@ -12341,7 +12352,7 @@ if (cheat) { py = (curlevel->p2y * TILEH) + TILEH-2; want1up = B_TRUE; - player2 = addsprite(P_PLAYER2, px, py, "Player 2" ); + player2 = addsprite(swapplayers ? P_PLAYER : P_PLAYER2, px, py, "Player 2" ); setdefaults(player2); puffin(-1, px, py-TILEH, "nothing", 0); puffin(-1, px, py, "nothing", 0); @@ -12351,11 +12362,11 @@ if (cheat) { if (gamemode == GM_EASY) { player2->permarmour = B_TRUE; player2->armour = B_TRUE; - player2->id = P_ARMOUR2; + player2->id = swapplayers ? P_ARMOUR : P_ARMOUR2; } else { player2->permarmour = B_FALSE; player2->armour = B_FALSE; - player2->id = P_PLAYER2; + player2->id = swapplayers ? P_PLAYER : P_PLAYER2; } player2->lives = INITPLAYERLIVES; @@ -12766,6 +12777,7 @@ void dotitlescreen(void) { SDL_Surface *cointext, *text, *text2, *easy, *norm, *ver; SDL_Surface *help, *helpon, *helpoff; SDL_Surface *p1ready,*p2ready; + SDL_Surface *p1readyalt,*p2readyalt; SDL_Surface *ts; SDL_Event event; SDL_Rect area; @@ -12781,6 +12793,7 @@ void dotitlescreen(void) { // clear all sprites!! want1up = B_FALSE; want2up = B_FALSE; + swapplayers = initialswapplayers; while (sprite) { killsprite(sprite); @@ -12815,6 +12828,17 @@ void dotitlescreen(void) { printf("cannot load p1 ready img (%s)\n",tempst); exit(1); } + sprintf(tempst, "%s/sprites/p1ready_alt.png",datadir); + ts = IMG_Load(tempst); + SDL_SetColorKey(ts, SDL_RLEACCEL, 0); + p1readyalt = SDL_DisplayFormat(ts); + SDL_FreeSurface(ts); + if (!p1readyalt) { + printf("cannot load p1 ready alt img (%s)\n",tempst); + exit(1); + } + + sprintf(tempst, "%s/sprites/p2ready.png",datadir); ts = IMG_Load(tempst); SDL_SetColorKey(ts, SDL_RLEACCEL, 0); @@ -12825,6 +12849,16 @@ void dotitlescreen(void) { exit(1); } + sprintf(tempst, "%s/sprites/p2ready_alt.png",datadir); + ts = IMG_Load(tempst); + SDL_SetColorKey(ts, SDL_RLEACCEL, 0); + p2readyalt = SDL_DisplayFormat(ts); + SDL_FreeSurface(ts); + if (!p2readyalt) { + printf("cannot load p2 ready alt img (%s)\n",tempst); + exit(1); + } + // set up text cointext = TTF_RenderText_Solid(font[TEXTSIZE_TITLE], "Insert Coin", white); text = TTF_RenderText_Solid(font[TEXTSIZE_TITLE], "Press 1UP or 2UP to start", red); @@ -12950,7 +12984,7 @@ void dotitlescreen(void) { area.y += (sin(bouncetimer * (M_PI/180)) * 20); - SDL_BlitSurface(p1ready, NULL, screen, &area); + SDL_BlitSurface(swapplayers ? p1readyalt : p1ready, NULL, screen, &area); } if (want2up) { area.x = 640 - p2ready->w - 10; @@ -12958,7 +12992,7 @@ void dotitlescreen(void) { area.y -= (sin(bouncetimer * (M_PI/180)) * 20); - SDL_BlitSurface(p2ready, NULL, screen, &area); + SDL_BlitSurface(swapplayers ? p2readyalt : p2ready, NULL, screen, &area); } @@ -13208,13 +13242,13 @@ void startgame(void) { // allocate player if (want1up) { if (player == NULL) { - player = addsprite(P_PLAYER, 32, 450, "Player 1" ); + player = addsprite(swapplayers ? P_PLAYER2 : P_PLAYER, 32, 450, "Player 1" ); setdefaults(player); } } if (want2up) { if (player2 == NULL) { - player2 = addsprite(P_PLAYER2, 32, 450, "Player 2" ); + player2 = addsprite(swapplayers ? P_PLAYER : P_PLAYER2, 32, 450, "Player 2" ); setdefaults(player2); } } @@ -13227,11 +13261,11 @@ void startgame(void) { if (gamemode == GM_EASY) { player->permarmour = B_TRUE; player->armour = B_TRUE; - player->id = P_ARMOUR; + player->id = swapplayers ? P_ARMOUR2 : P_ARMOUR; } else { player->permarmour = B_FALSE; player->armour = B_FALSE; - player->id = P_PLAYER; + player->id = swapplayers ? P_PLAYER2 : P_PLAYER; } player->lives = INITPLAYERLIVES; } @@ -13242,11 +13276,11 @@ void startgame(void) { if (gamemode == GM_EASY) { player2->permarmour = B_TRUE; player2->armour = B_TRUE; - player2->id = P_ARMOUR2; + player2->id = swapplayers ? P_ARMOUR : P_ARMOUR2; } else { player2->permarmour = B_FALSE; player2->armour = B_FALSE; - player2->id = P_PLAYER2; + player2->id = swapplayers ? P_PLAYER : P_PLAYER2; } player2->lives = INITPLAYERLIVES; } @@ -13355,26 +13389,28 @@ void handletitleinput(int whichplayer, int key) { gamemode = GM_NORM; } } else if ((key == SDLK_1) || (key == SDLK_2) || (key == SDLK_RETURN)) { + int usecredit = B_FALSE; if (credits > 0) { - int donesomething = B_FALSE; if ((key == SDLK_1) || (key == SDLK_RETURN)) { if (!want1up) { + // add player 1 want1up = B_TRUE; - donesomething = B_TRUE; + usecredit = B_TRUE; } } else if (key == SDLK_2) { if (!want2up) { + // add player 2 want2up = B_TRUE; - donesomething = B_TRUE; + usecredit = B_TRUE; } } - - if (donesomething) { - playfx(FX_EXTRALIFE); - credits--; - titlemode = TS_SELECTMODE; - blinkspeed = 5; - } + } + + if (usecredit) { + playfx(FX_EXTRALIFE); + credits--; + titlemode = TS_SELECTMODE; + blinkspeed = 5; } } } else if (titlemode == TS_SELECTMODE) { @@ -13392,24 +13428,30 @@ void handletitleinput(int whichplayer, int key) { titledone = B_TRUE; } else if ((key == SDLK_1) || (key == SDLK_2) || (key == SDLK_RETURN)) { // another player joining - if (credits > 0) { - int donesomething = B_FALSE; - if ((key == SDLK_1) || (key == SDLK_RETURN)) { - if (!want1up) { - want1up = B_TRUE; - donesomething = B_TRUE; - } - } else if (key == SDLK_2) { - if (!want2up) { - want2up = B_TRUE; - donesomething = B_TRUE; - } + int usecredit = B_FALSE; + if ((key == SDLK_1) || (key == SDLK_RETURN)) { + if (want1up) { + // toggle players + if (swapplayers) swapplayers = B_FALSE; + else swapplayers = B_TRUE; + } else if (credits > 0) { + want1up = B_TRUE; + usecredit = B_TRUE; } - if (donesomething) { - playfx(FX_EXTRALIFE); - credits--; + } else if (key == SDLK_2) { + if (want2up) { + // toggle players + if (swapplayers) swapplayers = B_FALSE; + else swapplayers = B_TRUE; + } else { + want2up = B_TRUE; + usecredit = B_TRUE; } } + if (usecredit) { + playfx(FX_EXTRALIFE); + credits--; + } } else if ((key == SDLK_5) || (key == SDLK_6)) { addcredit(); } @@ -14644,10 +14686,10 @@ void dointroseq(void) { } } else if (introstate == IS_YUM) { if (player) { - addoutlinetext(player->x,player->y - (player->img->h*1.5),TEXTSIZE_YUM,"Yum!",&red,&black,YUMDELAY, TT_INTROTEXT); + addoutlinetext(player->x,player->y - (player->img->h*1.5),TEXTSIZE_YUM,"Yum!",getptextcol(player), &black,YUMDELAY, TT_INTROTEXT); } if (player2) { - addoutlinetext(player2->x,player2->y - (player2->img->h*1.5),TEXTSIZE_YUM,"Yum!",&purple,&black,YUMDELAY, TT_INTROTEXT); + addoutlinetext(player2->x,player2->y - (player2->img->h*1.5),TEXTSIZE_YUM,"Yum!",getptextcol(player2),&black,YUMDELAY, TT_INTROTEXT); } introstate = IS_YUMWAIT; // exits when yum text is gone @@ -14966,3 +15008,14 @@ void incfruittype(void) { curfruittype = 0; } } + +SDL_Color *getptextcol(sprite_t *s) { + if (s == player) { + if (swapplayers) return &purple; + else return &red; + } else { // ie. player 2 + if (swapplayers) return &red; + else return &purple; + } + return &red; +} diff --git a/rc.h b/rc.h index 15bd624..f2b80cf 100644 --- a/rc.h +++ b/rc.h @@ -147,3 +147,4 @@ int savebmp(SDL_Surface *which); void melttile(int tx,int ty, int howlong); void selectspell(sprite_t *s); void incfruittype(void); +SDL_Color *getptextcol(sprite_t *s); diff --git a/shared.c b/shared.c index 83adc1a..4d1971a 100644 --- a/shared.c +++ b/shared.c @@ -2652,7 +2652,7 @@ void drawsprite(sprite_t *s) { // anchor if (globpowerup == PW_ANCHOR) { - if (ismonster(s->id) && !s->caughtby && !s->dead) { + if (ismonster(s->id) && (s->id != P_BLACKCLOUD) && !s->caughtby && !s->dead) { SDL_Rect newarea; newarea = area; newarea.y += (s->img->h / 3); @@ -2660,8 +2660,6 @@ void drawsprite(sprite_t *s) { } } - - /* caughtby lines */ if ((s->caughtby) && (s->caughtstate == 2)){ // only if we're on the screen @@ -3906,7 +3904,7 @@ void setfruitinfo(void) { setinfo(P_PILL, "Pill", "Eating this pill will cause you to enter a hyperactive state, moving at four times your standard speed!", "pill.png"); setinfo(P_RAYGUN, "Ray Gun", "Alien in origin, the ray gun contains enough charge for five shots of burning plasma.", "raygun.png"); - setinfo(P_TOPHAT, "Top Hat", "Players wearing the top hat will find that every item which appears will now be a power-up!", "tophat.png"); + setinfo(P_TOPHAT, "Top Hat", "Players wearing the top hat will find that every item which appears is now a power-up!", "tophat.png"); setinfo(P_LAMP, "Magic Lamp", "The magic lamp shifts you into an alternate dimension filled with gold! Collect it all for a kingly bonus...", "lamp.png"); setinfo(P_BOXING, "Boxing Glove", "Your net will punch monsters, killing them instantly.", "boxing.png"); @@ -3926,63 +3924,62 @@ void setfruitinfo(void) { setinfo(P_STARPOWERUP, "Shuriken", "Shoots deadly razor blades in all directions.", "star.png"); setinfo(P_LIFE, "Life", "Awards the player an extra life.", "extralife.png"); 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_TAP, "Leaky 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 deadly machine gun!", "gunner.png"); setinfo(P_GNOME, "Garden Gnome", "This tricky little gnome has rigged explosive devices to all flowers on the level - when collected he will detonate them!", "gnome.png"); setinfo(P_WAND, "Magic Wand", "A wave of the magic wand will magically polymorph all monsters into weaker ones. Anything which can't become weaker will be instantly destroyed!", "wand.png"); setinfo(P_WHISTLE, "Whistle", "Produces an extremely loud, shrill whistling noise which wakes the black cloud of doom! In its angered state, the black cloud will slaughter both friend and foe alike.", "whistle.png"); setinfo(P_CANDLE, "Candle", "Once collected, the candle will cause all enemy corpses to burst into flames, igniting any other enemy which they touch.", "candle.png"); setinfo(P_ANCHOR, "Anchor", "The extremely heavy anchor will weigh down enemies, preventing them from jumping or flying.", "anchor.png"); 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_BADMAGNET, "Red Skull", "This skull curses you and will repel fruits away from you, denying you access to tasty treats!", "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. 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_ZAPPOWERUP, "Bug Zapper", "Floats around your head and 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"); setinfo(P_CLOVER, "4-Leaf Clover", "Increases your luck...", "clover.png"); setinfo(P_RANDOM, "Random", "Gives you a random effect...", "random.png"); - setinfo(P_PLAYER, "Mr. Dwarf", "Mr. Dwarf is currently highly disgruntled due to repeated burglaries of his hard-earned dinner. After one theft too many, he is now out for revenge! When encased in his shining suit of golden armour, Mr. Dwarf is bestowed with incredible powers of endurance, and is able to withstand any earthly threat. Once once, though.", "pdwarf.png"); - setinfo(P_PLAYER2, "Mrs. Dwarf", "Mrs. Dwarf, being the loyal partner that she is, has become equally aggrieved by the constant re-appropriation of culinary treats and has joined Mr. Dwarf on his quest to end the rat menace forever. Her more feminine armour no less effective, just slightly more visually appealing with its convenient openings for lipstick and hair!", "p2dwarf.png"); + setinfo(P_PLAYER, "Mr. Dwarf", "Mr. Dwarf is currently highly disgruntled due to repeated burglaries of his hard-earned dinner. After one theft too many, he is now out for revenge! When encased in his shining suit of golden armour, Mr. Dwarf is bestowed with incredible powers of endurance, and is able to withstand any earthly threat. Once.", "pdwarf.png"); + setinfo(P_PLAYER2, "Mrs. Dwarf", "Mrs. Dwarf, being the loyal partner that she is, has become equally aggrieved by the constant re-appropriation of culinary treats and has joined Mr. Dwarf on his quest to end the rat menace forever. Her feminine armour is also slightly more visually appealing due to its convenient openings for lipstick and hair.", "p2dwarf.png"); setinfo(P_ARMOUR, "Armoured Mr. Dwarf", "", "armor.png"); setinfo(P_ARMOUR2, "Armoured Mrs. Dwarf", "", "armor2.png"); setinfo(P_RAT, "Rat", "The weakest of the monsters, the rat will simply walk back and forth waiting to be caught. Beware an angry rat though, as it will try to fall or jump in order to catch you!", "rat.png"); setinfo(P_BEE, "Bee", "Bees, while still relatively weak, gain an advantage over rats in that they are able to fly. They move in a simple diagonal pattern, changing direction when they get near a wall or spikes. Bees will speed up when angry.", "newbee.png"); - setinfo(P_FISH, "Pirahna", "These fish at at home in the water and unhampered by slowness while swimming.", "fish.png"); + setinfo(P_FISH, "Pirahna", "These deadly fish are at home in the water and unhampered by slowness while swimming.", "fish.png"); - setinfo(P_SPIDER, "Redback", "Redback spiders will lurk quietly on the ceiling, crawling back and forth. If they notice a player nearby however they will swiftly pounce down onto their prey!", "spider.png"); + setinfo(P_SPIDER, "Redback", "Redback spiders lurk quietly on the ceiling, crawling back and forth. If they notice a player nearby, they will swiftly pounce down onto their prey.", "spider.png"); setinfo(P_WSPIDER, "Whitetail", "Whitetail spiders are more intelligent than other monsters - they are aware of nearby players and will use the landscape to track them down!", "whitespider.png"); - setinfo(P_BAT, "Bat", "The bat moves in a straight line until it hits a wall. Although simplistic in their movement, bats have the ability to fire a burst of sonar to take out an unwary player!", "bat.png"); + setinfo(P_BAT, "Bat", "The bat moves in a straight line until it hits a wall. Although simplistic in their movement, bats have the ability to emit a burst of sonar towards unwary players.", "bat.png"); - setinfo(P_FROG, "Frog", "Green frogs will continually bounce around, making them more difficult to catch. They are also excellent swimmers.", "frog.png"); + setinfo(P_FROG, "Frog", "Green frogs continually bounce around, making them quite difficult to catch. Unlike their other video game counterparts, they are also excellent swimmers.", "frog.png"); setinfo(P_ANT1, "Worker Ant", "Worker ants are relatively easy to avoid, but when fed will quickly grow into more dangerous soldier ants.", "ant1.png"); setinfo(P_ANT2, "Soldier Ant", "Soldiers move faster and are more intelligent than their worker siblings. In addition, with just a little food they will become queens.", "ant2.png"); - setinfo(P_ANT3, "Queen Ant", "After an ant has eaten enough, they become a Queen. Queens are just as fast as soldiers and can also breath fire. Furthermore, they are only one meal away from spawning additional ants!", "ant3.png"); + setinfo(P_ANT3, "Queen Ant", "After an ant has eaten enough, it becomes a Queen. Queens are just as fast as soldiers and can also breath fire. If that wasn't enough, they are also only one meal away from spawning an additional ant!", "ant3.png"); - setinfo(P_SNAKE, "Snake", "The snake moves in a similar fashion to the rat with one important exception - upon seeing a player they will spit a glob of deadly venom at them!", "snake.png"); - setinfo(P_FLY, "Fly", "Annoying pests at the best of times, flies pose additional danger to dwarves. They fly around more erratically than bees and after landing can scurry quickly back and forth.", "fly.png"); + setinfo(P_SNAKE, "Snake", "The snake moves in a similar fashion to the rat with one important exception - upon seeing a player it will spit a glob of deadly venom in their direction.", "snake.png"); + setinfo(P_FLY, "Fly", "Annoying pests at the best of times, flies pose additional danger to dwarves. They move around more erratically than bees and after landing can scurry quickly back and forth.", "fly.png"); - - setinfo(P_TICK, "Tick", "The tick is small but intelligent. Even in its regular placid state it will move in the same manner as an angry rat. Because of their small size, they are also difficult to target with a slam!", "tick.png"); - setinfo(P_PLANT, "Plant", "Evil venus fly trap plants will lie in wait and devour any player foolish enough to wander into their clutches.", "plant.png"); + setinfo(P_TICK, "Tick", "The tick is small but intelligent. Even in its regular placid state it will move in the same manner as an angry rat. Because of their small size, they are also difficult to target with a slam.", "tick.png"); + setinfo(P_PLANT, "Plant", "Evil venus fly trap plants lie in wait and devour any player foolish enough to wander into their clutches. They also belch red-hot balls of fire at anything above them.", "plant.png"); setinfo(P_BLACKCLOUD, "Cloud of Doom", "This unkillable cloud will appear if you spend too much time on one level. Beware, as the only way to defeat the cloud of doom is to complete the level before it grows too large to handle!", "cloud.png"); - setinfo(P_KINGRAT, "King Rat", "This mighty creature is the ruler of the rats, and impervious to the player's net. It can only be harmed by slamming another monster into it! King Rat will roam the level searching for a player, and upon spotting them will charge at high speed.", "kingrat.png"); + setinfo(P_KINGRAT, "King Rat", "This mighty creature is the ruler of the rats, and impervious to the player's net. It can only be harmed by slamming another monster into it. King Rat will roam the level searching for a player, and upon spotting one will charge at high speed.", "kingrat.png"); - setinfo(P_KINGSNAIL, "King Snail", "The absolute ruler of the snail kingdom is far too large and heavy to catch in a net. In addition, its shell provides protection against all attacks, leaving only its head vulnerable. While King Snail is too proud to chase down enemies itself, it can use its snail army to destroy its foes.", "kingsnail.png"); + setinfo(P_KINGSNAIL, "King Snail", "The absolute ruler of the snail kingdom is far too large and heavy to catch in a net. While King Snail is too proud to chase down enemies itself, it can use its snail army to destroy its foes.", "kingsnail.png"); - setinfo(P_KINGFLY, "King Fly", "King Fly is quite literally the lord of the flies. Far from the timid garden-variety fly, King Fly will roam around with its entourage of underlings in tow, running down anything in its path!", "kingfly.png"); - setinfo(P_KINGANT, "King Ant", "All ants bow down to King Ant, the ultimate ant overlord. King Ant is an enormous fire ant, endlessly covered in flames and able to create ant sustenance from its body. Its flames are so intense that they can instantly melt through solid ice!", "kingant.png"); + setinfo(P_KINGFLY, "King Fly", "King Fly is quite literally the lord of the flies. Far from the timid garden-variety fly, King Fly will roam around with its entourage of underlings in tow, running down anything in its path.", "kingfly.png"); + setinfo(P_KINGANT, "King Ant", "All ants bow down to King Ant, the ultimate ant overlord. King Ant is an enormous fire ant, endlessly covered in flames and able to create ant sustenance from its body. Its flames are so intense that they can instantly melt through solid ice.", "kingant.png"); setinfo(P_KINGCAT, "King Cat", "The elusive King Cat masterminded the great food heist, and is rumoured to weild powerful arcane magic...", "kingcat.png"); - setinfo(P_SNAIL, "Snail", "Snails are slow moving but tough. When attacked normally they will not die, but simply lose their shell and become a slug. The safest way to take them out is to slam another monster into them, thus killing them instantly.", "snail.png"); - setinfo(P_SLUG, "Slug", "Slugs are faster moving than snails and capable of launching themselves through the air at their prey!", "slug.png"); + setinfo(P_SNAIL, "Snail", "Snails are slow moving but tough. Normal attacks will not harm them, instead simply destroying their shell and turning them into a slug. The safest way to take out a snail is to slam it with another monster, killing it instantly.", "snail.png"); + setinfo(P_SLUG, "Slug", "Without the burden of a heavy shell, slugs move much faster than snails, and are capable of launching themselves through the air at nearby players.", "slug.png"); } @@ -4115,8 +4112,17 @@ void dumpinfo(void) { if (count % 2 == 0) { printf(""); } - printf("
%sWorth %d points.\n", + printf("
%sWorth %d points.", spriteinfo[i].file, spriteinfo[i].name,getpoints(i)); + if (i == P_FLOWERRED) { + printf(" Collect them all for a set of rubies."); + } else if (i == P_FLOWERYELLOW) { + printf(" Collect them all for a set of topaz stones."); + } else if (i == P_FLOWERPURPLE) { + printf(" Collect them all for a set of amethysts."); + } + + printf("\n"); if (count % 2 == 1) { printf(""); }