Confiscation Field
This tutorial will show how to create a fully functional confiscation field. A field that will supercharge the Gravity Gun into a much more powerful version of it. If the player also happens to be carrying any other weapons, the field will fizzle them before supercharging the Gravity Gun.
Entity Creation
Step 1
Start off by creating a 512x256x256
room. Keep in mind however, that the room does not have to be this exact size, but the confiscation fields seen in Valve's maps are a similar size to the size of the room that will be created in this tutorial.
Step 2
Create four 128x128
walls on opposite ends of the room. It is recommended that you have them at least 16 units off the ground. Create 4 prop_static entities, and set their World Model to models/props_combine/weaponstripper.mdl
. Place them so that each hole has one of these prop_static's flush inside them. Make sure that the holes are sealed in the back as to prevent leaks.
Step 3
Create 4 env_citadel_energy_core entities and place them at the base of each confiscation field emitter. Give them the following keyvalues.
Property Name | Value |
---|---|
Name | weaponstrip_emitterfx |
Then go to the flag's tab and make sure the Start on
flag is off and the No small particles
flag is on.
Step 4
Create 4 info_target entities and place them in the same place you placed the 4 env_citadel_energy_core's, at the base of each emitter. Give them the following keyvalues.
Property Name | Value |
---|---|
Name | weaponstrip_emitter |
Step 5
Create 4 env_spark entities in exactly the same place as the last two steps. Give them the following keyvalues.
Property Name | Value |
---|---|
Name | weaponstrip_emitterspark |
Max Delay | 2 |
Magnitude | Medium |
Make sure all flags are unticked.
Step 6
Create 7 ambient_generic entities.
Name them as follows.
ambient_weaponstrip_loop
weaponstrip_sound_announce
weaponstrip_sound_charge_start
weaponstrip_sound_dissolve_start
weaponstrip_sound_error
weaponstrip_sound_security
weaponstrip_sound_charge_loop
Step 7
Add the following key values.
ambient_weaponstrip_loop
Property Name | Value |
---|---|
Name | ambient_weaponstrip_loop |
Sound Name | d3_citadel.zapper |
Start Volume | 10 |
Start Pitch | 50 |
On flags, tick Play Everywhere
and Start Silent
and untick Is NOT Looped
.
weaponstrip_sound_announce
Property Name | Value |
---|---|
Name | weaponstrip_sound_announce |
Sound Name | citadel.overwatch_weaponstrip |
On flags, tick all.
weaponstrip_sound_charge_start
Property Name | Value |
---|---|
Name | weaponstrip_sound_charge_start |
Sound Name | d3_citadel.weapon_zapper_start |
On flags, tick Play Everywhere
and Start Silent
and untick Is NOT Looped
.
weaponstrip_sound_dissolve_start
Property Name | Value |
---|---|
Name | weaponstrip_sound_dissolve_start |
Sound Name | d3_citadel.weapon_zapper_charge_node |
On flags, tick Play Everywhere
and Start Silent
and untick Is NOT Looped
.
weaponstrip_sound_error
Property Name | Value |
---|---|
Name | weaponstrip_sound_error |
Sound Name | citadel.overwatch_weaponstrip_fail |
On flags, tick all.
weaponstrip_sound_security
Property Name | Value |
---|---|
Name | weaponstrip_sound_security |
Sound Name | citadel.overwatch_weaponstrip_fail_security |
On flags, tick all.
weaponstrip_sound_charge_loop
Property Name | Value |
---|---|
Name | weaponstrip_sound_charge_loop |
Sound Name | d3_citadel.weapon_zapper_ambient_loop |
On flags, tick Play Everywhere
and Start Silent
and untick Is NOT Looped
.
Step 8
Create 4 light entities. Place them at the emitters 8 units away from the info_target entities. Give them the following key values.
Property Name | Value |
---|---|
Name | weaponstrip_emitterlight |
Brightness | 225 241 255 250 |
Appearance | 33 |
Custom Appearance | mmnmmommommnonmmonqnmmo |
Make sure the flag Initially Dark
is ticked.
Step 9
Create 4 trigger brush entities. Make them the size of the room. Make the first 2 brush entities a trigger_vphysics_motion, make the third one a trigger_weapon_dissolve and make the fourth one a trigger_weapon_strip.
Give them the following keyvalues
trigger_vphysics_motion 1
Property Name | Value |
---|---|
Name | weaponstrip_motion_disable_player |
Start Disabled | Yes |
Filter Name | filter_weapon_strip_player |
Scale gravity of objects in the field. | 2 |
Max velocity in field | 8 |
Max amount to reduce velocity | 0 |
Velocity scale/drag | 0 |
Angular Velocity scale/drag | 0 |
Linear force | 0 |
On flags, make sure only Clients
is ticked.
trigger_vphysics_motion 2
Property Name | Value |
---|---|
Name | weaponstrip_motion_disable |
Start Disabled | Yes |
Filter Name | filter_weapon_strip_weapons |
Scale gravity of objects in the field. | 0.0 |
Additional air density for drag | 0.5 |
Max velocity in field | 2 |
Max amount to reduce velocity | 32 |
On flags, make sure only Physics Objects
and Everything
is ticked.
trigger_weapon_dissolve
Property Name | Value |
---|---|
Name | weapon_dissolve |
Start Disabled | Yes |
Filter Name | filter_weapon_strip_weapons |
Emitter Name | weaponstrip_emitter |
On flags, make sure only Physics Objects
and Everything
is ticked.
trigger_weapon_strip
Property Name | Value |
---|---|
Name | weapon_strip |
Start Disabled | Yes |
On flags, make sure only Clients
is ticked.
Step 10
Create a game_ragdoll_manager and a game_weapon_manager. Give them these keyvalues.
game_ragdoll_manager
Property Name | Value |
---|---|
Max Ragdoll Count | 5 |
game_weapon_manager
Property Name | Value |
---|---|
Weapon Classname | weapon* |
Max Allowed in Level | 4 |
Step 11
Create a filter_activator_name and a filter_activator_class. Give them these keyvalues.
filter_activator_name
Property Name | Value |
---|---|
Name | filter_weapon_strip_player |
Filter Name | !player |
filter_activator_class
Property Name | Value |
---|---|
Name | filter_weapon_strip_weapons |
Filter Classname | weapon_* |
Step 12
Create 8 logic_relay entities. Give them the following keyvalues.
logic_relay 1
Property Name | Value |
---|---|
Name | logic_room0_start_scan |
logic_relay 2
Property Name | Value |
---|---|
Name | logic_room0_end_scan |
logic_relay 3
Property Name | Value |
---|---|
Name | strip_stop |
logic_relay 4
Property Name | Value |
---|---|
Name | logic_weapon_strip_announce |
logic_relay 5
Property Name | Value |
---|---|
Name | logic_weapon_strip_strip |
logic_relay 6
Property Name | Value |
---|---|
Name | logic_weapon_strip_dissolve |
logic_relay 7
Property Name | Value |
---|---|
Name | logic_weapon_strip_physcannon_start |
logic_relay 8
Property Name | Value |
---|---|
Name | logic_weapon_strip_physcannon_end |
I/O Creation
Add the following outputs to the following entities.
weapon_dissolve
logic_room0_start_scan
strip_stop
logic_weapon_strip_announce
logic_weapon_strip_strip
logic_weapon_strip_dissolve
logic_weapon_strip_physcannon_start
logic_weapon_strip_physcannon_end
Once that is set up, to simply start the confiscation field, set up a trigger_once to trigger the logic_room0_start_scan
relay. As a bonus, you can also add Outputs to logic_room0_start_scan
and logic_room0_end_scan
to enable and disable Combine Shield Walls respectively.
See also
External Links
- [1] Example VMF that was made in this tutorial.