diff --git a/src/k_kart.c b/src/k_kart.c index 79b6533f..409f2afe 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -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))) return; - player->mo->momz = 18*FRACUNIT; + player->mo->momz = 18*(mapheaderinfo[gamemap-1]->mobj_scale); player->mo->momx = player->mo->momy = 0; player->kartstuff[k_mushroomtimer] = 0; @@ -1847,6 +1847,11 @@ void K_SpawnDriftTrail(player_t *player) I_Assert(player->mo != NULL); 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) ground = player->mo->ceilingz - FixedMul(mobjinfo[MT_MUSHROOMTRAIL].height, player->mo->scale); else @@ -1859,9 +1864,6 @@ void K_SpawnDriftTrail(player_t *player) 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)); newy = player->mo->y + P_ReturnThrustY(player->mo, travelangle + ((i&1) ? -1 : 1)*ANGLE_135, FixedMul(24*FRACUNIT, player->mo->scale)); #ifdef ESLOPE diff --git a/src/p_mobj.c b/src/p_mobj.c index bd10d898..c113d3d0 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -7787,9 +7787,9 @@ void P_MobjThinker(mobj_t *mobj) P_SpawnGhostMobj(mobj); 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) - 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); if (mobj->health <= 5) @@ -7797,7 +7797,7 @@ void P_MobjThinker(mobj_t *mobj) INT32 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); } @@ -7822,8 +7822,8 @@ void P_MobjThinker(mobj_t *mobj) case MT_REDITEM: { sector_t *sec2; - fixed_t topspeed = 64*FRACUNIT; - fixed_t distbarrier = 512*FRACUNIT; + fixed_t topspeed = 64*(mapheaderinfo[gamemap-1]->mobj_scale); + fixed_t distbarrier = 512*(mapheaderinfo[gamemap-1]->mobj_scale); fixed_t distaway; P_SpawnGhostMobj(mobj); @@ -7835,13 +7835,13 @@ void P_MobjThinker(mobj_t *mobj) if (gamespeed == 0) { - topspeed = FixedMul(topspeed, FRACUNIT-FRACUNIT/4); - distbarrier = FixedMul(distbarrier, FRACUNIT-FRACUNIT/4); + topspeed = FixedMul(topspeed, (mapheaderinfo[gamemap-1]->mobj_scale)-(mapheaderinfo[gamemap-1]->mobj_scale/4)); + distbarrier = FixedMul(distbarrier, (mapheaderinfo[gamemap-1]->mobj_scale)-(mapheaderinfo[gamemap-1]->mobj_scale/4)); } else if (gamespeed == 2) { - topspeed = FixedMul(topspeed, FRACUNIT+FRACUNIT/4); - distbarrier = FixedMul(distbarrier, FRACUNIT+FRACUNIT/4); + topspeed = FixedMul(topspeed, (mapheaderinfo[gamemap-1]->mobj_scale)+(mapheaderinfo[gamemap-1]->mobj_scale/4)); + distbarrier = FixedMul(distbarrier, (mapheaderinfo[gamemap-1]->mobj_scale)+(mapheaderinfo[gamemap-1]->mobj_scale/4); } if (gametype == GT_RACE && mobj->tracer)