diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 73595b483..f2da16ebc 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -4303,7 +4303,11 @@ boolean SV_SpawnServer(void) // strictly speaking, i'm not convinced the following is necessary // but I'm not confident enough to remove it entirely in case it breaks something - { + + // in a listen server, this sends the local player information to the server so + // that the client has players replicated on the server. in dedicated, there is + // no local player! + if (!dedicated) { UINT8 *availabilitiesbuffer = R_GetSkinAvailabilities(false, -1); SINT8 node = 0; for (; node < MAXNETNODES; node++) diff --git a/src/lua_hudlib_drawlist.c b/src/lua_hudlib_drawlist.c index ad5a62bbc..a3b59b9f6 100644 --- a/src/lua_hudlib_drawlist.c +++ b/src/lua_hudlib_drawlist.c @@ -15,6 +15,7 @@ #include +#include "r_fps.h" #include "v_video.h" #include "z_zone.h" @@ -65,6 +66,7 @@ typedef struct drawitem_s { INT32 threshold; boolean bossmode; boolean p4; + enum viewcontext_e splitnum; // save view number to account for splitscreen } drawitem_t; // The internal structure of a drawlist. @@ -202,6 +204,7 @@ void LUA_HUD_AddDraw( item->patch = patch; item->flags = flags; item->colormap = colormap; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddDrawScaled( @@ -223,6 +226,7 @@ void LUA_HUD_AddDrawScaled( item->patch = patch; item->flags = flags; item->colormap = colormap; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddDrawStretched( @@ -246,6 +250,7 @@ void LUA_HUD_AddDrawStretched( item->patch = patch; item->flags = flags; item->colormap = colormap; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddDrawNum( @@ -263,6 +268,7 @@ void LUA_HUD_AddDrawNum( item->y = y; item->num = num; item->flags = flags; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddDrawPaddedNum( @@ -282,6 +288,7 @@ void LUA_HUD_AddDrawPaddedNum( item->num = num; item->digits = digits; item->flags = flags; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddDrawPingNum( @@ -301,6 +308,7 @@ void LUA_HUD_AddDrawPingNum( item->flags = flags; item->num = num; item->colormap = colormap; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddDrawFill( @@ -320,6 +328,7 @@ void LUA_HUD_AddDrawFill( item->w = w; item->h = h; item->c = c; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddDrawString( @@ -339,6 +348,7 @@ void LUA_HUD_AddDrawString( item->stroffset = CopyString(list, str); item->flags = flags; item->align = align; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddFadeScreen( @@ -352,6 +362,7 @@ void LUA_HUD_AddFadeScreen( item->type = DI_FadeScreen; item->color = color; item->strength = strength; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddDrawTitleCardString( @@ -377,6 +388,7 @@ void LUA_HUD_AddDrawTitleCardString( item->timer = timer; item->threshold = threshold; item->p4 = p4; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddDrawKartString( @@ -394,6 +406,7 @@ void LUA_HUD_AddDrawKartString( item->y = y; item->stroffset = CopyString(list, str); item->flags = flags; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddSetClipRect( @@ -413,6 +426,7 @@ void LUA_HUD_AddSetClipRect( item->w = w; item->h = h; item->flags = flags; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddClearClipRect( @@ -422,6 +436,7 @@ void LUA_HUD_AddClearClipRect( size_t i = AllocateDrawItem(list); drawitem_t *item = &list->items[i]; item->type = DI_ClearClipRect; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_DrawList(huddrawlist_h list) @@ -436,6 +451,10 @@ void LUA_HUD_DrawList(huddrawlist_h list) { drawitem_t *item = &list->items[i]; const char *itemstr = &list->strbuf[item->stroffset]; + enum viewcontext_e old_viewcontext = viewcontext; + + // Set view context to account for V_SPLITSCREEN + R_SetViewContext(item->splitnum); switch (item->type) { @@ -514,5 +533,8 @@ void LUA_HUD_DrawList(huddrawlist_h list) I_Error("can't draw draw list item: invalid draw list item type"); continue; } + + // Reset view context back, just incase of some stupid shenanigans + R_SetViewContext(old_viewcontext); } } diff --git a/src/p_setup.cpp b/src/p_setup.cpp index 406d7cc8b..2d610b0b1 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -9508,6 +9508,7 @@ void Command_dumprrautomedaltimes(void) ); } fclose(out); + CONS_Printf("Medal times written to %s\n", outname); } void Command_Platinums(void) @@ -9558,8 +9559,10 @@ void Command_Platinums(void) } else { - CONS_Printf(", %s (+%d:%02d)", stafftime.second.c_str(), - G_TicsToSeconds(stafftime.first - platinumtime), G_TicsToCentiseconds(stafftime.first - platinumtime)); + CONS_Printf(", %s (+%d:%02d:%02d)", stafftime.second.c_str(), + G_TicsToMinutes(stafftime.first - platinumtime, true), + G_TicsToSeconds(stafftime.first - platinumtime), + G_TicsToCentiseconds(stafftime.first - platinumtime)); } names[stafftime.second]++;