mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-02-18 19:41:29 +00:00
Polish backwards behavior
This commit is contained in:
parent
b0e3840550
commit
bbec083d4e
2 changed files with 40 additions and 10 deletions
21
src/k_kart.c
21
src/k_kart.c
|
|
@ -4698,7 +4698,7 @@ static mobj_t *K_SpawnKartMissile(mobj_t *source, mobjtype_t type, angle_t an, I
|
|||
speed,
|
||||
FixedMul(
|
||||
FixedDiv(source->player->speed, topspeed), // Multiply speed to be proportional to your own, boosted maxspeed.
|
||||
FixedDiv((ANGLE_180 - delta), ANGLE_180) // multiply speed based on angle diff... i.e: don't do this for firing backward :V
|
||||
FixedDiv(AngleFixed(ANGLE_180 - delta), 180 * FRACUNIT) // multiply speed based on angle diff... i.e: don't do this for firing backward :V
|
||||
)
|
||||
));
|
||||
}
|
||||
|
|
@ -5608,15 +5608,15 @@ mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t mapthing,
|
|||
|
||||
if (missile) // Shootables
|
||||
{
|
||||
if (dir == -1 && mapthing != MT_SPB)
|
||||
if (dir < 0 && mapthing != MT_SPB)
|
||||
{
|
||||
// Shoot backward
|
||||
mo = K_SpawnKartMissile(player->mo, mapthing, (player->mo->angle + ANGLE_180) + angleOffset, 0, PROJSPEED, -1);
|
||||
mo = K_SpawnKartMissile(player->mo, mapthing, (player->mo->angle + ANGLE_180) + angleOffset, 0, PROJSPEED, dir);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Shoot forward
|
||||
mo = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + angleOffset, 0, PROJSPEED, 1);
|
||||
mo = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + angleOffset, 0, PROJSPEED, dir);
|
||||
}
|
||||
|
||||
if (mapthing == MT_DROPTARGET && mo)
|
||||
|
|
@ -8273,13 +8273,20 @@ void K_KartPlayerAfterThink(player_t *player)
|
|||
player_t *targ;
|
||||
mobj_t *ret;
|
||||
|
||||
if (player->jawztargetdelay && playeringame[lasttarg] && !players[lasttarg].spectator)
|
||||
if (player->throwdir == -1)
|
||||
{
|
||||
targ = player;
|
||||
player->jawztargetdelay = 0;
|
||||
}
|
||||
else if (player->jawztargetdelay && playeringame[lasttarg] && !players[lasttarg].spectator)
|
||||
{
|
||||
targ = &players[lasttarg];
|
||||
player->jawztargetdelay--;
|
||||
}
|
||||
else
|
||||
{
|
||||
targ = K_FindJawzTarget(player->mo, player, ANGLE_45);
|
||||
}
|
||||
|
||||
if (!targ || !targ->mo || P_MobjWasRemoved(targ->mo))
|
||||
{
|
||||
|
|
@ -8297,14 +8304,14 @@ void K_KartPlayerAfterThink(player_t *player)
|
|||
ret->tics = 1;
|
||||
ret->color = player->skincolor;
|
||||
|
||||
if (targ-players != lasttarg)
|
||||
if (targ - players != lasttarg)
|
||||
{
|
||||
if (P_IsDisplayPlayer(player) || P_IsDisplayPlayer(targ))
|
||||
S_StartSound(NULL, sfx_s3k89);
|
||||
else
|
||||
S_StartSound(targ->mo, sfx_s3k89);
|
||||
|
||||
player->lastjawztarget = targ-players;
|
||||
player->lastjawztarget = targ - players;
|
||||
player->jawztargetdelay = 5;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,12 +33,11 @@
|
|||
#define jawz_droptime(o) ((o)->movecount)
|
||||
|
||||
#define jawz_retcolor(o) ((o)->cvmem)
|
||||
#define jawz_stillturn(o) ((o)->cusval)
|
||||
|
||||
#define jawz_owner(o) ((o)->target)
|
||||
#define jawz_chase(o) ((o)->tracer)
|
||||
|
||||
#define jawz_shield_dist(o) ((o)->extravalue1)
|
||||
|
||||
static void JawzChase(mobj_t *th, boolean grounded)
|
||||
{
|
||||
fixed_t thrustamount = 0;
|
||||
|
|
@ -131,6 +130,7 @@ static void JawzChase(mobj_t *th, boolean grounded)
|
|||
P_SetTarget(&ret->target, jawz_chase(th));
|
||||
ret->frame |= ((leveltime % 10) / 2) + 5;
|
||||
ret->color = jawz_retcolor(th);
|
||||
ret->renderflags = (ret->renderflags & ~RF_DONTDRAW) | (th->renderflags & RF_DONTDRAW);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -154,6 +154,13 @@ static void JawzChase(mobj_t *th, boolean grounded)
|
|||
}
|
||||
}
|
||||
|
||||
if (jawz_stillturn(th) > 0)
|
||||
{
|
||||
// When beginning to chase your own owner,
|
||||
// we should turn but not thrust quite yet.
|
||||
return;
|
||||
}
|
||||
|
||||
if (grounded == true)
|
||||
{
|
||||
const fixed_t currentspeed = R_PointToDist2(0, 0, th->momx, th->momy);
|
||||
|
|
@ -222,6 +229,11 @@ void Obj_JawzThink(mobj_t *th)
|
|||
jawz_selfdelay(th)--;
|
||||
}
|
||||
|
||||
if (jawz_stillturn(th) > 0)
|
||||
{
|
||||
jawz_stillturn(th)--;
|
||||
}
|
||||
|
||||
if (leveltime % TICRATE == 0)
|
||||
{
|
||||
S_StartSound(th, th->info->activesound);
|
||||
|
|
@ -247,8 +259,19 @@ void Obj_JawzThrown(mobj_t *th, fixed_t finalSpeed, SINT8 dir)
|
|||
{
|
||||
// Thrown backwards, init self-chase
|
||||
P_SetTarget(&jawz_chase(th), jawz_owner(th));
|
||||
th->fuse = RR_PROJECTILE_FUSE;
|
||||
|
||||
// Stop it here.
|
||||
th->momx = 0;
|
||||
th->momy = 0;
|
||||
|
||||
// Slow down the top speed.
|
||||
finalSpeed = FixedMul(finalSpeed, 4*FRACUNIT/5);
|
||||
|
||||
// Set a fuse.
|
||||
th->fuse = RR_PROJECTILE_FUSE;
|
||||
|
||||
// Stay still while you turn towards the player
|
||||
jawz_stillturn(th) = ANGLE_180 / MAX_JAWZ_TURN;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue