doom engine oddities. fun deh / lua
I've added some of my most commonly used lua scripts to a github repository. You can find them here: https://github.com/ribbiks/doom_lua
bevel.lua
Adds bevels to the intersection of all selected linedefs.
circularizer.lua
Transform a map from a rectangle into a ring.
flank.lua
Adds border linedefs to the interior of all selected linedefs.
join_identical_sectors.lua
Join (or merge) all selected sectors that have the same floor, ceiling, brightness, tag, effect, floortex, and ceiltex.
make242c.lua
Apply fake floor, ceiling, and colormap effects to all selected sectors.
select_overlapping_monsters.lua
Does what it says on the tin.
squarifier.lua
"Squarifies" all selected linedefs.
While clearing out one of my old folders of miscellaneous doom scraps I came across wallscroll.wad, a prototype for animating textures from one state to another based on a triggered action:
The way it works is outlined in this post. Each frame of the animation is stuffed into a single texture:
After hitting the switch a voodoo doll then rapidly scrolls the wall with the big texture 128 units at a time, simulating an animation.
download: wallscroll.wad
Teleport destinations are mobjs like any other, which means you can make them pushable, killable, etc, via dehacked flags. One simple thing you can do with this is boom-compatible teleporters with multiple destinations:
Download: teledest1.wad
If you walk over the teleporter it takes you to the red side. But if you hit the switch, the teleporter now takes you to the blue side instead.
When you walk over a teleport linedef the engine searches through all sectors (in ascending order) looking for one which matches the tag of the tele line and which contains a teleport destination object. The red telepad has a lower sector index than blue, so it is found first in the search. When you press the switch, the teleport destination object gets pushed off of the red telepad, so the search for a teleport destination continues onward to the blue one.
In the demo wad the destination objects are candle sprites so you can clearly see what's happening, but in practice you could blank them out with an empty graphic.
Back when Starcraft custom mapping was a thing there was a popular game type called "Bounding" that involved guiding small units through timed patterns of exploding obstacles. Think part puzzle-game, part rhythm game:
I had the terrible idea to try and create timed exploding obstacles in Doom (specifically, in boom-compatibility):
I cobbled together some dehacked, wrote very elaborate lua scripts to generate the explosion mechanics, and had a decent prototype going. It might be the most complicated voodoo-doll mechanics ever used in a map? Don't quote me on that.
Gradually my enthusiasm for the idea wore off. The explosions can feel pretty janky, and I imagined that very few people would actually be interested to play something like this (especially if I started making very challenging obstacles). Instead of having it rot on my harddrive though I figured I might as well post the tech demo: doombound01.wad (tested in prb+ complevel 9)
Some things to note:
- Each difficulty setting has different explosion patterns
- UV requires SR50
Boom's "Scroll Floor/Things" actions normally only affects objects on the ground. However, if the scrolling is applied to a sector also affected by action 242 then it pushes every object below the fake surface.
This can be used to nudge flying monsters around, or projectiles:
Here's are some vaguely-spooky maps that use the effect: wormwood_EU.zip
Happy Halloween.
