Creating an incinerator

From Valve Developer Community
Jump to navigation Jump to search

Introduction

Warning.pngWarning:This tutorial is incomplete, and probably inaccurate. A experienced Portal mapper should fill in the missing information, and fix any inaccuracies.

In this tutorial you will learn how to make an Aperture Science Emergency Intelligence Incinerator that will open when a certain box is placed into it, and open when that box is placed on a 1500-Megawatt Aperture Science Heavy-Duty Supercolliding Superbutton.

Instructions

Step 1 - The Box

  1. Create a prop_physics with the following properties:
    Property Name Value
    Name victim_box
    World Model models/props/metal_box.mdl

Step 2 - The Incinerator

  1. Create a prop_dynamic with the following properties:
    Property Name Value
    Name incinerator
    World Model models/props_bts/glados_aperturedoor.mdl
  2. Create a room under it with the walls textured with "metal/metalwall048c_gradient" and the floors textured with "lights/light_orange001".
  3. Create a filter_activator_name nearby your button with the following properties:
    Property Name Value
    Name filter_victim_box
    Filter Name victim_box
  4. Create a 2 unit tall trigger_once covering the bottom of the room with the following properties:
    Property Name Value
    Name trigger_door1
    Filter Name filter_victim_box
  5. Create a cylinder the same size as the hole in the prop_dynamic. This will be used to cut a hole in the floor of the room.
  6. Push the cylinder into the floor where the prop_dynamic will sit.
  7. Right-click the cylinder and select carve. This will cut a hole in the floor of the room.
  8. Delete the cylinder.

Step 3 - The Door

    == The door setup == First thing is to make the door which will open on activation of the button.

    Door frame

    Create a prop_static in the doorway. The World Model should be set to "models/props/door_01_frame_reference.mdl" or "models/props/door_01_frame_wide_reference.mdl" (either one works).

    Doors

    How to align the func_door.

    1. Create a prop_dynamic with the following settings:

    Property Name Value
    World Model models/props/door_01_lftdoor_reference.mdl
    Name door_left_model

    Align it to the left, inside of the door frame.

    2. Create a 56Lx8Wx104H block brush with texture nodraw centered and inside the door model. Tie it to a func_door entity by selecting the object and using the menu option "Tie to Entity". The func_door entity should have the following settings:

    Property Name Value
    Name door_left
    Speed 250
    Stop Sound Doors.FullClose8
    Delay before Reset -1
    Lip 12
    Move Direction (This will be different for which way your door is facing)

    Also make sure that you un-check Touch opens under Flags.

    The best way to ensure you have the correct Move Direction is to first mark the direction on the circular indicator, then round to the nearest 90 degrees (so long as your doors are intended to be square with the Hammer coordinate system). You can click the "Point At" button by the circular indicator and then click on the 3d view. The angle from the entity to the place you clicked will then be listed as "angles" in the property list.

    Note.pngNote:You can also put a blocking damage if you don't want the player to get stuck inside it. Also, you can turn on Forced Closed for it to close even if the player tried to jam it open with a camera or cube.
    Final door.

    3. Repeat steps 1-3 but change the following: For the prop_dynamic:

    Property Name Value
    World Model models/props/door_01_rtdoor_reference.mdl
    Name door_right_model

    And for the func_door:

    Property Name Value
    Name door_right
    Move Direction (The opposite of the move direction for the left door)

    4. Set the parent of door_left_model (the prop_dynamic) to "door_left". Also set the parent of door_right_model to "door_right".

    Step 4 - The Button

      How to align the button models.
    1. Create a prop_static with the following properties:
      Property Name Value
      World Model models/props/button_base_reference.mdl
    2. Create a prop_dynamic aligned on top of the prop_static with the following properties:
      Property Name Value
      Name button_top_model
      World Model models/props/button_top_reference.mdl
    3. Create an ambient_generic with the following properties:
      Property Name Value
      Name button_down
      Sound Name Portal.button_down
      Source Entity Name button_top_model
    4. Create another ambient_generic with the following properties:
      Property Name Value
      Name button_up
      Sound Name Portal.button_up
      Source Entity Name button_top_model
    5. Create a 58Wx58Lx9H cylinder func_door with 8 sides with the following properties:
      Property Name Value
      Name button_top_door
      Speed 25
      Delay before Reset -1
      Move Direction 90 0 0 (or Down)

      Give it the following outputs:

      My Output Target Entity Target Input Parameter Delay Only Once
      Io11.png OnClose button_up PlaySound <none> 0.00 No
      Io11.png OnOpen button_down PlaySound <none> 0.00 No
      Io11.png OnClose incinerator SetAnimation close 0.00 No
      Io11.png OnOpen incinerator SetAnimation open 0.00 No
      Move it underneath "button_top_model", and uncheck all flags.
    6. Set the Parent of button_top_model to "button_top_door".
    7. The larger trigger_multiple.
    8. Create a 48Wx48Lx1H trigger_multiple with the following properties:
      Property Name Value
      Name button_trigger_player
      Place it right on top of the button_top_model.
    9. The smaller trigger_multiple.
    10. Next create a 7Wx7Lx1H cylinder trigger_multiple with 8 sides and the following properties:
      Property Name Value
      Name button_trigger_box
      Filter Name button_filter_boxes
      Change the flags so only "Physics Objects" is set, and place it directly on top and in the center of the button_top_model
    11. Select "button_trigger_player" and setup the Output as below:
      My Output Target Entity Target Input Parameter Delay Only Once
      Io11.png OnEndTouchAll button_trigger_box Enable <none> 0.00 No
      Io11.png OnEndTouchAll button_top_door Close <none> 0.00 No
      Io11.png OnStartTouch button_trigger_box Disable <none> 0.00 No
      Io11.png OnStartTouch button_top_door Open <none> 0.00 No
    12. Select the smaller, cylinder trigger_multiple, "button_trigger_box" and setup the Output as below:
      My Output Target Entity Target Input Parameter Delay Only Once
      Io11.png OnEndTouchAll button_trigger_player Enable <none> 0.00 No
      Io11.png OnEndTouchAll button_top_door Close <none> 0.00 No
      Io11.png OnStartTouch button_trigger_player Disable <none> 0.00 No
      Io11.png OnStartTouch button_top_door Open <none> 0.00 No
    13. Create a light completely underneath the top of the button but still inside the base with the following properties:
      Property Name Value
      Brightness 251 159 57 30
      BrightnessHDR 251 159 57 20
      Note.pngNote:The light should be 2 Units above the original base ground that the main base Button model is on, in order to cast correctly.
    14. Give "trigger_door1" the following outputs:
      My Output Target Entity Target Input Parameter Delay Only Once
      Io11.png OnStartTouch door_left Open <none> 0.00 Yes
      Io11.png OnStartTouch door_right Open <none> 0.00 Yes

    See also