Crusher

From Valve Developer Community
Jump to navigation Jump to search
English (en)Русский (ru)Translate (Translate)
Crushericon.png

In Portal 2, Crushers are Panels with spikes. Like panels, they are attached to robotic arms. However, directly behind the robotic arm is a massive piston which drives the crusher.

The Crusher panel

Creating Crushers

Note.pngNote:As an alternate to creating a crusher from scratch, there is an instance available for download here.

1. Create a prop_dynamic entity with the following settings:

Property Name Value
World Model models/anim_wp/cursher/crusher.mdl
Name crusher1
Collision Not Solid
Hold animation? Yes

2. Create a 128x64x192 block brush around the spikes on the model. Tie it to a func_brush entity with the following settings:

Property Name Value
Name crusher1_brush
Parent crusher1,base_attach
Note.pngNote:Hammer will indicate that the parent keyvalue is invalid, because of the extra ,base_attach. Ignore it, it will work fine in-game. This is needed to make the brush follow the crusher's animation.

3. Create a 200x112x192 block brush around the previous brush. Tie it to a trigger_hurt entity with the following settings:

Property Name Value
Name crusher1_trigger_hurt
Parent crusher1,base_attach
Damage 1000
Damage Cap 1000
Damage Type CRUSH

4. Create a 200x96x192 block brush around the trigger_hurt brush. Tie it to a trigger_portal_cleanser entity with the following settings:

Property Name Value
Name crusher1_trigger_hurt
Parent crusher1,base_attach
Visible No

and the following outputs:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnDissolve (your dropper's trigger's name) Trigger 0.00 No

5. Create a logic_relay with the following settings:

Property Name Value
Name crusher1_logic_relay_crush

with the following outputs:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger crusher1 SetAnimation smash_in 0.00 No
Io11.png OnTrigger crusher1_trigger_hurt Enable 0.00 No
Io11.png OnTrigger crusher1_math_counter SetValue 0 0.00 No

6. Create a logic_relay with the following settings:

Property Name Value
Name crusher1_logic_relay_uncrush

with the following outputs:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger crusher1 SetAnimation smash_out 0.00 No
Io11.png OnTrigger crusher1_trigger_hurt Disable 0.00 No
Io11.png OnTrigger crusher1_math_counter SetValue 1 0.00 No

7. Create a logic_compare with the following settings:

Property Name Value
Name crusher1_logic_compare
Initial Value 0
Compare Value 1

and the following outputs:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnLessThan crusher1_logic_relay_crush CancelPending 0.00 No
Io11.png OnLessThan crusher1_logic_relay_crush Disable 0.00 No

8. Create a math_counter with the following settings:

Property Name Value
Name crusher1_math_counter
Maximum Legal Value 1

and the following outputs:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OutValue crusher1_logic_compare SetValue 0.00 No

9. In order to allow the firing of outputs for entities in a func_instance you'll have to create a func_instance_io_proxy entity with the following settings:

Property Name Value
Name crusher1_proxy_crush

and the following outputs:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnProxyRelay crusher1_logic_relay_crush Trigger 0.00 No
Io11.png OnProxyRelay crusher1_logic_relay_uncrush Trigger 0.00 No
Io11.png OnProxyRelay crusher1_logic_compare Compare 0.00 No

10. Set up triggers to open or close the crusher by triggering the proxy relays on crusher1_proxy_crush. Use crusher1_logic_compare to get the state of the crusher.

Or if you're feeling lazy just copy the file from "Instances" to "Prefabs" and add your trigger in the once you load the prefab and un-group it

External Links