From 30d57eac7912a7a99e506a4c975566ccefe444b0 Mon Sep 17 00:00:00 2001 From: mazmazz Date: Sun, 12 Aug 2018 19:23:23 -0400 Subject: [PATCH] NiGHTS bonus implementation --- src/dehacked.c | 3 +++ src/y_inter.c | 30 +++++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/dehacked.c b/src/dehacked.c index fb0f958c3..35b0ce4b1 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -1196,6 +1196,9 @@ static void readlevelheader(MYFILE *f, INT32 num) else if (fastcmp(word2, "NORMAL")) i = 0; else if (fastcmp(word2, "BOSS")) i = 1; else if (fastcmp(word2, "ERZ3")) i = 2; + else if (fastcmp(word2, "NIGHTS")) i = 3; + else if (fastcmp(word2, "NIGHTSLINK")) i = 4; + else if (fastcmp(word2, "NIGHTSALL")) i = 5; if (i >= -1 && i <= 2) // -1 for no bonus. Max is 2. mapheaderinfo[num-1]->bonustype = (SINT8)i; diff --git a/src/y_inter.c b/src/y_inter.c index 68dda198c..b3603bb34 100644 --- a/src/y_inter.c +++ b/src/y_inter.c @@ -1754,6 +1754,16 @@ static void Y_SetRingBonus(player_t *player, y_bonus_t *bstruct) bstruct->points = max(0, (player->rings) * 100); } +// +// Y_SetNightsBonus +// +static void Y_SetNightsBonus(player_t *player, y_bonus_t *bstruct) +{ + strncpy(bstruct->patch, "YB_NIGHT", sizeof(bstruct->patch)); + bstruct->display = true; + bstruct->points = player->totalmarescore; +} + // // Y_SetLinkBonus // @@ -1815,7 +1825,7 @@ static void Y_SetPerfectBonus(player_t *player, y_bonus_t *bstruct) // This list can be extended in the future with SOC/Lua, perhaps. typedef void (*bonus_f)(player_t *, y_bonus_t *); -bonus_f bonuses_list[4][4] = { +bonus_f bonuses_list[7][4] = { { Y_SetNullBonus, Y_SetNullBonus, @@ -1840,6 +1850,24 @@ bonus_f bonuses_list[4][4] = { Y_SetRingBonus, Y_SetPerfectBonus, }, + { + Y_SetNullBonus, + Y_SetNightsBonus, + Y_SetNullBonus, + Y_SetNullBonus, + }, + { + Y_SetNullBonus, + Y_SetLinkBonus, + Y_SetNullBonus, + Y_SetNullBonus, + }, + { + Y_SetNullBonus, + Y_SetNightsBonus, + Y_SetLinkBonus, + Y_SetNullBonus, + }, };