diff --git a/src/p_polyobj.c b/src/p_polyobj.c index a8616dba1..b47afed27 100644 --- a/src/p_polyobj.c +++ b/src/p_polyobj.c @@ -2898,7 +2898,7 @@ void T_PolyObjFade(polyfade_t *th) if (po->translucency >= NUMTRANSMAPS) // invisible po->flags &= ~POF_RENDERALL; else - po->flags |= POF_RENDERALL; + po->flags |= (po->spawnflags & POF_RENDERALL); // set collision if (th->docollision && th->speed) @@ -2910,14 +2910,15 @@ void T_PolyObjFade(polyfade_t *th) } else { - po->flags |= POF_SOLID; - po->flags &= ~POF_NOSPECIALS; + po->flags |= (po->spawnflags & POF_SOLID); + if (!(po->spawnflags & POF_NOSPECIALS)) + po->flags &= ~POF_NOSPECIALS; } } } else { - po->flags |= POF_RENDERALL; + po->flags |= (po->spawnflags & POF_RENDERALL); // set collision if (th->docollision && th->speed) @@ -2929,8 +2930,9 @@ void T_PolyObjFade(polyfade_t *th) } else { - po->flags |= POF_SOLID; - po->flags &= ~POF_NOSPECIALS; + po->flags |= (po->spawnflags & POF_SOLID); + if (!(po->spawnflags & POF_NOSPECIALS)) + po->flags &= ~POF_NOSPECIALS; } } }