From a9d5799589fbe38f6c006a67db82a8587c06c662 Mon Sep 17 00:00:00 2001 From: minenice55 Date: Mon, 30 Mar 2026 22:10:54 -0400 Subject: [PATCH] tweak attraction shield performance tackle is slower but handles better tackle is made weaker when in first fixed issue with dropping items not clearing seeking flag --- src/d_netcmd.c | 15 ++++++++------- src/d_netcmd.h | 1 + src/k_kart.c | 33 +++++++++++++++++++-------------- 3 files changed, 28 insertions(+), 21 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index a08b606a9..a3c30b4a5 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -546,13 +546,13 @@ consvar_t cv_kartstacking_flame_accelboost = CVAR_INIT ("vanillaboost_flame_acce consvar_t cv_kartstacking_flame_handleboost = CVAR_INIT ("vanillaboost_flame_handleboost", "0", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); consvar_t cv_kartstacking_flame_stackable = CVAR_INIT ("vanillaboost_flame_stackable", "On", CV_NETVAR|CV_GUARD, CV_OnOff, NULL); -consvar_t cv_kartstacking_attraction_speedboost_himin = CVAR_INIT ("vanillaboost_attraction_speedboost_himin", "0.60", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); -consvar_t cv_kartstacking_attraction_speedboost_himax = CVAR_INIT ("vanillaboost_attraction_speedboost_himax", "0.75", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); -consvar_t cv_kartstacking_attraction_speedboost_normmin = CVAR_INIT ("vanillaboost_attraction_speedboost_normmin", "0.25", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); -consvar_t cv_kartstacking_attraction_speedboost_normmax = CVAR_INIT ("vanillaboost_attraction_speedboost_normmax", "0.3", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); -consvar_t cv_kartstacking_attraction_accelboost_hi = CVAR_INIT ("vanillaboost_attraction_accelboost_hi", "16.0", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); -consvar_t cv_kartstacking_attraction_accelboost_norm = CVAR_INIT ("vanillaboost_attraction_accelboost_norm", "8.0", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); -consvar_t cv_kartstacking_attraction_handleboost = CVAR_INIT ("vanillaboost_attraction_handleboost", "0.50", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); +consvar_t cv_kartstacking_attraction_speedboost_himin = CVAR_INIT ("vanillaboost_attraction_speedboost_himin", "0.32", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); +consvar_t cv_kartstacking_attraction_speedboost_himax = CVAR_INIT ("vanillaboost_attraction_speedboost_himax", "0.40", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); +consvar_t cv_kartstacking_attraction_speedboost_normmin = CVAR_INIT ("vanillaboost_attraction_speedboost_normmin", "0.15", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); +consvar_t cv_kartstacking_attraction_speedboost_normmax = CVAR_INIT ("vanillaboost_attraction_speedboost_normmax", "0.20", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); +consvar_t cv_kartstacking_attraction_accelboost_hi = CVAR_INIT ("vanillaboost_attraction_accelboost_hi", "18.0", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); +consvar_t cv_kartstacking_attraction_accelboost_norm = CVAR_INIT ("vanillaboost_attraction_accelboost_norm", "4.0", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); +consvar_t cv_kartstacking_attraction_handleboost = CVAR_INIT ("vanillaboost_attraction_handleboost", "1.0", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); consvar_t cv_kartstacking_attraction_stackable = CVAR_INIT ("vanillaboost_attraction_stackable", "On", CV_NETVAR|CV_GUARD, CV_OnOff, NULL); consvar_t cv_kartstacking_start_speedboost = CVAR_INIT ("vanillaboost_start_speedboost", "0.25", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); @@ -716,6 +716,7 @@ consvar_t cv_kartbubble_boost_allow = CVAR_INIT ("kartbubble_boost_allow", "On", consvar_t cv_kartbubble_boost_offroadignore = CVAR_INIT ("kartbubble_boost_offroadignore", "On", CV_NETVAR, CV_OnOff, NULL); consvar_t cv_kartflame_fastfuel = CVAR_INIT ("kartflame_fastfuel", "On", CV_NETVAR, CV_OnOff, NULL); consvar_t cv_kartflame_offroadburn = CVAR_INIT ("kartflame_offroadburn", "On", CV_NETVAR, CV_OnOff, NULL); +consvar_t cv_kartattraction_assistpower = CVAR_INIT ("kartattraction_assistpower", "1.0", CV_NETVAR|CV_FLOAT, CV_Unsigned, NULL); // "Arrow Bullet": above a certain speed threshold, an aura in the shape of the Shrink arrow // covers you, signaling protection from (most) items and players. diff --git a/src/d_netcmd.h b/src/d_netcmd.h index b1905cfb7..fb530471c 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -236,6 +236,7 @@ extern consvar_t cv_kartbubble_boost_allow; extern consvar_t cv_kartbubble_boost_offroadignore; extern consvar_t cv_kartflame_fastfuel; extern consvar_t cv_kartflame_offroadburn; +extern consvar_t cv_kartattraction_assistpower; extern consvar_t cv_kartaltshrink_arrowbullet; extern consvar_t cv_kartaltshrink_arrowbulletthres; diff --git a/src/k_kart.c b/src/k_kart.c index 357cec62b..bbf0ea622 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -456,6 +456,7 @@ void K_RegisterKartStuff(void) CV_RegisterVar(&cv_kartbubble_boost_offroadignore); CV_RegisterVar(&cv_kartflame_fastfuel); CV_RegisterVar(&cv_kartflame_offroadburn); + CV_RegisterVar(&cv_kartattraction_assistpower); CV_RegisterVar(&cv_kartaltshrink_arrowbullet); CV_RegisterVar(&cv_kartaltshrink_arrowbulletthres); @@ -5451,10 +5452,11 @@ void K_DropHnextList(player_t *player) player->itemflags &= ~IF_EGGMANOUT; } else if ((player->itemflags & IF_ITEMOUT) - && (dropall || (--player->itemamount <= 0))) + && (dropall || (--player->itemamount <= 0))) { player->itemamount = 0; K_UnsetItemOut(player); + player->itemflags &= ~(IF_SEEKING|IF_PASSIVESEEKING); player->itemtype = KITEM_NONE; } } @@ -11807,11 +11809,11 @@ boolean K_NullDriftTiltEnabled(void) } #define TargetThreshold (80*FRACUNIT/100) -#define TargetAngleAssist (FRACUNIT/2) void K_KartAttractHomingAttack(player_t *player) { fixed_t influence = 0; fixed_t angleassist = 0; + fixed_t targetangleassist = cv_kartattraction_assistpower.value; INT32 lastTarg = player->lastitemtarget; if (lastTarg >= 0) @@ -11841,7 +11843,7 @@ void K_KartAttractHomingAttack(player_t *player) { angleassist -= 360*FRACUNIT; } - angleassist = FixedMul(CLAMP(angleassist, -TargetAngleAssist, TargetAngleAssist), influence); + angleassist = FixedMul(CLAMP(angleassist, -targetangleassist, targetangleassist), influence); } } } @@ -11850,21 +11852,12 @@ void K_KartAttractHomingAttack(player_t *player) && (!K_IsPlayerDamaged(player)) && player->bumpUnstuck == 0) { - mobj_t *mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_THOK); + mobj_t *mo; angle_t effectangle = player->mo->angle; if (player->speed > 0) { effectangle = R_PointToAngle2(0,0, player->mo->momx, player->mo->momy); } - mo->angle = P_RandomRange(-30, 30)*ANG1 + (effectangle - ANGLE_180); - mo->fuse = P_RandomRange(10, 20); - P_SetScale(mo, player->mo->scale/2); - mo->destscale = mo->scale/3; - P_SetTarget(&mo->target, player->mo); - P_SetMobjState(mo, S_KLIT1); - mo->renderflags |= RF_ADD|RF_FULLBRIGHT|RF_TRANS50; - mo->color = SKINCOLOR_YELLOW; - mo->colorized = true; mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_THOK); P_SetMobjState(mo, S_KSPARK1); @@ -11874,13 +11867,25 @@ void K_KartAttractHomingAttack(player_t *player) P_SpawnGhostMobj(player->mo); - if (player->attractionattack_hipower && lastTarg >= 0) + if (player->attractionattack_hipower && player->position > 1 && lastTarg >= 0) { player->attractionboost = Easing_InCubic(influence, ATTRACTIONSPEEDHIMIN, ATTRACTIONSPEEDHIMAX); + + mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_THOK); + mo->angle = P_RandomRange(-15, 15)*ANG1 + (effectangle - ANGLE_180); + mo->fuse = P_RandomRange(10, 20); + P_SetScale(mo, player->mo->scale/2); + mo->destscale = mo->scale/3; + P_SetTarget(&mo->target, player->mo); + P_SetMobjState(mo, S_KLIT1); + mo->renderflags |= RF_ADD|RF_FULLBRIGHT|RF_TRANS50; + mo->color = SKINCOLOR_YELLOW; + mo->colorized = true; } else { player->attractionboost = Easing_InCubic(influence, ATTRACTIONSPEEDNORMMIN, ATTRACTIONSPEEDNORMMAX); + player->attractionattack_hipower = false; } if (angleassist)