diff --git a/src/p_setup.c b/src/p_setup.c index c1da43eef..c659e090d 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -2337,6 +2337,11 @@ void P_UpdateSegLightOffset(seg_t *li) #endif } +boolean P_ApplySegLightOffset(UINT8 baselightlevel) +{ + return (baselightlevel < 255 && baselightlevel > 0); +} + static void P_InitializeSeg(seg_t *seg) { if (seg->linedef) diff --git a/src/p_setup.h b/src/p_setup.h index 548d9e7c0..b6994054a 100644 --- a/src/p_setup.h +++ b/src/p_setup.h @@ -113,6 +113,7 @@ void P_LoadSoundsRange(UINT16 wadnum, UINT16 first, UINT16 num); void P_LoadMusicsRange(UINT16 wadnum, UINT16 first, UINT16 num); void P_WriteThings(void); void P_UpdateSegLightOffset(seg_t *li); +boolean P_ApplySegLightOffset(UINT8 baselightlevel); size_t P_PrecacheLevelFlats(void); void P_AllocMapHeader(INT16 i); diff --git a/src/r_segs.c b/src/r_segs.c index 14310b368..2f3099c12 100644 --- a/src/r_segs.c +++ b/src/r_segs.c @@ -286,7 +286,7 @@ void R_RenderMaskedSegRange(drawseg_t *ds, INT32 x1, INT32 x2) if (rlight->extra_colormap && (rlight->extra_colormap->flags & CMF_FOG)) ; - else + else if (P_ApplySegLightOffset(lightnum)) lightnum += curline->lightOffset; rlight->lightnum = lightnum; @@ -303,7 +303,7 @@ void R_RenderMaskedSegRange(drawseg_t *ds, INT32 x1, INT32 x2) if ((R_CheckColumnFunc(COLDRAWFUNC_FOG) == true) || (frontsector->extra_colormap && (frontsector->extra_colormap->flags & CMF_FOG))) ; - else + else if (P_ApplySegLightOffset(lightnum)) lightnum += curline->lightOffset; if (lightnum < 0) @@ -770,7 +770,7 @@ void R_RenderThickSideRange(drawseg_t *ds, INT32 x1, INT32 x2, ffloor_t *pfloor) if (pfloor->flags & FF_FOG || rlight->flags & FF_FOG || (rlight->extra_colormap && (rlight->extra_colormap->flags & CMF_FOG))) ; - else + else if (P_ApplySegLightOffset(rlight->lightnum)) rlight->lightnum += curline->lightOffset; p++; @@ -793,7 +793,7 @@ void R_RenderThickSideRange(drawseg_t *ds, INT32 x1, INT32 x2, ffloor_t *pfloor) if (pfloor->flags & FF_FOG || (frontsector->extra_colormap && (frontsector->extra_colormap->flags & CMF_FOG))) ; - else + else if (P_ApplySegLightOffset(lightnum)) lightnum += curline->lightOffset; if (lightnum < 0) @@ -1383,7 +1383,7 @@ static void R_RenderSegLoop (void) if (dc_lightlist[i].extra_colormap) ; - else + else if (P_ApplySegLightOffset(lightnum)) lightnum += curline->lightOffset; if (lightnum < 0) @@ -2436,7 +2436,8 @@ void R_StoreWallRange(INT32 start, INT32 stop) // OPTIMIZE: get rid of LIGHTSEGSHIFT globally lightnum = (frontsector->lightlevel >> LIGHTSEGSHIFT); - lightnum += curline->lightOffset; + if (P_ApplySegLightOffset(lightnum)) + lightnum += curline->lightOffset; if (lightnum < 0) walllights = scalelight[0];