add cvars for boost values, small aim assist, contact damage
This commit is contained in:
parent
ca8b66dd80
commit
45e6fc6aef
6 changed files with 93 additions and 20 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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++)
|
||||
|
|
|
|||
62
src/k_kart.c
62
src/k_kart.c
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue