diff -ur Oblige-7.70/CHANGES.txt Oblige-7.70-bright/CHANGES.txt
--- Oblige-7.70/CHANGES.txt	2023-11-30 04:31:53.753632000 -0600
+++ Oblige-7.70-bright/CHANGES.txt	2026-07-15 11:42:56.786377800 -0600
@@ -1,3 +1,10 @@
+Post-7.70 Sam hacks:
+
+* "Episodic" levels start out smaller and get much bigger
+* "Small" levels are even smaller
+* Heretic: More tomes, more mega-armor, E6M# levels made
+* Heretic: Level start usually has backpack, often mega-armor
+* CONFIG.TXT updated
 
 CHANGES IN 7.70
 ===============
diff -ur Oblige-7.70/CONFIG.txt Oblige-7.70-bright/CONFIG.txt
--- Oblige-7.70/CONFIG.txt	2023-12-30 20:53:55.153705000 -0600
+++ Oblige-7.70-bright/CONFIG.txt	2026-07-25 12:40:45.456627000 -0600
@@ -2,20 +2,20 @@
 -- OBLIGE Level Maker (C) 2006-2017 Andrew Apted
 -- http://oblige.sourceforge.net/
 
-seed = -2147483648
+seed = 202607211
 
 ---- Game Settings ----
 
-game = doom2
+game = heretic
 engine = nolimit
 length = game
-theme = original
+theme = egypt
 
 ---- Architecture ----
 
 size = regular
-outdoors = heaps
-caves = mixed
+outdoors = more
+caves = less
 liquids = heaps
 hallways = mixed
 teleporters = mixed
@@ -72,20 +72,20 @@
 
 @heretic_mon_control = 1
   warrior = default
-  Ironlich = plenty
+  Ironlich = default
   warrior_ghost = default
-  sabreclaw = more
+  sabreclaw = default
   gargoyle = default
   nitro = default
-  ophidian = more
+  ophidian = default
   golem = default
-  weredragon = more
+  weredragon = default
   fire_garg = default
-  Maulotaur = plenty
-  D_Sparil = default
+  Maulotaur = none
+  D_Sparil = none
   golem_ghost = default
   nitro_ghost = default
-  disciple = plenty
+  disciple = default
 
 @heretic_weapon_control = 1
   crossbow = loveit
Only in Oblige-7.70: OPTIONS.txt
diff -ur Oblige-7.70/README.txt Oblige-7.70-bright/README.txt
--- Oblige-7.70/README.txt	2023-11-30 04:31:53.779596700 -0600
+++ Oblige-7.70-bright/README.txt	2026-07-24 00:36:49.819057400 -0600
@@ -1,3 +1,12 @@
+Annoying bug: Seeds 10 apart recreate the same maps, e.g. E1M1 with
+seed 11 is the same as E1M2 with seed 1.  Also: Seeds above 2^31 aren't
+correctly shown in the wad.  So, seeds have to be randomly chosen to
+be a number between 1 and 2^31 and each seed needs to be 600 or so
+away from any other seed so there isn't overlap.  Ugh.
+
+Seeds in MMDDYYN000 format should still be good, e.g. 724261000
+or 113026100 (MM first so we don't have first two digits be 21 or
+higher)
 
 OBLIGE 7.70
 ===========
Binary files Oblige-7.70/games/heretic/fabs/decor/pillar2.wad and Oblige-7.70-bright/games/heretic/fabs/decor/pillar2.wad differ
diff -ur Oblige-7.70/games/heretic/levels.lua Oblige-7.70-bright/games/heretic/levels.lua
--- Oblige-7.70/games/heretic/levels.lua	2023-11-30 04:31:55.234004800 -0600
+++ Oblige-7.70-bright/games/heretic/levels.lua	2026-07-18 23:12:14.584466500 -0600
@@ -30,7 +30,7 @@
 
     theme = "castle"
     boss = "Ironlich"
-    sky_light = 0.65
+    sky_light = 0.95
   }
 
   episode2 =
@@ -39,7 +39,7 @@
 
     theme = "castle"
     boss = "Maulotaur"
-    sky_light = 0.75
+    sky_light = 0.95
   }
 
   episode3 =
@@ -48,7 +48,7 @@
 
     theme = "castle"
     boss = "D_sparil"
-    sky_light = 0.75
+    sky_light = 0.95
   }
 
   episode4 =
@@ -57,7 +57,7 @@
 
     theme = "castle"
     boss = "Ironlich"
-    sky_light = 0.50
+    sky_light = 0.95
   }
 
   episode5 =
@@ -66,7 +66,26 @@
 
     theme = "castle"
     boss = "Maulotaur"
-    sky_light = 0.65
+    sky_light = 0.95
+  }
+
+  --[[ We are shamelessly exploting a Doomsday 1.8.6 bug: Doomsday supports,
+  --   albeit without secret levels, E6M#, E7M#, E8M#, and E9M#
+  --   In Heretic + Hexen (2025), the exit to E6M3 gives us a "How did you
+  --   get here but yeah you won the secret levels" message and ends the 
+  --   game.  In Doomsday 1.8.6, we can play an entire E6/7/8/9 episode (the
+  --   exit in E[6-9]M8 just "clicks" and otherwise does nothing, the exit
+  --   in E6M9 puts us in E6M0, the exits in E[7-9]M9 crash Doomsday 1.8.6).
+  --   That in mind, we will make an entire Episode 6; it can be played
+  --   in full in Doomsday 1.8.6, and the first three levels can be enjoyed
+  --   in "stock" Heretic + Hexen ]]
+  episode6 =
+  {
+    ep_index = 6
+
+    theme = "castle"
+    boss = "Ironlich"
+    sky_light = 0.70
   }
 }
 
@@ -88,14 +107,14 @@
 ------------------------------------------------------------
 
 function HERETIC.get_levels()
-  local EP_NUM  = sel(OB_CONFIG.length == "game",   5, 1)
+  local EP_NUM  = sel(OB_CONFIG.length == "game",   6, 1)
   local MAP_NUM = sel(OB_CONFIG.length == "single", 1, 9)
 
   if OB_CONFIG.length == "few" then MAP_NUM = 4 end
 
   -- create episode info...
 
-  for ep_index = 1,5 do
+  for ep_index = 1,6 do
     local ep_info = HERETIC.EPISODES["episode" .. ep_index]
     assert(ep_info)
 
diff -ur Oblige-7.70/games/heretic/pickups.lua Oblige-7.70-bright/games/heretic/pickups.lua
--- Oblige-7.70/games/heretic/pickups.lua	2023-11-30 04:31:55.360032800 -0600
+++ Oblige-7.70-bright/games/heretic/pickups.lua	2026-07-13 11:26:54.668408900 -0600
@@ -187,6 +187,7 @@
     kind = "armor"
     add_prob = 20
     closet_prob = 20
+    secret_prob = 40
     give = { {health=100} }
   }
 
@@ -198,7 +199,9 @@
     id = 8
     kind = "ammo"
     add_prob = 5
-    closet_prob = 10
+    closet_prob = 20
+    secret_prob = 30
+    once_only = true
 
     give = { {ammo="crystal",  count=10},
              {ammo="arrow",    count=5},
@@ -272,16 +275,17 @@
   {
     id = 84
     kind = "powerup"
-    secret_prob = 10
+    closet_prob = 5
+    secret_prob = 15
   }
 
   tome =
   {
     id = 86
     kind = "powerup"
-    add_prob = 20
-    closet_prob = 20
-    secret_prob = 10
+    add_prob = 50
+    closet_prob = 50
+    secret_prob = 20
   }
 }
 
diff -ur Oblige-7.70/games/heretic/themes.lua Oblige-7.70-bright/games/heretic/themes.lua
--- Oblige-7.70/games/heretic/themes.lua	2023-11-30 04:31:55.334033300 -0600
+++ Oblige-7.70-bright/games/heretic/themes.lua	2026-07-18 02:07:04.230925100 -0600
@@ -101,7 +101,7 @@
   }
 
 
---[[
+-- Town enabled
   town =
   {
     liquids =
@@ -116,7 +116,20 @@
       GRSTNPB = 50
     }
   }
---]]
+
+  egypt =
+  {
+    liquids = 
+    {
+      water = 50
+      lava = 5
+    }
+
+    facades =
+    {
+      SNDBLCKS = 50
+    }
+  }
 
 }
 
@@ -445,6 +458,128 @@
     }
   }
 
+  -- This is a copy of Castle hallway so Oblige doesn't crash
+  town_deuce_Hallway =
+  {
+    env   = "hallway"
+    group = "deuce"
+    prob  = 50
+
+    walls =
+    {
+      SNDCHNKS = 30
+      SQPEB1   = 30
+      SQPEB2   = 20
+      SKULLSB1 = 10
+    }
+
+    floors =
+    {
+      FLOOR00 = 20
+      FLOOR01 = 20
+      FLOOR06 = 20
+      FLOOR07 = 20
+      FLOOR09 = 20
+      FLAT502 = 10
+    }
+
+    ceilings =
+    {
+      FLOOR29 = 20
+      FLOOR00 = 10
+      FLOOR09 = 10
+      FLAT510 = 10
+      FLAT520 = 10
+    }
+  }
+
+  ---- EGYPT THEME --------------------------------
+
+  egypt_Gold = {
+    env  = "building"
+    prob = 50
+    walls = { SANDSQ2 = 50 }
+    floors = { FLOOR06 = 50 }
+    ceilings = { FLOOR11 = 50 }
+  }
+  egypt_Wood = {
+    env  = "building"
+    prob = 50
+    walls = { WOODWL = 50 }
+    floors = { FLOOR10 = 50 }
+    ceilings = { FLOOR12 = 50 }
+  }
+  egypt_Disco = {
+    env  = "building"
+    prob = 50
+    walls = { SPINE2 = 50 }
+    floors = { FLAT522 = 50 }
+    ceilings = { FLOOR06 = 50 }
+  }
+  egypt_Pyramid = {
+    env = "building"
+    prob = 50
+    walls = { SNDPLAIN = 50 }
+    floors = { FLOOR27 = 50 }
+    ceilings = { FLOOR10 = 50 }
+  }
+  egypt_Outdoors = {
+    env  = "outdoor"
+    prob = 50
+
+    floors =
+    {
+      FLAT522=20, FLOOR27=30, FLOOR27=50,
+      FLAT522=10
+    }
+
+    naturals =
+    {
+      FLOOR06=50, SNDBLCKS=20, FLOOR27=20,
+      FLAT522=20
+    }
+  }
+  --- The below are cut-and-paste
+  egypt_Cave =
+  {
+    env  = "cave"
+    prob = 50
+
+    walls =
+    {
+      LOOSERCK=20, BRWNRCKS=20
+    }
+
+    floors =
+    {
+      LOOSERCK=20, BRWNRCKS=20
+    }
+  }
+  egypt_deuce_Hallway =
+  {
+    env   = "hallway"
+    group = "deuce"
+    prob  = 50
+
+    walls =
+    {
+      SQPEB2   = 30
+      SNDPLAIN = 30
+    }
+
+    floors =
+    {
+      FLOOR06 = 20
+      FLOOR27 = 20
+    }
+
+    ceilings =
+    {
+      FLOOR10 = 20
+      FLOOR06 = 20
+    }
+  }
+
 }
 
 
@@ -462,6 +597,7 @@
   {
     env = "any"
   }
+
 }
 
 
@@ -477,7 +613,7 @@
 }
 
 
---[[
+-- Town enabled
 OB_THEMES["town"] =
 {
   label = _("Town")
@@ -485,5 +621,12 @@
   name_theme = "URBAN"
   mixed_prob = 50
 }
---]]
 
+-- Egypt
+OB_THEMES["egypt"] =
+{
+  label = _("Egypt")
+  game = "heretic"
+  name_theme = "URBAN"
+  mixed_prob = 50
+}
diff -ur Oblige-7.70/scripts/layout.lua Oblige-7.70-bright/scripts/layout.lua
--- Oblige-7.70/scripts/layout.lua	2023-12-05 03:36:09.239573900 -0600
+++ Oblige-7.70-bright/scripts/layout.lua	2026-07-19 13:11:45.017874200 -0600
@@ -2227,18 +2227,18 @@
 
   local LIGHT_LEVELS =
   {
-    bright   = 192 -- Was 160
-    normal   = 160 -- Was 144
-    dark     = 144 -- Was 128
-    verydark = 128 -- Was 112
+    bright   = 240 -- Was 160
+    normal   = 224 -- Was 144
+    dark     = 192 -- Was 128
+    verydark = 160 -- Was 112
   }
 
   local CAVE_LEVELS =
   {
-    bright   = 160 -- Was 144
-    normal   = 144 -- Was 128
-    dark     = 144 -- Was 128
-    verydark = 128 -- Was 112
+    bright   = 224 -- Was 144
+    normal   = 192 -- Was 128
+    dark     = 160 -- Was 128
+    verydark = 144 -- Was 112
   }
 
   local function sky_light_to_keyword()
@@ -2262,6 +2262,7 @@
 
     assert(base_light)
 
+    -- Look here Look here Look jere
     if R.theme.light_adjusts then
       base_light = base_light + rand.pick(R.theme.light_adjusts)
     end
@@ -2273,7 +2274,7 @@
 
 
   local function visit_room(R, prev_room)
-    local tab = { bright=150, normal=110, dark=90, verydark=70 } -- ST: Bright
+    local tab = { bright=250, normal=210, dark=190, verydark=170 } 
 
     if R.is_start then
       tab["verydark"] = nil
diff -ur Oblige-7.70/scripts/level.lua Oblige-7.70-bright/scripts/level.lua
--- Oblige-7.70/scripts/level.lua	2023-11-30 04:32:06.709845200 -0600
+++ Oblige-7.70-bright/scripts/level.lua	2026-07-27 01:02:13.754335600 -0600
@@ -171,13 +171,13 @@
 
     along = math.clamp(0, along, 1)
 
-    -- this basically ramps from "small" --> "large"
-    W = int(22 + along * 24)
+    -- this basically ramps from "tiny" --> "extreme"
+    W = int(16 + along * 56)
 
   else
     -- Named sizes --
 
-    local SIZES = { small=20, regular=34, large=48, extreme=72 }
+    local SIZES = { small=9, regular=25, large=37, extreme=61 }
 
     W = SIZES[ob_size]
   end
@@ -2167,15 +2167,16 @@
     prob = style_sel("darkness", 0, 10, 30, 90)
   end
 
-  LEVEL.sky_light  = rand.pick({ 176,192,192,208 })
-  LEVEL.sky_shadow = 32
+  LEVEL.sky_light  = rand.pick({ 208,224,232,240 })
+  gui.printf(string.format("Sky light level is %d\n",LEVEL.sky_light))
+  LEVEL.sky_shadow = 12
 
   if rand.odds(prob) then
     gui.printf("Darkness falls across the land...\n\n")
 
     LEVEL.is_dark = true
     LEVEL.sky_light  = 144
-    LEVEL.sky_shadow = 32
+    LEVEL.sky_shadow = 12
   end
 end
 
@@ -2294,6 +2295,9 @@
   end
 
   gui.rand_seed(LEVEL.seed + 0)
+  for counter=1,index*100 do
+    gui.random()
+  end
 
 
   -- use a pre-built level ?
@@ -2315,6 +2319,9 @@
   gui.property("level_name", LEVEL.name);
 
   gui.rand_seed(LEVEL.seed + 1)
+  for counter=1,index*100 do
+    gui.random()
+  end
 
   Level_do_styles()
 
@@ -2334,6 +2341,9 @@
 
 
   gui.rand_seed(LEVEL.seed + 2)
+  for counter=1,index*100 do
+    gui.random()
+  end
 
   local res = Level_build_it()
   if res != "ok" then
diff -ur Oblige-7.70/scripts/render.lua Oblige-7.70-bright/scripts/render.lua
--- Oblige-7.70/scripts/render.lua	2023-11-30 04:32:06.374815600 -0600
+++ Oblige-7.70-bright/scripts/render.lua	2026-07-19 12:59:37.611267400 -0600
@@ -354,6 +354,7 @@
 
     -- choose lighting to be the minimum of each side
     local min_light = math.min(E.area.lighting, E.peer.area.lighting)
+    if min_light < 190 then min_light = 190 end -- Brighter
     Ambient_push(min_light)
 
     Fabricate(A.room, def, T, { skin })
@@ -2386,6 +2387,7 @@
     end
   end
 
+  if A.lighting < 200 then A.lighting = 200 end
 
   if not A.floor_h then
     A.floor_h = -7
