Stripper:Source

Stripper:Source is a source addon that can be used to make entity-based changes to any map.

Official website: bailopan.net/stripper

It applies in changes on loading a map. The changes are read in from configuration files (.cfg) from a (cvar-adjustable) base directory. It is possible to remove (filter), add or modify the properties of existing entities.

Installation consideration(s)
Only version 1.2.2.hg48 offers changing the stripper base-directory, which is required to run multiple stripper configs per map on a single server. This is the version that's included in the Metafogl distribution. (Oddly enough, this functionality is not present in hg49.)

Tools: Code Generator/Manipulator: http://www.tabun.nl/tools/exploit_manip/ - Source 'Compiler': http://tabun.nl/tools/strippervalidator/

Useful console commands
The following commands/cvars are useful for building configs:

setpos   sends you to a position.

cl_showpos 1  displays player's current position and angles in top left corner.

ent_info   displays information about a kind of entity.

The other commands that you use to cheat on your wimpy localhost/admin stomping binges will help, too, of course.

Useful entities
The following entities are very useful:

env_player_blocker  Invisible square block that pushes players away on contact.

env_physics_blocker  Invisible square block that works like a solid brush. It can also block all physics by settings its BlockType to 4.

prop_physics_override  For most purposes identical to a normal prop_physics, but the _override version can be succesfully added by Stripper. The entity also has some special properties that may be useful for complex map logic constructs.

prop_static_override  For most purposes identical to a normal prop_physics, but the _override version can be succesfully added by Stripper. The entity also has some special properties that may be useful for complex map logic constructs.

Limitations and quirks

 * Stripper can only be used to make changes to map entities. Brushes, nav-meshes or any other part of the environment cannot be affected.
 * Though it is possible to remove or alter prop_static or prop_physics entities, it is not possible to add fresh ones to a map. Only prop_dynamic prop entities can be added. See the useful entities list above for a work-around.
 * Some entities seem to resist changes. In particular, the map logic and moving parts of some of the L4D ported campaigns cannot be succesfully altered (f.i. DT2's floodgates).
 * Blood harvest's config files must start with a capital C (the rest must be lowercase), or they won't load in at all times. All other configs must be entirely in lowercase.
 * It is possible to rotate env_player_blocker and env_physics_blocker entities with the angles property, but this comes with a quirk. You will need to add boxmins and boxmaxs properties if you want to do this though, otherwise the entity will not spawn (and may even generate errors in-game); the values for these properties need to be the same as for mins and maxs, respectively. Note that for some unknown reason, env_player_blocker does not rotate the same way that env_physics_blocker does (add detailed description here).

Tips and tricks

 * Stripper syntaxis is not forgiving: you have to place each statement's opening and closing brackets ({,}) on their own lines. You cannot use unedited content from unedited stripper_dump output files for this reason. In addition, often one bracketing error results in the rest of the config being ignored.
 * Using the Prop Spawner sourcemod plugin makes it much easier to find good positions/angles for adding props.
 * Running the stripper_dump command will write a dump with all the entities in the current map (including the changes made by currently loaded stripper configs). Dumps will tell you pretty much all you need to know about any special event's logic.
 * The angles property's parameters are  (note the odd order). The rotation logic is as follows: if you're looking along an axis in its positive direction, rotating clockwise means a positive value for that axis' param. Keep in mind that, where the player's own angles (as shown with cl_showpos 1 or getpos) are concerned, turning right means a negative X-rotation.