From 2ed951d6e8f421e309819cad5fb4443e96a35787 Mon Sep 17 00:00:00 2001 From: Ashnal Date: Sun, 4 May 2025 18:24:16 +0000 Subject: [PATCH] Amp scaling --- src/doomdef.h | 3 +++ src/k_kart.c | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/src/doomdef.h b/src/doomdef.h index 11f33339e..74657f886 100644 --- a/src/doomdef.h +++ b/src/doomdef.h @@ -741,6 +741,9 @@ extern int /// Other karma comeback modes //#define OTHERKARMAMODES +// Amp scaling +#define MAXAMPSCALINGDIST 18000 + #ifdef __cplusplus } // extern "C" #endif diff --git a/src/k_kart.c b/src/k_kart.c index e77361973..5099b6747 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -4122,7 +4122,16 @@ void K_SpawnAmps(player_t *player, UINT8 amps, mobj_t *impact) if (amps == 0) return; + UINT32 itemdistance = max(0, min( FRACUNIT, K_GetItemRouletteDistance(player, D_NumPlayersInRace()))); // cap this to FRACUNIT, so it doesn't wrap when turning it into fixed_t + fixed_t itemdistmult = FRACUNIT + max( 0, min(FixedMul(FixedDiv(itemdistance<kartspeed) - (9-player->kartweight)) / 10); + // Debug print for scaledamps calculation + // CONS_Printf("K_SpawnAmps: player=%s, amps=%d, kartspeed=%d, kartweight=%d, itemdistance=%d, itemdistmult=%0.2f, statscaledamps=%d, distscaledamps=%d\n", + // player_names[player-players], amps, player->kartspeed, player->kartweight, + // itemdistance, FixedToFloat(itemdistmult), + // min(amps, amps * (10 + (9-player->kartspeed) - (9-player->kartweight)) / 10), + // FixedMul(scaledamps<>FRACBITS); + scaledamps = FixedMul(scaledamps<>FRACBITS; /* if (player->position <= 1)