Dropper (Portal 2)

From Valve Developer Community
Revision as of 04:40, 7 April 2016 by P0rtalmaster (talk | contribs) (Added sections on manually creating cube and gel droppers — loooooooong overdue people!!!)

Jump to: navigation, search
Русский
Dropboxicon.png

A dropper is a puzzle element in Portal 2. Objects like gel and cubes fall out of it. It can be hooked up to a button, among other possible input devices.

Creating Droppers

1. Create a func_instance entity with the following properties:

Note: If you're creating multiple box droppers, use instances/gameplay/cube_dropper_multiple_normal.vmf instead.
Property Name Value
Fix up Name box_dropper
VMF Filename instances/gameplay/cube_dropper_normal.vmf

If the cube dropper doesn't show up then save and reload so you can position it properly.

2. Align the bottom of the upper, rectangular section of the dropper (just above the cylindrical part) with the ceiling of your map.
Dropper-ceiling.png
The square may flash due to z-order issues with the ceiling. Then use the Clipping tool to cut a square out of your ceiling where the flashing square is. This will allow the cube to fall through. Once you've isolated the square piece of texture in your ceiling, go ahead and delete it. Be sure not to make the hole too big, or you'll have leaks.

3. Create the entity you want to activate the cube dropper (i.e. a trigger_once at the entrance to the room) and give it the following outputs:

Note: If you're creating multiple box droppers with the instances/gameplay/cube_dropper_multiple_normal.vmf instance, remove the @ symbol from each input.
My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger box_dropper instance:@cube_dropper;Trigger 0.00 No
Io11.png OnTrigger box_dropper instance:@cube_dropper_autorespawn;Enable 0.00 No
Note:Hammer may indicate that these are invalid. Don't worry about it.

List Of Instances

There are different instances for each kind of dropper, and several different designs. Just substitute the kind you need for the VMF Filename parameter above. Be aware, however, that some of these instances were made for special, one-time, in-game scenes or were leftovers from the development stages, and may be buggy.

Item, parameters Dropper style
VMF Filename
prop_weighted_cube, Standard Small, modern
instances/gameplay/cube_dropper_dropontrigger_normal.vmf
prop_weighted_cube, Standard Small, modern
instances/gameplay/cube_dropper_multiple_normal.vmf
prop_weighted_cube, standard Small, modern
instances/gameplay/cube_dropper_normal.vmf
prop_weighted_cube, Standard Long, exposed tube
instances/gameplay/cube_dropper_large.vmf
prop_weighted_cube, Standard Long exposed tube, dirty
instances/gameplay/cube_dropper_large_dirty.vmf
prop_weighted_cube, Reflector Small, modern
instances/gameplay/reflectocube_dropper_dropontrigger_normal.vmf
prop_weighted_cube, Reflector Small, modern
instances/gameplay/reflectocube_dropper_multiple_normal.vmf
prop_weighted_cube, Reflector Long, exposed tube
instances/gameplay/reflectocube_dropper_large.vmf
prop_weighted_cube, Reflector Long exposed tube, dirty
instances/gameplay/reflectocube_dropper_large_dirty.vmf
prop_weighted_cube, Sphere Small, modern
instances/gameplay/sphere_dropper_dropontrigger_normal.vmf
prop_weighted_cube, Sphere Small, modern
instances/gameplay/sphere_dropper_multiple_normal.vmf
prop_weighted_cube, Sphere Long, exposed tube
instances/gameplay/sphere_dropper_large.vmf
prop_weighted_cube, Sphere Long exposed tube, dirty
instances/gameplay/sphere_dropper_large_dirty.vmf
prop_weighted_cube, $item_type, $cube_type, $rusted, $paint_power, $use_new_skin_method Small, modern
instances/gameplay/item_dropper.vmf
Gel, Water Small, modern
instances/gameplay/paint_dropper_erase.vmf
Gel, Bounce Small, modern
instances/gameplay/paint_dropper_bounce.vmf
Gel, Speed Small, modern
instances/gameplay/paint_dropper_speed.vmf
Gel, Stick Small, open tube
instances/gameplay/paint_dropper_stick.vmf
Gel, $paint_type Small, modern
instances/gameplay/paint_dropper.vmf
prop_monster_box, walking Normal with music
instances/gameplay/cube_dropper_a4.vmf
prop_monster_box, hiding Normal with music
instances/gameplay/cube_dropper_a4_box.vmf
prop_monster_box, walking Normal with no tube
instances/gameplay/cube_dropper_monster.vmf
prop_monster_box, hiding Normal with no tube
instances/gameplay/cube_dropper_monster_box.vmf
Only what you put in Big box with opening
instances/gameplay/cube_dropper_pendleton.vmf
prop_weighted_cube, $paint_type, Wet Small, modern
instances/gameplay/paint_bomb_dropper_modern.vmf
prop_weighted_cube, Bounce, Dry Small, bare tube
instances/gameplay/paint_bomb_dropper_bounce.vmf
prop_weighted_cube, Speed, Dry Small, bare tube
instances/gameplay/paint_bomb_dropper_speed.vmf
prop_paint_bomb, $paint_type, $bomb_type Portal 1 Style
instances/gameplay/paint_bomb_dropper.vmf
prop_paint_bomb, $paint_type, $bomb_type Dirty
instances/gameplay/paint_bomb_dropper_auto.vmf
People, alive Big box with opening
instances/gameplay/cube_dropper_player.vmf

Manual Creation of Cube Droppers

Creating your own cube droppers is actually easier than you might think it to be. In fact, compared to the standard and PTI instances, this method of making cube droppers uses far fewer entities in general. You'll need:


To get an idea for precise placement of everything, check out the VMF instance instances/gameplay/cube_dropper_shared.vmf.

For the env_entity_maker, set these keyvalues:

Property Name Value
Name cube_dropper_spawner
Point_template To Spawn cube_dropper_template

For the filter_activator_class, set these keyvalues:

Property Name Value
Name filter_weighted_cube
Filter Classname prop_weighted_cube or prop_monster_box

For the func_brush, set these keyvalues:

Property Name Value
Name cube_dropper_clip
Disable shadows Yes

For the logic_auto, set these outputs:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnMapSpawn cube_dropper_spawner ForceSpawn 1.00 No

For the point_template, set these keyvalues:

Property Name Value
Name cube_dropper_template
Template 1 cube_dropper_box

For the prop_dynamic, set these keyvalues:

Property Name Value
Name cube_dropper_prop
World Model models/props_backstage/item_dropper.mdl

If using a prop_monster_box, set these keyvalues:

Property Name Value
Name cube_dropper_box
Start as Box Yes

Otherwise, if using a prop_weighted_cube just set the name.

If you want your dropper to auto-respawn, also add this output to the cube:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnFizzled cube_dropper_trigger Enable 0.00 No

And finally, for the trigger_multiple, set these keyvalues, flags, and outputs:

Property Name Value
Name cube_dropper_trigger
Filter Name filter_weighted_cube
Flag Enabled?
Clients No
Physics Objects Yes
My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnStartTouch cube_dropper_prop Skin 1 0.00 No
Io11.png OnStartTouch cube_dropper_prop SetAnimation item_dropper_open 0.00 No
Io11.png OnStartTouch cube_dropper_prop SetDefaultAnimation item_dropper_idle 0.10 No
Io11.png OnStartTouch cube_dropper_clip Disable 0.00 No
Io11.png OnEndTouchAll cube_dropper_prop Skin 0 1.30 No
Io11.png OnEndTouchAll cube_dropper_prop SetAnimation item_dropper_close 0.00 No
Io11.png OnEndTouchAll cube_dropper_prop SetDefaultAnimation item_dropper_idle_closed 0.10 No
Io11.png OnEndTouchAll cube_dropper_clip Enable 0.00 No
Io11.png OnEndTouchAll  !activator AddOutput OnUser1 !self:Dissolve::0:1 0.00 No
Io11.png OnEndTouchAll  !self Disable 0.00 No
Io11.png OnEndTouchAll cube_dropper_spawner ForceSpawn 1.50 No
Tip:Outputs for other aesthetic details, such as lighting, may be added here.

If using a prop_monster_box, you'll also need to add one more output:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnEndTouchAll cube_dropper_box BecomeMonster 0.00 No

Finally, on an input device such as a prop_button, add these outputs:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnPressed cube_dropper_box FireUser1 0.00 No
Io11.png OnPressed cube_dropper_trigger Enable 0.00 Yes

If you want to auto-drop the first cube, relocate the second output to a trigger_once instead.

Droppers with a pre-placed cube

For this, you'll need a cube and a cube dropper of the same type.

If you don't have auto-respawn on and have a button for the dropper:

  1. Create your cube and give it a name.
  2. Create your button and set it to drop a cube when pressed.
  3. Set up an additional output for the button: to fizzle (dissolve) your pre-placed cube when pressed.

If you have auto-respawn on and no button for the dropper:

  1. Create your cube and set it to drop a cube when fizzled.
  2. That's it!

The advantage that this has is that now you can (for example) place a cube up high on a ledge but have the dropper in the middle of the room so that the player doesn't have to go through the tedium of retrieving the cube again. You might also use it to bring the cube a bit closer to the players when they enter an area while leaving the dropper a bit further away.

Manual Creation of Gel Droppers

Interestingly, all gel isn't always dispensed in the same way at Aperture. Sometimes it's a flow, and other times it's a great, big ball of gel. The former can easily be accomplished by using the info_paint_sprayer entity, but the latter requires the use of the prop_paint_bomb entity and some additional stuff. In either case, you can set the type of gel you want to use.

To make your own gel dropper using a prop_paint_bomb, you'll need:


For the env_entity_maker, set these keyvalues and outputs:

Property Name Value
Name gel_dropper_spawner
Point_template To Spawn gel_dropper_template
My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnEntitySpawned gel_dropper_control_rl Disable 0.00 No
Io11.png OnEntitySpawned gel_dropper_control_rl CancelPending 0.00 No

For the first logic_relay, set these keyvalues and outputs:

Property Name Value
Name gel_dropper_spawner_rl
My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger gel_dropper_spawner ForceSpawn 0.50 No

For the second logic_relay, set these keyvalues and outputs:

Property Name Value
Name gel_dropper_control_rl
My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger gel_dropper_spawner_rl Trigger 0.00 No

For the point_template, set these keyvalues:

Property Name Value
Name gel_dropper_template
Template 1 gel_dropper_bomb

For the prop_paint_bomb, set these keyvalues and outputs:

Property Name Value
Name gel_dropper_bomb
Paint Type <Select accordingly for your puzzle>
My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnExploded gel_dropper_spawner_rl Trigger 0.10 No
Io11.png OnExploded gel_dropper_control_rl Enable 0.10 No

Finally, on an input device such as a floor button, set these outputs:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnPressed gel_dropper_spawner_rl Enable 0.10 No
Io11.png OnPressed gel_dropper_control_rl Trigger 0.20 No
Io11.png OnUnPressed gel_dropper_spawner_rl Disable 0.00 No
Io11.png OnUnPressed gel_dropper_spawner_rl CancelPending 0.00 No


This design allows for any input device to control the gel dropper while at the same time being virtually unbreakable by spamming input.