Crusher

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.
thumb|right|300px|The Crusher panel
== Creating Crushers ==
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
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
	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
	OnTrigger	crusher1 	SetAnimation	smash_in 	0.00 	No
	OnTrigger	crusher1_trigger_hurt	Enable 	 	0.00 	No
	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
	OnTrigger	crusher1 	SetAnimation	smash_out	0.00 	No
	OnTrigger	crusher1_trigger_hurt	Disable 	 	0.00 	No
	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
	OnLessThan	crusher1_logic_relay_crush	CancelPending	 	0.00 	No
	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
	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
	OnProxyRelay	crusher1_logic_relay_crush 	Trigger 	 	0.00 	No
	OnProxyRelay	crusher1_logic_relay_uncrush	Trigger 	 	0.00 	No
	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 ==
* Download Crusher Instances (many custom options) - A crusher instance by Skotty
Category:Portal 2 Level Design
Category:Portal 2 Tutorials