If you've toyed around with level editors for Doom you may have noticed something peculiar
whenever you place more than one player start object.
Placing more than one player start will create Doomguy clones that don't appear to do anything.
Without a doubt you've tried to shoot these immobile comrades only to find out it also
harms the player. Hell, it's even deadly. Hence why these clones are also called voodoo
dolls.
So why does this hurt the player? Why the Hell is this a feature? Let's find out, shall
we?
How about we start with the technical details first. Why does a second, immobile player
appear when you place a second player 1 start?
When a map loads, it iterates through a list of things that are built into the map. Each
thing found will then be placed into the map using the P_SpawnMapThing function.
Inside the P_SpawnMapThing function there's a special condition if the thing ID is less
than or equal to 4. Thing IDs 1, 2, 3 and 4 correspond with player starts 1, 2, 3 and
4 respectively. Why only 4? Because vanilla Doom supported 4-player multiplayer only.
An interesting function call is made here. If the game is single player, spawn a player.
Let's see what spawning a player does.
It checks here if player 1 is playing, which is the case, tries to set the uniform colour
here, and hey this looks interesting. Here it assigns the mobj's player to player 1.
Now, you need to seperate the mobj from the player here. See the mobj as the body, and
the player as the soul. There can be many player 1 bodies, but only one player 1 soul.
So what happens when you damage a voodoo doll? For that we must check out the P_DamageMobj
function. Here's something interesting.
This essentialy means that the voodoo doll tracks 2 different health values: one for
its own body and one for the soul. This can lead some interesting phenomena.
But first let's move on with P_DamageMobj. When mobj, or the body, reaches less than
1 health, it will call the P_KillMobj function.
The voodoo doll body will die. Again, the voodoo doll retrieves the player's soul here,
and affects the player in many ways. It makes the player non-solid, makes the player drop his weapon, and more.
So about those interesting phenomena. What if the player has 200 health, and kills a
voodoo doll that has 100 health? Well, the voodoo doll dies but the player doesnt
sort of? The player drops his weapon and has its height set to zero.
So what the Hell happened here? Well, killing the mobj bypassed some status bar specific
code. Here the status bar checks if the player has died, but since the players health
is still positive Doomguys face still appears alive.
It is worth noting that even when dead, monsters will still target you because the player health
is still positive. They will keep attacking until you die a second time.
What about the other way around? What if the player has lower health than the voodoo doll?
Well, simply put John is a zombie!
Doomguys soul will die, but the body is still alive and kicking. P_KillMobj is never
called, so the stuff that turns Doomguy into a corpse is skipped, but the status bar and
weapon are clearly affected.
Heres what happens: this code here checks if your weapon is ready, but theres also
a check if the players health is zero or lower. If it is, it will lower the weapon
into an unusable state.
Monsters ignore you because they see that the players health is zero or lower. You
can still interact with items, so when you grab some health enemies will realise youre
alive again and theyll do their best to kill you.
That's all cool and stuff, but is there anything useful you can do with voodoo dolls? Well,
definitely. id Software themselves never used voodoo dolls, but the folks who developed
Final Doom found some creative voodoo doll usage.
The most infamous one is probably the one used in TNT: Evilution's final level. This
notorious platforming puzzle that instantly kills you if you get the sequence wrong uses
a voodoo doll.
Each wrong side of the platform has a teleporting linedef that teleports you into the tiny room
that contains a voodoo doll. What happens here is that you essentially telefrag yourself
and die.
Plutonia also uses voodoo dolls, but in a more generous fashion. In MAP06, walking under
this cube gives you items. How does that work? Simple. An out of bounds elevator is lowered
when you walk underneath the cube.
This elevator holds a voodoo doll which then interacts with items at the bottom of the
elevator ride. Since the voodoo doll shares the player's soul, it also shares its inventory.
Other wads, like Scythe, use voodoo dolls to kill the player based on a timer. Crossing
a linedef here will start a raising floor in a very tall room. After a while the voodoo
doll gets crushed to death, therefor also killing the player.
But wait, it gets more creative. If you use Boom extensions you can create stuff like
conveyor belts. This opens up a ton of possibilities.
You can create timed events using these conveyor belts. For example, you want the door to open
after 10 seconds after pressing this switch. Out of bounds the voodoo doll is released
onto a conveyor belt, which after a certain distance crosses a linedef that will open
the main door.
You can also create doors that require multiple switches to open. Using the same principals,
the voodoo doll will cross the linedef once all the 3 doors have opened up.
If you're a real turbo nerd you can even make a calculator using voodoo dolls and conveyor
belts since you can pretty much simulate binary logic. Xtroose made an 8-bit binary calculator
that can add 2 decimal numbers and display the result in binary.
What if you want to create a vanilla Doom map without all the fancy Boom conveyor belts?
No worries, because thanks to a trick that's barely a year old you can do so. Behold: mikoportals.
Doomworld user Mikolah found out that a sector that is at its minimum floor height, so floor
height at -32768, can do pretty weird stuff.
Due to an underflow in calculating Doomguy's new position and the engine thinking that
Doomguy is stuck in a ceiling, the game will teleport Doomguy to a valid position just
underneath the ceiling.
What does this have to do with conveyor belts? Well, whatever falls into the portal preservers
its momentum. If you push a voodoo doll into the portal using an exploding barrel, the
momentum is retained and the voodoo doll will slowly move to the other side.
This is an elegant solution if you wanna keep it vanilla to the max, theres just one
disadvantage: the only way to give the voodoo doll a push is through explosive barrels,
so the player will also receive damage and have its vision reddened by sheer pain.
So yeah, cool stuff huh. Voodoo dolls are an unintended feature in Doom, but over the
years players found some very creative findings to make maps more dynamic and complex.
Unfortunately voodoo dolls do not always work in cooperative mode, since each player will
need its own voodoo doll. It gets especially complicated when a source port allows more
than 4 players. Man, I get a headache just thinking about it.
Anyway, that's all there is to say about voodoo dolls. A relatively obscure, but powerful
level editing object that can really spice up your maps.
Thank you very much for watching, and boi, this list is getting long now, but as always
a big shout out to my sexy patrons:
Andrii Dykhlin Art Cox
Chris O'Neil CIPRIAN RUSEN
Curtis Carter Joseph Kullmann
QuakeGamer632 rapuhotelli
Roman Orekhov Sean Hwang
Steven Bohn Trevor Whelan
Turbine2k5
Your support lately has been amazing. Thank you very much. See you next time.