From 68b8ec81626a9023f638e7e22e9bb01489637ea6 Mon Sep 17 00:00:00 2001 From: James Date: Tue, 19 Feb 2019 23:01:19 -0500 Subject: [PATCH 1/5] Wipeout particles come from back wheels --- src/k_kart.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/k_kart.c b/src/k_kart.c index 468f5438..5ccc969b 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -2771,11 +2771,24 @@ void K_SpawnSparkleTrail(mobj_t *mo) void K_SpawnWipeoutTrail(mobj_t *mo, boolean translucent) { mobj_t *dust; + angle_t aoff; I_Assert(mo != NULL); I_Assert(!P_MobjWasRemoved(mo)); - dust = P_SpawnMobj(mo->x + (P_RandomRange(-25,25) * mo->scale), mo->y + (P_RandomRange(-25,25) * mo->scale), mo->z, MT_WIPEOUTTRAIL); + if (mo->player) + aoff = (mo->player->frameangle + ANGLE_180); + else + aoff = (mo->angle + ANGLE_180); + + if ((leveltime / 2) & 1) + aoff -= ANGLE_45; + else + aoff += ANGLE_45; + + dust = P_SpawnMobj(mo->x + FixedMul(24*mo->scale, FINECOSINE(aoff>>ANGLETOFINESHIFT)) + (P_RandomRange(-8,8) << FRACBITS), + mo->y + FixedMul(24*mo->scale, FINESINE(aoff>>ANGLETOFINESHIFT)) + (P_RandomRange(-8,8) << FRACBITS), + mo->z, MT_WIPEOUTTRAIL); P_SetTarget(&dust->target, mo); dust->angle = R_PointToAngle2(0,0,mo->momx,mo->momy); From cec79dee87128b0d9f48f6a6c0a87a6b31e596e4 Mon Sep 17 00:00:00 2001 From: Alam Arias Date: Fri, 22 Feb 2019 21:04:53 -0500 Subject: [PATCH 2/5] if you going to use abs(), you need to work in signed types --- src/g_game.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/g_game.c b/src/g_game.c index 0a19ec8f..842ac1a7 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -4896,7 +4896,7 @@ void G_WriteGhostTic(mobj_t *ghost) void G_ConsGhostTic(void) { UINT8 ziptic; - UINT32 px,py,pz,gx,gy,gz; + fixed_t px,py,pz,gx,gy,gz; mobj_t *testmo; UINT32 syncleeway; boolean nightsfail = false; From d5a4759121b89340016b22f332bdc174dc4a56a7 Mon Sep 17 00:00:00 2001 From: Alam Arias Date: Fri, 22 Feb 2019 21:13:00 -0500 Subject: [PATCH 3/5] signed and unsigned compare --- src/g_game.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/g_game.c b/src/g_game.c index 842ac1a7..003c11e9 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -4898,7 +4898,7 @@ void G_ConsGhostTic(void) UINT8 ziptic; fixed_t px,py,pz,gx,gy,gz; mobj_t *testmo; - UINT32 syncleeway; + fixed_t syncleeway; boolean nightsfail = false; if (!demo_p || !demo_start) From 1d3adb04911702f13b0a89d101b589d5ef2cf9d3 Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Tue, 26 Feb 2019 17:33:10 -0500 Subject: [PATCH 4/5] Remove mixed declaration that triggers ERRORMODE on my setup --- src/d_clisrv.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 6eda1445..e8700cd0 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -5096,9 +5096,10 @@ static inline void PingUpdate(void) pingtimeout[i]++; if (pingtimeout[i] > cv_pingtimeout.value) // ok your net has been bad for too long, you deserve to die. { - pingtimeout[i] = 0; XBOXSTATIC char buf[2]; + pingtimeout[i] = 0; + buf[0] = (char)i; buf[1] = KICK_MSG_PING_HIGH; SendNetXCmd(XD_KICK, &buf, 2); From 22434949e52afd5cf0c87a1622426974668d2e35 Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Tue, 26 Feb 2019 17:44:35 -0500 Subject: [PATCH 5/5] Extend pingtable by 1 for the servermaxping entry --- src/d_clisrv.c | 6 +++--- src/d_clisrv.h | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index e8700cd0..f8938d6c 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -4400,12 +4400,12 @@ FILESTAMP //Update client ping table from the server. if (client) { - INT32 i; + UINT8 i; for (i = 0; i < MAXPLAYERS; i++) if (playeringame[i]) playerpingtable[i] = (tic_t)netbuffer->u.pingtable[i]; - servermaxping = (tic_t)netbuffer->u.pingtable[i++]; + servermaxping = (tic_t)netbuffer->u.pingtable[MAXPLAYERS]; } break; @@ -5122,7 +5122,7 @@ static inline void PingUpdate(void) } // send the server's maxping as last element of our ping table. This is useful to let us know when we're about to get kicked. - netbuffer->u.pingtable[i++] = cv_maxping.value; + netbuffer->u.pingtable[MAXPLAYERS] = cv_maxping.value; //send out our ping packets for (i = 0; i < MAXNETNODES; i++) diff --git a/src/d_clisrv.h b/src/d_clisrv.h index 21fe7c38..6615d67d 100644 --- a/src/d_clisrv.h +++ b/src/d_clisrv.h @@ -452,10 +452,10 @@ typedef struct serverrefuse_pak serverrefuse; // 65025 bytes (somehow I feel like those values are garbage...) askinfo_pak askinfo; // 61 bytes msaskinfo_pak msaskinfo; // 22 bytes - plrinfo playerinfo[MAXPLAYERS]; // 1152 bytes (I'd say 36~38) - plrconfig playerconfig[MAXPLAYERS]; // (up to) 896 bytes (welp they ARE) + plrinfo playerinfo[MAXPLAYERS]; // 576 bytes(?) + plrconfig playerconfig[MAXPLAYERS]; // (up to) 528 bytes(?) #ifdef NEWPING - UINT32 pingtable[MAXPLAYERS]; // 128 bytes + UINT32 pingtable[MAXPLAYERS+1]; // 68 bytes #endif } u; // This is needed to pack diff packet types data together } ATTRPACK doomdata_t;