diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 9c79d8ef6..24ec5137e 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -3389,8 +3389,6 @@ static boolean SV_AddWaitingPlayers(void) { INT32 node, n, newplayer = false; UINT8 newplayernum = 0; - static UINT8 buf[3]; - static UINT8 *buf_p = buf; // What is the reason for this? Why can't newplayernum always be 0? // Sal: Because the dedicated player is stupidly forced into players[0]..... @@ -3402,6 +3400,9 @@ static boolean SV_AddWaitingPlayers(void) // splitscreen can allow 2+ players in one node for (; nodewaiting[node] > 0; nodewaiting[node]--) { + UINT8 buf[3]; + UINT8 *buf_p = buf; + newplayer = true; // search for a free playernum diff --git a/src/y_inter.c b/src/y_inter.c index 8000fd2b1..3cca4f7fc 100644 --- a/src/y_inter.c +++ b/src/y_inter.c @@ -718,8 +718,16 @@ void Y_Ticker(void) r++; data.match.jitter[data.match.num[q]] = 1; - if (--data.match.increase[data.match.num[q]]) - kaching = false; + if (data.match.increase[data.match.num[q]] > 0) + { + if (--data.match.increase[data.match.num[q]]) + kaching = false; + } + else if (data.match.increase[data.match.num[q]] < 0) + { + if (++data.match.increase[data.match.num[q]]) + kaching = false; + } } if (r)