diff --git a/src/deh_soc.c b/src/deh_soc.c
index 3759cc9c7552987029edcc8f6c1e76322ef61ed3..25437dfc59b6faddad3d623711082716ffaf303e 100644
--- a/src/deh_soc.c
+++ b/src/deh_soc.c
@@ -1352,6 +1352,12 @@ void readgametype(MYFILE *f, char *gtname)
 	CONS_Printf("Added gametype %s\n", Gametype_Names[newgtidx]);
 }
 
+// rr
+static mapheader_lighting_t *usemaplighting(INT32 mapnum)
+{
+	return &mapheaderinfo[mapnum]->lighting;
+}
+
 void readlevelheader(MYFILE *f, INT32 num)
 {
 	char *s = Z_Malloc(MAXLINELEN, PU_STATIC, NULL);
@@ -1712,6 +1718,31 @@ void readlevelheader(MYFILE *f, INT32 num)
 			else if (fastcmp(word, "SKYBOXSCALEZ"))
 				mapheaderinfo[num-1]->skybox_scalez = (INT16)i;
 
+			// rr
+			else if (fastcmp(word, "LIGHTCONTRAST") || fastcmp(word, "ENCORELIGHTCONTRAST"))
+			{
+				usemaplighting(num-1)->light_contrast = (UINT8)i;
+			}
+			else if (fastcmp(word, "SPRITEBACKLIGHT") || fastcmp(word, "ENCORESPRITEBACKLIGHT"))
+			{
+				usemaplighting(num-1)->sprite_backlight = (SINT8)i;
+			}
+			else if (fastcmp(word, "LIGHTANGLE") || fastcmp(word, "ENCORELIGHTANGLE"))
+			{
+				mapheader_lighting_t *lighting = usemaplighting(num-1);
+
+				if (fastcmp(word2, "EVEN"))
+				{
+					lighting->use_light_angle = false;
+					lighting->light_angle = 0;
+				}
+				else
+				{
+					lighting->use_light_angle = true;
+					lighting->light_angle = FixedAngle(FloatToFixed(atof(word2)));
+				}
+			}
+
 			else if (fastcmp(word, "BONUSTYPE"))
 			{
 				if      (fastcmp(word2, "NONE"))   i = -1;