- [+] remove command line switches for hiscore server

- [+] on beehive (1-16), make chute wider so that rats can fall down it
- [+] Hiscores
    - [+] make L/R do the same as U/D
- [+] honey
    - [+] honey shouldn't slow down bullets
    - [+] honey slows down players too much , especially if you don't
          have boots. maybe don't slowdown below normal speed.
- [+] magic lamp
    - [+] don't say 'hurry up' when magic lamp is active.
    - [+] magic lamp should show a countdown ticking down
    - [+] magic lamp should last exactly 30 seconds.
This commit is contained in:
Rob Pearce 2013-12-11 00:32:35 +00:00
parent 0b6a524379
commit e04a095147
3 changed files with 56 additions and 22 deletions

View File

@ -72,12 +72,12 @@ exitdir 1
4,20,20,20,20,0,0,0,0,0,0,24,24,24,24,26,26,26,26,26,26,26,26,26,26,26,24,24,24,24,0,0,0,0,0,20,20,20,20,4,
4,0,0,0,0,0,0,0,0,0,0,24,24,24,24,26,26,26,26,26,26,26,26,26,26,26,24,24,24,24,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,24,24,24,26,26,26,26,26,26,26,26,26,26,26,24,24,24,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,24,24,24,25,25,25,25,25,25,25,25,25,26,25,24,24,24,0,0,0,0,0,0,0,0,0,0,4,
4,20,20,20,20,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,24,24,24,26,24,24,24,24,0,0,0,0,0,0,20,20,20,20,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,24,26,24,24,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,24,26,24,24,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,26,24,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,26,24,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,24,24,24,25,25,25,25,25,25,25,25,26,26,25,24,24,24,0,0,0,0,0,0,0,0,0,0,4,
4,20,20,20,20,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,24,24,26,26,24,24,24,24,0,0,0,0,0,0,20,20,20,20,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,26,26,24,24,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,26,26,24,24,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,26,26,24,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,26,26,24,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
4,0,0,0,0,0,0,17,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,17,0,0,0,0,0,0,4,

58
rc.c
View File

@ -85,6 +85,7 @@ int cameraalpha;
int playedbell;
int clocktime;
int lamptime = -1;
int gameovertime;
@ -296,7 +297,7 @@ int main (int argc, char **argv) {
} else if (!strcmp(argv[i], "-jt")) {
printf("Joystick test mode enabled.\n");
joytest = B_TRUE;
} else if (!strcmp(argv[i], "-hs")) {
/*} else if (!strcmp(argv[i], "-hs")) {
if (++i >= argc) {
printf("Missing hiscore server name.\n");
usage();
@ -331,6 +332,7 @@ int main (int argc, char **argv) {
}
hiscoreport = atoi(argv[i]);
printf("Hiscore port set to '%d'\n",hiscoreport);
*/
} else {
usage();
exit(1);
@ -1366,6 +1368,35 @@ void tick(void) {
Mix_ResumeMusic();
globpowerup = -1;
}
} else if (globpowerup == PW_LAMP) {
int maxdoom = -1;
sprite_t *s2;
// never reach hurryup time
nexthurryup++;
//////// display countdown
// find goldcoin with highest doomcount
for (s2 = sprite; s2 ; s2 = s2->next) {
if ((s2->id == P_GOLDCOIN) && (s2->doomcount > maxdoom)) {
maxdoom = s2->doomcount;
}
}
if (maxdoom > -1) {
int secondsleft;
secondsleft = (maxdoom / fps);
if (secondsleft != lamptime) {
SDL_Color *col;
lamptime = secondsleft;
sprintf(tempm, "%d",lamptime);
if (lamptime < 5) {
col = &red;
} else if (lamptime < 15) {
col = &yellow;
} else {
col = &green;
}
addoutlinetext(320,120,TEXTSIZE_LEVEL, tempm, col,&black,15, TT_NORM);
}
}
}
// handle flood effect
@ -1410,8 +1441,6 @@ void tick(void) {
}
}
/* check for hurryup*/
if (!isbosslevel(curlevelnum)) {
if ((gtime == nexthurryup) && (curlevel->iced != WATER_COMPLETE)) {
@ -9400,16 +9429,16 @@ int movex(sprite_t *s,double amt,int onpurpose) {
tt = gettileat(s->x, s->y, &tilex,&tiley);
if (amt > 0) amtdir = 1;
else (amtdir = -1);
// walking on sticky tiles?
if (tt->sticky && onpurpose && !s->falling) {
amt /= 2;
// enforce minimum speed for player
if (isplayer(s) && amt < 1) amt = 1;
if (isplayer(s) || ismonster(s->id)) {
if (tt->sticky && onpurpose && !s->falling) {
amt /= 2;
// enforce minimum speed for player
if (isplayer(s) && amt < 1) amt = 1;
}
}
curx = s->x;
@ -9942,6 +9971,7 @@ int dofruiteffect(sprite_t *pp, sprite_t *s) {
addoutlinetext(s->x,s->y - s->img->h/2, TEXTSIZE_POINTS, tempm,&white,&black,POINTSDELAY, TT_NORM);
globpowerup = PW_LAMP;
lamptime = -1;
// create gold coins
delay = 0;
@ -9974,8 +10004,6 @@ int dofruiteffect(sprite_t *pp, sprite_t *s) {
}
}
return B_TRUE;
} else if (s->id == P_CANNONPOWERUP) {
sprite_t *newsp;
@ -10414,8 +10442,8 @@ void usage(void) {
printf("usage: rc [-fs] [-l xx]\n");
printf(" -fs Start in full-screen mode.\n");
printf(" -l xx Skip to level xx.\n");
printf(" -hs xx Set hiscore_server to http://xx.\n");
printf(" -hp xx Connect to hiscore_server on port xx.\n");
//printf(" -hs xx Set hiscore_server to http://xx.\n");
//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");
@ -14005,13 +14033,13 @@ void checkhiscores(sprite_t *who){
if (keytimer == 0) {
// check for scrolling
if (keydown(pnum, KEY_UP)) { // scroll through letters
if (keydown(pnum, KEY_UP) || keydown(pnum, KEY_LEFT)) { // scroll through letters
if (curlet == 'a') curlet = '*';
else if (curlet == '*') curlet = ' ';
else if (curlet == ' ') curlet = 'z';
else curlet--;
keytimer = 5;
} else if (keydown(pnum, KEY_DOWN)) { // scroll through letters
} else if (keydown(pnum, KEY_DOWN) || keydown(pnum, KEY_RIGHT)) { // scroll through letters
if (curlet == 'z') curlet = ' ';
else if (curlet == ' ') curlet = '*';
else if (curlet == '*') curlet = 'a';

View File

@ -19,6 +19,10 @@
#include "globals.h"
#include "shared.h"
#ifndef __EDITOR
extern int fps;
#endif
int loadlevel(int lnum, int wantmonsters) {
FILE *f;
int x,y;
@ -1031,7 +1035,9 @@ sprite_t *addsprite(int id, int x, int y, char *name ) {
if (!strcmp(s->name, "random_up")) {
s->doomcount = 900;
} else if (!strcmp(s->name, "goldcoin")) {
s->doomcount = 1400;
//s->doomcount = 1400;
// 30 seconds
s->doomcount = fps*30;
} else {
s->doomcount = 500;
}