From 9742e1775a3492814c767955ffe1107f7f0dfe00 Mon Sep 17 00:00:00 2001 From: NepDisk <16447892+NepDisk@users.noreply.github.com> Date: Wed, 31 Jul 2024 18:02:47 -0400 Subject: [PATCH] Disable combos, restore old invin visuals, fix constant line beeping --- src/deh_tables.c | 34 +++++---------- src/info.c | 34 +++++---------- src/info.h | 34 +++++---------- src/k_kart.c | 107 +++++++++++++---------------------------------- src/p_inter.c | 30 +++++++------ src/p_mobj.c | 9 ++++ src/p_spec.c | 4 +- 7 files changed, 87 insertions(+), 165 deletions(-) diff --git a/src/deh_tables.c b/src/deh_tables.c index 62a957170..7f960bd2c 100644 --- a/src/deh_tables.c +++ b/src/deh_tables.c @@ -3364,31 +3364,17 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi "S_KARTAIZDRIFTSTRAT", // Invincibility Sparks - "S_KARTINVULN1", - "S_KARTINVULN2", - "S_KARTINVULN3", - "S_KARTINVULN4", - "S_KARTINVULN5", - "S_KARTINVULN6", - "S_KARTINVULN7", - "S_KARTINVULN8", - "S_KARTINVULN9", - "S_KARTINVULN10", - "S_KARTINVULN11", - "S_KARTINVULN12", + "S_KARTINVULN_SMALL1", + "S_KARTINVULN_SMALL2", + "S_KARTINVULN_SMALL3", + "S_KARTINVULN_SMALL4", + "S_KARTINVULN_SMALL5", - "S_KARTINVULNB1", - "S_KARTINVULNB2", - "S_KARTINVULNB3", - "S_KARTINVULNB4", - "S_KARTINVULNB5", - "S_KARTINVULNB6", - "S_KARTINVULNB7", - "S_KARTINVULNB8", - "S_KARTINVULNB9", - "S_KARTINVULNB10", - "S_KARTINVULNB11", - "S_KARTINVULNB12", + "S_KARTINVULN_LARGE1", + "S_KARTINVULN_LARGE2", + "S_KARTINVULN_LARGE3", + "S_KARTINVULN_LARGE4", + "S_KARTINVULN_LARGE5", // Invincibility flash overlay "S_INVULNFLASH1", diff --git a/src/info.c b/src/info.c index bf7bac537..9b189f795 100644 --- a/src/info.c +++ b/src/info.c @@ -3924,31 +3924,17 @@ state_t states[NUMSTATES] = {SPR_AIDU, FF_ANIMATE|FF_PAPERSPRITE, 5*2, {NULL}, 5, 2, S_NULL}, // S_KARTAIZDRIFTSTRAT - {SPR_KINV, FF_FULLBRIGHT, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN2}, // S_KARTINVULN1 - {SPR_KINV, FF_FULLBRIGHT|1, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN3}, // S_KARTINVULN2 - {SPR_KINV, FF_FULLBRIGHT|2, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN4}, // S_KARTINVULN3 - {SPR_KINV, FF_FULLBRIGHT|3, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN5}, // S_KARTINVULN4 - {SPR_KINV, FF_FULLBRIGHT|4, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN6}, // S_KARTINVULN5 - {SPR_KINV, FF_FULLBRIGHT|5, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN7}, // S_KARTINVULN6 - {SPR_KINV, FF_FULLBRIGHT|6, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN8}, // S_KARTINVULN7 - {SPR_KINV, FF_FULLBRIGHT|7, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN9}, // S_KARTINVULN8 - {SPR_KINV, FF_FULLBRIGHT|8, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN10}, // S_KARTINVULN9 - {SPR_KINV, FF_FULLBRIGHT|9, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN11}, // S_KARTINVULN10 - {SPR_KINV, FF_FULLBRIGHT|10, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN12}, // S_KARTINVULN11 - {SPR_KINV, FF_FULLBRIGHT|11, 1, {A_InvincSparkleRotate}, 0, 0, S_NULL}, // S_KARTINVULN12 + {SPR_KINV, FF_FULLBRIGHT, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN_SMALL2}, // S_KARTINVULN_SMALL1 + {SPR_KINV, FF_FULLBRIGHT|1, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN_SMALL3}, // S_KARTINVULN_SMALL2 + {SPR_KINV, FF_FULLBRIGHT|2, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN_SMALL4}, // S_KARTINVULN_SMALL3 + {SPR_KINV, FF_FULLBRIGHT|3, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULN_SMALL5}, // S_KARTINVULN_SMALL4 + {SPR_KINV, FF_FULLBRIGHT|4, 1, {A_InvincSparkleRotate}, 0, 0, S_NULL}, // S_KARTINVULN_SMALL5 - {SPR_KINB, FF_FULLBRIGHT, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULNB2}, // S_KARTINVULNB1 - {SPR_KINB, FF_FULLBRIGHT|1, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULNB3}, // S_KARTINVULNB2 - {SPR_KINB, FF_FULLBRIGHT|2, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULNB4}, // S_KARTINVULNB3 - {SPR_KINB, FF_FULLBRIGHT|3, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULNB5}, // S_KARTINVULNB4 - {SPR_KINB, FF_FULLBRIGHT|4, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULNB6}, // S_KARTINVULNB5 - {SPR_KINB, FF_FULLBRIGHT|5, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULNB7}, // S_KARTINVULNB6 - {SPR_KINB, FF_FULLBRIGHT|6, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULNB8}, // S_KARTINVULNB7 - {SPR_KINB, FF_FULLBRIGHT|7, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULNB9}, // S_KARTINVULNB8 - {SPR_KINB, FF_FULLBRIGHT|8, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULNB10}, // S_KARTINVULNB9 - {SPR_KINB, FF_FULLBRIGHT|9, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULNB11}, // S_KARTINVULNB10 - {SPR_KINB, FF_FULLBRIGHT|10, 1, {A_InvincSparkleRotate}, 0, 0, S_KARTINVULNB12}, // S_KARTINVULNB11 - {SPR_KINB, FF_FULLBRIGHT|11, 1, {A_InvincSparkleRotate}, 0, 0, S_NULL}, // S_KARTINVULNB12 + {SPR_KINV, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_KARTINVULN_LARGE2}, // S_KARTINVULN_LARGE1 + {SPR_KINV, FF_FULLBRIGHT|2, 1, {NULL}, 0, 0, S_KARTINVULN_LARGE3}, // S_KARTINVULN_LARGE2 + {SPR_KINV, FF_FULLBRIGHT|5, 1, {NULL}, 0, 0, S_KARTINVULN_LARGE4}, // S_KARTINVULN_LARGE3 + {SPR_KINV, FF_FULLBRIGHT|6, 1, {NULL}, 0, 0, S_KARTINVULN_LARGE5}, // S_KARTINVULN_LARGE4 + {SPR_KINV, FF_FULLBRIGHT|7, 1, {NULL}, 0, 0, S_NULL}, // S_KARTINVULN_LARGE5 {SPR_KINF, FF_FULLBRIGHT|FF_TRANS80|FF_ADD, 1, {NULL}, 0, 0, S_INVULNFLASH2}, // S_INVULNFLASH1 {SPR_NULL, FF_FULLBRIGHT|FF_TRANS80|FF_ADD, 1, {NULL}, 0, 0, S_INVULNFLASH3}, // S_INVULNFLASH2 diff --git a/src/info.h b/src/info.h index e1b5faa60..3a85e8331 100644 --- a/src/info.h +++ b/src/info.h @@ -4335,31 +4335,17 @@ typedef enum state S_KARTAIZDRIFTSTRAT, // Invincibility Sparks - S_KARTINVULN1, - S_KARTINVULN2, - S_KARTINVULN3, - S_KARTINVULN4, - S_KARTINVULN5, - S_KARTINVULN6, - S_KARTINVULN7, - S_KARTINVULN8, - S_KARTINVULN9, - S_KARTINVULN10, - S_KARTINVULN11, - S_KARTINVULN12, + S_KARTINVULN_SMALL1, + S_KARTINVULN_SMALL2, + S_KARTINVULN_SMALL3, + S_KARTINVULN_SMALL4, + S_KARTINVULN_SMALL5, - S_KARTINVULNB1, - S_KARTINVULNB2, - S_KARTINVULNB3, - S_KARTINVULNB4, - S_KARTINVULNB5, - S_KARTINVULNB6, - S_KARTINVULNB7, - S_KARTINVULNB8, - S_KARTINVULNB9, - S_KARTINVULNB10, - S_KARTINVULNB11, - S_KARTINVULNB12, + S_KARTINVULN_LARGE1, + S_KARTINVULN_LARGE2, + S_KARTINVULN_LARGE3, + S_KARTINVULN_LARGE4, + S_KARTINVULN_LARGE5, // Invincibility flash S_INVULNFLASH1, diff --git a/src/k_kart.c b/src/k_kart.c index 5386f8a5d..0ffb2255e 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -406,22 +406,6 @@ static INT32 K_KartItemOddsBattle[NUMKARTRESULTS][2] = #define SPBFORCEDIST (15*DISTVAR) // Distance when SPB is forced onto 2nd place #define ENDDIST (12*DISTVAR) // Distance when the game stops giving you bananas -// Array of states to pick the starting point of the animation, based on the actual time left for invincibility. -static INT32 K_SparkleTrailStartStates[KART_NUMINVSPARKLESANIM][2] = { - {S_KARTINVULN12, S_KARTINVULNB12}, - {S_KARTINVULN11, S_KARTINVULNB11}, - {S_KARTINVULN10, S_KARTINVULNB10}, - {S_KARTINVULN9, S_KARTINVULNB9}, - {S_KARTINVULN8, S_KARTINVULNB8}, - {S_KARTINVULN7, S_KARTINVULNB7}, - {S_KARTINVULN6, S_KARTINVULNB6}, - {S_KARTINVULN5, S_KARTINVULNB5}, - {S_KARTINVULN4, S_KARTINVULNB4}, - {S_KARTINVULN3, S_KARTINVULNB3}, - {S_KARTINVULN2, S_KARTINVULNB2}, - {S_KARTINVULN1, S_KARTINVULNB1} -}; - INT32 K_GetShieldFromItem(INT32 item) { switch (item) @@ -4025,54 +4009,29 @@ void K_SpawnBoostTrail(player_t *player) void K_SpawnSparkleTrail(mobj_t *mo) { - const INT32 rad = (mo->radius*3)/FRACUNIT; + const INT32 rad = (mo->radius*2)>>FRACBITS; mobj_t *sparkle; - UINT8 invanimnum; // Current sparkle animation number - INT32 invtime;// Invincibility time left, in seconds - UINT8 index = 0; - fixed_t newx, newy, newz; + INT32 i; I_Assert(mo != NULL); I_Assert(!P_MobjWasRemoved(mo)); - if (leveltime & 2) - index = 1; - - invtime = mo->player->invincibilitytimer/TICRATE+1; - - //CONS_Printf("%d\n", index); - - newx = mo->x + (P_RandomRange(-rad, rad)*FRACUNIT); - newy = mo->y + (P_RandomRange(-rad, rad)*FRACUNIT); - newz = mo->z + (P_RandomRange(0, mo->height>>FRACBITS)*FRACUNIT); - - sparkle = P_SpawnMobj(newx, newy, newz, MT_SPARKLETRAIL); - - P_InitAngle(sparkle, R_PointToAngle2(mo->x, mo->y, sparkle->x, sparkle->y)); - - sparkle->movefactor = R_PointToDist2(mo->x, mo->y, sparkle->x, sparkle->y); // Save the distance we spawned away from the player. - //CONS_Printf("movefactor: %d\n", sparkle->movefactor/FRACUNIT); - - sparkle->extravalue1 = (sparkle->z - mo->z); // Keep track of our Z position relative to the player's, I suppose. - sparkle->extravalue2 = P_RandomRange(0, 1) ? 1 : -1; // Rotation direction? - sparkle->cvmem = P_RandomRange(-25, 25)*mo->scale; // Vertical "angle" - - K_FlipFromObject(sparkle, mo); - P_SetTarget(&sparkle->target, mo); - - sparkle->destscale = mo->destscale; - P_SetScale(sparkle, mo->scale); - - invanimnum = (invtime >= 11) ? 11 : invtime; - //CONS_Printf("%d\n", invanimnum); - - P_SetMobjState(sparkle, K_SparkleTrailStartStates[invanimnum][index]); - - if (mo->player->invincibilitytimer > itemtime+(2*TICRATE)) + for (i = 0; i < 3; i++) { + fixed_t newx = mo->x + mo->momx + (P_RandomRange(-rad, rad)<y + mo->momy + (P_RandomRange(-rad, rad)<z + mo->momz + (P_RandomRange(0, mo->height>>FRACBITS)<target, mo); + sparkle->destscale = mo->destscale; + P_SetScale(sparkle, mo->scale); sparkle->color = mo->color; - sparkle->colorized = true; } + + P_SetMobjState(sparkle, S_KARTINVULN_LARGE1); } void K_SpawnWipeoutTrail(mobj_t *mo, boolean translucent) @@ -6114,17 +6073,18 @@ static void K_UpdateInvincibilitySounds(player_t *player) { if (cv_kartinvinsfx.value) { - if (player->invincibilitytimer > 0) // Prioritize invincibility - sfxnum = sfx_alarmi; - else if (player->growshrinktimer > 0) + if (player->growshrinktimer > 0) // Prioritize Grow sfxnum = sfx_alarmg; + else if (player->invincibilitytimer > 0) + sfxnum = sfx_alarmi; + } else { - if (player->invincibilitytimer > 0) - sfxnum = sfx_kinvnc; - else if (player->growshrinktimer > 0) + if (player->growshrinktimer > 0) sfxnum = sfx_kgrow; + else if (player->invincibilitytimer > 0) + sfxnum = sfx_kinvnc; } } @@ -6730,6 +6690,9 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) if (player->invincibilitytimer) player->invincibilitytimer--; + + if (player->checkskip) + player->checkskip--; if ((player->respawn.state == RESPAWNST_NONE) && player->growshrinktimer != 0) { @@ -6974,23 +6937,9 @@ void K_KartResetPlayerColor(player_t *player) fullbright = true; - if (player->invincibilitytimer > defaultTime) - { - player->mo->color = K_RainbowColor(leveltime / 2); - player->mo->colorized = true; - skip = true; - } - else - { - flicker += (defaultTime - player->invincibilitytimer) / TICRATE / 2; - } - - if (leveltime % flicker == 0) - { - player->mo->color = SKINCOLOR_INVINCFLASH; - player->mo->colorized = true; - skip = true; - } + player->mo->color = K_RainbowColor(leveltime / 2); + player->mo->colorized = true; + skip = true; if (skip) { diff --git a/src/p_inter.c b/src/p_inter.c index f1f82510b..ffe873a2e 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -1954,6 +1954,23 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da } { + + if (((type == DMG_NORMAL) || (type == DMG_WIPEOUT)) || (type == DMG_STING) || (type == DMG_WOMBO)) // No combos pls thx + { + if (player->spinouttimer > 0) + { + K_DoInstashield(player); + //CONS_Printf("is this shit even working....\n"); + return false; + } + } + + if (player->squishedtimer > 0) + { + K_DoInstashield(player); + return false; + } + // Check if we should allow wombo combos (hard hits by default, inverted by the presence of DMG_WOMBO). boolean allowcombo = (hardhit == !(damagetype & DMG_WOMBO)); @@ -1991,19 +2008,6 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da if (source && source != player->mo && source->player) { - // Extend the invincibility if the hit was a direct hit. - if (inflictor == source && source->player->invincibilitytimer) - { - tic_t kinvextend; - - if (gametype == GT_BATTLE) - kinvextend = 2*TICRATE; - else - kinvextend = 5*TICRATE; - - source->player->invincibilitytimer += kinvextend; - } - K_TryHurtSoundExchange(target, source); K_BattleAwardHit(source->player, player, inflictor, takeBumpers); diff --git a/src/p_mobj.c b/src/p_mobj.c index 8833bdf5f..70bb4ce16 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -7118,6 +7118,15 @@ static boolean P_MobjRegularThink(mobj_t *mobj) P_Thrust(smoke, mobj->angle+FixedAngle(P_RandomRange(135, 225)<target->scale); } break; + case MT_SPARKLETRAIL: + if (!mobj->target) + { + P_RemoveMobj(mobj); + return false; + } + mobj->color = mobj->target->color; + mobj->colorized = mobj->target->colorized; + break; case MT_INVULNFLASH: if (!mobj->target || !mobj->target->health || (mobj->target->player && !mobj->target->player->invincibilitytimer)) { diff --git a/src/p_spec.c b/src/p_spec.c index d55590ea8..e032486ec 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -2010,7 +2010,9 @@ static void K_HandleLapIncrement(player_t *player) } else if (player->starpostnum) { - S_StartSound(player->mo, sfx_s26d); + if (!player->checkskip) + S_StartSound(player->mo, sfx_lose); + player->checkskip = 3; } } }