mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-02-03 04:06:05 +00:00
Added some slope handling for regular jawz.
Jawz as a result can absolutely behave differently, but it's mostly the case when in the range where it would slow down. Will need testing, seems like it can sometimes rocket past a player that's stationary, maybe that's not a bad thing?
This commit is contained in:
parent
893d8cd211
commit
d6ec65de59
1 changed files with 22 additions and 10 deletions
32
src/p_mobj.c
32
src/p_mobj.c
|
|
@ -1937,7 +1937,7 @@ void P_XYMovement(mobj_t *mo)
|
|||
#endif
|
||||
|
||||
//{ SRB2kart stuff
|
||||
if (mo->type == MT_JAWZ || mo->type == MT_BALLHOG || mo->type == MT_FLINGRING) //(mo->type == MT_JAWZ && !mo->tracer))
|
||||
if (mo->type == MT_BALLHOG || mo->type == MT_FLINGRING) //(mo->type == MT_JAWZ && !mo->tracer))
|
||||
return;
|
||||
|
||||
if (mo->player && (mo->player->kartstuff[k_spinouttimer] && !mo->player->kartstuff[k_wipeoutslow]) && mo->player->speed <= K_GetKartSpeed(mo->player, false)/2)
|
||||
|
|
@ -7957,7 +7957,6 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
|
||||
if (currentspeed >= finalspeed)
|
||||
{
|
||||
|
||||
// Thrust as if you were at top speed, slow down naturally
|
||||
thrustamount = FixedDiv(finalspeed, frictionsafety) - finalspeed;
|
||||
}
|
||||
|
|
@ -7993,6 +7992,9 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
fixed_t topspeed = mobj->movefactor;
|
||||
fixed_t distbarrier = 512*mapobjectscale;
|
||||
fixed_t distaway;
|
||||
const fixed_t currentspeed = R_PointToDist2(0, 0, mobj->momx, mobj->momy);
|
||||
fixed_t thrustamount = 0;
|
||||
fixed_t frictionsafety = (mobj->friction == 0) ? 1 : mobj->friction;
|
||||
mobj_t *ghost = P_SpawnGhostMobj(mobj);
|
||||
|
||||
if (mobj->target && !P_MobjWasRemoved(mobj->target) && mobj->target->player)
|
||||
|
|
@ -8008,6 +8010,12 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
|
||||
distbarrier = FixedMul(distbarrier, FRACUNIT + ((gamespeed-1) * (FRACUNIT/4)));
|
||||
|
||||
if (!P_IsObjectOnGround(mobj))
|
||||
{
|
||||
// No friction in the air
|
||||
frictionsafety = FRACUNIT;
|
||||
}
|
||||
|
||||
if (G_RaceGametype() && mobj->tracer)
|
||||
{
|
||||
distaway = P_AproxDistance(mobj->tracer->x - mobj->x, mobj->tracer->y - mobj->y);
|
||||
|
|
@ -8021,17 +8029,21 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
}
|
||||
}
|
||||
|
||||
if (G_BattleGametype())
|
||||
// Don't thrust at ALL if we're in the barrier range and above top speed, harsher slowdown
|
||||
if ((currentspeed >= topspeed) && topspeed == mobj->movefactor)
|
||||
{
|
||||
mobj->friction -= 1228;
|
||||
if (mobj->friction > FRACUNIT)
|
||||
mobj->friction = FRACUNIT;
|
||||
if (mobj->friction < 0)
|
||||
mobj->friction = 0;
|
||||
// Thrust as if you were at top speed, slow down naturally
|
||||
thrustamount = FixedDiv(topspeed, frictionsafety) - topspeed;
|
||||
}
|
||||
else
|
||||
{
|
||||
const fixed_t beatfriction = FixedDiv(currentspeed, frictionsafety) - currentspeed;
|
||||
// Thrust to immediately get to top speed
|
||||
thrustamount = beatfriction + FixedDiv(topspeed - currentspeed, frictionsafety);
|
||||
}
|
||||
|
||||
mobj->angle = R_PointToAngle2(0, 0, mobj->momx, mobj->momy);
|
||||
P_InstaThrust(mobj, mobj->angle, topspeed);
|
||||
P_Thrust(mobj, mobj->angle, thrustamount);
|
||||
|
||||
if (mobj->tracer)
|
||||
mobj->angle = R_PointToAngle2(mobj->x, mobj->y, mobj->tracer->x, mobj->tracer->y);
|
||||
|
|
@ -9484,7 +9496,7 @@ for (i = ((mobj->flags2 & MF2_STRONGBOX) ? strongboxamt : weakboxamt); i; --i) s
|
|||
|| mobj->type == MT_CANNONBALLDECOR
|
||||
|| mobj->type == MT_FALLINGROCK
|
||||
|| mobj->type == MT_ORBINAUT
|
||||
|| mobj->type == MT_JAWZ_DUD) {
|
||||
|| mobj->type == MT_JAWZ || mobj->type == MT_JAWZ_DUD) {
|
||||
P_TryMove(mobj, mobj->x, mobj->y, true); // Sets mo->standingslope correctly
|
||||
//if (mobj->standingslope) CONS_Printf("slope physics on mobj\n");
|
||||
P_ButteredSlope(mobj);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue