mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-12-26 04:11:18 +00:00
Merge branch 'more-fixes-jug' into 'next'
Various gameplay & stability fixes See merge request KartKrew/Kart-Public!256
This commit is contained in:
commit
a0f0b473ab
6 changed files with 44 additions and 41 deletions
|
@ -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
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
@ -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
|
||||||
|
|
18
src/k_kart.c
18
src/k_kart.c
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue