Factor out the croak() function for player death.
This commit is contained in:
parent
d48001d64c
commit
ecc6caab4e
1 changed files with 40 additions and 36 deletions
74
main.c
74
main.c
|
@ -412,6 +412,39 @@ static bool dwarfmove(void)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void croak(FILE *cmdin)
|
||||||
|
/* Okay, he's dead. Let's get on with it. */
|
||||||
|
{
|
||||||
|
if(game.closng) {
|
||||||
|
/* He died during closing time. No resurrection. Tally up a
|
||||||
|
* death and exit. */
|
||||||
|
RSPEAK(131);
|
||||||
|
++game.numdie;
|
||||||
|
score(0);
|
||||||
|
} else {
|
||||||
|
++game.numdie;
|
||||||
|
if(!YES(cmdin,79+game.numdie*2,80+game.numdie*2,54))
|
||||||
|
score(0);
|
||||||
|
if(game.numdie == MAXDIE)
|
||||||
|
score(0);
|
||||||
|
game.place[WATER]=0;
|
||||||
|
game.place[OIL]=0;
|
||||||
|
if(TOTING(LAMP))
|
||||||
|
game.prop[LAMP]=0;
|
||||||
|
for (J=1; J<=NOBJECTS; J++) {
|
||||||
|
I=NOBJECTS + 1 - J;
|
||||||
|
if(TOTING(I)) {
|
||||||
|
K=game.oldlc2;
|
||||||
|
if(I == LAMP)
|
||||||
|
K=1;
|
||||||
|
DROP(I,K);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
game.loc=3;
|
||||||
|
game.oldloc=game.loc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static bool do_command(FILE *cmdin) {
|
static bool do_command(FILE *cmdin) {
|
||||||
long LL, KQ, VERB, KK, K2, V1, V2;
|
long LL, KQ, VERB, KK, K2, V1, V2;
|
||||||
long obj, i;
|
long obj, i;
|
||||||
|
@ -441,13 +474,14 @@ static bool do_command(FILE *cmdin) {
|
||||||
game.loc=game.newloc;
|
game.loc=game.newloc;
|
||||||
|
|
||||||
if (!dwarfmove())
|
if (!dwarfmove())
|
||||||
goto L99;
|
croak(cmdin);
|
||||||
|
|
||||||
/* Describe the current location and (maybe) get next command. */
|
/* Describe the current location and (maybe) get next command. */
|
||||||
|
|
||||||
/* Print text for current loc. */
|
/* Print text for current loc. */
|
||||||
|
|
||||||
L2000: if(game.loc == 0) goto L99;
|
L2000: if(game.loc == 0)
|
||||||
|
croak(cmdin);
|
||||||
KK=STEXT[game.loc];
|
KK=STEXT[game.loc];
|
||||||
if(MOD(game.abbrev[game.loc],game.abbnum) == 0 || KK == 0)KK=LTEXT[game.loc];
|
if(MOD(game.abbrev[game.loc],game.abbnum) == 0 || KK == 0)KK=LTEXT[game.loc];
|
||||||
if(FORCED(game.loc) || !DARK(0)) goto L2001;
|
if(FORCED(game.loc) || !DARK(0)) goto L2001;
|
||||||
|
@ -770,11 +804,11 @@ L30310: game.newloc=PLAC[TROLL]+FIXD[TROLL]-game.loc;
|
||||||
game.fixed[BEAR]= -1;
|
game.fixed[BEAR]= -1;
|
||||||
game.prop[BEAR]=3;
|
game.prop[BEAR]=3;
|
||||||
game.oldlc2=game.newloc;
|
game.oldlc2=game.newloc;
|
||||||
goto L99;
|
croak(cmdin);
|
||||||
|
goto L2000;
|
||||||
|
|
||||||
/* End of specials. */
|
/* End of specials. */
|
||||||
|
|
||||||
|
|
||||||
L21: LL=MOD((labs(TRAVEL[KK])/1000),1000);
|
L21: LL=MOD((labs(TRAVEL[KK])/1000),1000);
|
||||||
if(LL != K) {
|
if(LL != K) {
|
||||||
if(LL <= 300) {
|
if(LL <= 300) {
|
||||||
|
@ -833,38 +867,8 @@ L50: SPK=12;
|
||||||
|
|
||||||
L90: RSPEAK(23);
|
L90: RSPEAK(23);
|
||||||
game.oldlc2=game.loc;
|
game.oldlc2=game.loc;
|
||||||
|
croak(cmdin);
|
||||||
/* Okay, he's dead. Let's get on with it. */
|
|
||||||
|
|
||||||
L99: if(game.closng) {
|
|
||||||
/* He died during closing time. No resurrection. Tally up a
|
|
||||||
* death and exit. */
|
|
||||||
RSPEAK(131);
|
|
||||||
++game.numdie;
|
|
||||||
score(0);
|
|
||||||
} else {
|
|
||||||
++game.numdie;
|
|
||||||
if(!YES(cmdin,79+game.numdie*2,80+game.numdie*2,54))
|
|
||||||
score(0);
|
|
||||||
if(game.numdie == MAXDIE)
|
|
||||||
score(0);
|
|
||||||
game.place[WATER]=0;
|
|
||||||
game.place[OIL]=0;
|
|
||||||
if(TOTING(LAMP))
|
|
||||||
game.prop[LAMP]=0;
|
|
||||||
for (J=1; J<=NOBJECTS; J++) {
|
|
||||||
I=NOBJECTS + 1 - J;
|
|
||||||
if(TOTING(I)) {
|
|
||||||
K=game.oldlc2;
|
|
||||||
if(I == LAMP)
|
|
||||||
K=1;
|
|
||||||
DROP(I,K);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
game.loc=3;
|
|
||||||
game.oldloc=game.loc;
|
|
||||||
goto L2000;
|
goto L2000;
|
||||||
}
|
|
||||||
|
|
||||||
/* Cave closing and scoring */
|
/* Cave closing and scoring */
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue