mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-26 20:11:47 +00:00
Fix SPB dust
- Fix sliptide not using sliptide states - Fix dust not dealing damage
This commit is contained in:
parent
8b160a996b
commit
0bd280a29c
2 changed files with 26 additions and 16 deletions
|
|
@ -28736,13 +28736,13 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
S_NULL, // xdeathstate
|
S_NULL, // xdeathstate
|
||||||
sfx_None, // deathsound
|
sfx_None, // deathsound
|
||||||
0, // speed
|
0, // speed
|
||||||
16<<FRACBITS, // radius
|
16<<FRACBITS, // radius
|
||||||
32<<FRACBITS, // height
|
32<<FRACBITS, // height
|
||||||
1, // display offset
|
1, // display offset
|
||||||
100, // mass
|
DMG_NORMAL, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_DONTENCOREMAP|MF_NOGRAVITY|MF_PAIN, // flags
|
MF_NOGRAVITY|MF_PAIN|MF_NOHITLAGFORME|MF_DONTENCOREMAP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,9 @@
|
||||||
#define SPB_CHASETIMESCALE (60*TICRATE)
|
#define SPB_CHASETIMESCALE (60*TICRATE)
|
||||||
#define SPB_CHASETIMEMUL (3*FRACUNIT)
|
#define SPB_CHASETIMEMUL (3*FRACUNIT)
|
||||||
|
|
||||||
|
#define SPB_SEEKTURN (FRACUNIT/8)
|
||||||
|
#define SPB_CHASETURN (FRACUNIT/4)
|
||||||
|
|
||||||
#define SPB_MANTA_SPACING (2750 * FRACUNIT)
|
#define SPB_MANTA_SPACING (2750 * FRACUNIT)
|
||||||
|
|
||||||
#define SPB_MANTA_VSTART (150)
|
#define SPB_MANTA_VSTART (150)
|
||||||
|
|
@ -163,7 +166,7 @@ static void SpawnSPBDust(mobj_t *spb)
|
||||||
|
|
||||||
// dir should be either 1 or -1 to determine where to spawn the dust.
|
// dir should be either 1 or -1 to determine where to spawn the dust.
|
||||||
|
|
||||||
static void SpawnSPBSliptide(mobj_t *spb, INT32 dir)
|
static void SpawnSPBSliptide(mobj_t *spb, SINT8 dir)
|
||||||
{
|
{
|
||||||
fixed_t newx;
|
fixed_t newx;
|
||||||
fixed_t newy;
|
fixed_t newy;
|
||||||
|
|
@ -186,12 +189,12 @@ static void SpawnSPBSliptide(mobj_t *spb, INT32 dir)
|
||||||
spark = P_SpawnMobjFromMobj(spb, newx, newy, 0, MT_SPBDUST);
|
spark = P_SpawnMobjFromMobj(spb, newx, newy, 0, MT_SPBDUST);
|
||||||
spark->z = sz;
|
spark->z = sz;
|
||||||
|
|
||||||
|
P_SetMobjState(spark, S_KARTAIZDRIFTSTRAT);
|
||||||
|
P_SetTarget(&spark->target, spb);
|
||||||
|
|
||||||
spark->colorized = true;
|
spark->colorized = true;
|
||||||
spark->color = SKINCOLOR_RED;
|
spark->color = SKINCOLOR_RED;
|
||||||
|
|
||||||
spark->flags = MF_NOGRAVITY|MF_PAIN;
|
|
||||||
P_SetTarget(&spark->target, spb);
|
|
||||||
|
|
||||||
spark->angle = travelangle + (dir * ANGLE_90);
|
spark->angle = travelangle + (dir * ANGLE_90);
|
||||||
P_SetScale(spark, (spark->destscale = spb->scale*3/2));
|
P_SetScale(spark, (spark->destscale = spb->scale*3/2));
|
||||||
|
|
||||||
|
|
@ -235,12 +238,11 @@ static void SPBTurn(
|
||||||
fixed_t *editSpeed, angle_t *editAngle,
|
fixed_t *editSpeed, angle_t *editAngle,
|
||||||
fixed_t lerp, SINT8 *returnSliptide)
|
fixed_t lerp, SINT8 *returnSliptide)
|
||||||
{
|
{
|
||||||
INT32 delta = destAngle - *editAngle;
|
INT32 delta = AngleDeltaSigned(destAngle, *editAngle);
|
||||||
fixed_t dampen = FRACUNIT;
|
fixed_t dampen = FRACUNIT;
|
||||||
|
|
||||||
// Slow down when turning; it looks better and makes U-turns not unfair
|
// Slow down when turning; it looks better and makes U-turns not unfair
|
||||||
dampen = FixedDiv((180 * FRACUNIT) - AngleFixed(abs(delta)), 180 * FRACUNIT);
|
dampen = FixedDiv((180 * FRACUNIT) - AngleFixed(abs(delta)), 180 * FRACUNIT);
|
||||||
|
|
||||||
*editSpeed = FixedMul(destSpeed, dampen);
|
*editSpeed = FixedMul(destSpeed, dampen);
|
||||||
|
|
||||||
delta = FixedMul(delta, lerp);
|
delta = FixedMul(delta, lerp);
|
||||||
|
|
@ -248,11 +250,19 @@ static void SPBTurn(
|
||||||
// Calculate sliptide effect during seeking.
|
// Calculate sliptide effect during seeking.
|
||||||
if (returnSliptide != NULL)
|
if (returnSliptide != NULL)
|
||||||
{
|
{
|
||||||
INT32 sliptide = (abs(delta) > SPB_SLIPTIDEDELTA);
|
const boolean isSliptiding = (abs(delta) >= SPB_SLIPTIDEDELTA);
|
||||||
|
SINT8 sliptide = 0;
|
||||||
|
|
||||||
if (delta < 0)
|
if (isSliptiding == true)
|
||||||
{
|
{
|
||||||
sliptide = -sliptide;
|
if (delta < 0)
|
||||||
|
{
|
||||||
|
sliptide = -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sliptide = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*returnSliptide = sliptide;
|
*returnSliptide = sliptide;
|
||||||
|
|
@ -498,8 +508,8 @@ static void SPBSeek(mobj_t *spb, player_t *bestPlayer)
|
||||||
destAngle = R_PointToAngle2(spb->x, spb->y, destX, destY);
|
destAngle = R_PointToAngle2(spb->x, spb->y, destX, destY);
|
||||||
destPitch = R_PointToAngle2(0, spb->z, P_AproxDistance(spb->x - destX, spb->y - destY), destZ);
|
destPitch = R_PointToAngle2(0, spb->z, P_AproxDistance(spb->x - destX, spb->y - destY), destZ);
|
||||||
|
|
||||||
SPBTurn(desiredSpeed, destAngle, &xySpeed, &spb->angle, FRACUNIT/8, &sliptide);
|
SPBTurn(desiredSpeed, destAngle, &xySpeed, &spb->angle, SPB_SEEKTURN, &sliptide);
|
||||||
SPBTurn(desiredSpeed, destPitch, &zSpeed, &spb_pitch(spb), FRACUNIT/8, NULL);
|
SPBTurn(desiredSpeed, destPitch, &zSpeed, &spb_pitch(spb), SPB_SEEKTURN, NULL);
|
||||||
|
|
||||||
SetSPBSpeed(spb, xySpeed, zSpeed);
|
SetSPBSpeed(spb, xySpeed, zSpeed);
|
||||||
|
|
||||||
|
|
@ -711,8 +721,8 @@ static void SPBChase(mobj_t *spb, player_t *bestPlayer)
|
||||||
spb_speed(spb) = desiredSpeed;
|
spb_speed(spb) = desiredSpeed;
|
||||||
}
|
}
|
||||||
|
|
||||||
SPBTurn(spb_speed(spb), destAngle, &xySpeed, &spb->angle, FRACUNIT, NULL);
|
SPBTurn(spb_speed(spb), destAngle, &xySpeed, &spb->angle, SPB_CHASETURN, NULL);
|
||||||
SPBTurn(spb_speed(spb), destPitch, &zSpeed, &spb_pitch(spb), FRACUNIT, NULL);
|
SPBTurn(spb_speed(spb), destPitch, &zSpeed, &spb_pitch(spb), SPB_CHASETURN, NULL);
|
||||||
|
|
||||||
SetSPBSpeed(spb, xySpeed, zSpeed);
|
SetSPBSpeed(spb, xySpeed, zSpeed);
|
||||||
spb->momx += cx;
|
spb->momx += cx;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue