diff --git a/src/strife/d_main.c b/src/strife/d_main.c index 8d19582596..ec9dc32a9c 100644 --- a/src/strife/d_main.c +++ b/src/strife/d_main.c @@ -1694,10 +1694,10 @@ void D_DoomMain (void) // @category obscure // @vanilla // - // Flip player gun sprites (broken). + // Flip player gun sprites. // - flipparm = M_CheckParm ("-flip"); + flipparm = M_CheckParm("-flip") || M_CheckParm("-flipweapons"); // [crispy] //! // @category game diff --git a/src/strife/r_things.c b/src/strife/r_things.c index 3594270167..5ff5773ead 100644 --- a/src/strife/r_things.c +++ b/src/strife/r_things.c @@ -759,7 +759,8 @@ void R_DrawPSprite (pspdef_t* psp, psprnum_t psprnum) // [crispy] read psprnum // calculate edges of the shape tx = psp->sx2-(ORIGWIDTH/2)*FRACUNIT; - tx -= spriteoffset[lump]; + // [crispy] fix sprite offsets for mirrored sprites + tx -= flip ? 2 * tx - spriteoffset[lump] + spritewidth[lump] : spriteoffset[lump]; x1 = (centerxfrac + FixedMul (tx,pspritescale) ) >>FRACBITS; // off the right side @@ -874,7 +875,7 @@ void R_DrawPSprite (pspdef_t* psp, psprnum_t psprnum) // [crispy] read psprnum } // [crispy] free look - vis->texturemid += FixedMul(vis->xiscale, (centery - viewheight / 2) << FRACBITS); + vis->texturemid += FixedMul(pspriteiscale, (centery - viewheight / 2) << FRACBITS); R_DrawVisSprite (vis, vis->x1, vis->x2); }