General fixes

- Flame trails don't spawn if you're not on the ground
- Mobjscale: Shells are now the correct speed
- Mobjscale: Explosion's wipeout hit height scales
This commit is contained in:
TehRealSalt 2018-03-04 14:28:29 -05:00
parent f985401ca4
commit 1e1867fe42
2 changed files with 15 additions and 13 deletions

View File

@ -1487,7 +1487,7 @@ void K_ExplodePlayer(player_t *player, mobj_t *source) // A bit of a hack, we ju
|| (gametype != GT_RACE && ((player->kartstuff[k_balloon] <= 0 && player->kartstuff[k_comebacktimer]) || player->kartstuff[k_comebackmode] == 1))) || (gametype != GT_RACE && ((player->kartstuff[k_balloon] <= 0 && player->kartstuff[k_comebacktimer]) || player->kartstuff[k_comebackmode] == 1)))
return; return;
player->mo->momz = 18*FRACUNIT; player->mo->momz = 18*(mapheaderinfo[gamemap-1]->mobj_scale);
player->mo->momx = player->mo->momy = 0; player->mo->momx = player->mo->momy = 0;
player->kartstuff[k_mushroomtimer] = 0; player->kartstuff[k_mushroomtimer] = 0;
@ -1847,6 +1847,11 @@ void K_SpawnDriftTrail(player_t *player)
I_Assert(player->mo != NULL); I_Assert(player->mo != NULL);
I_Assert(!P_MobjWasRemoved(player->mo)); I_Assert(!P_MobjWasRemoved(player->mo));
if (!P_IsObjectOnGround(player->mo)
|| player->kartstuff[k_bootimer] != 0
|| (gametype != GT_RACE && player->kartstuff[k_balloon] <= 0 && player->kartstuff[k_comebacktimer])))
return;
if (player->mo->eflags & MFE_VERTICALFLIP) if (player->mo->eflags & MFE_VERTICALFLIP)
ground = player->mo->ceilingz - FixedMul(mobjinfo[MT_MUSHROOMTRAIL].height, player->mo->scale); ground = player->mo->ceilingz - FixedMul(mobjinfo[MT_MUSHROOMTRAIL].height, player->mo->scale);
else else
@ -1859,9 +1864,6 @@ void K_SpawnDriftTrail(player_t *player)
for (i = 0; i < 2; i++) for (i = 0; i < 2; i++)
{ {
if (player->kartstuff[k_bootimer] != 0 || (gametype != GT_RACE && player->kartstuff[k_balloon] <= 0 && player->kartstuff[k_comebacktimer]))
continue;
newx = player->mo->x + P_ReturnThrustX(player->mo, travelangle + ((i&1) ? -1 : 1)*ANGLE_135, FixedMul(24*FRACUNIT, player->mo->scale)); newx = player->mo->x + P_ReturnThrustX(player->mo, travelangle + ((i&1) ? -1 : 1)*ANGLE_135, FixedMul(24*FRACUNIT, player->mo->scale));
newy = player->mo->y + P_ReturnThrustY(player->mo, travelangle + ((i&1) ? -1 : 1)*ANGLE_135, FixedMul(24*FRACUNIT, player->mo->scale)); newy = player->mo->y + P_ReturnThrustY(player->mo, travelangle + ((i&1) ? -1 : 1)*ANGLE_135, FixedMul(24*FRACUNIT, player->mo->scale));
#ifdef ESLOPE #ifdef ESLOPE

View File

@ -7787,9 +7787,9 @@ void P_MobjThinker(mobj_t *mobj)
P_SpawnGhostMobj(mobj); P_SpawnGhostMobj(mobj);
if (gamespeed == 0) if (gamespeed == 0)
finalspeed = FixedMul(finalspeed, FRACUNIT-FRACUNIT/4); finalspeed = FixedMul(finalspeed, (mapheaderinfo[gamemap-1]->mobj_scale)-(mapheaderinfo[gamemap-1]->mobj_scale/4));
else if (gamespeed == 2) else if (gamespeed == 2)
finalspeed = FixedMul(finalspeed, FRACUNIT+FRACUNIT/4); finalspeed = FixedMul(finalspeed, (mapheaderinfo[gamemap-1]->mobj_scale)+(mapheaderinfo[gamemap-1]->mobj_scale/4));
mobj->angle = R_PointToAngle2(mobj->x, mobj->y, mobj->x+mobj->momx, mobj->y+mobj->momy); mobj->angle = R_PointToAngle2(mobj->x, mobj->y, mobj->x+mobj->momx, mobj->y+mobj->momy);
if (mobj->health <= 5) if (mobj->health <= 5)
@ -7797,7 +7797,7 @@ void P_MobjThinker(mobj_t *mobj)
INT32 i; INT32 i;
for (i = 5; i >= mobj->health; i--) for (i = 5; i >= mobj->health; i--)
{ {
finalspeed = FixedMul(finalspeed, FRACUNIT-FRACUNIT/4); finalspeed = FixedMul(finalspeed, (mapheaderinfo[gamemap-1]->mobj_scale)-(mapheaderinfo[gamemap-1]->mobj_scale/4));
} }
P_InstaThrust(mobj, mobj->angle, finalspeed); P_InstaThrust(mobj, mobj->angle, finalspeed);
} }
@ -7822,8 +7822,8 @@ void P_MobjThinker(mobj_t *mobj)
case MT_REDITEM: case MT_REDITEM:
{ {
sector_t *sec2; sector_t *sec2;
fixed_t topspeed = 64*FRACUNIT; fixed_t topspeed = 64*(mapheaderinfo[gamemap-1]->mobj_scale);
fixed_t distbarrier = 512*FRACUNIT; fixed_t distbarrier = 512*(mapheaderinfo[gamemap-1]->mobj_scale);
fixed_t distaway; fixed_t distaway;
P_SpawnGhostMobj(mobj); P_SpawnGhostMobj(mobj);
@ -7835,13 +7835,13 @@ void P_MobjThinker(mobj_t *mobj)
if (gamespeed == 0) if (gamespeed == 0)
{ {
topspeed = FixedMul(topspeed, FRACUNIT-FRACUNIT/4); topspeed = FixedMul(topspeed, (mapheaderinfo[gamemap-1]->mobj_scale)-(mapheaderinfo[gamemap-1]->mobj_scale/4));
distbarrier = FixedMul(distbarrier, FRACUNIT-FRACUNIT/4); distbarrier = FixedMul(distbarrier, (mapheaderinfo[gamemap-1]->mobj_scale)-(mapheaderinfo[gamemap-1]->mobj_scale/4));
} }
else if (gamespeed == 2) else if (gamespeed == 2)
{ {
topspeed = FixedMul(topspeed, FRACUNIT+FRACUNIT/4); topspeed = FixedMul(topspeed, (mapheaderinfo[gamemap-1]->mobj_scale)+(mapheaderinfo[gamemap-1]->mobj_scale/4));
distbarrier = FixedMul(distbarrier, FRACUNIT+FRACUNIT/4); distbarrier = FixedMul(distbarrier, (mapheaderinfo[gamemap-1]->mobj_scale)+(mapheaderinfo[gamemap-1]->mobj_scale/4);
} }
if (gametype == GT_RACE && mobj->tracer) if (gametype == GT_RACE && mobj->tracer)