From 4bcf7591affa7d1a509a91edab5b0a8300be5a0e Mon Sep 17 00:00:00 2001 From: toaster Date: Fri, 22 Aug 2025 20:44:58 +0100 Subject: [PATCH] r_things.cpp: Fix highresscale for custom skins interacting badly with Linkdraw on the player (bubble shield, etc) --- src/r_things.cpp | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/r_things.cpp b/src/r_things.cpp index 4b3a61d68..ff616d6f5 100644 --- a/src/r_things.cpp +++ b/src/r_things.cpp @@ -998,9 +998,6 @@ static void R_DrawVisSprite(vissprite_t *vis) frac = vis->startfrac; windowtop = windowbottom = sprbotscreen = INT32_MAX; - if (!(vis->cut & SC_PRECIP) && vis->mobj->skin && ((skin_t *)vis->mobj->skin)->highresscale != FRACUNIT) - this_scale = FixedMul(this_scale, ((skin_t *)vis->mobj->skin)->highresscale); - if (this_scale <= 0) this_scale = 1; @@ -1507,8 +1504,6 @@ static void R_ProjectDropShadow( shadow->gzt = groundz + patch->height * shadowyscale / 2; shadow->gz = shadow->gzt - patch->height * shadowyscale; shadow->texturemid = FixedMul(interp.scale, FixedDiv(shadow->gzt - viewz, shadowyscale)); - if (thing->skin && ((skin_t *)thing->skin)->highresscale != FRACUNIT) - shadow->texturemid = FixedMul(shadow->texturemid, ((skin_t *)thing->skin)->highresscale); shadow->scalestep = 0; shadow->shear.tan = shadowskew; // repurposed variable @@ -1800,6 +1795,8 @@ static void R_ProjectSprite(mobj_t *thing) } this_scale = interp.scale; + if (thing->skin && ((skin_t *)thing->skin)->highresscale != FRACUNIT) + this_scale = FixedMul(this_scale, ((skin_t *)thing->skin)->highresscale); // hitlag vibrating if (thing->hitlag > 0 && (thing->eflags & MFE_DAMAGEHITLAG)) @@ -1941,9 +1938,6 @@ static void R_ProjectSprite(mobj_t *thing) I_Assert(lump < max_spritelumps); - if (thing->skin && ((skin_t *)thing->skin)->highresscale != FRACUNIT) - this_scale = FixedMul(this_scale, ((skin_t *)thing->skin)->highresscale); - spr_width = spritecachedinfo[lump].width; spr_height = spritecachedinfo[lump].height; spr_offset = spritecachedinfo[lump].offset; @@ -2525,7 +2519,7 @@ static void R_ProjectSprite(mobj_t *thing) vis->xscale = FixedMul(spritexscale, xscale); //SoM: 4/17/2000 vis->scale = FixedMul(spriteyscale, yscale); //<thingscale = interp.scale; + vis->thingscale = this_scale; vis->spritexscale = spritexscale; vis->spriteyscale = spriteyscale;