-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathSEHL_base.fgd
7449 lines (7351 loc) · 540 KB
/
SEHL_base.fgd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
//This FGD file is a base for entity info that's common between all Half-Life 2 games. To install this FGD:
//1. See the installation instructions for SEHL_HL2.fgd, SEHL_EP2.fgd, or SEHL_DM.fgd depending on the games you want to install the FGDs for.
//2. Put this file in the same folder you put the other FGD in.
//3. Open Half-Life 2/hl2/gameinfo.txt or Half-Life 2 Deathmatch/hl2/gameinfo.txt and add these two lines (without the comment syntax)
// GameData "SEHL_base.fgd"
// InstancePath "maps/instances/"
//Submit queries here: https://github.com/Pinsplash/SEFGD Even if you just have a question, it may help me improve this FGD.
//Wanna help me out? Search "TODO:" in this file.
//Derivatives are allowed to be made and distributed.
@mapsize(-16384, 16384)
@MaterialExclusion //Texture folders to not load. You can remove everything from this list if you want, but you probably won't ever use these, they'll make more clutter in Hammer's texture browser, and you'll probably be better off making your own brush/sprite/whatever-friendly versions of them anyway.
[
"console" //backgrounds
"debug" //debug stuff?
// "detail" //detail sprites. doesn't seem to break anything if excluded but I can see it happening
// "editor" //can't exclude editor because editor/wireframe is needed by Hammer itself
// "effects" //the combine shield walls are in this folder, don't want to exclude
"engine"
"halflife" //HL1 textures, you basically would never care for them but they are used in the intro sequence with gman
"hlmv"
"hud"
"matsys_regressiontest" //meow
// "particle" //not excluded since some entity defaults use textures in here
"perftest" //does have some usable textures but mostly junk
"scripted"
"shadertest"
"skybox" //skies. trust me, it's easier to view them on VDC
// "vgui" //vgui_slideshow_display uses this folder
"voice"
"vr"
]
//NPC group is automatically made by hammer, don't need one here!
@AutoVisGroup = "Custom" //Custom visgroups under the auto tab
[
"AI"// color(247 89 93)
[
"ai_ally_manager"
"ai_battle_line"
"ai_citizen_response_system"
"ai_goal_assault"
"ai_goal_operator"
"ai_goal_standoff"
"ai_relationship"
"ai_sound"
"ai_speechfilter"
"assault_assaultpoint"
"assault_rallypoint"
"info_apc_missile_hint"
"info_darknessmode_lightsource"
"info_node_link"
"info_node_link_controller"
"info_snipertarget"
"info_target_gunshipcrash"
"info_target_helicopter_crash"
"logic_navigation"
"npc_bullseye"
"npc_heli_avoidbox"
"npc_heli_avoidsphere"
"npc_heli_nobomb"
"point_antlion_repellant"
]
"Gameplay"//entities used for gameplay things, so entities for things like health chargers, thumpers, saves, big ammo crates - color(0 255 0)
[
"func_combine_ball_spawner"
"func_healthcharger"
"func_recharge"
"game_end"
"game_player_equip"
"game_score"
"info_target_vehicle_transition"
"item_ammo_crate"
"item_healthcharger"
"item_item_crate"
"item_suitcharger"
"logic_active_autosave"
"logic_autosave"
"player_loadsaved"
"point_combine_ball_launcher"
"prop_physics_respawnable"
"prop_thumper"
"trigger_autosave"
"trigger_hurt"
"trigger_waterydeath"
]
"Interactive things"
[
"func_breakable"
"func_breakable_surf"
"func_button"
"func_door"
"func_door_rotating"
"func_fish_pool"
"func_guntarget"
"func_rot_button"
"func_tracktrain"
"func_weight_button"
"momentary_rot_button"
"prop_door_rotating"
]
"Lighting & Light FX"// color(160 240 37)
[
"env_lightglow"
"env_particlelight"
"env_projectedtexture"
"env_tonemap_controller"
"info_lighting"
"info_no_dynamic_shadow"
"light"
"light_dynamic"
"light_environment"
"light_spot"
"point_spotlight"
"shadow_control"
]
"Logic"// color(248 155 0)
[
"ai_changehintgroup"
"ai_changetarget"
"ai_script_conditions"
"env_entity_maker"
"env_firesensor"
"env_firesource"
"env_global"
"env_player_surface_trigger"
"filter_activator_class"
"filter_activator_mass_greater"
"filter_activator_name"
"filter_activator_team"
"filter_combineball_type"
"filter_damage_type"
"filter_enemy"
"filter_multi"
"game_ui"
"game_zone_player"
"info_landmark"
"info_npc_spawn_destination"
"logic_achievement"
"logic_auto"
"logic_branch"
"logic_branch_listener"
"logic_case"
"logic_compare"
"logic_multicompare"
"logic_playerproxy"
"logic_relay"
"logic_timer"
"math_colorblend"
"math_counter"
"math_remap"
"npc_antlion_template_maker"
"npc_hunter_maker"
"npc_maker"
"npc_template_maker"
"point_anglesensor"
"point_angularvelocitysensor"
"point_bugbait"
"point_clientcommand"
"point_proximity_sensor"
"point_servercommand"
"point_template"
"point_velocitysensor"
"trigger_look"
"trigger_multiple"
"trigger_once"
"trigger_proximity"
"trigger_rpgfire"
]
"Misc"
[
"env_entity_dissolver"
"env_entity_igniter"
"env_headcrabcanister"
"func_brush"
"func_bulletshield"
"func_instance"
"func_instance_parms"
"func_ladderendpoint"
"func_proprrespawnzone"
"func_traincontrols"
"func_useableladder"
"func_wall"
"func_wall_toggle"
"hammer_updateignorelist"
"info_ladder_dismount"
"info_null"
"info_target"
"path_corner"
"path_track"
"point_devshot_camera"
"point_enable_motion_fixup"
"point_playermoveconstraint"
"point_teleport"
"trigger_changelevel"
"trigger_physics_trap"
"trigger_playermovement"
"trigger_remove"
"trigger_serverragdoll"
"trigger_teleport"
"trigger_teleport_relative"
"trigger_transition"
"trigger_weapon_strip"
]
"Moving things"
[
"func_button"
"func_door"
"func_door_rotating"
"func_guntarget"
"func_lookdoor"
"func_movelinear"
"func_physbox"
"func_physbox_multiplayer"
"func_platrot"
"func_rot_button"
"func_rotating"
"func_tanktrain"
"func_trackautochange"
"func_trackchange"
"func_tracktrain"
"func_train"
"func_water_analog"
"momentary_rot_button"
"prop_door_rotating"
"prop_physics"
"prop_physics_multiplayer"
"prop_physics_override"
"prop_physics_respawnable"
"prop_ragdoll"
"prop_sphere"
]
"Optimization"// color(0 180 0)
[
"env_detail_controller"
"func_areaportal"
"func_areaportalwindow"
"func_detail"
"func_lod"
"func_occluder"
"func_viscluster"
"game_gib_manager"
"game_ragdoll_manager"
"game_weapon_manager"
]
"Physics"// color(255 0 255)
[
"env_physexplosion"
"env_physimpact"
"env_wind"
"func_clip_vphysics"
"func_conveyor"
"func_physbox"
"func_physbox_multiplayer"
"func_vehicleclip"
"func_weight_button"
"info_constraint_anchor"
"info_mass_center"
"logic_collision_pair"
"logic_measure_movement"
"phys_ballsocket"
"phys_constraint"
"phys_constraintsystem"
"phys_convert"
"phys_hinge"
"phys_keepupright"
"phys_lengthconstraint"
"phys_magnet"
"phys_motor"
"phys_pulleyconstraint"
"phys_ragdollconstraint"
"phys_ragdollmagnet"
"phys_slideconstraint"
"phys_spring"
"phys_thruster"
"phys_torque"
"physics_cannister"
"point_push"
"prop_physics"
"prop_physics_multiplayer"
"prop_physics_override"
"prop_physics_respawnable"
"prop_ragdoll"
"prop_sphere"
"target_changegravity"
"trigger_apply_impulse"
"trigger_gravity"
"trigger_impact"
"trigger_push"
"trigger_vphysics_motion"
"trigger_wind"
]
"Player Spawns"
[
"info_player_combine"
"info_player_deathmatch"
"info_player_rebel"
"info_player_start"
]
"Scripting"// color(0 255 255)
[
"ai_goal_actbusy"
"ai_goal_actbusy_queue"
"ai_goal_follow"
"ai_goal_lead"
"ai_goal_lead_weapon"
"ai_goal_police"
"ai_npc_eventresponsesystem"
"aiscripted_schedule"
"env_explosion"
"env_fade"
"env_speaker"
"logic_choreographed_scene"
"logic_scene_list_manager"
"player_speedmod"
"player_weaponstrip"
"point_hurt"
"point_viewcontrol"
"prop_vehicle_choreo_generic"
"scripted_sentence"
"scripted_sequence"
"trigger_weapon_dissolve"
]
"Sound"// color(0 0 255)
[
"ambient_generic"
"env_microphone"
"env_soundscape"
"env_soundscape_proxy"
"env_soundscape_triggerable"
"trigger_soundscape"
]
"Vehicles"
[
"prop_vehicle_airboat"
"prop_vehicle_apc"
"prop_vehicle_crane"
"prop_vehicle_jeep"
"prop_vehicle_prisoner_pod"
]
"Visual"// color(255 203 11)
[
"color_correction"
"color_correction_volume"
"cycler"
"cycler_actor"
"env_alyxemp"
"env_ar2explosion"
"env_beam"
"env_blood"
"env_bubbles"
"env_citadel_energy_core"
"env_credits"
"env_cubemap"
"env_dustpuff"
"env_dusttrail"
"env_effectscript"
"env_embers"
"env_fire"
"env_fire_trail"
"env_flare"
"env_fog_controller"
"env_funnel"
"env_gunfire"
"env_hudhint"
"env_laser"
"env_message"
"env_muzzleflash"
"env_particlescript"
"env_rotorshooter"
"env_rotorwash_emitter"
"env_screeneffect"
"env_screenoverlay"
"env_shake"
"env_shooter"
"env_smokestack"
"env_smoketrail"
"env_spark"
"env_splash"
"env_sporeexplosion"
"env_sprite"
"env_sprite_oriented"
"env_spritetrail"
"env_starfield"
"env_steam"
"env_sun"
"env_texturetoggle"
"env_viewpunch"
"env_zoom"
"func_dustcloud"
"func_dustmotes"
"func_fish_pool"
"func_illusionary"
"func_monitor"
"func_precipitation"
"func_reflective_glass"
"func_smokevolume"
"game_text"
"info_camera_link"
"info_overlay"
"info_overlay_transition"
"info_particle_system"
"info_projecteddecal"
"info_radar_target"
"info_teleporter_countdown"
"infodecal"
"keyframe_rope"
"material_modify_control"
"move_rope"
"point_camera"
"point_flesh_effect_target"
"point_message"
"point_posecontroller"
"point_tesla"
"prop_coreball"
"prop_detail"
"prop_dynamic"
"prop_dynamic_ornament"
"prop_dynamic_override"
"script_intro"
"sky_camera"
"spark_shower"
"vgui_screen"
"vgui_slideshow_display"
]
"Weapons, pickups"// color(160 37 240)
[
"crossbow_bolt"
"func_tank"
"func_tank_combine_cannon"
"func_tankairboatgun"
"func_tanklaser"
"func_tankmortar"
"func_tankphyscannister"
"func_tankpulselaser"
"func_tankrocket"
"grenade_ar2"
"grenade_helicopter"
"grenade_spit"
"item_ammo_357"
"item_ammo_357_large"
"item_ammo_ar2"
"item_ammo_ar2_altfire"
"item_ammo_ar2_large"
"item_ammo_crate"
"item_ammo_crossbow"
"item_ammo_pistol"
"item_ammo_pistol_large"
"item_ammo_smg1"
"item_ammo_smg1_grenade"
"item_ammo_smg1_large"
"item_battery"
"item_box_buckshot"
"item_dynamic_resupply"
"item_grubnugget"
"item_healthcharger"
"item_healthkit"
"item_healthvial"
"item_item_crate"
"item_rpg_round"
"item_suitcharger"
"item_suit"
"npc_grenade_bugbait"
"npc_grenade_frag"
"npc_satchel"
"npc_tripmine"
"weapon_357"
"weapon_alyxgun"
"weapon_annabelle"
"weapon_ar2"
"weapon_bugbait"
"weapon_citizenpackage"
"weapon_citizensuitcase"
"weapon_crossbow"
"weapon_crowbar"
"weapon_frag"
"weapon_oldmanharpoon"
"weapon_physcannon"
"weapon_pistol"
"weapon_rpg"
"weapon_shotgun"
"weapon_slam"
"weapon_smg1"
"weapon_striderbuster"
"weapon_stunstick"
]
]
//SE BASE SPECIAL CLASSES
@BaseClass = Angles
[
angles(angle) : "Pitch Yaw Roll (Y Z X)" : "0 0 0" : "This entity's orientation in the world. Pitch is rotation around the object's Y axis (looking up or down), yaw is rotation around the object's Z axis (looking left and right), roll is rotation around the object's X axis (similar to a person doing cartwheels)."
]
@BaseClass = DamageFilter
[
damagefilter(filterclass) : "Damage Filter Name" : : "When this entity receives damage, it will filter by this entity."
input SetDamageFilter(target_destination) : "Sets Damage Filter."
]
@BaseClass = EnableDisable
[
StartDisabled(choices) : "Start Disabled" : 0 : "Stay inactive until Enabled." =
[
0 : "No"
1 : "Yes"
]
input Enable(void) : "Makes the entity active."
input Disable(void) : "Makes the entity inactive."
]
@BaseClass = FadeKeys
[
fademindist(float) : "Start Fade Distance" : -1 : "Distance at which the entity starts fading. If less than 0, the entity will disappear instantly when the End Fade Distance is hit. The value will scale appropriately if the entity is in a 3D Skybox."
fademaxdist(float) : "End Fade Distance" : 0 : "Distance at which the entity ends fading. If less than 0, the entity won't disappear at all. The value will scale appropriately if the entity is in a 3D Skybox."
]
//Many entities force a particular model, so keeping this in CBaseAnimating wouldn't be the most intuitive...
@BaseClass = Model
[
model(studio) : "World Model" : : "A path to a .mdl."
]
@BaseClass = Node
[
nodeid(integer) readonly : "Node ID" : : "An automatically-assigned number associated with this node."
]
//Out of order cause FGD parser is good!!!!!!!!!!!
@BaseClass base(Node,Angles) = HintNode
[
spawnflags(flags) =
[
65536 : "Allow jump up - TODO: Description" : 0
]
hinttype(choices) : "Hint" : 0 : "Special properties for this node." =
[
0 : "None (regular navigation node)"
2 : "World: Window - Point of interest for scanners"
12 : "World: Act Busy Hint - Used by actbusies"
13 : "World: Visually Interesting - Player companions will passively look at this node (while aiming their weapon)"
14 : "World: Visually Interesting (Don't aim at) - Player companions will passively look at this node (while not aiming their weapon)"
15 : "World: Inhibit Combine Mines within 15 feet - Hoppers don't clamp near this"
16 : "World: Visually Interesting (Stealth mode) - Player companions will passively look at this node"
100 : "Crouch Cover Medium - Tells NPCs they can take cover here if 64 unit high cover"
101 : "Crouch Cover Low - Tells NPCs they can take cover here if 64 unit high cover"
400 : "Antlion: Burrow Point - Antlions burrow in and out of this point"
401 : "Antlion: Thumper Flee Point - Antlions will go here when agitated by a thumper"
450 : "Headcrab: Burrow Point - Headcrabs burrow in and out of this point"
451 : "EPISODIC: Headcrab: Exit Pod Point - Headcrabs will jump here when exiting env_headcrabcanister"
700 : "Crow: Fly to point - Birds may fly to this spot if provoked to"
900 : "Follower: Wait point - NPCs in ai_goal_follow will try to move here while they follow"
901 : "Override jump permission - NPCs will jump from this node to another of the same type if the jump is within their capabilities"
902 : "Player squad transition point - Companion NPCs are teleported here if not near player during level change"
903 : "NPC exit point - Used by actbusies. NPCs will exit the routine by going here"
904 : "Strider node - Used by striders for navigation"
950 : "Player Ally: Push away destination - Ally NPCs go here to get out of the player's way"
951 : "Player Ally: Fear withdrawal destination - If NPC finds thing to fear, it will hide at this spot"
]
Group(string) : "Hint Group" : : "If specified, gives the hint a specific group name. Useful for hint nodes that need to be logically grouped together. NPCs may also refuse to use hint nodes that don't match their hint group."
StartHintDisabled(choices) : "Start Hint Disabled" : 0 : "Makes the hint disabled after spawning. NPCs will ignore it." =
[
0 : "No"
1 : "Yes"
]
hintactivity(string) : "Hint Activity" : : "Activity associated with this hint node. Various parts of the NPC AI play this activity at times. i.e. Actbusy nodes will play this activity when an NPC acts busy on the node. See scripts/actbusy.txt for all activities."
TargetNode(node_dest) : "Target node" : : "The node ID of an associated target node, if any. TODO: Purpose?"
IgnoreFacing(choices) : "Ignore Facing" : 2 : "Tells NPCs to ignore the angles of the node. Typically this is so that the NPC can face any direction while standing on the node. May not apply to all hint types." =
[
0 : "No"
1 : "Yes"
2 : "Default - Whatever this hint type usually does"
]
MinimumState(choices) : "Minimum State" : 1 : "NPCs must have a readiness level of this much to be able to use the node." =
[
1 : "Idle"
2 : "Alert"
3 : "Combat"
]
MaximumState(choices) : "Maximum State" : 3 : "NPCs must have a readiness level under this to use the node." =
[
1 : "Idle"
2 : "Alert"
3 : "Combat"
]
nodeFOV(float) : "Node FOV" : 360 : "In order for an NPC to use this node, the NPC must be within the node's FOV (which is centered on the Pitch Yaw Roll). Any number may be entered. 360 means any angle is acceptable. Only some hint types make use of this."
input EnableHint(void) : "Enables the hint."
input DisableHint(void) : "Disables the hint."
output OnNPCStartedUsing(string) : "Fired when an NPC starts using this hint node as part of an actbusy. Automatically puts the targetname of the NPC as the input parameter, unless overridden by the mapper."
output OnNPCStoppedUsing(string) : "Fired when an NPC stops using this hint node as part of an actbusy. Automatically puts the targetname of the NPC as the input parameter, unless overridden by the mapper."
]
@BaseClass = Origin
[
origin(origin) : "Origin (X Y Z)" : : "The point in the world that acts as sort of center of the entity. Rotating entities typically rotate around their origin. Changing the origin with AddOutput usually results in the entity moving."
]
@BaseClass = Parent
[
parentname(target_destination) : "Parent" : : "Specifies a movement parent. An entity with a parent will be forced to maintain its current position relative to the specified entity. Child entities cannot be moved in any other way and will intersect with other solid objects if they must. Parented entities will forward Use inputs to their parent.\n" +
"An attachment point for this entity to follow can be specified by putting its name after the parent entity's name, separated by a comma. View attachment points ingame with ent_attachments.\n" +
"Entities which aren't intended to be parented may not function correctly. phys_constraint can be used as an alternative to parenting."
input SetParent(target_destination) : "Sets Parent."
input SetParentAttachment(string) : "Teleports this entity to a specific attachment point on its Parent and moves identically to that attachment point."
input SetParentAttachmentMaintainOffset(string) : "Same as SetParentAttachment, but the entity is not teleported and instead keeps its current position and angles, until the attachment moves."
input ClearParent(void) : "Sets the Parent keyvalue to be blank, removing this entity from any hierarchy."
]
@BaseClass = RenderMode
[
rendermode(choices) : "Render Mode" : 0 : "A special rendering mode to use on this entity. (https://developer.valvesoftware.com/wiki/Render_Modes)" =
[
0 : "Normal"
1 : "Color"
2 : "Texture"
3 : "Glow"
4 : "Solid/Alphatest"
5 : "Additive"
7 : "Additive Fractional Frame"
8 : "Alpha Add"
9 : "World Space Glow"
10 : "Don't Render"
]
]
@BaseClass = RenderAmount
[
renderamt(integer) : "Render Amount/Transparency" : 255 : "Transparency amount. Requires a Render Mode other than Normal. 0 is invisible, 255 is fully visible."
input Alpha(integer) : "Sets Render Amount/Transparency."
]
@BaseClass = RenderColor
[
rendercolor(color255) : "Render Color (R G B)" : "255 255 255" : "Color channel filter to add to this entity's texture(s)."
input Color(color255) : "Sets Render Color."
]
@BaseClass base(RenderAmount,RenderColor) = RenderAlphaColor
[
]
@BaseClass = RenderFX
[
renderfx(choices) : "Render FX" : 0 : "Preset appearance effects. Bug: Sometimes functions incorrectly if changed with AddOutput, but is the only way to change effects other than making multiple versions of the object." =
[
0 : "Normal"
1 : "Slow Pulse"
2 : "Fast Pulse"
3 : "Slow Wide Pulse"
4 : "Fast Wide Pulse"
5 : "Slow Fade Away (from another mode)"
6 : "Fast Fade Away (from another mode)"
7 : "Slow Become Solid (from another mode)"
8 : "Fast Become Solid (from another mode)"
9 : "Slow Strobe"
10 : "Fast Strobe"
11 : "Faster Strobe"
12 : "Slow Flicker"
13 : "Fast Flicker"
15 : "Distort"
24 : "Faster Pulse"
]
]
@BaseClass base(RenderMode,RenderAlphaColor,RenderFX) = RenderFields
[
]
@BaseClass = ResponseContext
[
ResponseContext(string) : "Response Contexts" : : "Pre-defined response system contexts for this entity. https://developer.valvesoftware.com/wiki/Response_System Format is key:value,key:value,..."
input AddContext(string) : "Adds to the entity's list of Response Contexts. Format is key:value,key:value,..."
input RemoveContext(string) : "Removes a context from this entity's list. The name should match the key of an existing context."
input ClearContext(void) : "Removes all contexts from this entity's list."
]
@BaseClass base(RenderFields,Parent) = VisibleBrush
[
_minlight(float) : "Minimum Light" : 0 : "Minimum amount of light to hit this brush. 0 is none, 1 is 'fullbright'. Useful because the lightmaps will not update as the entity moves."
disablereceiveshadows(choices) : "Disable Receiving Shadows" : 0 : "Adds EF_NORECEIVESHADOW to this entity. (_rt_shadows shadows don't cast onto entity)" =
[
0 : "No"
1 : "Yes"
]
vrad_brush_cast_shadows(choices) : "Static Shadow" : 0 : "Determines if this entity will cast a static shadow." =
[
0 : "No static shadow"
1 : "Cast static shadow"
]
]
@BaseClass = Toggle
[
input Toggle(void) : "If on, turn off. If off, turn on."
]
//I don't want these on doors.
@BaseClass = DynamicPropAnimations
[
DefaultAnim(string) : "Default Animation" : : "The animation this prop will play when not doing a random or forced animation."
RandomAnimation(choices) : "Randomly Animate" : 0 : "Makes the prop randomly select and play animations at intervals defined by the Min/Max Random Anim Time keyvalues. In between the random animations, it will revert to playing the Default Animation." =
[
0 : "No"
1 : "Yes"
]
MinAnimTime(float) : "Min Random Anim Time" : : "Minimum time between random animations."
MaxAnimTime(float) : "Max Random Anim Time" : : "Maximum time between random animations."
input SetAnimation(string) : "Forces the prop to play the specified animation."
input SetDefaultAnimation(string) : "Sets Default Animation."
input SetPlaybackRate(float) : "Sets the framerate at which animations are played."
output OnAnimationBegun(void) : "Fired when an animation begins."
output OnAnimationDone(void) : "Fired when an animation finishes."
]
//SE BASE CLASSES
@BaseClass = CBaseEntity
[
targetname(target_source) : "Name" : : "The name that other entities refer to this entity by. TIP: avoid naming an entity the same thing as any classname to avoid issues with code that tries searching by targetname *and* classname."
globalname(string) : "Global Entity Name" : : "Name by which this entity is linked to another entity in the map. When a new round begins, entities in the next round with Global Entity Names matching entities in the previous will copy the previous entity's state. TODO: Describe what this is useful for, especially in multiplayer..."
hammerid(integer) : "Hammer ID" : : "An ID (usually) automatically assigned to this entity by Hammer. Used by some debugging commands, such as ent_keyvalue. Entities spawned at run-time are not assigned any Hammer ID."
input Kill(void) : "Removes this entity and any entities parented to it from the world."
input KillHierarchy(void) : "Functions the same as Kill, although this entity and any entities parented to it are killed on the same frame. TODO: Cases where this is needed?"
input AddOutput(string) : "Changes a keyvalue or adds an I/O connection on this entity. Not all keyvalues will work with this input as they require special handling.\n" +
"Keyvalue format: <key> <value>\n" +
"IO format: <output name> <targetname>:<input name>:<parameter>:<delay>:<fire once>\n" +
"The parameter can be left blank, but do not omit either ':' surrounding it or the game will think the delay is the parameter! <fire once> is whether the IO event can be fired again. Put 0 to allow infinite refires, put 1 to make it only fire once ever."
input FireUser1(string) : "Fires the OnUser1 output. Bug: These inputs can pass a string parameter, but do nothing with it. If the input is sent from an output that automatically passes a non-string parameter (such as OnLessThan from logic_compare) the input will fail to send because the parameters types are incompatible. To work around this, place any placeholder text in the parameter box."
input FireUser2(string) : "Fires the OnUser2 output."
input FireUser3(string) : "Fires the OnUser3 output."
input FireUser4(string) : "Fires the OnUser4 output."
input DispatchEffect(string) : "Dispatches a special effect from the entity's origin. See here: https://developer.valvesoftware.com/wiki/List_of_Client_Effects"
output OnUser1(void) : "Fires in response to the FireUser1 input."
output OnUser2(void) : "Fires in response to the FireUser2 input."
output OnUser3(void) : "Fires in response to the FireUser3 input."
output OnUser4(void) : "Fires in response to the FireUser4 input."
]
//Everything has to come after CBaseEntity because reasons
@BaseClass base(CBaseEntity) = CAI_AllyManager
[
maxallies(integer) : "Maximum number of allies" : 0 : "Maximum number of allies total to allow."
maxmedics(integer) : "Maximum number of medics" : 0 : "Maximum number of medic allies to allow."
input SetMaxAllies(integer) : "Sets Maximum number of allies."
input SetMaxMedics(integer) : "Sets Maximum number of medics."
input Replenish(void) : "Spawns more allies as requested by the keyvalues."
output OnZeroAllies(void) : "Fires when there are no more allies."
output OnZeroMedicAllies(void) : "Fires when there are no more medics left."
output SpawnAlly0(void) : "Fires when the Replenish input is sent and at least 1 NPC needs to be spawned."
output SpawnAlly1(void) : "Fires when the Replenish input is sent and at least 2 NPCs need to be spawned."
output SpawnAlly2(void) : "Fires when the Replenish input is sent and at least 3 NPCs need to be spawned."
output SpawnAlly3(void) : "Fires when the Replenish input is sent and at least 4 NPCs need to be spawned."
output SpawnAlly4(void) : "Fires when the Replenish input is sent and at least 5 NPCs need to be spawned."
output SpawnAlly5(void) : "Fires when the Replenish input is sent and at least 6 NPCs need to be spawned."
output SpawnAlly6(void) : "Fires when the Replenish input is sent and at least 7 NPCs need to be spawned."
output SpawnAlly7(void) : "Fires when the Replenish input is sent and at least 8 NPCs need to be spawned."
output SpawnAlly8(void) : "Fires when the Replenish input is sent and at least 9 NPCs need to be spawned."
output SpawnAlly9(void) : "Fires when the Replenish input is sent and 10 NPCs need to be spawned."
output SpawnMedicAlly(void) : "Fires when a medic ally is needed."
]
@BaseClass base(CBaseEntity,Parent,Angles) = CAI_BattleLine
[
spawnflags(flags) =
[
1 : "Use parent's orientation" : 0
]
actor(target_name_or_class) : "Actor" : : "NPC(s) or squad to affect."
Active(choices) : "Active" : : "Active when the map starts." =
[
0 : "No"
1 : "Yes"
]
Strict(choices) : "Strict" : : "If true, players will not be able to order their allies to ignore the battle line by commanding them with impulse 50 (bound to C by default)." =
[
0 : "No"
1 : "Yes"
]
input Activate(void) : "Makes the entity active if it wasn't already."
input Deactivate(void) : "Makes the entity inactive if it wasn't already."
]
@BaseClass base(CBaseEntity) = CAI_ChangeHintGroup
[
SearchName(target_name_or_class) : "Name to search for" : : "A targetname, classname, or name of a hint group."
SearchType(choices) : "Search Type" : 0 : "How to search for the entities to change." =
[
0 : "Entity Name (targetname)"
1 : "Classname"
2 : "Old Hint Group"
]
Radius(float) : "Search Radius" : 0 : "Radius to search (0 searches entire map). Visualized by the yellow circle/sphere."
NewHintGroup(string) : "New Hint Group" : : "New hint group to add to the entities meeting search criteria."
hintlimiting(choices) : "Hint Limit Nav" : : "'Limits NPC to using specified hint group for navigation requests, does not limit local navigation.' TODO: More detail." =
[
0 : "No"
1 : "Yes"
]
input Activate(void) : "Changes the hint group from the old one to New Hint Group."
]
@BaseClass base(CBaseEntity) = CAI_ChangeTarget
[
target(target_destination) : "Target" : : "Entity(s) that should have target changed."
m_iszNewTarget(target_destination) : "NewTarget" : : "New targetname for the targeted entity(s) to target."
input Activate(void) : "Triggers the target change."
]
@BaseClass base(CBaseEntity) = CAI_DynamicLink
[
spawnflags(flags) =
[
1 : "Force human connect" : 0
2 : "Force small_centered connect" : 0
4 : "Force wide_human connect" : 0
8 : "Force tiny connect" : 0
16 : "Force wide_short connect" : 0
32 : "Force medium connect" : 0
64 : "Force tiny_centered connect" : 0
128 : "Force large connect" : 0
256 : "Force large_centered connect" : 0
512 : "Force medium_tall connect" : 0
]
StartNode(node_dest) : "Start node ID" : : "The node ID of one end of the node connection."
EndNode(node_dest) : "End node ID" : : "The node ID of one end of the node connection."
initialstate(choices) : "Initial State" : 1 : "Makes this connection available the moment the map loads. If there is something blocking the NPC's path while this is on, the NPC may try to walk straight into that object/hole." =
[
0 : "Off"
1 : "On"
]
linktype(choices) : "Type of Connection" : 1 : "How NPCs can use this node. Not all NPCs can do all types." =
[
1 : "Ground"
2 : "Jump"
4 : "Fly"
8 : "Climb"
]
AllowUse(target_name_or_class) : "Allow Pass When Off" : : "Targetname/classname to allow passage even when node is off."
input TurnOn(void) : "Turn the link on."
input TurnOff(void) : "Turn the link off."
]
@BaseClass base(CBaseEntity,Parent) = CAI_DynamicLinkController
[
mins(vector) : "Mins" : "-8 -32 -36" : "Coordinates relative to the entity defining one point of the volume. A box will appear in hammer to help visualize the dimensions of the volume."
maxs(vector) : "Maxs" : "8 32 36" : "Coordinates relative to the entity defining the second point of the volume."
initialstate(choices) : "Initial State" : 1 : "State of the node links the moment the map loads. If there is something blocking the NPC's path while this is on, the NPC may try to walk straight into that object/hole." =
[
0 : "Off"
1 : "On"
]
useairlinkradius(choices) : "Use Larger Radius (for air links)" : 0 : "Set this to Yes if this controller is intended to control air links. Air links connect using a larger search radius so leaving this at No might cause the entity to not 'see' some air links." =
[
0 : "No"
1 : "Yes"
]
AllowUse(target_name_or_class) : "Allow Pass When Off" : : "Targetname/classname to allow passage even when node is off."
InvertAllow(choices) : "Invert exclusion rules" : 0 : "Makes target(s) defined in Allow Pass When Off the only targets NOT allowed to pass when off." =
[
0 : "No"
1 : "Yes"
]
input TurnOn(void) : "Turns the links on."
input TurnOff(void) : "Turns the links off."
input SetAllowed(target_destination) : "Sets Allow Pass When Off."
input SetInvert(integer) : "Sets Invert exclusion rules."
]
@BaseClass base(CBaseEntity) = CAI_GoalEntity
[
actor(target_name_or_class) : "Actor(s) to affect" : : "The targetname or classname of any NPCs that will be included in this goal."
SearchType(choices) : "Search Type" : 0 : "What the Actor(s) to affect keyvalue targets by." =
[
0 : "Entity Name"
1 : "Classname"
]
StartActive(choices) : "Start Active" : 1 : "Set if goal should be active immediately." =
[
0 : "No"
1 : "Yes"
]
input Activate(void) : "Make the goal active if it wasn't already. NPCs will begin taking orders."
input Deactivate(void) : "Make goal inactive."
input UpdateActors(void) : "Usually done automatically. Tells the goal entity to re-check Actor(s) to affect in case any disappeared, or any new NPCs spawned. This should almost never need to be done manually."
]
@BaseClass base(CAI_GoalEntity) = CAI_ActBusyGoal
[
busysearchrange(float) : "Search Range for Busy Hints" : 2048 : "Maximum distance between an actbusy hint and NPC for the NPC to consider it."
visibleonly(choices) : "Visible Busy Hints Only" : 0 : "If set, an NPC will only consider actbusy hints in view when deciding which to use. Once the choice has been made it will not change, even if new hints become visible." =
[
0 : "No"
1 : "Yes"
]
type(choices) : "Actbusy Type" : 0 : "Is this Actbusy part of combat? For use with Combat Safe Zone." =
[
0 : "Default (non-combat)"
1 : "Combat"
]
allowteleport(choices) : "Allow actor to teleport?" : 0 : "Allows NPCs to teleport to their destination if they can't find a path to it and the player is looking away from the NPC." =
[
0 : "No"
1 : "Yes"
]
seeentity(target_destination) : "Sight Entity" : : "Optionally, if the Actor playing the ActBusy loses sight of this specified entity for an amount of time defined by Sight Entity Timeout, the specified entity will leave the ActBusy."
seeentitytimeout(float) : "Sight Entity Timeout" : : "An NPC must not go this long without seeing the Sight Entity, or they will leave the actbusy."
sightmethod(choices) : "Sight Enemy Method" : 0 : "How to determine if the Actor sees the Sight Entity." =
[
0 : "Default. LOS -and- Viewcone."
1 : "LOS Only. Disregard Viewcone."
]
safezone(target_destination) : "Combat Safe Zone" : : "Specify a brush entity to act as a safe zone if Actbusy Type is set to Combat. If any enemies are in the safe zone, the actbusy will be terminated. TODO: Will actors go back to the actbusy once enemies are dead? What if the enemies leave the safe zone but are still alive?"
input ForceNPCToActBusy(string) : "Forces an NPC to act busy. Format: [targetname] [hint node targetname] [teleport] [nearest] [$<custom activity or sequence>] [max time] TARGETNAME: Name of the NPC(s) to affect. This is the only required parameter. HINT NODE TARGETNAME: Specific hint node for the NPC to move to. If not specified, the NPC will go to a random node. TELEPORT: If the 'teleport' keyword is specified as a parameter, the NPC will teleport onto the actbusy node instead of navigating as normal to it. NEAREST: If the 'nearest' keyword is specified as a parameter, the NPC will choose the nearest valid actbusy node, instead of choosing one randomly from all valid actbusy nodes. ACTIVITY OR SEQUENCE: Name of a custom actbusy, prepended by a '$', that the NPC(s) will perform while navigating to the node. $ACT_RUN will make the NPC(s) run to the node. Sequence names can be used instead of activities. MAX TIME: Maximum time to actbusy. If not specified, the default time will be used. 0 will make the actbusy persist until the NPCs are disturbed by an outside force. TODO: How is the default time decided?"
input ForceThisNPCToActBusy(target_destination) : "Forces a specified NPC to act busy."
input ForceThisNPCToLeave(target_destination) : "Forces a specified NPC to find an NPC exit point hint node and vanish."
input SetBusySearchRange(float) : "Sets Search Range for Busy Hints."
output OnNPCStartedBusy(target_destination) : "Fired when an NPC targeted by this entity starts an ActBusy animation sequence. Automatically puts the targetname of the NPC as the input parameter, unless overridden by the mapper."
output OnNPCFinishedBusy(target_destination) : "Fired when an NPC targeted by this entity finishes an ActBusy animation sequence. Automatically puts the targetname of the NPC as the input parameter, unless overridden by the mapper."
output OnNPCLostSeeEntity(string) : "Fired when the NPC loses sight of the Sight Entity. Automatically puts the targetname of the NPC as the input parameter, unless overridden by the mapper."
output OnNPCSeeEnemy(string) : "Fired when this NPC leaves their ActBusy because they saw an enemy. Automatically puts the targetname of the NPC that's leaving the actbusy as the input parameter, unless overridden by the mapper."
]
@BaseClass base(CAI_ActBusyGoal) = CAI_ActBusyQueueGoal
[
node_exit(target_destination) : "Exit Node" : : "An info_target the NPC at the front of the queue should head to when leaving. This MUST be specified."
node01(target_destination) : "Node 1" : : "An info_node_hint which acts as the front of the line. Higher number nodes are farther back in the line."
node02(target_destination) : "Node 2" : : "An info_node_hint which acts as the 2nd position in the line. Higher number nodes are farther back in the line."
node03(target_destination) : "Node 3" : : "An info_node_hint which acts as the 3rd position in the line. Higher number nodes are farther back in the line."
node04(target_destination) : "Node 4" : : "An info_node_hint which acts as the 4th position in the line. Higher number nodes are farther back in the line."
node05(target_destination) : "Node 5" : : "An info_node_hint which acts as the 5th position in the line. Higher number nodes are farther back in the line."
node06(target_destination) : "Node 6" : : "An info_node_hint which acts as the 6th position in the line. Higher number nodes are farther back in the line."
node07(target_destination) : "Node 7" : : "An info_node_hint which acts as the 7th position in the line. Higher number nodes are farther back in the line."
node08(target_destination) : "Node 8" : : "An info_node_hint which acts as the 8th position in the line. Higher number nodes are farther back in the line."
node09(target_destination) : "Node 9" : : "An info_node_hint which acts as the 9th position in the line. Higher number nodes are farther back in the line."
node10(target_destination) : "Node 10" : : "An info_node_hint which acts as the 10th position in the line. Higher number nodes are farther back in the line."
node11(target_destination) : "Node 11" : : "An info_node_hint which acts as the 11th position in the line. Higher number nodes are farther back in the line."
node12(target_destination) : "Node 12" : : "An info_node_hint which acts as the 12th position in the line. Higher number nodes are farther back in the line."
node13(target_destination) : "Node 13" : : "An info_node_hint which acts as the 13th position in the line. Higher number nodes are farther back in the line."
node14(target_destination) : "Node 14" : : "An info_node_hint which acts as the 14th position in the line. Higher number nodes are farther back in the line."
node15(target_destination) : "Node 15" : : "An info_node_hint which acts as the 15th position in the line. Higher number nodes are farther back in the line."
node16(target_destination) : "Node 16" : : "An info_node_hint which acts as the 16th position in the line. Higher number nodes are farther back in the line."
node17(target_destination) : "Node 17" : : "An info_node_hint which acts as the 17th position in the line. Higher number nodes are farther back in the line."
node18(target_destination) : "Node 18" : : "An info_node_hint which acts as the 18th position in the line. Higher number nodes are farther back in the line."
node19(target_destination) : "Node 19" : : "An info_node_hint which acts as the 19th position in the line. Higher number nodes are farther back in the line."
node20(target_destination) : "Node 20" : : "An info_node_hint which acts as the last position in the line. Lower number nodes are farther up in the line."
mustreachfront(choices) : "Must Reach Front" : 0 : "If true, an NPC must strictly be at Node 1 before being able to leave the queue." =
[
0 : "No"
1 : "Yes"
]
input MoveQueueUp(void) : "Moves all NPCs in the queue up one position, and sends the front NPC to the Exit Node."
input PlayerStartedBlocking(integer) : "Tell the queue manager that the player has started blocking a specified point in the queue."
input PlayerStoppedBlocking(integer) : "Tell the queue manager that the player has stopped blocking a specified point in the queue."
output OnQueueMoved(integer) : "Fired when the queue moves up. Automatically puts the number of NPCs remaining in the queue as the input parameter, unless overridden by the mapper."
output OnNPCLeftQueue(string) : "Fired when an NPC begins going to the Exit Node. Automatically puts the targetname of the NPC as the input parameter, unless overridden by the mapper."
output OnNPCStartedLeavingQueue(string) : "Fired when an NPC is at Node 1. Automatically puts the targetname of the NPC as the input parameter, unless overridden by the mapper."
]
@BaseClass base(CAI_GoalEntity) = CAI_AssaultGoal
[
rallypoint(target_destination) : "Rally Point Set" : : "The name of the assault_rallypoint(s) at which this assault will begin. This field can also support wildcards. Each NPC needs its own rally point. You can still probably get away with naming all your rally points the same thing."
AssaultCue(choices) : "Assault Cue" : 1 : "Chooses when the goal is going to be set after this entity has been activated." =
[
1 : "Entity System Input (BeginAssault)"
2 : "Gunfire (When the entity 'hears' gunfire TODO: Broken?)"
3 : "Don't wait for a cue. (Attack immediately after rallying finishes)"
]
RallySelectMethod(choices) : "Rally Point Selection Method" : 0 : "How NPCs will decide which rallypoint to move to." =
[
0 : "Choose by priority. If there are multiple tied for priority, go to the closest one."
1 : "Choose randomly"
]
input BeginAssault(void) : "If the entity is active and this entity's Assault Cue keyvalue is set to Entity System Input, begin the assault. This will cause NPCs to 'skip over' the rally point if they aren't there already."
]
@BaseClass base(CAI_GoalEntity) = CAI_FollowGoal
[
goal(target_destination) : "Target Entity" : : "The name of the entity to follow. If blank, defaults to the player."
Formation(choices) : "Formation" : 0 : "How close to the target the NPCs should follow. Each has somewhat different behavior." =
[
0 : "Close circle"
1 : "Wide circle"
2 : "Antlion - For antlions following the player."
3 : "Commander - For citizens following the player."
4 : "Tight"
5 : "Medium circle"
6 : "Sidekick"
7 : "Hunter - For hunters following striders."
8 : "Vortigaunt"
]
]
@BaseClass base(CAI_GoalEntity) = CAI_LeadGoal
[
spawnflags(flags) =
[
1 : "No def success - TODO: Description." : 0
2 : "No def failure - TODO: Description." : 0
4 : "Use goal facing - TODO: Description." : 0
]
goal(string) : "Target Entity" : : "The name of the entity that the NPC will lead the player to (i.e. an info_target)."
WaitPointName(target_destination) : "Point to wait at if the target's not visible" : : "If the NPC loses line-of-sight to the player, it will return to this entity (i.e. an info_target)."
WaitDistance(float) : "Wait until player gets this close" : 256 : "The player must be within this distance of the NPC before the NPC initially begins leading them."
LeadDistance(float) : "Lead Distance" : 256 : "The player is considered to be too far behind if they're beyond this distance. Past this distance, the leader will nag the player to hurry up."
RetrieveDistance(float) : "Retrieve Distance" : 512 : "The distance from the player that the NPC should return to when retrieving a lagging player. Must be between (Lead Distance + 24) and (Lead Distance X 4) to avoid the leader ping-ponging."
SuccessDistance(float) : "Success Distance" : 0 : "Once the NPC has reached the goal, the player must be within this distance in order for the lead to be considered a success. If set to 0, it'll use the Lead Distance instead."
Run(choices) : "Run instead of Walk" : 0 : "Should the NPC run instead of walk?" =
[
0 : "No"
1 : "Yes"
]
Retrieve(choices) : "Retrieve player?" : 1 : "Should NPC run/walk to retrieve player? No means they will stand and wait." =
[
0 : "No"
1 : "Yes"
]
ComingBackWaitForSpeak(choices) : "Before Coming Back, Wait for Speech?" : 1 : "If the NPC wants to retrieve the player, should it finish speaking anything before beginning to walk back?" =
[
0 : "No"
1 : "Yes"