"DoV_Tomas"
Crushing Zombies with Moveables
Introduction
I just recently got into editing in Radiant and like so many others I am learning as I design my first level. In the interest of originality I was looking for ways to subdue monsters without just shooting them so I decided to build a puzzle where the player could "squish" the zombies under a heavy load. With a bit of experimentation - and help from Wykyd_1 - I was able to create a moveable that crushes zombies beneath it. It's a very simple process but provides some good lessons on how the trigger_hurt works, how it can be bound to moveables, and how you can construct just one innovative way to bash monsters. I hope you enjoy my first Doom3 tutorial and I also hope it lets you create new things you didn't think were possible in the Doom3 engine.
If you're new to Doom3 you may wish to read the entire article. If you know your way around Radiant you can skip forward to the set up section. I assume you know the basics of Radiant and to save reading I will skip the mundane details of how for example to create a room, add entities and how to move them into position.
Concept
As the name suggests moveables are things that move in the Doom world. These items obey most of the quasi-gravity world rules of Doom3 but in many ways they do not. That is, if we simply perch a large brick moveable on some exploding barrels, place a zombie beneath it and shoot out the barrels so the moveable falls onto the zombie, it will not do any damage - it's funny to see a huge brick moveable that weighs presumably many tons land atop a zombie's head and do no damage. In order for us to "cheat" the damage we use a trigger_hurt.
Trigger_hurts come in basically two varieties, pain and damage. One example of the trigger pain's use is whenever the player encounters that deadly yellow mist in the game. The mist itself is benign, but if you examine the Doom3 maps you'll see a Trigger_hurt near the mist. Basically a Trigger_hurt, as the name implies, is a trigger that causes pain and damage to the entity that steps into its range. It has some parameters we can mess with to get the desired effect. Normall a trigger_hurt does not move so we bind it to our moveable. That way we can create the illusion that the moveable is doing the actual damage. Okay, enough of the conceptual babble, lets roll up our sleeves and open Radiant.
Set Up
If you haven't already done so, construct a room, add a light and an info_player_start. Next add your exploding barrels. You'll have to experiment with the placement of the barrels, the positioning of the moveable and the zombie's placement, but in my example I'm going to keep it simple for illustrative purposes. Next create a brush, texture it, and by right clicking on the viewport, make the brush a moveable_base_brick. Next place your monster(s). Refer to the image below for some placement ideas.
Just remember that you don't want the monster too near the barrels since when you shoot them out they will kill the monster if its too close to the explosion. You'll notice I only placed two barrel "supporting beams". You can create four (one for each corner of the moveable) but that means the player will have to blow up at least three of the pillars if not four to drop the moveable. Best to go with two pillars and suggest there were other pillars that were damaged or knocked down prior to the player arriving at the scene. Next create a hurt_trigger and size it to fit the side of the moveable brick what will be the"crushing" side. Position the trigger_hurt so it is touching the moveable brick - again refer to the images.
The next step is to add some key/vals to the trigger_hurt. The only ones you have to add are these:
Make sure your key/vals are exactly as shown other than the bind key's val which should exactly match the name of your moveable_base_brick. Note the values are adjustable, and make sure the damage you set is enough to deplete the monster's health during the time its in contact with the trigger_hurt. Since I am using the fatty zombie, a damage amount of 100 will suffice. Make sure to bind the trigger_hurt to the moveable through the bind command - note the image of the entity window above. That way the trigger_hurt will travel with the moveable. Position everything as I have in the images.
Testing
Once you're done, save your map, compile it, fire up Doom3, start your map, shoot out the barrels and watch your monster get crushed.
======================================== ==================
This update was provided by Sense A Million which further refines the basic premise. Here S.A.M. explains how to add a def folder and how to attach it to the crusher. The new def folder lets you create a custom trigger_hurt crusher that squashes the monsters flat. I didn't update the second screenshot to show a flat zombie, but I did test S.A.M.'s def file and rest assured the fatty zombie ends up flat as a pancake. Thanks Sense a Million!
"Also i was messing around with the crushers some more, if you place a trigger hurt on the face of the crusher with certain properties, it will gib the monster. still haven't found a good solution for the weapons. items (health, ammo, etc) don't stop the mover.
For the trigger_hurt, give it the values of...
key: def_damage
value: my_crusher_damange_name
then make a "def" folder in the base dir and make a file in it called "any_name_i_want.def" and put these lines in it...
// ######## DAMAGE CRUSHER START ########
entityDef my_crusher_damange_name {
"damage" "999" // amount of damage to inflict
"noArmor" "1" // set weather it effects armor
"mtr_blob" "genericDamage" // effect to play on screen
"blob_time" "0" // screen effect hang time
"blob_size" "0" // screen effect size
"blob_offset_x" "0" // screen effect offset
"knockback" "0" // set weather pushes player back
"kickDir" "0 0 0" // direction of push
"kick_time" "0" // time the push takes
"kick_amplitude" "0" // apmlitude of push
"dv_time" "0" // unknown
"gib" "1" // causes monster/npc/player gib
"gibNonSolid" "1" // causes gibs to be non-solid
}
// ######## DAMAGE CRUSHER STOP ########
The 2 settings referring to gibs prevents the mover from stopping slightly when it hits or getting hung up on an npc."
======================================== ===================
Conclusion
You can mess with other key/vals for the moveable to get more subtle control of its movement but the basics shown here will get you started. You should embellish the scene a bit by perhaps placing lots of moveable stuff on top of the moveable_base_brick to give the impression that it is a giant shelf. Use your imagination to make the illusion seem more real and I am sure with a bit of thought many variations of this theme can be created to construct many interesting ways to subdue our monster foes.
Please post any input for improvement of this article. Have fun!
[email protected]