Merge branch 'more-fixes-jug' into 'next'

Various gameplay & stability fixes

See merge request KartKrew/Kart-Public!256
This commit is contained in:
Sal 2021-07-06 13:42:41 -04:00
commit a0f0b473ab
6 changed files with 44 additions and 41 deletions

View file

@ -515,6 +515,10 @@ ifdef ZDEBUG
CPPFLAGS+=-DZDEBUG CPPFLAGS+=-DZDEBUG
endif endif
ifdef DUMPCONSISTENCY
CPPFLAGS+=-DDUMPCONSISTENCY
endif
ifdef DEVELOP ifdef DEVELOP
CPPFLAGS+=-DDEVELOP CPPFLAGS+=-DDEVELOP
endif endif

View file

@ -1228,7 +1228,7 @@ static inline void CL_DrawConnectionStatus(void)
cltext = M_GetText("Server full, waiting for a slot..."); cltext = M_GetText("Server full, waiting for a slot...");
else else
cltext = M_GetText("Requesting to join..."); cltext = M_GetText("Requesting to join...");
break; break;
#ifdef HAVE_CURL #ifdef HAVE_CURL
case CL_PREPAREHTTPFILES: case CL_PREPAREHTTPFILES:
@ -2029,7 +2029,7 @@ void CL_QueryServerList (msg_server_t *server_list)
static void M_ConfirmConnect(event_t *ev) static void M_ConfirmConnect(event_t *ev)
{ {
#ifndef NONET #ifndef NONET
if (ev->type == ev_keydown) if (ev->type == ev_keydown)
{ {
if (ev->data1 == ' ' || ev->data1 == 'y' || ev->data1 == KEY_ENTER || ev->data1 == gamecontrol[gc_accelerate][0] || ev->data1 == gamecontrol[gc_accelerate][1]) if (ev->data1 == ' ' || ev->data1 == 'y' || ev->data1 == KEY_ENTER || ev->data1 == gamecontrol[gc_accelerate][0] || ev->data1 == gamecontrol[gc_accelerate][1])
@ -2052,7 +2052,7 @@ static void M_ConfirmConnect(event_t *ev)
} }
else else
cl_mode = CL_LOADFILES; cl_mode = CL_LOADFILES;
M_ClearMenus(true); M_ClearMenus(true);
} }
else if (ev->data1 == 'n' || ev->data1 == KEY_ESCAPE|| ev->data1 == gamecontrol[gc_brake][0] || ev->data1 == gamecontrol[gc_brake][1]) else if (ev->data1 == 'n' || ev->data1 == KEY_ESCAPE|| ev->data1 == gamecontrol[gc_brake][0] || ev->data1 == gamecontrol[gc_brake][1])
@ -2300,7 +2300,7 @@ static boolean CL_ServerConnectionTicker(const char *tmpsave, tic_t *oldtic, tic
{ {
boolean waitmore; boolean waitmore;
INT32 i; INT32 i;
#ifdef NONET #ifdef NONET
(void)tmpsave; (void)tmpsave;
#endif #endif
@ -2337,7 +2337,7 @@ static boolean CL_ServerConnectionTicker(const char *tmpsave, tic_t *oldtic, tic
{ {
curl_transfers++; curl_transfers++;
} }
cl_mode = CL_DOWNLOADHTTPFILES; cl_mode = CL_DOWNLOADHTTPFILES;
} }
break; break;
@ -5011,7 +5011,7 @@ FILESTAMP
{ {
node = (SINT8)doomcom->remotenode; node = (SINT8)doomcom->remotenode;
if (netbuffer->packettype == PT_CLIENTJOIN && server) if (netbuffer->packettype == PT_CLIENTJOIN && server && !levelloading)
{ {
HandleConnect(node); HandleConnect(node);
continue; continue;
@ -5222,7 +5222,7 @@ static void CL_SendClientKeepAlive(void)
static void SV_SendServerKeepAlive(void) static void SV_SendServerKeepAlive(void)
{ {
INT32 n; INT32 n;
for (n = 1; n < MAXNETNODES; n++) for (n = 1; n < MAXNETNODES; n++)
{ {
if (nodeingame[n]) if (nodeingame[n])
@ -5769,7 +5769,7 @@ FILESTAMP
{ {
SV_SendServerKeepAlive(); SV_SendServerKeepAlive();
} }
// No else because no tics are being run and we can't resynch during this // No else because no tics are being run and we can't resynch during this
Net_AckTicker(); Net_AckTicker();

View file

@ -341,15 +341,14 @@ static void DRPC_GotServerIP(UINT32 address)
{ {
const unsigned char * p = (const unsigned char *)&address; const unsigned char * p = (const unsigned char *)&address;
sprintf(self_ip, "%u.%u.%u.%u:%u", p[0], p[1], p[2], p[3], current_port); sprintf(self_ip, "%u.%u.%u.%u:%u", p[0], p[1], p[2], p[3], current_port);
DRPC_UpdatePresence();
} }
/*-------------------------------------------------- /*--------------------------------------------------
static const char *DRPC_GetServerIP(void) static const char *DRPC_GetServerIP(void)
Retrieves the IP address of the server that you're Retrieves the IP address of the server that you're
connected to. Will attempt to use curl for getting your connected to. Will attempt to use STUN for getting your
own IP address, if it's not yours. own IP address.
--------------------------------------------------*/ --------------------------------------------------*/
static const char *DRPC_GetServerIP(void) static const char *DRPC_GetServerIP(void)
{ {
@ -362,8 +361,7 @@ static const char *DRPC_GetServerIP(void)
{ {
// We're not the server, so we could successfully get the IP! // We're not the server, so we could successfully get the IP!
// No need to do anything else :) // No need to do anything else :)
sprintf(self_ip, "%s:%u", address, current_port); return address;
return self_ip;
} }
} }
@ -442,25 +440,6 @@ void DRPC_UpdatePresence(void)
// Server info // Server info
if (netgame) if (netgame)
{ {
if (DRPC_InvitesAreAllowed() == true)
{
const char *join;
// Grab the host's IP for joining.
if ((join = DRPC_GetServerIP()) != NULL)
{
char *xorjoin = DRPC_XORIPString(join);
discordPresence.joinSecret = xorjoin;
free(xorjoin);
joinSecretSet = true;
}
else
{
return;
}
}
if (cv_advertise.value) if (cv_advertise.value)
{ {
discordPresence.state = "Public"; discordPresence.state = "Public";
@ -473,6 +452,18 @@ void DRPC_UpdatePresence(void)
discordPresence.partyId = server_context; // Thanks, whoever gave us Mumble support, for implementing the EXACT thing Discord wanted for this field! discordPresence.partyId = server_context; // Thanks, whoever gave us Mumble support, for implementing the EXACT thing Discord wanted for this field!
discordPresence.partySize = D_NumPlayers(); // Players in server discordPresence.partySize = D_NumPlayers(); // Players in server
discordPresence.partyMax = discordInfo.maxPlayers; // Max players discordPresence.partyMax = discordInfo.maxPlayers; // Max players
if (DRPC_InvitesAreAllowed() == true)
{
const char *join;
// Grab the host's IP for joining.
if ((join = DRPC_GetServerIP()) != NULL)
{
discordPresence.joinSecret = DRPC_XORIPString(join);
joinSecretSet = true;
}
}
} }
else else
{ {

View file

@ -15757,7 +15757,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
0, // mass 0, // mass
0, // damage 0, // damage
sfx_None, // activesound sfx_None, // activesound
MF_NOBLOCKMAP|MF_BOUNCE|MF_SCENERY|MF_DONTENCOREMAP, // flags MF_NOBLOCKMAP|MF_NOCLIP|MF_BOUNCE|MF_SCENERY|MF_DONTENCOREMAP, // flags
S_NULL // raisestate S_NULL // raisestate
}, },
@ -15904,7 +15904,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
sfx_tossed, // seesound sfx_tossed, // seesound
8, // reactiontime 8, // reactiontime
sfx_None, // attacksound sfx_None, // attacksound
256*FRACUNIT, // painstate S_NULL, // painstate
100, // painchance 100, // painchance
sfx_None, // painsound sfx_None, // painsound
S_NULL, // meleestate S_NULL, // meleestate

View file

@ -894,7 +894,7 @@ static INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed, boolean sp
POWERITEMODDS(newodds); POWERITEMODDS(newodds);
break; break;
case KITEM_THUNDERSHIELD: case KITEM_THUNDERSHIELD:
if (thunderisout) if (thunderisout || COOLDOWNONSTART)
newodds = 0; newodds = 0;
else else
POWERITEMODDS(newodds); POWERITEMODDS(newodds);
@ -952,6 +952,7 @@ static INT32 K_FindUseodds(player_t *player, fixed_t mashed, INT32 pingame, INT3
for (i = 0; i < MAXPLAYERS; i++) for (i = 0; i < MAXPLAYERS; i++)
{ {
if (playeringame[i] && !players[i].spectator && players[i].mo if (playeringame[i] && !players[i].spectator && players[i].mo
&& players[i].kartstuff[k_position] != 0
&& players[i].kartstuff[k_position] < player->kartstuff[k_position]) && players[i].kartstuff[k_position] < player->kartstuff[k_position])
pdis += P_AproxDistance(P_AproxDistance(players[i].mo->x - player->mo->x, pdis += P_AproxDistance(P_AproxDistance(players[i].mo->x - player->mo->x,
players[i].mo->y - player->mo->y), players[i].mo->y - player->mo->y),
@ -4526,7 +4527,7 @@ static void K_UpdateEngineSounds(player_t *player, ticcmd_t *cmd)
volume = FixedDiv(volume * FRACUNIT, volumedampen) / FRACUNIT; volume = FixedDiv(volume * FRACUNIT, volumedampen) / FRACUNIT;
} }
if (volume <= 0) if (volume <= 0)
{ {
// Don't need to play the sound at all. // Don't need to play the sound at all.
return; return;
@ -5061,6 +5062,13 @@ INT32 K_GetKartDriftSparkValue(player_t *player)
static void K_KartDrift(player_t *player, boolean onground) static void K_KartDrift(player_t *player, boolean onground)
{ {
fixed_t minspeed = (10 * player->mo->scale); fixed_t minspeed = (10 * player->mo->scale);
// Grown players taking yellow spring panels will go below minspeed for one tic,
// and will then wrongdrift or have their sparks removed because of this.
// This fixes this problem.
if (player->kartstuff[k_pogospring] == 2 && player->mo->scale > mapobjectscale)
minspeed = FixedMul(10<<FRACBITS, mapobjectscale);
INT32 dsone = K_GetKartDriftSparkValue(player); INT32 dsone = K_GetKartDriftSparkValue(player);
INT32 dstwo = dsone*2; INT32 dstwo = dsone*2;
INT32 dsthree = dstwo*2; INT32 dsthree = dstwo*2;
@ -5116,14 +5124,14 @@ static void K_KartDrift(player_t *player, boolean onground)
{ {
// Starting left drift // Starting left drift
player->kartstuff[k_drift] = 1; player->kartstuff[k_drift] = 1;
player->kartstuff[k_driftend] = player->kartstuff[k_driftcharge] = 0; player->kartstuff[k_driftend] = 0;
} }
else if ((player->cmd.driftturn < 0) && player->speed > minspeed && player->kartstuff[k_jmp] == 1 else if ((player->cmd.driftturn < 0) && player->speed > minspeed && player->kartstuff[k_jmp] == 1
&& (player->kartstuff[k_drift] == 0 || player->kartstuff[k_driftend] == 1)) // && player->kartstuff[k_drift] != -1) && (player->kartstuff[k_drift] == 0 || player->kartstuff[k_driftend] == 1)) // && player->kartstuff[k_drift] != -1)
{ {
// Starting right drift // Starting right drift
player->kartstuff[k_drift] = -1; player->kartstuff[k_drift] = -1;
player->kartstuff[k_driftend] = player->kartstuff[k_driftcharge] = 0; player->kartstuff[k_driftend] = 0;
} }
else if (player->kartstuff[k_jmp] == 0) // || player->kartstuff[k_turndir] == 0) else if (player->kartstuff[k_jmp] == 0) // || player->kartstuff[k_turndir] == 0)
{ {
@ -5968,7 +5976,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
{ {
if (player->kartstuff[k_offroad]) if (player->kartstuff[k_offroad])
player->mo->friction -= 4912; player->mo->friction -= 4912;
if (player->kartstuff[k_wipeoutslow] == 1) if (player->kartstuff[k_wipeoutslow] == 1 && player->kartstuff[k_pogospring] == 0)
player->mo->friction -= 9824; player->mo->friction -= 9824;
} }
} }

View file

@ -2691,8 +2691,8 @@ boolean M_Responder(event_t *ev)
M_QuitSRB2(0); M_QuitSRB2(0);
return true; return true;
case KEY_F11: // Gamma Level case KEY_F11: // Fullscreen
CV_AddValue(&cv_usegamma, 1); CV_AddValue(&cv_fullscreen, 1);
return true; return true;
// Spymode on F12 handled in game logic // Spymode on F12 handled in game logic