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