add cvars for boost values, small aim assist, contact damage

This commit is contained in:
minenice55 2026-03-26 17:49:18 -04:00
parent ca8b66dd80
commit 45e6fc6aef
6 changed files with 93 additions and 20 deletions

View file

@ -543,6 +543,15 @@ 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.5", 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.6", 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", "10.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_sttraction_handleboost", "0.25", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL);
consvar_t cv_kartstacking_attraction_stackable = CVAR_INIT ("vanillaboost_sttraction_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);
consvar_t cv_kartstacking_start_accelboost = CVAR_INIT ("vanillaboost_start_accelboost", "6.0", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL);
consvar_t cv_kartstacking_start_handleboost = CVAR_INIT ("vanillaboost_start_handleboost", "0", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL);

View file

@ -133,6 +133,15 @@ extern consvar_t cv_kartstacking_flame_accelboost;
extern consvar_t cv_kartstacking_flame_handleboost;
extern consvar_t cv_kartstacking_flame_stackable;
extern consvar_t cv_kartstacking_attraction_speedboost_himin;
extern consvar_t cv_kartstacking_attraction_speedboost_himax;
extern consvar_t cv_kartstacking_attraction_speedboost_normmin;
extern consvar_t cv_kartstacking_attraction_speedboost_normmax;
extern consvar_t cv_kartstacking_attraction_accelboost_hi;
extern consvar_t cv_kartstacking_attraction_accelboost_norm;
extern consvar_t cv_kartstacking_attraction_handleboost;
extern consvar_t cv_kartstacking_attraction_stackable;
extern consvar_t cv_kartstacking_grow_speedboost;
extern consvar_t cv_kartstacking_grow_accelboost;
extern consvar_t cv_kartstacking_grow_handleboost;

View file

@ -1206,6 +1206,20 @@ boolean K_PvPTouchDamage(mobj_t *t1, mobj_t *t2)
return true;
}
// Attraction Shield tackle damage
t1Condition = (t1->player->attractionattack && t1->player->attractionattack_hipower);
t2Condition = (t2->player->attractionattack && t2->player->attractionattack_hipower);
if (t1Condition == true && t2Condition == false)
{
P_DamageMobj(t2, t1, t1, 1, DMG_FLIPOVER);
return true;
}
else if (t1Condition == false && t2Condition == true)
{
P_DamageMobj(t1, t2, t2, 1, DMG_FLIPOVER);
return true;
}
// Battle Mode Sneaker and Bubble damage
// (Pogo Spring damage is handled in head-stomping code)
if (gametypes[gametype]->rules & GTR_BUMPERS)

View file

@ -1928,16 +1928,6 @@ void K_DoAttractionShield(player_t *player, boolean hipower)
mo->color = SKINCOLOR_CYAN;
mo->scale = player->mo->scale*3 + (player->mo->scale/2);
// spawn horizontal bolts;
for (i=0; i<7; i++)
{
mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_THOK);
mo->angle = P_RandomRange(0, 359)*ANG1;
mo->fuse = P_RandomRange(20, 50);
P_SetTarget(&mo->target, player->mo);
P_SetMobjState(mo, S_KLIT1);
}
// spawn the radius thing:
an = ANGLE_22h;
for (i=0; i<15; i++)

View file

@ -340,6 +340,15 @@ void K_RegisterKartStuff(void)
CV_RegisterVar(&cv_kartstacking_flame_handleboost);
CV_RegisterVar(&cv_kartstacking_flame_stackable);
CV_RegisterVar(&cv_kartstacking_attraction_speedboost_himin);
CV_RegisterVar(&cv_kartstacking_attraction_speedboost_himax);
CV_RegisterVar(&cv_kartstacking_attraction_speedboost_normmin);
CV_RegisterVar(&cv_kartstacking_attraction_speedboost_normmax);
CV_RegisterVar(&cv_kartstacking_attraction_accelboost_hi);
CV_RegisterVar(&cv_kartstacking_attraction_accelboost_norm);
CV_RegisterVar(&cv_kartstacking_attraction_handleboost);
CV_RegisterVar(&cv_kartstacking_attraction_stackable);
CV_RegisterVar(&cv_kartstacking_start_speedboost);
CV_RegisterVar(&cv_kartstacking_start_accelboost);
CV_RegisterVar(&cv_kartstacking_start_handleboost);
@ -2921,7 +2930,7 @@ static void K_GetKartBoostPower(player_t *player)
if (player->attractionboost)
{
K_DoBoost(player, player->attractionboost, (player->attractionattack_hipower) ? 3*FRACUNIT : FRACUNIT, FRACUNIT/4, true, false); // + ???% top speed, + 300% acceleration
K_DoBoost(player, player->attractionboost, (player->attractionattack_hipower) ? ATTRACTIONACCELHI : ATTRACTIONACCELNORM, ATTRACTIONHANDLEBOOST, ATTRACTIONSTACKABLE, false); // + ???% top speed, + 300% acceleration
}
if (player->slopeboost || player->slopeaccel)
@ -11786,9 +11795,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;
INT32 lastTarg = player->lastitemtarget;
if (lastTarg >= 0)
@ -11801,10 +11812,25 @@ void K_KartAttractHomingAttack(player_t *player)
mobj_t *targMo = players[lastTarg].mo;
vector2_t targetdirection = {targMo->x - player->mo->x, targMo->y - player->mo->y};
vector2_t movedirection = {P_ReturnThrustX(NULL, player->mo->angle, FRACUNIT), P_ReturnThrustY(NULL, player->mo->angle, FRACUNIT)};
fixed_t targetangle = AngleFixed(R_PointToAngle2(player->mo->x + player->mo->momx, player->mo->y + player->mo->momy, targMo->x + targMo->momx, targMo->y + targMo->momy));
FV2_Normalize(&movedirection);
FV2_Normalize(&targetdirection);
influence = FixedDiv(CLAMP(FV2_Dot(&movedirection, &targetdirection), 0, TargetThreshold), TargetThreshold);
influence = FixedDiv(CLAMP(FV2_Dot(&targetdirection, &movedirection), 0, TargetThreshold), TargetThreshold);
if (FV2_Dot(&targetdirection, &movedirection) > 0)
{
angleassist = (targetangle - AngleFixed(player->mo->angle));
if (angleassist < -180*FRACUNIT)
{
angleassist += 360*FRACUNIT;
}
else if (angleassist > 180*FRACUNIT)
{
angleassist -= 360*FRACUNIT;
}
angleassist = FixedMul(CLAMP(angleassist, -TargetAngleAssist, TargetAngleAssist), influence);
}
}
}
@ -11813,25 +11839,41 @@ void K_KartAttractHomingAttack(player_t *player)
&& player->bumpUnstuck == 0)
{
mobj_t *mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_THOK);
mo->angle = P_RandomRange(-30, 30)*ANG1 + R_PointToAngle2(0,0, player->mo->momx, player->mo->momy) - ANGLE_180;
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);
mo->destscale = mo->scale/2;
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;
P_SpawnGhostMobj(player->mo);
mo->renderflags |= RF_ADD|RF_FULLBRIGHT|RF_TRANS30;
mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_THOK);
P_SetTarget(&mo->target, player->mo);
P_SetMobjState(mo, S_KSPARK1);
mo->renderflags |= RF_ADD|RF_FULLBRIGHT|RF_TRANS30;
P_SpawnGhostMobj(player->mo);
if (player->attractionattack_hipower)
{
player->attractionboost = Easing_InCubic(influence, 50*FRACUNIT/100, 60*FRACUNIT/100);
player->attractionboost = Easing_InCubic(influence, ATTRACTIONSPEEDHIMIN, ATTRACTIONSPEEDHIMAX);
}
else
{
player->attractionboost = Easing_InCubic(influence, 25*FRACUNIT/100, 30*FRACUNIT/100);
player->attractionboost = Easing_InCubic(influence, ATTRACTIONSPEEDNORMMIN, ATTRACTIONSPEEDNORMMAX);
}
if (angleassist)
{
player->mo->angle += FixedAngle(angleassist);
P_SetPlayerAngle(player, player->mo->angle);
}
player->attractionattack--;
}
else

View file

@ -138,6 +138,15 @@ extern vector3_t clusterpoint, clusterdtf;
#define FLAMEHANDLEBOOST CV_Get(&cv_kartstacking_flame_handleboost)
#define FLAMESTACKABLE CV_Get(&cv_kartstacking_flame_stackable)
#define ATTRACTIONSPEEDHIMIN CV_Get(&cv_kartstacking_attraction_speedboost_himin)
#define ATTRACTIONSPEEDHIMAX CV_Get(&cv_kartstacking_attraction_speedboost_himax)
#define ATTRACTIONSPEEDNORMMIN CV_Get(&cv_kartstacking_attraction_speedboost_normmin)
#define ATTRACTIONSPEEDNORMMAX CV_Get(&cv_kartstacking_attraction_speedboost_normmax)
#define ATTRACTIONACCELHI CV_Get(&cv_kartstacking_attraction_accelboost_hi)
#define ATTRACTIONACCELNORM CV_Get(&cv_kartstacking_attraction_accelboost_norm)
#define ATTRACTIONHANDLEBOOST CV_Get(&cv_kartstacking_attraction_handleboost)
#define ATTRACTIONSTACKABLE CV_Get(&cv_kartstacking_attraction_stackable)
#define ALTSHRINKTIME CV_Get(&cv_kartaltshrinktime)
#define SHRINKSPEEDBOOST CV_Get(&cv_kartstacking_altshrink_speedboost)
#define SHRINKACCELBOOST CV_Get(&cv_kartstacking_altshrink_accelboost)