diff --git a/src/hu_stuff.c b/src/hu_stuff.c index d8b6093c..36b2812e 100644 --- a/src/hu_stuff.c +++ b/src/hu_stuff.c @@ -2186,10 +2186,10 @@ void HU_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, I const UINT8 *colormap; //this function is designed for 9 or less score lines only - I_Assert(scorelines <= 9); + //I_Assert(scorelines <= 9); -- not today bitch, kart fixed it up V_DrawFill(1, 26, 318, 1, 0); // Draw a horizontal line because it looks nice! - if (scorelines > 9) + if (scorelines > 8) { V_DrawFill(160, 26, 1, 154, 0); // Draw a vertical line to separate the two sides. V_DrawFill(1, 180, 318, 1, 0); // And a horizontal line near the bottom. @@ -2198,6 +2198,8 @@ void HU_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, I for (i = 0; i < scorelines; i++) { + char strtime[MAXPLAYERNAME+1]; + if (players[tab[i].num].spectator || !players[tab[i].num].mo) continue; //ignore them. @@ -2207,11 +2209,16 @@ void HU_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, I HU_drawPing(x+ 253, y+2, playerpingtable[tab[i].num], false); } + if (scorelines > 8) + strlcpy(strtime, tab[i].name, 6); + else + STRBUFCPY(strtime, tab[i].name); + V_DrawString(x + 20, y, ((tab[i].num == whiteplayer) ? hilicol|V_ALLOWLOWERCASE : V_ALLOWLOWERCASE), - tab[i].name); + strtime); if (players[tab[i].num].mo->color) { @@ -2260,7 +2267,7 @@ void HU_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, I V_DrawRightAlignedString(x+rightoffset, y, 0, va("%u", tab[i].count)); y += 16; - if (i == 9) + if (i == 7) { y = 32; x += BASEVIDWIDTH/2; @@ -2680,15 +2687,17 @@ static void HU_DrawRankings(void) tab[scorelines].count = players[i].marescore; scorelines++; - } - if (scorelines > 20) - scorelines = 20; //dont draw past bottom of screen, show the best only +#if MAXPLAYERS > 16 + if (scorelines > 16) + break; //dont draw past bottom of screen, show the best only +#endif + } /*if (G_GametypeHasTeams()) HU_DrawTeamTabRankings(tab, whiteplayer); //separate function for Spazzo's silly request -- gotta fix this up later else if (scorelines > 10)*/ - HU_DrawTabRankings(((scorelines > 9) ? 32 : 40), 32, tab, scorelines, whiteplayer, hilicol); + HU_DrawTabRankings(((scorelines > 8) ? 32 : 40), 32, tab, scorelines, whiteplayer, hilicol); /*else HU_DrawDualTabRankings(32, 32, tab, scorelines, whiteplayer);*/ diff --git a/src/p_mobj.c b/src/p_mobj.c index 706da047..82c0c769 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -7006,7 +7006,7 @@ void P_MobjThinker(mobj_t *mobj) else mobj->tracer->flags2 &= ~MF2_DONTDRAW; } - else if (mobj->target->player->kartstuff[k_itemtype]) + else if (mobj->target->player->kartstuff[k_itemtype] && mobj->target->player->kartstuff[k_itemamount] > 0) { P_SetMobjState(mobj, S_PLAYERARROW_BOX); diff --git a/src/y_inter.c b/src/y_inter.c index 357c08e0..9416211a 100644 --- a/src/y_inter.c +++ b/src/y_inter.c @@ -396,7 +396,6 @@ void Y_IntermissionDrawer(void) else*/ if (intertype == int_race || intertype == int_match) { INT32 y = 48; - char name[MAXPLAYERNAME+1]; const char *timeheader; if (data.match.rankingsmode) @@ -410,7 +409,7 @@ void Y_IntermissionDrawer(void) if (data.match.numplayers > 8) { - V_DrawFill(160, 32, 1, 152, 0); + V_DrawFill(x+156, 32, 1, 152, 0); V_DrawCenteredString(x+6+(BASEVIDWIDTH/2), 32, hilicol, "#"); V_DrawString(x+36+(BASEVIDWIDTH/2), 32, hilicol, "NAME"); @@ -427,7 +426,7 @@ void Y_IntermissionDrawer(void) { if (data.match.num[i] != MAXPLAYERS && playeringame[data.match.num[i]] && !players[data.match.num[i]].spectator) { - char strtime[10]; + char strtime[MAXPLAYERNAME+1]; V_DrawCenteredString(x+6, y, 0, va("%d", data.match.pos[i])); @@ -439,16 +438,16 @@ void Y_IntermissionDrawer(void) V_DrawSmallMappedPatch(x+16, y-4, 0,faceprefix[*data.match.character[i]], colormap); } - if (data.match.numplayers > 9) - strlcpy(name, data.match.name[i], 6); + if (data.match.numplayers > 8) + strlcpy(strtime, data.match.name[i], 6); else - STRBUFCPY(name, data.match.name[i]); + STRBUFCPY(strtime, data.match.name[i]); V_DrawString(x+36, y, ((data.match.num[i] == whiteplayer) ? hilicol|V_ALLOWLOWERCASE : V_ALLOWLOWERCASE), - name); + strtime); if (data.match.rankingsmode) { @@ -507,11 +506,14 @@ void Y_IntermissionDrawer(void) } } else + { + data.match.increase[data.match.num[i]] = 0; data.match.num[i] = MAXPLAYERS; // this should be the only field setting in this function + } y += 16; - if (y > 176) + if (i == 7) { y = 48; x += BASEVIDWIDTH/2;