From 30d57eac7912a7a99e506a4c975566ccefe444b0 Mon Sep 17 00:00:00 2001
From: mazmazz <mar.marcoz@outlook.com>
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,
+	},
 };