From 3d2ba1835544af309723e7502d0311d5f14ec99d Mon Sep 17 00:00:00 2001 From: NHOrus Date: Fri, 14 Jul 2017 15:40:59 +0300 Subject: [PATCH] Do not base endgame bonus on arbitrary messages This may break save files, but doesn't, due to padding --- actions.c | 17 ++++++++++------- advent.h | 4 +++- score.c | 8 ++++---- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/actions.c b/actions.c index 40a1928..cb034d1 100644 --- a/actions.c +++ b/actions.c @@ -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); } } diff --git a/advent.h b/advent.h index 6efe5ef..7eb54dc 100644 --- a/advent.h +++ b/advent.h @@ -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 diff --git a/score.c b/score.c index c31ee6a..8bd3cce 100644 --- a/score.c +++ b/score.c @@ -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; -- 2.31.1