diff --git a/src/d_player.h b/src/d_player.h index 274929527..fd41c7621 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -473,6 +473,8 @@ typedef struct player_s UINT8 lastmare; // previous mare UINT8 lastmarelap; // previous mare lap UINT8 lastmarebonuslap; // previous mare bonus lap + UINT8 totalmarelap; // total mare lap + UINT8 totalmarebonuslap; // total mare bonus lap INT32 maxlink; // maximum link obtained UINT8 texttimer; // nights_texttime should not be local UINT8 textvar; // which line of NiGHTS text to show -- let's not use cheap hacks diff --git a/src/lua_playerlib.c b/src/lua_playerlib.c index c7e176aa3..f973061f1 100644 --- a/src/lua_playerlib.c +++ b/src/lua_playerlib.c @@ -320,6 +320,10 @@ static int player_get(lua_State *L) lua_pushinteger(L, plr->lastmarelap); else if (fastcmp(field,"lastmarebonuslap")) lua_pushinteger(L, plr->lastmarebonuslap); + else if (fastcmp(field,"totalmarelap")) + lua_pushinteger(L, plr->totalmarelap); + else if (fastcmp(field,"totalmarebonuslap")) + lua_pushinteger(L, plr->totalmarebonuslap); else if (fastcmp(field,"maxlink")) lua_pushinteger(L, plr->maxlink); else if (fastcmp(field,"texttimer")) @@ -614,6 +618,10 @@ static int player_set(lua_State *L) plr->lastmarelap = (UINT8)luaL_checkinteger(L, 3); else if (fastcmp(field,"lastmarebonuslap")) plr->lastmarebonuslap = (UINT8)luaL_checkinteger(L, 3); + else if (fastcmp(field,"totalmarelap")) + plr->totalmarelap = (UINT8)luaL_checkinteger(L, 3); + else if (fastcmp(field,"totalmarebonuslap")) + plr->totalmarebonuslap = (UINT8)luaL_checkinteger(L, 3); else if (fastcmp(field,"maxlink")) plr->maxlink = (INT32)luaL_checkinteger(L, 3); else if (fastcmp(field,"texttimer")) diff --git a/src/p_map.c b/src/p_map.c index 7d3538573..6e5e03a8d 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -1114,12 +1114,14 @@ static boolean PIT_CheckThing(mobj_t *thing) )) { pl->marelap++; + pl->totalmarelap++; pl->lapbegunat = leveltime; pl->lapstartedtime = pl->nightstime; - if (pl->bonustime) + if (pl->bonustime) { pl->marebonuslap++; + pl->totalmarebonuslap++; // Respawn rings and items P_ReloadRings(); diff --git a/src/p_saveg.c b/src/p_saveg.c index 0e06ee887..22d43f358 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -214,6 +214,8 @@ static void P_NetArchivePlayers(void) WRITEUINT8(save_p, players[i].lastmare); WRITEUINT8(save_p, players[i].lastmarelap); WRITEUINT8(save_p, players[i].lastmarebonuslap); + WRITEUINT8(save_p, players[i].totalmarelap); + WRITEUINT8(save_p, players[i].totalmarebonuslap); WRITEINT32(save_p, players[i].maxlink); WRITEUINT8(save_p, players[i].texttimer); WRITEUINT8(save_p, players[i].textvar); @@ -410,6 +412,8 @@ static void P_NetUnArchivePlayers(void) players[i].lastmare = READUINT8(save_p); players[i].lastmarelap = READUINT8(save_p); players[i].lastmarebonuslap = READUINT8(save_p); + players[i].totalmarelap = READUINT8(save_p); + players[i].totalmarebonuslap = READUINT8(save_p); players[i].maxlink = READINT32(save_p); players[i].texttimer = READUINT8(save_p); players[i].textvar = READUINT8(save_p); diff --git a/src/p_setup.c b/src/p_setup.c index eca08647c..368b95dd5 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -2382,6 +2382,7 @@ static void P_LevelInitStuff(void) players[i].finishedtime = players[i].finishedspheres =\ players[i].finishedrings = players[i].lastmare =\ players[i].lastmarelap = players[i].lastmarebonuslap =\ + players[i].totalmarelap = players[i].totalmarebonuslap =\ players[i].marebegunat = players[i].textvar =\ players[i].texttimer = players[i].linkcount =\ players[i].linktimer = players[i].flyangle =\