From ec8d26402929b5099e2fd922a707c04d98070cf3 Mon Sep 17 00:00:00 2001
From: mazmazz <mar.marcoz@outlook.com>
Date: Sun, 12 Aug 2018 19:59:34 -0400
Subject: [PATCH] totalmarescore player variable for NiGHTS scoring

# Conflicts:
#	src/p_setup.c
---
 src/d_player.h      | 1 +
 src/lua_playerlib.c | 4 ++++
 src/p_saveg.c       | 2 ++
 src/p_setup.c       | 4 ++--
 src/p_user.c        | 2 ++
 5 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/d_player.h b/src/d_player.h
index e7e6e48275..fd41c76212 100644
--- a/src/d_player.h
+++ b/src/d_player.h
@@ -469,6 +469,7 @@ typedef struct player_s
 	INT16 finishedrings; // The rings/stars you had left upon finishing the mare
 	UINT32 marescore; // score for this nights stage
 	UINT32 lastmarescore; // score for the last mare
+	UINT32 totalmarescore; // score for all mares
 	UINT8 lastmare; // previous mare
 	UINT8 lastmarelap; // previous mare lap
 	UINT8 lastmarebonuslap; // previous mare bonus lap
diff --git a/src/lua_playerlib.c b/src/lua_playerlib.c
index 67efe77108..f973061f1d 100644
--- a/src/lua_playerlib.c
+++ b/src/lua_playerlib.c
@@ -312,6 +312,8 @@ static int player_get(lua_State *L)
 		lua_pushinteger(L, plr->marescore);
 	else if (fastcmp(field,"lastmarescore"))
 		lua_pushinteger(L, plr->lastmarescore);
+	else if (fastcmp(field,"totalmarescore"))
+		lua_pushinteger(L, plr->totalmarescore);
 	else if (fastcmp(field,"lastmare"))
 		lua_pushinteger(L, plr->lastmare);
 	else if (fastcmp(field,"lastmarelap"))
@@ -608,6 +610,8 @@ static int player_set(lua_State *L)
 		plr->marescore = (UINT32)luaL_checkinteger(L, 3);
 	else if (fastcmp(field,"lastmarescore"))
 		plr->lastmarescore = (UINT32)luaL_checkinteger(L, 3);
+	else if (fastcmp(field,"totalmarescore"))
+		plr->totalmarescore = (UINT32)luaL_checkinteger(L, 3);
 	else if (fastcmp(field,"lastmare"))
 		plr->lastmare = (UINT8)luaL_checkinteger(L, 3);
 	else if (fastcmp(field,"lastmarelap"))
diff --git a/src/p_saveg.c b/src/p_saveg.c
index bcc582cd04..22d43f358a 100644
--- a/src/p_saveg.c
+++ b/src/p_saveg.c
@@ -210,6 +210,7 @@ static void P_NetArchivePlayers(void)
 		WRITEINT16(save_p, players[i].finishedrings);
 		WRITEUINT32(save_p, players[i].marescore);
 		WRITEUINT32(save_p, players[i].lastmarescore);
+		WRITEUINT32(save_p, players[i].totalmarescore);
 		WRITEUINT8(save_p, players[i].lastmare);
 		WRITEUINT8(save_p, players[i].lastmarelap);
 		WRITEUINT8(save_p, players[i].lastmarebonuslap);
@@ -407,6 +408,7 @@ static void P_NetUnArchivePlayers(void)
 		players[i].finishedrings = READINT16(save_p);
 		players[i].marescore = READUINT32(save_p);
 		players[i].lastmarescore = READUINT32(save_p);
+		players[i].totalmarescore = READUINT32(save_p);
 		players[i].lastmare = READUINT8(save_p);
 		players[i].lastmarelap = READUINT8(save_p);
 		players[i].lastmarebonuslap = READUINT8(save_p);
diff --git a/src/p_setup.c b/src/p_setup.c
index ee462193d2..368b95dd59 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -2389,8 +2389,8 @@ static void P_LevelInitStuff(void)
 		 players[i].anotherflyangle = players[i].nightstime =\
 		 players[i].mare = players[i].marelap =\
 		 players[i].marebonuslap = players[i].lapbegunat =\
-		 players[i].lapstartedtime = players[i].realtime =\
-		 players[i].exiting = 0;
+		 players[i].lapstartedtime = players[i].totalmarescore =\
+		 players[i].realtime = players[i].exiting = 0;
 
 		// i guess this could be part of the above but i feel mildly uncomfortable implicitly casting
 		players[i].gotcontinue = false;
diff --git a/src/p_user.c b/src/p_user.c
index 06f42dcadc..9d677b4bc8 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -733,6 +733,7 @@ void P_NightserizePlayer(player_t *player, INT32 nighttime)
 				G_AddTempNightsRecords(players[i].marescore, leveltime - player->marebegunat, players[i].mare + 1);
 
 			// transfer scores anyway
+			players[i].totalmarescore += players[i].marescore;
 			players[i].lastmarescore = players[i].marescore;
 			players[i].marescore = 0;
 
@@ -759,6 +760,7 @@ void P_NightserizePlayer(player_t *player, INT32 nighttime)
 			G_AddTempNightsRecords(player->marescore, leveltime - player->marebegunat, (UINT8)(oldmare + 1));
 
 		// Starting a new mare, transfer scores
+		player->totalmarescore += players[i].marescore;
 		player->lastmarescore = player->marescore;
 		player->marescore = 0;
 		player->marebegunat = leveltime;
-- 
GitLab