Do not base endgame bonus on arbitrary messages

This may break save files, but doesn't, due to padding
This commit is contained in:
NHOrus 2017-07-14 15:40:59 +03:00
parent 6a90dcd017
commit 3d2ba18355
3 changed files with 17 additions and 12 deletions

View file

@ -236,13 +236,16 @@ static void blast(void)
!game.closed)
rspeak(REQUIRES_DYNAMITE);
else {
if (HERE(ROD2))
game.bonus = SPLATTER_MESSAGE;
else if (game.loc == LOC_NE)
game.bonus = DEFEAT_MESSAGE;
else
game.bonus = VICTORY_MESSAGE;
rspeak(game.bonus);
if (HERE(ROD2)) {
game.bonus = splatter;
rspeak(SPLATTER_MESSAGE);
} else if (game.loc == LOC_NE) {
game.bonus = defeat;
rspeak(DEFEAT_MESSAGE);
} else {
game.bonus = victory;
rspeak(VICTORY_MESSAGE);
}
terminate(endgame);
}
}

View file

@ -89,6 +89,8 @@ enum speechpart {unknown, intransitive, transitive};
enum wordtype {NO_WORD_TYPE, MOTION, OBJECT, ACTION, SPECIAL};
typedef enum scorebonus {none, splatter, defeat, victory} score_t;
/* Phase codes for action returns.
* These were at one time FORTRAN line numbers.
* The values don't matter, but perturb their order at your peril.
@ -118,7 +120,7 @@ typedef long loc_t; // index into the locations array */
struct game_t {
unsigned long lcg_a, lcg_c, lcg_m, lcg_x;
long abbnum; // How often to print non-abbreviated descriptions
long bonus;
score_t bonus; // What kind of bonus we are getting for finishing the game
long chloc;
long chloc2;
long clock1; // # turns from finding last treasure till closing

View file

@ -71,13 +71,13 @@ long score(enum termination mode)
score += 25;
mxscor += 25;
if (game.closed) {
if (game.bonus == 0)
if (game.bonus == none)
score += 10;
if (game.bonus == SPLATTER_MESSAGE)
if (game.bonus == splatter)
score += 25;
if (game.bonus == DEFEAT_MESSAGE)
if (game.bonus == defeat)
score += 30;
if (game.bonus == VICTORY_MESSAGE)
if (game.bonus == victory)
score += 45;
}
mxscor += 45;