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
This commit is contained in:
minenice55 2026-03-30 22:10:54 -04:00
parent 991bf3a4c9
commit a9d5799589
3 changed files with 28 additions and 21 deletions

View file

@ -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.

View file

@ -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;

View file

@ -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)