Discouragement Field

From Valve Developer Community
Revision as of 15:49, 1 May 2012 by Nathaniel (talk | contribs) (grammar)
Jump to navigation Jump to search
Multiplediscouragementbeamsicon.png


The Discouragement Field or Death Field is a special energy field in Portal 2 which blocks only the player, not other objects. It can be considered as the counterpart to the Emancipation Grid. However, contact with the field instantly kills the player.

Instance

Death Field example.
  • Download these two instance files: death_field_128x128.vmf and death_field_256x256.vmf and put them into your instance folder under instances\gameplay. (If only text comes up and you can't download it, press ctrl+A, copy it, paste it in Notepad, and save as death_field_128x128.vmf under All Files (for the 128x128 one)).
  • Create a new func_instance in your map, select VMF Filename and click Browse... on the right and select one of the two death field instances.
  • The Discouragement Field is now ready and active on default. If you want to activate or deactivate the field, follow these steps:
    • Give the func_instance a name (Fix Up Name), for example death_field_1.
    • Create a trigger or button somewhere and give it these outputs:
My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger death_field_1 instance:enable;Trigger <none> 0.00 No

(for activation)

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger death_field_1 instance:disable;Trigger <none> 0.00 No

(for deactivation)

Manual Creation

Alright, for this tutorial we're going to create a Death Field with the size of 128units. Select the tools/toolsnodraw texture and create a 128w 1l 128h block brush.

Now click Shift + A to open the Texture Application Tool, select the front and the back face of the brush, apply the effects/laserplane texture and click "Fit".

Click for preview.

Next, tie the brush to a entity by clicking the toEntity button on the lower right side of the Hammer Interface and make it a func_brush with the following settings:

Property Name Value
Name deathfield1_brush
Render FX Constant Glow
Solidity Never Solid

Now, we want the Death Field to kill the player when he tries to pass through it. For this, create a 128w 2l 128h block brush around the first brush you made, apply the tools/toolstrigger texture to every face and make it a trigger_hurt with these settings:

Property Name Value
Name deathfield1_trigger
Damage 1000
Damage Type ENERGYBEAM

And of course, make sure the Clients flag is enabled, otherwise it won't work.

To make it look like the lasers aren't just coming out of nowhere, create two prop_static entities. One to the left and one to the right of the Death Field brush. Select the model models/props/fizzler.mdl and set the skin to "2".

Click for preview.

Now create a ambient_generic and place round about in the middle of the brush. Use the following settings:

Property Name Value
Name deathfield1_sound
Sound Name Laser.BeamLoopMega
SourceEntityName deathfield1_brush
Max Audible Distance 870

The flags Start silent and Is NOT looped must be disabled!

Now place a light entity with the following settings at the center of the deathfield1_brush:

Property Name Value
Name deathfield1_light
Brightness 255 106 106 20
Maximum Distance 256

Alright, the Death Field itself is ready to be used in game now, but for sure you want to use the possibilty of turning it on and off in your map. For this example we will use a prop_floor_button. Name it something like "button" and create the outputs:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnPressed deathfield1_brush Disable 0.00 No
Io11.png OnPressed deathfield1_trigger Disable 0.00 No
Io11.png OnPressed deathfield1_sound StopSound 0.00 No
Io11.png OnPressed deathfield1_light TurnOff 0.00 No
Io11.png OnUnPressed deathfield1_brush Enable 0.00 No
Io11.png OnUnPressed deathfield1_trigger Enable 0.00 No
Io11.png OnUnPressed deathfield1_sound PlaySound 0.00 No
Io11.png OnUnPressed deathfield1_light TurnOn 0.00 No

Congratulations! You have created a fully funcional Death Field for use in your map! Please note that for the light and the ambient_generic entities I used the values from the instance you can find here.