Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge in latest changes from HammerAddons #93

Closed
wants to merge 233 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
233 commits
Select commit Hold shift + click to select a range
7cb19f2
Fix stray pixel on S letter
TeamSpen210 Jul 28, 2020
2721bd1
Add logic_player_slowtime icon
TeamSpen210 Jul 28, 2020
3d695ed
Add "boolean" option to comp_scriptvar_setter
TeamSpen210 Aug 2, 2020
084c782
Add render mode options to point_spotlight
TeamSpen210 Aug 4, 2020
144eb0f
Put line helper on the info_lighting
TeamSpen210 Aug 4, 2020
0eaaefe
Added logo, new text
mrrogersgit Aug 29, 2020
aa2e508
Update README.md
mrrogersgit Aug 29, 2020
00005ad
More precisely describe the behavior of areaportals on P2 doors
TeamSpen210 Sep 5, 2020
699994a
Correct a few incorrect types
TeamSpen210 Sep 20, 2020
a8d9f42
Move physics_prop and dynamic_prop to the engine/ folder
TeamSpen210 Sep 20, 2020
cd7264d
Add a few engine entities
TeamSpen210 Sep 22, 2020
8b907b7
Add "Persist TV" option for vactubes
TeamSpen210 Sep 22, 2020
40649e1
Add a direct CBaseEntity definition for engine dumps
TeamSpen210 Oct 3, 2020
7c0d3a6
Update npc_antlionguard with more info from code
TeamSpen210 Oct 3, 2020
0311fd6
All models have a damage filter
TeamSpen210 Oct 3, 2020
adf9f9b
Update point_viewcontrol_multiplayer with some additional options
TeamSpen210 Oct 3, 2020
2296e1f
Add some more base entity keyvalues
TeamSpen210 Oct 3, 2020
50f8a88
Areaportals have a portalnum keyvalue
TeamSpen210 Oct 3, 2020
aa9d960
Fix typo
TeamSpen210 Oct 3, 2020
69b7137
Fix empty entities not having bases
TeamSpen210 Oct 3, 2020
c10e00a
Use an "extension" keyvalue type for this special case
TeamSpen210 Oct 3, 2020
7c2961a
Don't pass activator to the pass outputs in vactubes
TeamSpen210 Oct 12, 2020
b4cbb0c
Add skinset support to comp_precache_model
TeamSpen210 Oct 17, 2020
55cc3fd
Add initial config for comp_prop_rope
TeamSpen210 Nov 4, 2020
a62b985
Add more options, and static prop keyvalues
TeamSpen210 Nov 5, 2020
aa2a950
Do basic node parsing and model compiling
TeamSpen210 Nov 5, 2020
d04985a
Fix configured options being ignored.
TeamSpen210 Nov 12, 2020
1e85fab
Generate basic cylinder for each node
TeamSpen210 Nov 12, 2020
b1375a6
Rename subdivisions -> segments
TeamSpen210 Nov 17, 2020
f30288d
Split Node into NodeEnt for the value passed as the deduplication key
TeamSpen210 Nov 17, 2020
568b451
Implement straight and camull_rom interpolation
TeamSpen210 Nov 17, 2020
ec2a8ef
Compute a smooth orientation for each section of the rope
TeamSpen210 Nov 17, 2020
b4fb44f
Mostly replicate Valve's sim logic for move_rope
TeamSpen210 Nov 17, 2020
edfcf86
Tidy up this code - id() is no longer required
TeamSpen210 Nov 17, 2020
6224e7c
Parse the UV FGD options
TeamSpen210 Nov 18, 2020
20eb708
Split computing the verts and then generating the straight segments, …
TeamSpen210 Nov 18, 2020
2547b37
Split apart nodes with too much angle between them
TeamSpen210 Nov 18, 2020
130174d
Generate endcaps
TeamSpen210 Nov 18, 2020
67831ad
Split up intersections if required
TeamSpen210 Nov 18, 2020
ce93776
Set correct normals for endcaps
TeamSpen210 Nov 18, 2020
641dae7
Improve UV generation
TeamSpen210 Nov 18, 2020
4d7d05c
Make static prop keyvalues apply to the final prop
TeamSpen210 Nov 18, 2020
c2de463
Make it still hashable
TeamSpen210 Nov 18, 2020
9dd607b
Fix most of the rope being invisible
TeamSpen210 Nov 19, 2020
227e3b0
Interpolate rope radius
TeamSpen210 Nov 19, 2020
2dcf81e
Pass along the offset to the cable-build function
TeamSpen210 Nov 22, 2020
e93b345
Skip over nodes with no connections.
TeamSpen210 Nov 22, 2020
a699936
Compute the visleafs each rope touches
TeamSpen210 Nov 22, 2020
0e3bb1c
Fix this incorrect keyvalue
TeamSpen210 Nov 22, 2020
1d1d87b
Make the default radius more reasonable
TeamSpen210 Nov 22, 2020
5e2c8f3
Add visgroup for comp_prop_rope
TeamSpen210 Nov 22, 2020
0489784
Simplify down visgroups list
TeamSpen210 Dec 14, 2020
6385897
Fix thrusters/torque not being visible
TeamSpen210 Dec 14, 2020
286c1e3
Default areaportal windows to no translucency limit
TeamSpen210 Dec 14, 2020
bd308fc
Ignore compiled Python modules in Git
TeamSpen210 Dec 14, 2020
0447338
All physics props can take damage
TeamSpen210 Dec 14, 2020
884b65c
Allow comments in visgroup definitions
TeamSpen210 Dec 14, 2020
a3d22a2
These are floats, not strings.
TeamSpen210 Dec 14, 2020
35b0181
Don't run polyfills in engine mode
TeamSpen210 Dec 21, 2020
6543cef
Annotate info_overlay with correct types for the KVs
TeamSpen210 Dec 21, 2020
76bfcb5
Use the existing base class for these
TeamSpen210 Dec 21, 2020
7f28507
Fix some visgroups
TeamSpen210 Dec 21, 2020
67ede44
Visleafs have been computed
TeamSpen210 Dec 21, 2020
a52c6a1
Opt out some keyvalues that are fine to differ from the base
TeamSpen210 Dec 21, 2020
54f91e1
Fix these incorrect KV types
TeamSpen210 Dec 28, 2020
b1b381d
Opt out generated cables from then being propcombined
TeamSpen210 Dec 28, 2020
419982b
Use Source 2 npc_enemyfinder icon
TeamSpen210 Dec 28, 2020
bc572cc
Fix the default database path being relative to the working directory…
TeamSpen210 Dec 31, 2020
3f2650d
This no longer needs to be inverted
TeamSpen210 Jan 1, 2021
d871dd4
Fix incorrect cable face orientation
TeamSpen210 Jan 1, 2021
4e305a7
Add diagonal curve support to vactubes
TeamSpen210 Jan 6, 2021
3e68da9
Add more modes to scriptvar_setter
TeamSpen210 Jan 7, 2021
c511cda
Add sprites for comp_prop_rope, add comp_prop_cable alternative
TeamSpen210 Jan 9, 2021
360ab9c
Automatically group together ropes that are connected to each other.
TeamSpen210 Jan 15, 2021
47522fc
Transfer over various transforms from srctools
TeamSpen210 Jan 16, 2021
0a7674f
Switch our database to be read as UTF-8
TeamSpen210 Jan 17, 2021
83b5adb
Add generic material for cables
TeamSpen210 Jan 17, 2021
423923b
When building copy over transforms to built version
TeamSpen210 Jan 17, 2021
6fbffa2
Fix #103: Incorrect Space Core skin labels
TeamSpen210 Jan 17, 2021
45e5c40
Transfer over vactube transform code from srctools
TeamSpen210 Feb 7, 2021
0b836e4
Lerp is now in srctools
TeamSpen210 Feb 19, 2021
041232d
#112: Fix invalid default for sky_camera near clip
TeamSpen210 Mar 16, 2021
48b7055
#112: Move redundant func_nav_blocker keyvalues to NavBlocker parent
TeamSpen210 Mar 16, 2021
cdc0f24
#112: Use the correct name for the L4D2 FGD
TeamSpen210 Mar 16, 2021
6d43f18
#112: Fix duplicate models in info_survivor_rescue
TeamSpen210 Mar 16, 2021
5759c70
fix appliesto of playtest_manager
beepster4096 Mar 18, 2021
1d44cef
Merge pull request #113 from DrMeepster/playtest_manager
TeamSpen210 Mar 19, 2021
49d26cc
Add icons for several L4D2 entities
lazyRares Mar 19, 2021
e233843
Fix these invalid model names
TeamSpen210 Mar 19, 2021
d813661
Add "next junction" option to vactubes, for manually specifying the n…
TeamSpen210 Mar 19, 2021
8026edc
SMD module now takes degree angles instead of radians.
TeamSpen210 Mar 19, 2021
dc8b1ca
Remove extra model specifications in prop_minigun/prop_mounted_machin…
TeamSpen210 Mar 19, 2021
df57606
Add support for tagged material exclusions
TeamSpen210 Mar 22, 2021
14e6df4
Fix #108: Add TF2's material exclusion list
TeamSpen210 Mar 22, 2021
d6ab8c6
#115: Fix weapon_ammo_spawn having duplicate prop display
TeamSpen210 Mar 22, 2021
13cbe63
#115: Readd missing L4D glow keys
TeamSpen210 Mar 22, 2021
8283234
Add some other L4D2 glow keyvalues
TeamSpen210 Mar 22, 2021
7bbc3d9
Add additional icons for several L4D2 entities
lazyRares Mar 25, 2021
84b6401
Don't include non-matching material exclusions
TeamSpen210 Mar 25, 2021
a795341
Add copy of Crowbar modified to decompile via command line
TeamSpen210 Mar 25, 2021
d0b07b6
Merge pull request #101 from mrrogersgit/Improve-Readme
TeamSpen210 Mar 25, 2021
bd809b3
Fix this target keyvalue
TeamSpen210 Mar 26, 2021
0e5e8e5
Add back missing angles KVs on buttons/doors
TeamSpen210 Mar 26, 2021
c449075
Recompile editor models using HL2's studiomdl
TeamSpen210 Mar 26, 2021
dd85b1a
Fix #27: Add an editor model for env_dustpuff
TeamSpen210 Mar 26, 2021
bbffffa
Fix #73: Mismatched textures on sky_camera
TeamSpen210 Mar 26, 2021
e0196d4
Merge pull request #120 from TeamSpen210/dev
TeamSpen210 Mar 26, 2021
f22128b
Add ability to place dynamic versions of prop ropes
TeamSpen210 Mar 27, 2021
1f98b21
Add ability for prop ropes to generate a collision mesh as well
TeamSpen210 Mar 28, 2021
243b384
Add editor models for dynamic prop ropes
TeamSpen210 Mar 30, 2021
8e78ca7
Disable prop_rope if studiomdl cannot be found
TeamSpen210 Mar 31, 2021
68a4321
Rewrite RenderFX options to match actual engine support
TeamSpen210 Apr 2, 2021
7a8b28a
Merge remote-tracking branch 'origin/dev' into dev
TeamSpen210 Apr 2, 2021
e4b547e
Fix parsing of visgroups
Apr 5, 2021
fe67663
Merge pull request #124 from braem/fix/visgroup-gen
TeamSpen210 Apr 5, 2021
481c61d
Make skinset keyvalue description a bit more clear
TeamSpen210 Apr 8, 2021
8a019dc
Merge branch 'dev' of [email protected]:TeamSpen210/HammerAddons.git
TeamSpen210 Apr 8, 2021
c7e45ed
Switch these VTFs to the earlier 7.2 version
TeamSpen210 Apr 5, 2021
c732b85
Add 'keyvalue' option for comp_scriptvar_setter
TeamSpen210 Apr 8, 2021
62b8102
Rename some fgds
treacherousfiend Apr 18, 2021
c44e592
Dont base light_environment on BaseLight
Apr 19, 2021
3078dbe
Merge pull request #129 from treacherousfiend/patch-1
TeamSpen210 Apr 19, 2021
0743047
Merge pull request #130 from braem/fix/lightenv
TeamSpen210 Apr 19, 2021
cb4be3c
#130: Add back appearance and inputs to light_environment
TeamSpen210 Apr 19, 2021
391737e
Add the alternate classname for static props
TeamSpen210 Apr 20, 2021
fc5c1ad
Improve rope slack computation with many segments
TeamSpen210 Apr 21, 2021
ee8b540
Fix geo hole in dustpuff model
TeamSpen210 Apr 21, 2021
9367149
+ menu to build script
Apr 21, 2021
cea908b
+ linux build script
Apr 21, 2021
ac8bd28
+ scripts to install srctools
Apr 21, 2021
1132f09
+ github build & copy action
Apr 21, 2021
8d70896
Merge pull request #132 from braem/feat/gh-action
TeamSpen210 Apr 24, 2021
9097cdf
func_portal_orientation corrections, and note how to fix it in P2
Apr 27, 2021
2f1caf1
Make info_player_deathmatch available in more games
Apr 27, 2021
72f1356
Add Hover Turret FGDs
Apr 27, 2021
b0ed612
Fix #89: Duplicated model helpers on some entities
Apr 29, 2021
dccba7a
Fix incorrect info_player_deathmatch model path
Apr 29, 2021
0c22f17
Hover turrets have a field of view
Apr 29, 2021
8f6d90c
Make energy ball prop entities engine-only
Apr 29, 2021
16d4fcb
Flag point_teleport's model keyvalue as non-engine
Apr 29, 2021
fa43954
Clean up vehicle FGDs
Apr 30, 2021
dc5b4c2
Clean up jeep FGD
Apr 30, 2021
0ed0222
Sorta fix #98
Apr 30, 2021
4b4f11e
Move energy ball entities to engine folder
Apr 30, 2021
169c4ea
Move generic_actor out of a folder
Apr 30, 2021
8bd4c11
Actually fix prop_portal_stats_display's doubled rotation
Apr 30, 2021
4639021
Refer to players as "they" in keyvalue descriptions
May 6, 2021
5f51340
Helicopters are genderless inanimate objects
May 6, 2021
cdb4741
Better info_paint_sprayer defaults
May 9, 2021
fe3fcfb
Add a unique decal helper model
May 9, 2021
d436d85
Include and use a copy of the cube overlay helper
May 9, 2021
01e5156
More frustum helper fixes
May 10, 2021
db7499d
Clean up info_player_ping_detector sprite a bit
May 12, 2021
00440f4
Remove func_instance_origin
May 12, 2021
be8c01e
Remove the instancing tag
May 12, 2021
af33027
Change env_portal_laser "start off" to "start disabled"
May 14, 2021
7911d11
Better document what Terminal Point does
May 14, 2021
cea5f8c
Use python 3.9 for workflow builds
braem May 20, 2021
7ded2ca
Merge pull request #134 from braem/fix/act-py-ver
TeamSpen210 May 21, 2021
b76fd5f
npc_clawscanner is in HL2, and switch to studioprop
May 28, 2021
7fbaedc
Add hammer model keyvalue to npc_cscanner and add mine inputs
May 28, 2021
4493a16
Add Portal 2 Sixense tag
May 30, 2021
366dff5
Add Sixense ents
May 30, 2021
3329c7c
Start as an Box
May 31, 2021
dc692dd
Default monster boxes to allowing SilentDissolve
May 31, 2021
fe17164
More his/him swaps
May 31, 2021
f462d7e
Fix #94: env_steam editor preview
Jun 1, 2021
18f4d38
Fix #88: Point_bonusmap_accessor sprite
Jun 1, 2021
fc85d44
Revert pronoun changes for Infra global states
Jun 2, 2021
cd80904
Merge pull request #136 from Luke18033/unified-fgd-changes-3
TeamSpen210 Jun 3, 2021
264f399
Fix typo
TeamSpen210 Jun 10, 2021
4388d08
Add propcombine tool texture
TeamSpen210 Jun 17, 2021
479d2ee
Add comp_propcombine_volume
TeamSpen210 Jun 17, 2021
73f66e2
Update geocable code for changes in bsp module
TeamSpen210 Jun 18, 2021
3570c3f
Don't reference the 3D view in the hammer_notes keyvalues if not in CSGO
TeamSpen210 Jun 18, 2021
2c44e16
fixed grammar error and removed the first step
darvil82 Jun 26, 2021
87f6d6f
added all postcompiler entities
darvil82 Jun 26, 2021
0455c4a
removed vactube guide (added to wiki)
darvil82 Jun 27, 2021
214f522
Update README.md
darvil82 Jun 27, 2021
72770ef
Merge pull request #140 from DarviL82/master
TeamSpen210 Jun 27, 2021
1d5167e
Merge branch 'propcombine_brush' into dev
TeamSpen210 Jun 30, 2021
7aaac93
Switch this to use Angle class
TeamSpen210 Jun 30, 2021
c610038
Fix tabs used in indents
TeamSpen210 Jun 30, 2021
eaaa465
Correctly display the actual total of vactube objects
TeamSpen210 Jul 5, 2021
859d068
Update comp_trigger_p2_goo for BSP module changes
TeamSpen210 Jul 6, 2021
cedbf5d
Add engine definitions for these sixense ents
TeamSpen210 Jul 6, 2021
6d13d50
Don't include target keyvalue in CBaseEntity - we can't know how to t…
TeamSpen210 Jul 6, 2021
47eadb4
Fix some spacing
TeamSpen210 Jul 8, 2021
6dc6ba4
This is not required, the compiler build process copies these.
TeamSpen210 Jul 8, 2021
e7e0f1f
Tweak build script to generate the correct FGD filenames
TeamSpen210 Jul 8, 2021
394a22a
Add propcombine volumes to the tool brushes visgroup
TeamSpen210 Jul 18, 2021
be808e5
Ensure kv_setters run before comp_relay
TeamSpen210 Jul 18, 2021
26ced28
Make propcombine use version 7.2
TeamSpen210 Jul 18, 2021
e19f246
Fix #141: Set env_projectedtexture to enable Light World by default
TeamSpen210 Jul 30, 2021
250751b
Convert geocable classes to uses attrs
TeamSpen210 Aug 3, 2021
c406f30
Update to parsedlump syntax for props
TeamSpen210 Aug 3, 2021
c5aa434
Add 'bunting' support to prop ropes, allowing placing models along th…
TeamSpen210 Aug 3, 2021
7ac459c
We no longer need to context manage the filesystem object.
TeamSpen210 Aug 3, 2021
2cde8b1
Update portal_race_checkpoint entity with some additional info
TeamSpen210 Aug 3, 2021
8d8a170
Add support for having bunting skip segments, and pitch+yaw orient mode
TeamSpen210 Aug 4, 2021
c13da2a
Add FGD for comp_vactube_spline
TeamSpen210 Aug 4, 2021
04524c0
Parse comp_vactube_spline and produce a preset configurations
TeamSpen210 Aug 4, 2021
82bddcd
Fix FGD syntax
TeamSpen210 Aug 4, 2021
1c86785
Mark vactubes, no longer generate caps for them
TeamSpen210 Aug 4, 2021
e9a33a4
Switch this to an iterator
TeamSpen210 Aug 4, 2021
d3764c8
Begin generating vactube beams, first side
TeamSpen210 Aug 4, 2021
428317b
Flip orientation
TeamSpen210 Aug 5, 2021
5f2452f
Generate vactube outer side
TeamSpen210 Aug 5, 2021
dbb5a07
Generate other vactube side
TeamSpen210 Aug 5, 2021
caf2f9a
Generate last beam side
TeamSpen210 Aug 5, 2021
fe3a718
Generate expanded collisions for vactubes
TeamSpen210 Aug 5, 2021
0d72325
Set $mostlyopaque on vactubes
TeamSpen210 Aug 5, 2021
90557a6
Allow generated vactubes to animate.
TeamSpen210 Aug 5, 2021
2d2153f
Fix cached rope models never matching to new compiles
TeamSpen210 Aug 5, 2021
a9fb92b
Implement ability to disable vactube collisions
TeamSpen210 Aug 5, 2021
04dab3b
Add source file for vactube rings
TeamSpen210 Aug 5, 2021
cd36079
Merge together these three comprehensions
TeamSpen210 Aug 6, 2021
b02a682
Add some helper functions to reduce the redundancy here.
TeamSpen210 Aug 6, 2021
9ddf5f5
We don't need to convert these to Vecs ourselves.
TeamSpen210 Aug 6, 2021
639927a
Reorder beams so that the repeated one is on different sides.
TeamSpen210 Aug 6, 2021
4f5d67a
Place vactube rings a specific distance apart.
TeamSpen210 Aug 6, 2021
15863cf
Fix #125: Add ability to set a rotation seed for vactubes
TeamSpen210 Aug 6, 2021
03494ea
Switch these to proper annotations
TeamSpen210 Aug 6, 2021
003bd60
Add spline vactubes to their visgroup
TeamSpen210 Aug 6, 2021
7f0ff42
Fix whitespace
TeamSpen210 Aug 6, 2021
eca149a
Merge branch 'master' into dev
TeamSpen210 Aug 6, 2021
f5727d1
Update readme with new entity info
TeamSpen210 Aug 6, 2021
a13d129
Version 2.4.0
TeamSpen210 Aug 6, 2021
e805bbd
Merge remote-tracking branch 'upstream/master' into feat/merge-upstream
Oct 8, 2021
b8bab1e
fix: prop_energy_ball missing SetTime input
Oct 8, 2021
809b51d
fix: Clean up references to some removed base classes
Oct 8, 2021
be7db13
chore: Cleanup P2 Sixense ents
Oct 8, 2021
e076872
chore: Clean up some other game-specific stuff
Oct 8, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,4 @@ hammer/gameinfo.txt
src/

# Caches
__pycache__
__pycache__
102 changes: 56 additions & 46 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,58 +1,68 @@
|---------------------------|
| TeamSpen's Hammer Addons |
|---------------------------|

# Features

* Auto-packing - filtered based on search paths in gameinfo, and based on a FGD database + `comp_pack` entities.
* Static prop combining - merges together adjacent props to allow them to be efficently drawn in batches.
* A unified FGD database allowing keyvalues to be shared among games, and accurately defining when features were added and removed.
* Many many upgrades to entity options and layouts.
* New sprites for almost all entities, both custom made and from a number of sources:
* [The TF2 Ultimate Mapping Resource Pack][tf2]
* [ZPS: Supplemental Hammer Icons][zps]
* [ts2do's HL FGDs][ts2do]
<div align="center">
<img src="logo/icon_256.png" alt="Hammer Addons" height="200" />
<br>
<br>
<p> <b>Teamspen's Hammer Addons </b></p>
</div>

<hr>

## Features

* Auto-packing - Automatically packs non-stock game files into the bsp. Filtered based on search paths in the included custom gameinfo and FGD database. Assets can also be packed manually with `comp_pack` entities.
* Static prop combining - merges together adjacent props to allow them to be efficently drawn in batches. To use, decompile props and configure the folder & studioMDL's path then place `comp_propcombine_set` entities.
* A [unified FGD database][unifiedfgd], allowing keyvalues to be shared among games, and accurately defining when features were added and removed.
* Many more entity options, and an improved editor layout.
* New sprites for almost all entities, both custom made and from a number of [other sources](#development).
* Adds lots more AutoVisgroups for easily hiding entities.
* Several `comp_` entities with additional features. These are mainly intended for use in instances, allowing modifying entities outside of the instance to conform or doing normally impossible things like positioning things in the void.
To use, decompile props and configure the folder & studioMDL's path then place `comp_propcombine_set` entities.
* For games supporing VScript:
* Improvements for games supporting VScript:
* In any `RunScriptCode` input, backticks can be used for string literals, instead of the disallowed `"` character.
* In addition to the normal `Entity Scripts` section, a new `Init Code` field can be used to write code that's packed and added to those scripts. Useful for setting configuration options etc. Backticks can be used here too.
* New `comp_` entities. These are mainly intended for use in instances, allowing modifying entities outside of the instance to conform or doing normally impossible things like positioning things in the void:

# Installation

* Download the release from the [releases tab][releases].
* Use the provided FGD instead of the vanilla one. (Issues/PRs welcome for any entity improvements.)
* Add the `hammer/` folder to gameinfo.txt, to provide sprites for the compiler.
* Add the postcompiler to the compile commands:
1. Create a new command after VBSP, using the "Executable" type and
choosing the postcompiler EXE.
2. In the parameters, enter `--propcombine $path/$file`.
* Compile a map once, which should produce the config file `Game Folder/srctools.vdf` (this can be placed in any parent folder of the VMF).
* Configure the file as desired, then compile your maps to apply the changes.
* If using BEEMOD2.4, change Hammer -> Options -> Build Programs to use `vrad_original.exe`.
| Entity | Description |
|----------------------------------------------------|-------------|
| `comp_choreo_sceneset` | Chains a set of choreographed scenes together. |
| `comp_entity_finder` | Finds the closest entity of a given type, then applies various transformations. Outputs from this entity will be moved to the found entity. Further keyvalues can be set manually with SmartEdit off. |
| `comp_entity_mover` | Shift an entity by a given amount. This is useful to place entities into the void, for example. |
| `comp_kv_setter` | Sets a keyvalue on an entity to a new value. This is useful to compute spawnflags, or to adjust keyvalues when the target entity's options can't be set to a fixup variable. |
| `comp_numeric_transtition` | When triggered, animates a keyvalue/input over time with various options. |
| `comp_pack` | Explicitly identify resources to pack into the map. If more are needed, add additional keyvalues with SmartEdit off. |
| `comp_pack_rename` | Pack a file into the BSP, under a different name than it starts with. |
| `comp_pack_replace_soundscript` | Replace a soundscript with a different one. |
| `comp_precache_model` | Force a specific model to load, for runtime switching. Duplicates will be removed. |
| `comp_precache_sound` | Force a specific sound to load, for runtime switching. Duplicates will be removed. More keyvalues can be added. |
| `comp_prop_cable`/`comp_prop_rope` | Generates 3D cables using a static prop. |
| `comp_prop_cable_dynamic`/`comp_prop_rope_dynamic` | Modifies the above to generate a dynamic prop, instead. |
| `comp_propcombine_set`/`comp_propcombine_volume` | Specifies a group of props that will be combined together, so they more efficiently render. |
| `comp_relay` | Simplified version of `logic_relay` which is able to be optimised away by the compiler. The various inputs and outputs are useful for bundling commands together, or using more appopriate verbs. Inputs only work if given directly from entities (or via instance redirection), not in-game or dynamically. All inputs/outputs may pass through any parameter, if no override is specified. |
| `comp_scriptvar_setter` | Assigns data or a group of data to a variable in an entity's VScript scope on spawn. To set an array, provide an index in the variable name in the form `varname[4]`. All the comp_scriptvars pointing to that variable will be collected into a single array literal, with holes filled by *null*. If the brackets are empty, these values will fill those holes and then append to the end in an arbitrary order. |
| `comp_vactube_end` | Marks the end point of a vactube. Objects reaching here will be cleaned up. |
| `comp_vactube_junction` | Marks a junction in a vactube, where they're forced to change direction. Scanner models near straight nodes will be detected automatically. |
| `comp_vactube_spline` | Generates a dynamic vactube model following a set of points. |
| `comp_vactube_object` | Registers objects that can appear in the tubing. |
| `comp_vactube_start` | Marks the start point of a vactube. This is where they spawn. |

[releases]: https://github.com/TeamSpen210/HammerAddons/releases
[skotty]: http://forums.thinking.withportals.com/downloads.php?view=detail&df_id=507
[tf2]: http://forums.tf2maps.net/showthread.php?t=4674
[ts2do]: http://halflife2.filefront.com/file/HalfLife_2_Upgraded_Base_FGDs;48139
[zps]: http://www.necrotalesgames.com/tools/index.php

## Installation

## Vactubes (Portal 2 only)
* Follow [this guide][installationwiki].
* If using BEEMOD2.4, change Hammer -> Options -> Build Programs to use `vrad_original.exe`.

This implements a dynamic vactube system in a similar way to Valve's system, including randomised objects, complex junctions and dropper support.

* To use, place and configure `comp_vactube_object` entities to specify which items can appear in tubes.
* To build paths a comp_vactube_start entity at the beginning of the track, and a `comp_vactube_end` at the end.
* Then at each corner/junction place a `comp_vactube_junction` ent, picking the appropriate type. These all need to be rotated appropriately so the arrows point in the correct direction to be matched up by the compiler.
* To split a path into multiple tubes, you'll need to use one of the "splitter" junction types.
* To join multiple back into a single pipe, simply overlap two junctions such that their outputs both point down the same route.
* For droppers, simply place the supplied `instances/cubedropper/dropper_vactube.vmf` instance, and run a path up to the vactube end entity in the top. Place a `prop_weighted_cube` inside the dropper to specify which cube type it will spawn. The specific route leading to the dropper will be detected and only replacement cubes will be sent this way. You'll want to add a splitter just before the dropper, so the tube can have decorative items flowing through it constantly.
* To place the vactube scanner TVs, simply add a "straight"-type junction inside the model, then place the `prop_dynamic`s for the screen and optionally the spinner. The screen will need the supplied `_new` model, so both orientations have all the skins. They will automatically be detected and flash on when objects pass.
* To avoid visual collisions, you may want to turn off the automatic spawning on one or more spawn points, then use the outputs on a junction to manually spawn objects in sync with another path.

## Development

# Development
* Mapbase's FGDs have been imported as a submodule.
* Some entity sprites are taken from:
* [The TF2 Ultimate Mapping Resource Pack][tf2]
* [ZPS: Supplemental Hammer Icons][zps]
* [ts2do's HL FGDs][ts2do]

* Mapbase's FGDs have been imported as a submodule, to track which version has been merged into this repo.
[releases]: https://github.com/TeamSpen210/HammerAddons/releases
[installationwiki]: https://github.com/TeamSpen210/HammerAddons/wiki/Installation
[unifiedfgd]: https://github.com/TeamSpen210/HammerAddons/wiki/Unified-FGD
[skotty]: http://forums.thinking.withportals.com/downloads.php?view=detail&df_id=507
[tf2]: http://forums.tf2maps.net/showthread.php?t=4674
[ts2do]: http://halflife2.filefront.com/file/HalfLife_2_Upgraded_Base_FGDs;48139
[zps]: http://www.necrotalesgames.com/tools/index.php
Empty file modified build.sh
100755 → 100644
Empty file.
Binary file added crowbar_command/Crowbar.exe
Binary file not shown.
Binary file added crowbar_command/FluentCommandLineParser.dll
Binary file not shown.
2 changes: 2 additions & 0 deletions crowbar_command/Readme.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
This is a modified version of Crowbar, with command line argument support.
See <https://github.com/TeamSpen210/Crowbar/tree/command_line> for the source code.
13 changes: 9 additions & 4 deletions fgd/base_entity.fgd
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,18 @@
[
classname(string) : "Classname" : : "The class of the entity, and is changed."
origin(origin) : "Position" : "0 0 0"
angles(angle) : "Pitch Yaw Roll (X Y Z)" : "0 0 0"
angles(angle) : "Pitch Yaw Roll (X Y Z)" : "0 0 0"

targetname(target_source) : "Name"
hammerid(integer) : "Hammer ID"
target(target_destination) : "Target"
// Defined here, but don't include - it's treated as
// many different types.
// target(target_destination) : "Target"
spawnflags(flags) = []


vscripts[VSCRIPT](scriptlist) : "Entity Scripts"
thinkfunction[VSCRIPT](string) : "Script think function"
vscripts(scriptlist) : "Entity Scripts"
thinkfunction(string) : "Script think function"
nextthink(integer) : "Next Think"

globalname(string) : "Global Entity Name"
Expand Down Expand Up @@ -155,6 +157,9 @@
input FireRandomUser(void) : "Fires OnUser1, OnUser2, OnUser3, or OnUser4 with a 25% chance of each."
input PassRandomUser(string) : "Fires OutUser1, OutUser2, OutUser3, or OutUser4 with a 25% chance of each. The parameter is passed along unchanged."

input KillIfNotVisible(void) : "Removes this entity if it is not in a player's viewcone."
input KillWhenNotVisible(void) : "Removes this entity when it is not in a player's viewcone. You can pass a time for when this should start."

input FireOutput(string) : "Fires the named output on this entity. Format: '<output name>:<activator>:<caller>:<parameter>:<delay>' (OnDeath:hl3cardgame:gaben). Everything beyond the output name is optional."
input RemoveOutput(string) : "Removes all instances of the named output on this entity. Wildcards are supported, meaning you could just pass '*' to wipe all outputs from this entity."
input AcceptInput(string) : "Fires the named input on this entity. Format: '<input name>:<parameter>:<activator>:<caller>:<output ID>' (SetTarget:cheese). Everything beyond the input name is optional. Mind the fact this is arranged differently from FireOutput, having the parameter right after the input name."
Expand Down
10 changes: 5 additions & 5 deletions fgd/bases/BMBaseHelicopter.fgd
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,19 @@
input MoveSpecifiedSpeed(float): "The helicopter will immediately move at the specified speed (you provide this as parameter override in units per second) towards its current goal."
input ChangePathCorner(target_destination) : "Tell the helicopter to move to a path corner on a new path."
input Activate(void) : "Activate. Use to wake up a helicopter that spawned with the 'Await Input' spawnflag on."
input SetTrack(target_destination) : "Set a track for the helicopter to adhere to. The helicopter will do nothing if he's on the same path, and will move to the closest point on the specified track if he's on a different path."
input FlyToSpecificTrackViaPath(target_destination) : "The helicopter will first fly to the closest point on the path if he's on a different path. Then he'll fly along the path to the specified track point."
input SetTrack(target_destination) : "Set a track for the helicopter to adhere to. The helicopter will do nothing if it's on the same path, and will move to the closest point on the specified track if it's on a different path."
input FlyToSpecificTrackViaPath(target_destination) : "The helicopter will first fly to the closest point on the path if it's on a different path. Then it'll fly along the path to the specified track point."
input SelfDestruct(void) : "Self Destruct."
input EnableRotorWash(void) : "Enable Rotor Wash."
input DisableRotorWash(void) : "Disable Rotor Wash."
input EnableRotorSound(void) : "Enable Rotor Wash Sound."
input DisableRotorSound(void) : "Disable Rotor Wash Sound."
input StartPatrol(void) : "Start patrolling back and forth along the current track."
input StopPatrol(void) : "Stop patrolling back and forth along the track. This will cause the helicopter to come to rest at the track which he's currently flying toward."
input StopPatrol(void) : "Stop patrolling back and forth along the track. This will cause the helicopter to come to rest at the track which it's currently flying toward."
input ChooseFarthestPathPoint(void) : "When tracking an enemy, choose the point on the path furthest from the enemy, but still in firing range."
input ChooseNearestPathPoint(void) : "When tracking an enemy, choose the point on the path nearest from the enemy."
input StartBreakableMovement(void) : "The helicopter is now allowed to disobey direct commands to go to particular points if he senses an enemy. He will move to the closest point (or farthest point, if ChooseFarthestPathPoint is used), on the path if he senses an enemy."
input StopBreakableMovement(void) : "The helicopter can not disobey direct commands. He will continue to fly along his patrol path or to his specified target even if he senses an enemy."
input StartBreakableMovement(void) : "The helicopter is now allowed to disobey direct commands to go to particular points if it senses an enemy. It will move to the closest point (or farthest point, if ChooseFarthestPathPoint is used), on the path if it senses an enemy."
input StopBreakableMovement(void) : "The helicopter can not disobey direct commands. It will continue to fly along its patrol path or to its specified target even if it senses an enemy."

input SetHealth(integer) : "Set Chopper HP"

Expand Down
9 changes: 6 additions & 3 deletions fgd/bases/BaseDriveableVehicle.fgd
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,14 @@
appliesto(+USE_VEHICLES)
= BaseDriveableVehicle
[
vehiclelocked(boolean) : "Start locked" : 0
vehiclelocked(boolean) : "Start locked" : 0 : "Whether to start the vehicle locked. A locked vehicle cannot be entered or exited."

// Inputs
input HandBrakeOn(void) : "Turns the handbrake on"
input HandBrakeOff(void) : "Releases the handbrake"
input TurnOn(void) : "Turn on: Start engine & enable throttle"
input TurnOff(void) : "Turn off: Stop engine, disable throttle, engage brakes."
input Lock(void) : "Prevent the player from entering or exiting the vehicle."
input Unlock(void) : "Re-allow the player to enter or exit the vehicle."
// EnableGun is part of CPropVehicleDrivable, but it only has an effect on specific vehicles so it's not included here.

// Outputs
output PlayerOn(void) : "Player entered the vehicle"
Expand Down
10 changes: 5 additions & 5 deletions fgd/bases/BaseHelicopter.fgd
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ line(255 255 255, targetname, target) = BaseHelicopter
input ChangePathCorner(target_destination) : "Tell the helicopter to move to a path corner on a new path."
input SelfDestruct(void) : "Self Destruct."
input Activate(void) : "Activate. Use to wake up a helicopter that spawned with the 'Await Input' spawnflag on."
input SetTrack(target_destination) : "Set a track for the helicopter to adhere to. The helicopter will do nothing if he's on the same path, and will move to the closest point on the specified track if he's on a different path."
input FlyToSpecificTrackViaPath(target_destination) : "The helicopter will first fly to the closest point on the path if he's on a different path. Then he'll fly along the path to the specified track point."
input SetTrack(target_destination) : "Set a track for the helicopter to adhere to. The helicopter will do nothing if it's on the same path, and will move to the closest point on the specified track if it's on a different path."
input FlyToSpecificTrackViaPath(target_destination) : "The helicopter will first fly to the closest point on the path if it's on a different path. Then it'll fly along the path to the specified track point."
input StartPatrol(void) : "Start patrolling back and forth along the current track."
input StopPatrol(void) : "Stop patrolling back and forth along the track. This will cause the helicopter to come to rest at the track which he's currently flying toward."
input StopPatrol(void) : "Stop patrolling back and forth along the track. This will cause the helicopter to come to rest at the track which it's currently flying toward."
input ChooseFarthestPathPoint(void) : "When tracking an enemy, choose the point on the path furthest from the enemy, but still in firing range."
input ChooseNearestPathPoint(void) : "When tracking an enemy, choose the point on the path nearest from the enemy."
input StartBreakableMovement(void) : "The helicopter is now allowed to disobey direct commands to go to particular points if he senses an enemy. He will move to the closest point (or farthest point, if ChooseFarthestPathPoint is used), on the path if he senses an enemy."
input StopBreakableMovement(void) : "The helicopter can not disobey direct commands. He will continue to fly along his patrol path or to his specified target even if he senses an enemy."
input StartBreakableMovement(void) : "The helicopter is now allowed to disobey direct commands to go to particular points if it senses an enemy. It will move to the closest point (or farthest point, if ChooseFarthestPathPoint is used), on the path if it senses an enemy."
input StopBreakableMovement(void) : "The helicopter can not disobey direct commands. It will continue to fly along its patrol path or to its specified target even if it senses an enemy."
]
Loading