diff --git a/src/p_user.c b/src/p_user.c index 299d42a4b..1e1cfcbcb 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -1197,7 +1197,7 @@ mobj_t *P_SpawnGhostMobj(mobj_t *mobj) ghost->sprite2 = mobj->sprite2; ghost->frame = mobj->frame; ghost->tics = -1; - ghost->renderflags |= tr_trans50 << RF_TRANSSHIFT; + ghost->renderflags = (mobj->renderflags & ~RF_TRANSMASK)|RF_TRANS50; ghost->fuse = ghost->info->damage; ghost->skin = mobj->skin; ghost->standingslope = mobj->standingslope; @@ -1207,6 +1207,11 @@ mobj_t *P_SpawnGhostMobj(mobj_t *mobj) ghost->sprzoff = mobj->sprzoff; ghost->rollangle = mobj->rollangle; + ghost->spritexscale = mobj->spritexscale; + ghost->spriteyscale = mobj->spriteyscale; + ghost->spritexoffset = mobj->spritexoffset; + ghost->spriteyoffset = mobj->spriteyoffset; + if (mobj->flags2 & MF2_OBJECTFLIP) ghost->flags |= MF2_OBJECTFLIP; diff --git a/src/r_things.c b/src/r_things.c index c0e727fd9..c76f77129 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -1788,8 +1788,14 @@ static void R_ProjectSprite(mobj_t *thing) if (spriterotangle && !(splat && !(thing->renderflags & RF_NOSPLATROLLANGLE))) { - rollangle = R_GetRollAngle(vflip - ? InvAngle(spriterotangle) : spriterotangle); + if ((papersprite && ang >= ANGLE_180) != vflip) + { + rollangle = R_GetRollAngle(InvAngle(spriterotangle)); + } + else + { + rollangle = R_GetRollAngle(spriterotangle); + } rotsprite = Patch_GetRotatedSprite(sprframe, (thing->frame & FF_FRAMEMASK), rot, flip, false, sprinfo, rollangle); if (rotsprite != NULL)