From 24b5d0c9b28728659f703aa9adc659486a2a3db4 Mon Sep 17 00:00:00 2001 From: NepDisk Date: Thu, 13 Mar 2025 02:52:37 -0400 Subject: [PATCH 1/2] Add a few more people to the credits --- src/f_finale.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/f_finale.c b/src/f_finale.c index b5617107d..95b1f9e2a 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -914,10 +914,13 @@ static const char *blancredits[] = { "\"WumboSpasm\"", "", "\1External Programming", + "\"Hanicef\"", + "\"Lactozilla\"", "\"xyzzy\"", "\"SuperJustinBros\"", "", "\1Ring Racers Programming", + "\"JugadorXEI\"", "Kart Krew Dev", "", "\1New Graphics Creation", From da4f6c62a294e7cb287011b2d9ffd1f909c0b2aa Mon Sep 17 00:00:00 2001 From: NepDisk Date: Thu, 13 Mar 2025 03:54:06 -0400 Subject: [PATCH 2/2] Rings rebalances Ring burst now depends on damagetype. ie 5 from orbinaut and jawz and 3 from banana and 10 for sniping. Ring Fuse has also been lowered to 20*TICRATE from 60*TICRATE Kitchen Sink targets get all their rings dropped at once on impact. --- src/k_collide.c | 2 ++ src/k_kart.c | 5 ++--- src/p_enemy.c | 2 +- src/p_inter.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++--- 4 files changed, 61 insertions(+), 7 deletions(-) diff --git a/src/k_collide.c b/src/k_collide.c index ef0e931d3..1b009f792 100644 --- a/src/k_collide.c +++ b/src/k_collide.c @@ -809,6 +809,7 @@ boolean K_KitchenSinkCollide(mobj_t *t1, mobj_t *t2) K_StatPlayerSink(t1->player, P_MobjWasRemoved(t2->target) ? NULL : t2->target->player); + S_StartSound(NULL, sfx_bsnipe); //let all players hear it. S_StartSound(NULL, sfx_cgot); //let all players hear it. HU_SetCEchoFlags(0); @@ -816,6 +817,7 @@ boolean K_KitchenSinkCollide(mobj_t *t1, mobj_t *t2) HU_DoCEcho(va("%s\\was hit by a kitchen sink.\\\\\\\\", player_names[t2->player-players])); I_OutputMsg("%s was hit by a kitchen sink.\n", player_names[t2->player-players]); + P_PlayerRingBurst(t2->player, t2->player->rings); P_DamageMobj(t2, t1, t1->target, 1, DMG_INSTAKILL); P_KillMobj(t1, t2, t2, DMG_NORMAL); } diff --git a/src/k_kart.c b/src/k_kart.c index 0e3a753cd..61c1246b6 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3746,7 +3746,7 @@ void K_ApplyTripWire(player_t *player, tripwirestate_t state) INT32 K_ExplodePlayer(player_t *player, mobj_t *inflictor, mobj_t *source) // A bit of a hack, we just throw the player up higher here and extend their spinout timer { - INT32 ringburst = 10; + INT32 ringburst = 5; (void)source; @@ -3766,7 +3766,7 @@ INT32 K_ExplodePlayer(player_t *player, mobj_t *inflictor, mobj_t *source) // A { player->spinouttimer = ((5*player->spinouttimer)/2)+1; player->mo->momz *= 2; - ringburst = 20; + ringburst = 10; } } @@ -5363,7 +5363,6 @@ void K_DropHnextList(player_t *player, boolean keepshields) break; case KSHIELD_FLAME: S_StartSound(player->mo, sfx_s3k47); - player->flametimer = 0; break; } diff --git a/src/p_enemy.c b/src/p_enemy.c index fd9b831c6..dd796dd4f 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -3643,7 +3643,7 @@ void A_AttractChase(mobj_t *actor) actor->threshold--; // Rings flicker before disappearing - if (actor->fuse && actor->fuse < 5*TICRATE && (leveltime & 1)) + if (actor->fuse && actor->fuse < 2*TICRATE && (leveltime & 1)) actor->renderflags |= RF_DONTDRAW; else actor->renderflags &= ~RF_DONTDRAW; diff --git a/src/p_inter.c b/src/p_inter.c index d9c78af6f..838aff900 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -2161,7 +2161,6 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da { const UINT8 type = (damagetype & DMG_TYPEMASK); const boolean explosioncombo = (type == DMG_EXPLODE); // This damage type can do evil stuff like ALWAYS combo - INT16 ringburst = 5; // Check if the player is allowed to be damaged! // If not, then spawn the instashield effect instead. @@ -2241,21 +2240,75 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da player->sneakertimer = 0; player->driftboost = 0; player->bubblepop = 0; + player->flametimer = 0; + //player->flamestore = 0 + //player->flamedash = 0; player->ringboost = 0; player->glanceDir = 0; player->pflags &= ~PF_GAINAX; + INT16 ringburst = 3; + + // Handle ringloss based on hittype. + if (inflictor) + { + switch(inflictor->type) + { + case MT_BANANA: + if (inflictor->health > 1) + { + // Sniped! + ringburst = 10; + } + else + // FALLTHRU + case MT_BALLHOG: + case MT_BANANA_SHIELD: + ringburst = 3; + break; + + case MT_ORBINAUT: + case MT_ORBINAUT_SHIELD: + case MT_JAWZ: + case MT_JAWZ_DUD: + case MT_JAWZ_SHIELD: + ringburst = 5; + break; + + case MT_PLAYER: + if (inflictor->player) + { + if (inflictor->player->invincibilitytimer) + { + // Hit by invincibility + ringburst = 5; + } + } + break; + + default: + ringburst = 3; + break; + } + + } + switch (type) { case DMG_EXPLODE: case DMG_KARMA: + // 10 on SPB hit, 5 on normal explosion ringburst = K_ExplodePlayer(player, inflictor, source); LUA_HookPlayerExplode(target, inflictor, source, damage, damagetype); break; case DMG_SQUISH: + if (inflictor) + { + // Squished by player or object + ringburst = 5; + } K_SquishPlayer(player, inflictor, source); LUA_HookPlayerSquish(target, inflictor, source, damage, damagetype); - ringburst = 5; break; case DMG_WIPEOUT: if (P_IsDisplayPlayer(player)) @@ -2422,6 +2475,6 @@ void P_PlayerRingBurst(player_t *player, INT32 num_rings) for (i = 0; i < num_fling_rings; i++) { - P_FlingBurst(player, fa, MT_FLINGRING, 60*TICRATE, FRACUNIT, i); + P_FlingBurst(player, fa, MT_FLINGRING, 20*TICRATE, FRACUNIT, i); } }