-
Notifications
You must be signed in to change notification settings - Fork 49
Expand file tree
/
Copy pathswarm.fgd
More file actions
4341 lines (3758 loc) · 198 KB
/
swarm.fgd
File metadata and controls
4341 lines (3758 loc) · 198 KB
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
//====== Copyright © 1996-2005, Valve Corporation, All rights reserved. =======
//
// Purpose: Infested game definition file (.fgd)
//
//=============================================================================
@include "swarmbase.fgd"
//-------------------------------------------------------------------------
//
// NPCs
//
//-------------------------------------------------------------------------
@BaseClass base(BaseNPC, Studiomodel) = InhabitableNPC
[
flammable(choices) : "Can be ignited by fire" : 1 : "If false, this alien will not be ignited by fire" =
[
0 : "No"
1 : "Yes"
]
teslable(choices) : "Can be electro stunned by tesla gun" : 1 : "If true, this alien can be electro stunned by tesla gun" =
[
0 : "No"
1 : "Yes"
]
freezable(choices) : "Can be frozen" : 1 : "If true, this alien can be frozen by freeze grenade or turret" =
[
0 : "No"
1 : "Yes"
]
freezeresistance(float) : "Freeze Resistance" : "0.0" : "Examples: 0.8 means unfreezes 5 times as fast, -1.0 means unfreezes 2 times as slow"
flinchable(choices) : "Can flinch" : 1 : "If true, this alien works as usual. If false, the alien doesn't flinch on taken damage. " =
[
0 : "No"
1 : "Yes"
]
reflector(choices) : "Alien reflects grenades" : 0 : "If false, this alien works as usual. If true, grenades that hit the alien bounce off. " =
[
0 : "No"
1 : "Yes"
]
healthbonus(integer) : "Health bonus" : 0 : "The ammount of health to add to an alien"
sizescale(float) : "Size scale" : "1.0" : "The factor used to scale alien size. Don't use 0"
speedscale(float) : "Run speed scale" : "1.0" : "The factor used to scale alien run speed. Don't use 0"
]
@BaseClass base(BaseNPC) = TalkNPC
[
UseSentence(string) : "Use Sentence"
UnUseSentence(string) : "Un-Use Sentence"
DontUseSpeechSemaphore(choices) : "Don't Use Speech Semaphore" : 0 : "Friendly NPCs are not allowed to speak if another friendly NPC is speaking. In some cases we don't want speaking NPCs to prevent other NPCs from speaking (for instance, if there is a friendly NPC speaking for a long time on a monitor). To make this NPC not prevent other NPCs from talking, make it not grab the semaphore when it speaks." =
[
0 : "No (Use speech semaphore)"
1 : "Yes (Don't use speech semaphore)"
]
input SpeakResponseConcept(string) : "Speak the specified response concept."
]
@BaseClass base(BaseNPC) = PlayerCompanion
[
input OutsideTransition(void) : "Use this input to teleport the NPC to a hintnode with the Player Squad Transition Point hint type."
input EnableAlwaysTransition(void) : "Enable the 'always transition' behavior"
input DisableAlwaysTransition(void) : "Disable the 'always transition' behavior"
input EnableSpeakWhileScripting(void) : "Allow this NPC to speak responses while in a scripted sequence or while StartScripting is active."
input DisableSpeakWhileScripting(void) : "Cancels this NPC's ability to speak responses while in a scripted sequence or while StartScripting is active if it was previously enabled by EnableSpeakWhileScripting."
AlwaysTransition(choices) : "Always transition" : "No" : "If yes, this NPC will always teleport to a Player Squad Transition Point if they're not within the trigger_transition volume." =
[
0 : "No"
1 : "Yes"
]
DontPickupWeapons(choices) : "Prevent picking up weapons?" : "No" : "If yes, this NPC will NOT be allowed to pick up weapons they find on the ground." =
[
0 : "No"
1 : "Yes"
]
GameEndAlly(choices) : "Is this a vital ally?" : "No" : "If yes, this NPC will cause the game to end if killed." =
[
0 : "No"
1 : "Yes"
]
input MakeGameEndAlly(void) : "Make this NPC a game end ally."
input MakeRegularAlly(void) : "Make this NPC a regular ally."
input EnableWeaponPickup(void) : "Enable Weapon Pickup"
input DisableWeaponPickup(void) : "Disable Weapon Pickup"
input GiveWeapon(string) : "Gives the NPC a weapon of the specified entity name."
input SetReadinessPanic(void) : "Set readiness to panic state (Special)"
input SetReadinessLow(void) : "Set readiness to calmest state (Bored)"
input SetReadinessMedium(void) : "Set readiness to moderate (Alert)"
input SetReadinessHigh(void) : "Set readiness to highest. (Combat imminent)"
input LockReadiness(float) : "Lock readiness at current setting for x seconds -1 = forever, 0 = unlock now"
input ClearAllOutputs(void) : "Obliterate every output that this NPC has."
output OnWeaponPickup(void) : "Fires when this NPC picks a weapon off the ground or a gun rack."
]
@BaseClass base(trigger_multiple) = trigger_asw_use_area :
"A trigger volume that is used to define areas for using various things."
[
spawnflags(flags) =
[
//1: "Clients" : 0
2: "Marines and Aliens" : 1
4: "Pushables": 0
8: "Physics Objects" : 0
16: "Only marines" : 0
//32: "Only clients in vehicles" : 0
64: "Everything" : 0
//512: "Only clients *not* in vehicles" : 0
]
usetargetname(target_destination) : "UseTarget" : : "The name of the item this use area is connected to."
playersrequired(integer) : "Players Required" : 1 : "Number of players that must be present for the trigger to work when used. Setting this higher than the number of players currently playing will make the total number of players the actual requirement."
output OnRequirementFailed(void) : "Fired whenever a marine uses this button panel but the player requirement hasn't been met."
]
@PointClass base(Targetname, Angles, EnableDisable) iconsprite("editor/info_target.vmt") = info_target_vehicle_transition : "Vehicle Transition Point"
[
]
@NPCClass base(InhabitableNPC) studio("models/antlion.mdl") sphere() = npc_antlion :
"Antlions will run away from ai_sound, type: Thumper."
[
startburrowed(choices) : "Start Burrowed" : "No" =
[
0 : "No"
1 : "Yes"
]
spawnflags(Flags) =
[
65536 : "Burrow when eluded" : 0
131072 : "Use Ground Checks" : 0
262144 : "Worker Type" : 0
]
radius(integer) : "Alert Radius" : 256
eludedist(integer) : "Distance until eluded" : 1024 : "Only available when Burrow When Eluded is flagged"
ignorebugbait(choices) : "Ignore Bugbait" : "No" =
[
0 : "No"
1 : "Yes"
]
unburroweffects(choices) : "Suppress unburrow effects" : "No" =
[
0 : "No"
1 : "Yes"
]
input Unburrow(void) : "Unburrow from the ground"
input Burrow(void) : "Burrow into the ground"
input BurrowAway(void) : "Burrow into the ground and remove the antlion"
input FightToPosition(string) : "Fight to position"
input EnableJump(void) : "Allow non-navigational jumping"
input DisableJump(void) : "Disallow non-navigational jumping"
input IgnoreBugbait(void) : "Ignore bugbait"
input HearBugbait(void) : "Hear bugbait"
output OnReachedFightGoal(void) : "Fires when the antlion reaches his specified fight-to location"
output OnUnBurrowed(void) : "Fires when the antlion unburrows"
]
@NPCClass base(InhabitableNPC) studio("models/antlion_guard.mdl") = npc_antlionguard_normal : "Antlion Guard"
[
spawnflags(Flags) =
[
65536 : "Create server-side ragdoll on death" : 0
131072 : "Use inside footsteps" : 0
]
startburrowed(choices) : "Start Burrowed" : "No" =
[
0 : "No"
1 : "Yes"
]
allowbark(choices) : "Allow Bark" : "No" =
[
0 : "No"
1 : "Yes"
]
shovetargets(string) : "Shove Targets" : ""
// Inputs
input Unburrow(void) : "Unburrow from the ground"
input SetShoveTarget(string) : "Sets a shove target to attack"
input SetChargeTarget(string) : "Sets a charge target to attack. Parameters are the name of the entity to start at and the name of the entity to charge towards, separated by a space (i.e. start target)"
input ClearChargeTarget(void) : "Clear the charge target"
input SetCoverFromAttack(integer) : "Sets whether or not the creature will protect itself from attacks"
input Ragdoll(void) : "Causes the antlion guard to die, regardless of health"
input EnableBark(void) : "Allow the antlion guard to try and summon antlions"
input DisableBark(void) : "Stop the antlion guard from trying to summon antlions"
input InvestigateHint(string) : "Sniff around at a hint group until told otherwise"
input StopInvestigating(void) : "Stop trying to sniff out the player"
input EnablePreferPhysicsAttack(void) : "Prefer to use physics attacks if at all possible, even when inside a cavern."
input DisablePreferPhysicsAttack(void) : "Do not prefer to use physics attacks if at all possible, even when inside a cavern."
// Outputs
output OnSeeHiddenPlayer(void) : "Fires when the current enemy is seen while trying to hide"
output OnSmellHiddenPlayer(void) : "Fires when the current enemy is smelled while trying to hide"
output OnSummon(void) : "Antlion guard is attempting to summon antlions"
]
@NPCClass base(npc_antlionguard_normal) studio("models/antlion_guard.mdl") = npc_antlionguard_cavern : "Antlion Guardian"
[
]
@BaseClass base(InhabitableNPC) = BaseHeadcrab
[
startburrowed(choices) : "Start burrowed" : "No" =
[
0 : "No"
1 : "Yes"
]
spawnflags(flags) =
[
65536 : "Start hidden" : 0
131072 : "Start hanging from ceiling" : 0
]
input StartHangingFromCeiling(void) : "Start hanging from ceiling."
input DropFromCeiling(void) : "Drop if hanging from ceiling."
]
@NPCClass base(BaseHeadcrab, Parentname) studio("models/Headcrabclassic.mdl") = npc_headcrab : "Headcrab"
[
]
@NPCClass base(BaseHeadcrab) studio("models/Headcrab.mdl") = npc_headcrab_fast : "Fast Headcrab"
[
]
@NPCClass base(BaseHeadcrab) studio("models/Headcrabblack.mdl") = npc_headcrab_poison : "Poison Headcrab"
[
]
@PointClass base(Parentname,Angles,Targetname) sphere(DamageRadius) studio("models/props_combine/headcrabcannister01b.mdl") = env_headcrabcanister : "Headcrab canister"
[
spawnflags(Flags) =
[
1 : "No Impact Sound" : 0
2 : "No Launch Sound" : 0
4096 : "Start Impacted" : 0
8192 : "Land at initial position" : 0
16384 : "Wait for input to open" : 0
32768 : "Wait for input to spawn headcrabs" : 0
65536 : "No smoke" : 0
131072 : "No shake" : 0
262144 : "Remove on impact" : 0
524288 : "No impact effects" : 0
]
HeadcrabType(choices) : "Which headcrab to spawn?" : 0 =
[
0 : "Normal headcrabs"
1 : "Fast Headcrabs"
2 : "Poison Headcrabs"
]
HeadcrabCount(integer) : "Headcrab count" : 6 : "Number of headcrabs to spawn on impact"
FlightSpeed(float) : "Flight Speed" : 3000 : "Speed to fly through the air"
FlightTime(float) : "Flight Time" : 5 : "Time to fly through the air in seconds"
StartingHeight(float) : "Starting Height" : 0 : "Relative height from the landing position at which the canister should be launched. Positive values mean launch it above the impact point, negative values mean launch it below."
MinSkyboxRefireTime(float) : "Min Refire Time" : 0 : "Min number of seconds before the cannister is refired. This will only work for cannisters placed in the skybox."
MaxSkyboxRefireTime(float) : "Max Refire Time" : 0 : "Max number of seconds before the cannister is refired. This will only work for cannisters placed in the skybox."
SkyboxCannisterCount(integer) : "Cannister count" : 1 : "Number of cannisters to fire in the skybox (0 means fire continuously, forever)."
Damage(float) : "Impact damage" : 150 : "Max damage the canister applies on impact"
DamageRadius(float) : "Impact damage radius": 750 : "Max radius of the impact damage for the canister"
SmokeLifetime(float) : "Smoke Duration" : 30 : "Duration that the canister smokes. -1 means always smoke."
LaunchPositionName(target_destination) : "Launch Position Name" : "" : "If the canister should launch to it's origin from another point within the world, this should specify an info_target at the launch origin."
// Inputs
input FireCanister(void) : "Fire the canister"
input OpenCanister(void) : "Opens the canister (must be called after the OnImpacted output is fired)"
input SpawnHeadcrabs(void) : "Spawns headcrabs (must be called after the OnImpacted output is fired and after OpenCanister is triggered, if the Wait for Input to open spawnflag is checked.)"
input StopSmoke(void) : "Stops the smoke if it's on"
// Outputs
output OnLaunched(string) : "Fired when the canister is launched"
output OnImpacted(void) : "Fires when canister hits the ground"
output OnOpened(void) : "Fires when canister has finished opening"
]
@NPCClass base(Parentname, BaseNPC) iconsprite("editor/bullseye.vmt") color(255 0 0) = npc_bullseye : "Bullseye"
[
// Unlike other NPCs level designers are allowed to set the health on bullseyes
health(Integer) : "Health" : 35
minangle(string) : "Minimum Angle" : "360" : "Angle from the bullseye required for bullseye to be a valid enemy"
mindist(string) : "Minimum Distance" : "0" : "Distance from the bullseye required for bullseye to be a valid enemy"
autoaimradius(float) : "Autoaim Radius" : "0" : "Radius of autoaim influence. Use ent_autoaim <picker> to visualize."
faction(choices) : "Faction": 0 : "Faction this bullseye is a member of." =
[
0 : "None"
1 : "Marines"
2 : "Aliens"
3 : "Bait"
4 : "Neutral"
5 : "Combine"
]
damagemultipliersamefaction(float) : "Same Faction Damage Scale" : "1.0" : "Amount to scale damage by when attacked by the faction the bullseye is a member of."
damagemultiplierotherfaction(float) : "Different Faction Damage Scale" : "1.0" : "Amount to scale damage by when attacked by a faction the bullseye is NOT a member of."
spawnflags(Flags) =
[
65536 : "Not Solid" : 0
131072 : "Take No Damage" : 0
262144 : "Enemy (intentional target of an NPC) Damage Only" : 0
524288 : "Bleed" : 0
1048576 : "Perfect Accuracy" : 0
2097152 : "Collide against physics objects (Creates VPhysics Shadow)" : 0
]
output OnTargeted(void) : "Fires when targeted"
output OnReleased(void) : "Fires when no longer targeted"
]
@PointClass base(Targetname, Parentname, EnableDisable) = env_sporeexplosion : "Bugbait Spore Effect"
[
spawnrate(float) : "Spawn Rate (as percentage)" : "25" : "How dense the spore effect is"
]
@PointClass base(Targetname, Parentname, Targetname, EnableDisable) = env_gunfire : "Gunfire Effect"
[
target(target_destination) : "Target" : "" : "Shoot at this target. REMEMBER - this is an effect only! It does not do damage!"
minburstsize(integer) : "Min Burst Size" : 2 : "Minimum number of rounds in a burst."
maxburstsize(integer) : "Max Burst Size" : 7 : "Maximum number of rounds in a burst."
minburstdelay(float) : "Min Delay Between Bursts" : 2 : "Minimum delay between bursts. (seconds)"
maxburstdelay(float) : "Max Delay Between Bursts" : 5 : "Maximum delay between bursts. (seconds)"
rateoffire(float) : "Rate of fire" : 10 : "Expressed as rounds per second"
spread(choices) : "Bullet spread" : 5 : "The 'cone of inaccuracy' of the shots fired by this entity." =
[
1 : "1 Degree"
5 : "5 Degrees"
10 : "10 Degrees"
15 : "15 Degrees"
]
bias(choices) : "Bullet distribution should be..." : 1 : "How to distribute bullets within the spread. Even distribution is a true scatter throughout the spread. Biased towards the outside makes the shots 'miss' the target by tending towards the outside of the spread." =
[
1 : "Evenly distributed"
-1 : "Biased towards the outside"
]
collisions(choices) : "Collision detection" : 0 : "Whether/how to handle bullet collision detection. NOTE: If you select NONE, this entity will be very cheap to use, but all bullets will stop short at their target's position in space and there will be no impact effects. Normal collision detection does the same things NPCs do when they fire their guns (except harm anything)." =
[
0 : "None. Cheap for performance."
1 : "Normal collision detection."
]
shootsound(choices) : "Shoot Sound" : "Weapon_AR2.NPC_Single" : "Gunfire sound to make" =
[
"Weapon_AR2.NPC_Single" : "AR2"
"Weapon_SMG1.NPC_Single" : "SMG1"
]
tracertype(choices) : "Tracer" : "AR2TRACER" : "Type of tracer to display" =
[
"Tracer" : "Default"
"AR2TRACER" : "AR2"
]
]
@NPCClass base(InhabitableNPC) studio("models/Zombie/fast.mdl") = npc_fastzombie : "Fast Zombie"
[
input AttachToVehicle(string) : "Attach to a specified vehicle entity"
]
@NPCClass base(InhabitableNPC) studio("models/Zombie/Fast_torso.mdl") = npc_fastzombie_torso : "Fast Zombie Torso"
[
]
@NPCClass base(InhabitableNPC) studio("models/Zombie/Classic.mdl") = npc_zombie : "Zombie"
[
]
@NPCClass base(InhabitableNPC) studio("models/Zombie/Classic_torso.mdl") = npc_zombie_torso : "Zombie Torso"
[
]
@NPCClass base(BaseNPC) studio("models/Zombie/zombie_soldier.mdl") = npc_zombine : "Combine Soldier Zombie"
[
NumGrenades(choices) : "Has Grenade?" : "1" =
[
"0" : "No"
"1" : "Yes"
]
GrenadeClass(choices) : "Grenade Type" : "npc_grenade_frag" =
[
"npc_grenade_frag" : "Half-Life 2 style"
"asw_grenade_cluster" : "Cluster"
"asw_grenade_vindicator" : "Incendiary"
"asw_grenade_freeze" : "Freeze"
"asw_boomer_blob" : "Boomer Blob"
]
GrenadeFuseLength(float) : "Fuse Length" : "3.5"
GrenadeClusters(integer) : "Grenade Clusters" : 0
input StartSprint(void) : "Forces the zombine to sprint."
input PullGrenade(void) : "Forces the zombine to pull a grenade."
]
@NPCClass base(InhabitableNPC) studio("models/Zombie/Poison.mdl") = npc_poisonzombie :
"A bloated, disgusting, fluid-spurting zombie created by a poison headcrab."
[
crabcount(choices) : "Crabs in nest" : 3 =
[
1 : "1 Crab"
2 : "2 Crabs"
3 : "3 Crabs"
]
]
@NPCClass base(BaseNPC) studio("models/combine_scanner.mdl") = npc_cscanner : "City Scanner"
[
spawnflags(Flags) =
[
65536 : "No Dynamic Light" : 0
131072: "Strider Scout Scanner" : 0
]
spotlightlength(integer) : "SpotlightLength" : 500
spotlightwidth(integer) : "SpotlightWidth" : 50
spotlightdisabled(choices) : "SpotlightDisabled" : 0 =
[
0 : "No"
1 : "Yes"
]
IsClawScanner(choices) : "Scanner Type" : 0 =
[
0 : "City Scanner"
1 : "Claw Scanner"
]
IsNeutralScanner(choices) : "Scanner Faction" : 0 =
[
0 : "Combine (attackable)"
1 : "Neutral (invulnerable)"
]
ShouldInspect(choices) : "Should inspect" : 1 =
[
0 : "No"
1 : "Yes"
]
OnlyInspectPlayers(choices) : "Only Inspect Marines" : 0 =
[
0 : "No"
1 : "Yes"
]
NeverInspectPlayers(choices) : "Never Inspect Marines" : 0 =
[
0 : "No"
1 : "Yes"
]
// Inputs
input DisableSpotlight(void) : "DisableSpotlight"
input InspectTargetPhoto(string) : "Tells the scanner to photograph the given entity, named by classname or by target name. !activator or !player works here also."
input InspectTargetSpotlight(string) : "Tells the scanner to spotlight the given entity, named by classname or by target name. !activator or !player works here also."
input InputSetFlightSpeed(integer) : "Sets the flight speed of the scanner"
input InputShouldInspect(integer) : "Set whether should inspect or not"
input SetFollowTarget(string) : "Set target to follow until told otherwise"
input ClearFollowTarget(void) : "Stop following our target"
input SetDistanceOverride(float) : "Override the distance the scanner will attempt to keep between inspection targets and itself"
input DeployMine(void) : "Drop landmine (if carrying one)"
input EquipMine(void) : "Equip with landmine"
// Outputs
output OnPhotographPlayer(void) : "Fired any time the scanner takes a picture of a marine."
output OnPhotographNPC(void) : "Fired any time the scanner takes a picture of an NPC."
]
@PointClass base(BaseNPC, RenderFields, Shadow) studio() = monster_generic : "Generic Script NPC"
[
spawnflags(Flags) =
[
65536 : "Not solid" : 0
]
model(studio) : "Model"
body(Integer) : "Body" : 0
]
@PointClass base(BaseNPC, Parentname, RenderFields, Shadow) studio() = generic_actor : "Generic Actor NPC"
[
model(studio) : "Model"
hull_name(choices) : "Hull type" : "Human" =
[
"HUMAN_HULL" : "Human"
"WIDE_HUMAN_HULL" : "Wide"
"TINY_HULL" : "Tiny"
"MEDIUM_HULL" : "Medium"
"LARGE_HULL" : "Large"
]
]
@PointClass base(BaseNPC, RenderFields, Shadow) studio() = cycler_actor : "Actor Cycler"
[
model(studio) : "Model"
Sentence(string) : "Sentence Group" : ""
input Alpha(integer) : "Set Alpha Value"
]
@PointClass base(Angles, BaseNPCMaker) iconsprite("editor/npc_maker.vmt") = npc_maker : "NPC Maker"
[
spawnflags(Flags) =
[
16 : "Fade Corpse" : 0
]
NPCType(npcclass) : "Class name of spawned NPC"
NPCTargetname(string) : "Childrens' Name"
NPCSquadname(string) : "Childrens' Squad Name"
NPCHintGroup(string) : "Childrens' Hint Group"
additionalequipment(choices) : "Weapons" : "0" =
[
"weapon_pistol" : "Pistol"
"weapon_ar2" : "AR2"
"weapon_shotgun" : "Shotgun"
"weapon_smg1" : "SMG1"
"weapon_stunstick" : "Stun Stick"
"weapon_annabelle" :"Grigori's Shotgun"
"0" : "Nothing"
]
]
@PointClass base(Angles, BaseNPCMaker) size(-8 -8 -8, 8 8 8) color(0 0 255) = npc_antlion_template_maker : "Antlion Template Maker"
[
spawnflags(Flags) =
[
1024 : "Random spawn node" : 0
2048 : "Try to spawn close to the current target" : 0
4096 : "Pick a random fight target" : 0
8192 : "Try to play blocked effects near the player" : 0
]
TemplateName(target_destination) : "Name of template NPC"
spawngroup(string) : "Spawn on Hint Group" : "" : "If specified, children will spawn on a hint node from this group, nearest the target."
spawnradius(float) : "Spawn radius" : 512 : "Target must be within this distance of any node in the hint group specified above. If the target is outside the radius, no NPC will spawn."
spawntarget(string): "Spawn target" : "" : "Targetname of the entity to try and spawn near."
fighttarget(string): "Fight target" : "" : "Targetname of an entity used as a goal for the children to fight to."
followtarget(string): "Follow target" : "" : "Targetname of an entity used as a goal for the children to follow."
vehicledistance(float): "Vehicle Spawn Distance" : "1" : "This is a modifier of the current spawn distance. Spawn distance on a vehicle is based on speed, so this is just a modifier for it."
workerspawnrate(float): "Random Worker Spawn Rate" : "0" : "Percentage chance that a spawned antlion will be a worker. (0 = no chance, 1 = 100% chance)"
ignorebugbait(choices): "Ignore Bugbait" : "0" =
[
0 : "No"
1 : "Yes"
]
pool_start(integer) : "Initial antlions in the pool." : 0 : "Number of antlions in the pool at map start."
pool_max(integer) : "Max antlions in the pool." : 0 : "Maximum number of antlions allowed in the pool. If 0, pool behavior is turned off."
pool_regen_amount(integer) : "Pool regen amount." : 0 : "This is the number of antlions added to the pool every time it regenerates."
pool_regen_time(float) : "Pool regen time." : 0 : "Time interval between pool regeneration ticks."
// Inputs
input SetFightTarget(string) : "Sets the target entity for children to fight to."
input ClearFightTarget(void) : "Clears the fight target goal for this spawner."
input SetFollowTarget(string) : "Sets the target entity for children to follow."
input ClearFollowTarget(void) : "Clears the follow target goal for this spawner."
input SetSpawnRadius(float) : "Sets the Spawn Radius."
input AddToPool(integer) : "Add the number of antlions specified in the parameter to the pool."
input SetMaxPool(integer) : "Set the maximum number of antlions allowed in the pool at any time. Setting it to 0 turns off the pool behavior."
input SetPoolRegenAmount(integer) : "Set the number of antlions added to the pool every time it regenerates."
input SetPoolRegenTime(float) : "Set the time interval between pool regeneration ticks."
input ChangeDestinationGroup(string) : "Change the spawn group for this spawner."
// Outputs
output OnAllBlocked(void) : "Fires when all the hint nodes are blocked."
createspores(choices): "Create Spore effect" : "0" =
[
0 : "No"
1 : "Yes"
]
]
@PointClass base(Targetname) sphere(repelradius) color(0 0 255) = point_antlion_repellant : "Antlion Repellant"
[
repelradius(float): "Repell radius" : 512 : "Antlions aren't allowed to be inside this radius"
input Enable(void) : "Enable"
input Disable(void) : "Disable"
]
//-------------------------------------------------------------------------
//
// Player Control Entities
//
//-------------------------------------------------------------------------
@BaseClass base(Targetname) size(-10 -10 -10, 10 10 10) color(255 0 255) = player_control
[
// Inputs
input Activate(void) : "Turns on"
input Deactivate(void) : "Turns off"
input SetThrust(string) : "Set Thrust"
input SetSideThrust(string) : "Set Side Thrust"
]
//-------------------------------------------------------------------------
//
// Scripted Events
//
//-------------------------------------------------------------------------
@BaseClass base(Targetname, Parentname, Angles) color(255 0 255) sphere(m_flRadius) = BaseScripted
[
m_iszEntity(target_destination) : "Target NPC" : : "The name or class name (such as 'npc_zombie') of an NPC to use for this script."
m_iszIdle(string) : "Pre Action Idle Animation" : "" : "The name of the sequence (such as 'idle01') or activity (such as 'ACT_IDLE') to play before the action animation if the NPC must wait for the script to be triggered. Use 'Start on Spawn' flag or MoveToPosition input to play this idle animation."
m_iszEntry(string) : "Entry Animation" : "" : "The name of the sequence (such as 'reload02') or activity (such as 'ACT_RELOAD') to play when the sequence starts, before transitioning to play the main action sequence."
m_iszPlay(string) : "Action Animation" : "" : "The name of the main sequence (such as 'reload02') or activity (such as 'ACT_RELOAD') to play."
m_iszPostIdle(string) : "Post Action Idle Animation" : "" : "The name of the sequence (such as 'idle01') or activity (such as 'ACT_IDLE') to play after the action animation."
m_iszCustomMove(string) : "Custom Move Animation" : "" : "Used in conjunction with the 'Custom movement' setting for the 'Move to Position' property, specifies the sequence (such as 'crouch_run01') or activity (such as 'ACT_RUN') to use while moving to the scripted position."
m_bLoopActionSequence(Choices) : "Loop Action Animation?" : 0 =
[
0 : "No"
1 : "Yes"
]
m_bSynchPostIdles(Choices) : "Synch Post Idles?" : 0 =
[
0 : "No"
1 : "Yes"
]
m_flRadius(integer) : "Search Radius (0=everywhere)" : 0 : "Radius to search within for an NPC to use. 0 searches everywhere."
m_flRepeat(integer) : "Repeat Rate ms" : 0
m_fMoveTo(Choices) : "Move to Position" : 1 =
[
0 : "No"
1 : "Walk"
2 : "Run"
3 : "Custom movement"
4 : "Instantaneous"
5 : "No - Turn to Face"
]
m_iszNextScript(target_destination) : "Next Script" : : "The name of the script to run immediately after this script completes. The NPC will not return to AI between the two scripts."
m_bIgnoreGravity(choices) : "Ignore Gravity on NPC during script" : 0 : "If this is set to 'Yes', the NPC will not be subject to gravity while playing this script." =
[
0 : "No"
1 : "Yes"
]
m_bDisableNPCCollisions(choices) : "Disable NPC collisions during script" : 0 : "Useful for when NPCs playing scripts must interpenetrate while riding on trains, elevators, etc. This only disables collisions between the NPCs in the script and must be enabled on BOTH scripted_sequences." =
[
0 : "No"
1 : "Yes"
]
// Inputs
input BeginSequence(void) : "Summons an NPC to act out the scripted sequence."
input MoveToPosition(void) : "Summons an NPC to the script location. They will play their scripted idle (or ACT_IDLE if none is specified) until BeginSequence is triggered."
input CancelSequence(void) : "Stops the scripted sequence. If fired after a sequence starts, this input will not take effect until the NPC finishes playing the scripted action animation."
// Outputs
output OnBeginSequence(void) : "Fires when the action animation begins playing."
output OnEndSequence(void) : "Fires when the action animation completes."
output OnCancelSequence(void) : "Fires when the sequence is cancelled."
output OnCancelFailedSequence(void) : "Fires when the sequence is cancelled without ever playing (OnCancelSequence will also fire)."
output OnScriptEvent01(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 1 } in the QC."
output OnScriptEvent02(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 2 } in the QC."
output OnScriptEvent03(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 3 } in the QC."
output OnScriptEvent04(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 4 } in the QC."
output OnScriptEvent05(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 5 } in the QC."
output OnScriptEvent06(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 6 } in the QC."
output OnScriptEvent07(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 7 } in the QC."
output OnScriptEvent08(void) : "Fires when a 'trigger' anim event occurs while playing the script. Use { event 1003 framenum 8 } in the QC."
]
@PointClass sphere() iconsprite("editor/scripted_sentence.vmt") base(Targetname) = scripted_sentence : "Scripted Sentence"
[
spawnflags(Flags) =
[
1 : "Fire Once" : 1
2 : "Followers Only" : 0
4 : "Interrupt Speech" : 1
8 : "Concurrent" : 0
16 : "Speak to Activator" : 1
]
sentence(string) : "Sentence Name" : ""
entity(string) : "Speaker Type"
delay(string) : "Additional Sentence Time" : "0"
radius(integer) : "Search Radius" : 512
refire(string) : "Delay Before Refire" : "3"
listener(string) : "Listener Type"
volume(string) : "Volume 0-10" : "10"
attenuation(Choices) : "Sound Radius" : 0 =
[
0 : "Small Radius"
1 : "Medium Radius"
2 : "Large Radius"
3 : "Play Everywhere"
]
// Inputs
input BeginSentence(void) : "Starts the scripted sentence."
// Outputs
output OnBeginSentence(void) : "Fires when the sentence begins"
output OnEndSentence(void) : "Fires when the sentence ends"
]
@PointClass base(Targetname, Parentname) iconsprite("editor/info_target.vmt") = scripted_target : "Scripted Target"
[
StartDisabled(choices) : "Start Disabled" : 1 =
[
0 : "No"
1 : "Yes"
]
m_iszEntity(npcclass) : "Target NPC"
m_flRadius(integer) : "Search Radius (0=everywhere)" : 0 : "Radius to search within for an NPC to use. 0 searches everywhere."
MoveSpeed(integer) : "Move Speed" : 5 // How quickly should target move between scripted targets
PauseDuration(integer) : "Pause Duration" : 0 // How long should target pause at scripted target
EffectDuration(integer) : "Effect Duration" : 2 // How long should any associated effect last
target(target_destination) : "Next Target" // Next scripted target
// Inputs
input Enable(void) : "Enable this entity"
input Disable(void) : "Disable this entity"
// Outputs
output AtTarget(void) : "Fires when NPC reaches this target"
output LeaveTarget(void) : "Fires when NPC leaves this target"
]
@PointClass base(Targetname) iconsprite("editor/ai_relationship.vmt") sphere() = ai_relationship :
"AI Relationship - Sets relationships between groups of NPCs in the AI."
[
subject(target_name_or_class) : "Subject(s)" : "" : "This is the NPC(s) whose disposition will change. May be a targetname or a classname."
target(target_name_or_class) : "Target(s)" : "" : "This is the NPC(s) about whom the Subject(s) will change their disposition. May be a tarGetname or a classname."
disposition(choices) : "Disposition" : 3 : "Choose the way the Subject(s) should feel about the Target(s)" =
[
// These MUST match the enum in the code! (basecombatcharacter.h)
1 : "Hate"
2 : "Fear"
3 : "Like"
4 : "Neutral"
]
radius(float) : "Radius for subject" : 0
rank(integer) : "Disposition Priority" : 0 : "How much the Subject(s) should Like/Hate/Fear the Target(s). Higher priority = stronger feeling."
StartActive(choices) : "Start Active" : 0 =
[
0 : "No"
1 : "Yes"
]
Reciprocal(choices) : "Reciprocal" : 0 : "Set this to YES to have the new relationship mirrored by Target" =
[
0 : "No"
1 : "Yes"
]
spawnflags(flags) =
[
1 : "Notify subject of target's location" : 0
2 : "Notify target of subject's location" : 0
]
// Inputs
input ApplyRelationship(void) : "Apply relationship changes. This will change all Subject entities' relationships to all Target entities. \n\nIMPORTANT: Once you ApplyRelationships, this entity is then 'ALWAYS ON' until you send a Disable input or RevertRelationship input. During the time this entity is 'ON', any entities that spawn who match the Subject or Target names will be affected. \n\nIMPORTANT: Unpredictable results may occur when two ai_relationship entities refer to the same set or subset of target or subject entities. This situation should be avoided."
input RevertRelationship(void) : "Revert relationship changes. This will return the relationship to what it was at the time the ApplyRelationship input was called (or when this ai_relationship was spawned if StartActive is set)."
input RevertToDefaultRelationship(void) : "Revert relationship changes to the default relationship, which may have changed since this ai_relationship was applied. This returns control of the entity relationship to the code."
]
@PointClass base(Targetname) = ai_ally_manager : "AI Ally Manager"
[
maxallies(integer) : "Maximum number of allies" : 5
maxmedics(integer) : "Maximum number of medics" : 1
// Inputs
input SetMaxAllies(integer) : "Set maximum number of allies"
input SetMaxMedics(integer) : "Set maximum number of medic allies"
input Replenish(void) : "Replenish player allies"
// Outputs
output SpawnMedicAlly(void) : "Spawn Medic Ally"
output SpawnAlly0(void) : "Spawn Ally 0"
output SpawnAlly1(void) : "Spawn Ally 1"
output SpawnAlly2(void) : "Spawn Ally 2"
output SpawnAlly3(void) : "Spawn Ally 3"
output SpawnAlly4(void) : "Spawn Ally 4"
output SpawnAlly5(void) : "Spawn Ally 5"
output SpawnAlly6(void) : "Spawn Ally 6"
output SpawnAlly7(void) : "Spawn Ally 7"
output SpawnAlly8(void) : "Spawn Ally 8"
output SpawnAlly9(void) : "Spawn Ally 9"
output OnZeroAllies(void) : "Fires when there are no more allies"
output OnZeroMedicAllies(void) : "Fires when there are no more allies"
]
@BaseClass base(Targetname) = LeadGoalBase
[
actor(target_name_or_class) : "Actor(s) to affect"
goal(string) : "Target Entity"
WaitPointName(target_destination) : "Point to wait at if the target's not visible"
WaitDistance(float) : "Wait until player gets this close"
LeadDistance(float) : "Lead Distance" : "64" : "The player is considered to be lagging if he's beyond this distance. The Actor will consider retrieving when the player is 4x 'Lead Distance' away."
RetrieveDistance(float) : "Retrieve Distance" : "96" : "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' * 4) to avoid the leader ping-ponging."
SuccessDistance(float) : "Success Distance" : "0" : "The distance from the player (to the NPC) that the player must be within for the Lead to succeed, once the NPC has reached the goal. If set to 0, it'll use the lead distance instead (for legacy support)."
Run(choices) : "Run instead of Walk" : "0" =
[
"0" : "No"
"1" : "Yes"
]
Retrieve(choices) : "Retrieve player?" : 1 =
[
0 : "No, just idle and wait"
1 : "Yes, move to retrieve"
]
ComingBackWaitForSpeak(choices) : "Before Coming Back, Wait for speech?" : 1 =
[
0 : "No, come back while speaking"
1 : "Yes, wait for speech to finish"
]
RetrieveWaitForSpeak(choices) : "On Retrieve, Wait for speech?" : 1 =
[
0 : "No, start leading while speaking"
1 : "Yes, wait for speech to finish"
]
DontSpeakStart(choices) : "Speak start greeting?" : 0 =
[
0 : "Yes, speak the start greeting"
1 : "No, don't speak the greeting"
]
LeadDuringCombat(choices) : "Lead during combat?" : 0 =
[
0 : "No. Stop to fight, resume leading when safe."
1 : "Yes, lead while fighting."
]
GagLeader(choices) : "Gag Leader?" : 0 =
[
0 : "No. Speak lead concepts normally, respecting other lead speech settings."
1 : "Yes, don't speak any lead concepts at all, overriding all other lead speech settings."
]
AttractPlayerConceptModifier(string) : "Attract player concept modifier" : "" : "Appended to the keyvalues passed into the response rules when the 'TLK_LEAD_ATTRACTPLAYER' concept is spoken."
WaitOverConceptModifier(string) : "Player wait over concept modifier" : "" : "Appended to the keyvalues passed into the response rules when the 'TLK_LEAD_WAITOVER' concept is spoken."
ArrivalConceptModifier(string) : "Arrival concept modifier" : "" : "Appended to the keyvalues passed into the response rules when the 'TLK_LEAD_ARRIVAL' concept is spoken."
PostArrivalConceptModifier(string) : "Post-arrival concepts modifier"
SuccessConceptModifier(string) : "Success concept modifier" : "" : "Appended to the keyvalues passed into the response rules when the 'TLK_LEAD_SUCCESS' concept is spoken."
FailureConceptModifier(string) : "Failure concept modifier" : "" : "Appended to the keyvalues passed into the response rules when the 'lead_fail' concept is spoken."
ComingBackConceptModifier(string) : "Coming Back concept modifier" : "" : "Appended to the keyvalues passed into the response rules when the 'TLK_LEAD_RETRIEVE' concept is spoken. Spoken as the NPC starts returning to the player to retrieve him."
RetrieveConceptModifier(string) : "Retrieve concept modifier" : "" : "Appended to the keyvalues passed into the response rules when the 'TLK_LEAD_COMINGBACK' concept is spoken. Spoken when NPC has finally reached the player to retrieve him."
// Spawnflags
spawnflags(Flags) =
[
1 : "No def success" : 0
2 : "No def failure" : 0
4 : "Use goal facing" : 1
]
// Inputs
input Activate( void ) : "Begin the leading behavior"
input Deactivate( void ) : "Stop the leading behavior"
input SetSuccess( void ) : "Notify success of leading"
input SetFailure( void ) : "Notify failure of leading"
// Outputs
output OnArrival( void ) : "Fires when NPC reaches the lead point"
output OnArrivalDone( void ) : "Fires when NPC has played out any arrival speech"
output OnSuccess( void ) : "Fires when NPC achieves the goal"
output OnFailure( void ) : "Fires when NPC fails to achieves the goal"
output OnDone( void ) : "Fires when NPC completes behavior (any post-success or fail acting is complete)"
]
@PointClass base(LeadGoalBase) iconsprite("editor/ai_goal_lead.vmt") = ai_goal_lead : "AI Goal Lead"
[
SearchType(choices) : "Search Type" : 0 : "How to search for the entities using the targetname." =
[
0 : "Entity Name"
1 : "Classname"
]
]
@PointClass base(LeadGoalBase) iconsprite("editor/ai_goal_lead.vmt") = ai_goal_lead_weapon :
"AI Goal Lead (Weapon). A version of the ai_goal_lead entity that requires the player to have the specified weapon before the Actor(s) will lead the player to their target."
[
WeaponName(choices) : "Weapon" : "weapon_bugbait" =
[
"weapon_bugbait" : "Bugbait"
"weapon_smg1" : "SMG1"
"weapon_ar2" : "AR2"
]
MissingWeaponConceptModifier(string) : "Missing weapon concept modifier"
SearchType(choices) : "Search Type" : 0 : "How to search for the entities using the targetname." =
[
0 : "Entity Name"
1 : "Classname"
]
]
@BaseClass base(Targetname) = FollowGoal
[
actor(target_name_or_class) : "Actor(s) to affect"
goal(string) : "Target Entity" : : "The name of the entity to follow. If blank, and the actor likes the player, then defaults to player"
SearchType(choices) : "Search Type" : 0 : "How to search for the entities using the targetname." =
[
0 : "Entity Name"
1 : "Classname"
]
StartActive(choices) : "Start Active" : 0 =
[
0 : "No"
1 : "Yes"
]
MaximumState(choices) : "Maximum state" : 1 =
[
1 : "Idle"
2 : "Alert"
3 : "Combat"
]
Formation(choices) : "Formation" : 0 =
[
0 : "Close circle"
1 : "Wide circle"
5 : "Medium circle"
6 : "Sidekick"
8 : "Vortigaunt"
]
// Inputs
input Activate( void ) : "Begin the follow behavior"
input Deactivate( void ) : "Cease the follow behavior"
]
@PointClass base(FollowGoal) iconsprite("editor/ai_goal_follow.vmt") = ai_goal_follow : "AI Goal Follow"
[
]
@PointClass base(FollowGoal) iconsprite("editor/ai_goal_follow.vmt") = ai_goal_injured_follow : "AI Goal Injured Follow"
[
]
@PointClass size( -4 -4 -4, 4 4 4 ) base(Targetname, Angles, Parentname) studio("models/pigeon.mdl") = ai_battle_line : "Battle line"
[
// Spawnflags
spawnflags(Flags) =
[
1 : "Use parent's orientation" : 0
]
actor(target_name_or_class) : "Actor(s) or squad to affect"
Active(choices) : "Active" : 0 =
[
0 : "No"
1 : "Yes"
]
Strict(choices) : "Strict" : 1 : "Player orders can override, applies to allies only" =
[
0 : "No"