Gel (Portal 2)
Gel or paint is a puzzle element of Portal 2. It flows out of droppers in blobs, and covers any surface or object it splashes on, changing its physical properties and coloring it if blue or orange. Water streams behave the same way gel does, but cleans gel off surfaces. Gel streams can be redirected with portals and funnels.
There are three main types of gel. Repulsion gel is blue, and causes things to bounce around. Propulsion gel is orange, and makes objects slippery and players move quickly. Conversion gel is white, and allows the placement of portals.
Creating a Gel Dropper
Using an instance
1. Create a func_instance entity with the following properties:
Property Name Value Fix up Name gel_dropper VMF Filename instances/gameplay/paint_dropper.vmf $paint_sprayer gel_sprayer $trigger_to_start start $trigger_to_stop stop $paint_type 0 = Bounce, 1= Stick, 2 = Speed, 3 = Conversion, 4 = Water
If the cube dropper doesn't show up then save and reload so you can position it properly.
2. Create the entity you want to activate the gel dropper, such as a trigger_once at the entrance to the room, and give it the following outputs:
- Create your pipe system using prop_statics. Use the 'Color' setting to change the color of the "Gel Flow" arrow. Make sure you have a proper dropper model at the end, and also use an 'interior cap' model inside the dropper.
- Create an info_paint_sprayer, and place it inside the dropper.
- Give it the settings that your map requires.
- Trigger the 'Start' and 'Stop' inputs as required.
If you want to create paint bombs, then the process is somewhat more complex:
- Create your pipe system.
- Create a prop_paint_bomb, and give it a name like "paint_bomb".
- Create a point_template. Give it a name like "paint_bomb_temp" and set 'Template 01' to "paint_bomb".
- Create an env_entity_maker. Give it a name like "paint_bomb_spawner" and set 'Point_template To Spawn' to "paint_bomb_temp".
- Trigger 'ForceSpawn' of "paint_bomb_spawner" with your output of choice (e.g. a button). If want them to drop at a regular time interval, you can use a logic_timer, and trigger 'ForceSpawn' using the 'OnTimer' output. Alternatively, you can trigger 'ForceSpawn' of "paint_bomb_spawner" whenever "paint_bomb" explodes.
1. For paint to function in your map you need to turn on the flag "Paint in map" in the map properties. This includes sticking to surfaces as well as affecting physics objects; boxes will look painted, but they will not act painted.
2. For paint to stick to surfaces you NEED to run RAD on Fast or Normal, otherwise it will only coat certain entities like turrets and cubes.
3. Gels won't appear if the maps are leaked.
4. There does not seem to be a way to put objects into a painted state through the I/O system, though there are inputs to remove paint. Nor does there appear to be any way of detecting when gel or water lands on a particular surface.