Add K_SetTireGrease, spawn spring grease VFX and set tiregrease

This commit is contained in:
James R 2023-10-14 19:29:09 -07:00
parent 0baad7b863
commit 905592003d
4 changed files with 24 additions and 35 deletions

View file

@ -10511,21 +10511,7 @@ static void K_KartSpindash(player_t *player)
P_InstaThrust(player->mo, player->mo->angle, thrust);
}
if (!player->tiregrease)
{
UINT8 i;
for (i = 0; i < 2; i++)
{
mobj_t *grease;
grease = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_TIREGREASE);
P_SetTarget(&grease->target, player->mo);
grease->angle = K_MomentumAngle(player->mo);
grease->extravalue1 = i;
K_ReduceVFX(grease, player);
}
}
player->tiregrease = 2*TICRATE;
K_SetTireGrease(player, 2*TICRATE);
player->spindash = 0;
S_ReducedVFXSound(player->mo, sfx_s23c, player);
@ -12479,4 +12465,23 @@ boolean K_Cooperative(void)
return false;
}
void K_SetTireGrease(player_t *player, tic_t tics)
{
if (!player->tiregrease)
{
UINT8 i;
for (i = 0; i < 2; i++)
{
mobj_t *grease;
grease = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_TIREGREASE);
P_SetTarget(&grease->target, player->mo);
grease->angle = K_MomentumAngle(player->mo);
grease->extravalue1 = i;
K_ReduceVFX(grease, player);
}
}
player->tiregrease = tics;
}
//}

View file

@ -235,6 +235,8 @@ boolean K_Cooperative(void);
// lat: used for when the player is in some weird state where it wouldn't be wise for it to be overwritten by another object that does similarly wacky shit.
boolean K_isPlayerInSpecialState(player_t *p);
void K_SetTireGrease(player_t *player, tic_t tics);
#ifdef __cplusplus
} // extern "C"
#endif

View file

@ -84,7 +84,7 @@ void P_ExitPlayerOrbit(player_t *player)
}
// tiregrease gives less friction, extends momentum
player->tiregrease = TICRATE;
K_SetTireGrease(player, TICRATE);
P_HaltPlayerOrbit(player);
}

View file

@ -323,25 +323,7 @@ P_DoSpringEx
object->player->springstars = max(abs(vertispeed), horizspeed) / FRACUNIT / 2;
object->player->springcolor = starcolor;
// Less friction when hitting springs
if (!object->player->tiregrease)
{
UINT8 i;
for (i = 0; i < 2; i++)
{
mobj_t *grease;
grease = P_SpawnMobj(object->x, object->y, object->z, MT_TIREGREASE);
P_SetTarget(&grease->target, object);
grease->angle = K_MomentumAngle(object);
grease->extravalue1 = i;
K_ReduceVFX(grease, object->player);
}
}
if (object->player->tiregrease < greasetics)
{
object->player->tiregrease = greasetics;
}
K_SetTireGrease(object->player, max(object->player->tiregrease, greasetics));
}
}