Practice English Speaking&Listening with: Voodoo Dolls in Doom

Normal
(0)
Difficulty: 0

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.

The Description of Voodoo Dolls in Doom