forked from muddasheep/hqtrilogy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathspirit18.fgd
6215 lines (5918 loc) · 196 KB
/
spirit18.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
// Spirit of Half-Life v1.8 FGD
// For WorldCraft 3.5+ and Half-Life 1.1.0.8+
// Last update: 9th March 2008
// Created by Laurie Cheers - http://www.bearkey.com/?laurie
// Additions by Shambler Team - http://shamteam.cbi.ru/
// Additions by Killar - http://www.bearkey.com/?killar
// Additions by Confused - http://www.bearkey.com/?confused
// Additions by Mike - http://www.bearkey.com/?mike2k
// Additions by ytiAdmin - http://www.bearkey.com/?ytiadmin
// Additions by DeathWish - http://www.bearkey.com/?deathwish
// In textpad use regular expression ^[\t ]*//.*\n to remove ALL comments
//INFO
//
// For any "target" type value, you can use a "+" or "-" prefix to
// specify that the target should be turned on or off, respectively.
// (e.g. suppose you have an entity which targets "mylight". If you tell it
// to target "+mylight" instead, then it will only turn the light on, never
// off.)
// Similarly, for any Master, you can invert the master relationship (that
// is, you can disable the entity whenever the master <u>is</u> on) by
// adding a tilde (~) at the start of the master's name.
//
// When testing your level, it's sometimes helpful to be able to trigger
// entities manually. To trigger an entity named "mydoor", you can simply
// type "fire mydoor" at the console.
// Similarly, if you just type "fire", you will trigger whatever entity the
// player is aiming at.
// NB: this command will only work if sv_cheats is set to 1.
//
//ENDS
//
// Worldspawn
//
//* Edit Worldspawn's properties from the map menu ["Map \ Map Properties..."]
@SolidClass = worldspawn : "World entity"
[
message(string) : "Map Description / Title"
skyname(string) : "environment map (cl_skyname)"
sounds(integer) : "CD track to play" : 1
light(integer) : "Default light level"
WaveHeight(string) : "Default Wave Height" : "0.0"
MaxRange(string) : "Max viewable distance" : "4096"
chaptertitle(string) : "Chapter Title Message"
startdark(choices) : "Level Fade In" : 0 =
[
0 : "No"
1 : "Yes"
]
gametitle(choices) : "Display 'Half-Life' title?" : 0 =
[
0 : "No"
1 : "Yes"
]
newunit(choices) : "Flush global entities?" : 0 =
[
0 : "No, keep global ents"
1 : "Yes, flush global ents"
]
mapteams(string) : "Map Team List"
defaultteam(choices) : "Default Team" : 0 =
[
0 : "Fewest Players"
1 : "First Team"
]
//NEW 0.3
//* Yes means the player will start this level wearing an HEV suit.
startsuit(choices) : "HEV from start" =
[
0 : "No"
1 : "Yes"
]
//NEW 0.4
//* Yes means that monsters will appear in multiplayer games. This has no effect in a single player level.
allowmonsters(choices) : "Allow Monsters (MP only)" =
[
0 : "No"
1 : "Yes"
]
//NEW 1.4
// Yes means the player may Gauss Jump in singleplayer. This has no effect in a multi player level.
allow_sp_gjump(choices) : "Allow SP Gauss Jump" =
[
0 : "No (Default)"
1 : "Yes"
]
//NEW 1.5
// Yes means the player continues to take damage from rad/tox/poison even after leaving the area
timed_damage(choices) : "Enable timed damage rad/tox/poison" : 1 =
[
0 : "No"
1 : "Yes (Default)"
]
//NEW 1.5
// The maximum number of cameras a player is allowed in his inventory at any one time.
max_cameras(integer) : "Max cameras in players inventory" : 2
//NEW 1.5
// The maximum medical kit charge a player can have at one time. Excess is not wasted on picking up a medkit
max_medkit(integer) : "Max TOTAL medkit charge" : 200
]
//
// BaseClasses
//
@BaseClass = Sequence
[
sequence(integer) : "Animation Sequence (editor)"
]
//* "ZHLTReference.html" (included with the ZHLT Distribution) contains information on using these keys.
@BaseClass = ZHLTLightKeys
[
zhlt_lightflags(choices) : "HLRAD Opacity (ZHLT 2.5.1+)" : 0 =
[
0: "Normal (0)"
1: "Embedded Fix (1)"
2: "Opaque (Blocks light) (2)"
3: "Opaque + Embedded Fix (3)"
6: "ConcaveFix (6)"
]
light_origin(string) : "Light Origin (ZHLT 2.5.1+)"
]
@BaseClass = ZhltLights
[
_fade(integer) : "Fade (ZHLT 2.5.1+)"
_falloff(choices) : "Falloff (ZHLT 2.5.1+)" : 2 =
[
1: "Inverse Square (1)"
2: "Inverse Linear (2)"
]
]
@BaseClass = TexLight
[
//NEW 1.0
style(choices) : "Texlight style" : 0 =
[
0 : "Normal (on)"
10: "Fluorescent flicker"
2 : "Slow, strong pulse"
11: "Slow pulse, noblack"
5 : "Gentle pulse"
1 : "Flicker A"
6 : "Flicker B"
3 : "Candle A"
7 : "Candle B"
8 : "Candle C"
4 : "Fast strobe"
9 : "Slow strobe"
12: "Underwater"
]
]
@BaseClass = SwitchTexLight
[
//NEW 1.0
style(choices) : "Texlight style" : 0 =
[
0 : "Normal (on)"
-1: "Switchable (starts on)"
-2: "Switchable (starts off)"
10: "Fluorescent flicker"
2 : "Slow, strong pulse"
11: "Slow pulse, noblack"
5 : "Gentle pulse"
1 : "Flicker A"
6 : "Flicker B"
3 : "Candle A"
7 : "Candle B"
8 : "Candle C"
4 : "Fast strobe"
9 : "Slow strobe"
12: "Underwater"
]
]
@BaseClass = Appearflags
[
//NEW 0.6
skill(choices) : "Skill setting" : 0 =
[
0 : "All skills"
1 : "Not in easy"
2 : "Not in medium"
4 : "Not in hard"
6 : "Only in easy"
5 : "Only in medium"
3 : "Only in hard"
]
spawnflags(Flags) =
[
2048 : "Not in Deathmatch" : 0
]
]
@BaseClass = Angles
[
angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0"
]
@BaseClass = Targetname
[
targetname(target_source) : "Name"
]
@BaseClass = Target
[
target(target_destination) : "Target"
]
@BaseClass = MoveWith
[
//NEW 0.3
movewith(target_destination) : "Moves with"
]
@BaseClass = Master
[
master(string) : "Master"
]
@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Angles, Appearflags) = Weapon
[
master(string) : "Item Lock Master"
]
@BaseClass base(Weapon) color(80 0 200) = Ammo []
@BaseClass = Global
[
globalname(string) : "Global Entity Name"
]
@BaseClass = Delay
[
delay(string) : "Delay before trigger" : "0"
]
@BaseClass = Killtarget
[
killtarget(target_destination) : "KillTarget"
]
@BaseClass base(Target, Delay, Killtarget) = Targetx []
@BaseClass = RenderFxChoices
[
renderfx(choices) : "Render FX" : 0 =
[
0: "Normal"
//* Additive or Texture mode only.
1: "Slow Pulse"
//* Additive or Texture mode only.
2: "Fast Pulse"
//* Additive or Texture mode only.
3: "Slow Wide Pulse"
4: "Fast Wide Pulse"
9: "Slow Strobe"
10: "Fast Strobe"
11: "Faster Strobe"
12: "Slow Flicker"
13: "Fast Flicker"
//These don't seem to do anything. Correct me if I'm wrong...
// 5: "Slow Fade Away"
// 6: "Fast Fade Away"
// 7: "Slow Become Solid"
// 8: "Fast Become Solid"
//* This setting only affects the Glow rendermode. With this setting, Glow mode behaves
//* exactly like Additive mode - except that (as is usual for Glow mode) the sprite isn't
//* obscured by intervening sprites or models. (Hmm. Call me slow, but..... how is this
//* useful?)
14: "Constant Glow (Sprites)"
15: "Distort (Models)"
16: "Hologram (Distort + fade)"
//* Strange effect. As seen, briefly, when a Gargantua dies.
18: "Bulge Sideways (Models)"
//* Quite pretty. As seen in Valve's mod Deathmatch Classic.
19: "Glowing Aura (Models)"
//NEW 1.0
//* Draw a reflection under this model's feet.
21: "Reflection (Models)"
//NEW 1.4
22: "Entity in PVS"
]
]
@BaseClass = RenderMode
[
rendermode(choices) : "Render Mode" : 0 =
[
0: "Normal"
//* For BSP objects, the object will be rendered as a pure area of whatever
//* color is specified in FX Color.
//* For models and sprites, this is the same as Normal mode.
1: "Pure Color"
//* For BSP objects, the object will be rendered without shadows.
//* For models and sprites, this is the same as Normal mode, except that the Pulse
//* renderfx settings work.
2: "Texture"
//* Like additive, but as the player gets further from the sprite, it gets
//* progressively larger and more transparent. The sprite is also not obscured by
//* intervening models, which can sometimes look bad.
//* Alphatest sprites won't use their masks in this mode.
3: "Glow (sprites only)"
//* For BSP objects, this only affects textures beginning with {. Blue pixels
//* will be transparent; non-blue pixels will be solid.
//* For models, this mode is the same as Normal mode.
//* For sprites, this mode is for displaying sprites in Indexalpha mode - i.e.
//* the palette positions are used as opacity settings; 0 for fully transparent,
//* and 255 for fully opaque, regardless of what the palette colors actually are.
//* The only palette colour that will be used is the last one, which sets the
//* colour for the whole sprite. (Needless to say, this will look odd unless the
//* sprite is designed to be displayed this way!)
//* Oddly, Alphatest sprites won't use their masks in this mode.
4: "Solid"
//* Only bright parts of the object are visible; darker parts are just more
//* transparent, and black is not drawn. Useful for making lighting or hologram
//* effects.
5: "Additive"
]
]
@BaseClass base(RenderFxChoices, RenderMode) = RenderFields
[
renderamt(integer) : "FX Amount (1 - 255)" : 0
rendercolor(color255) : "FX Color (R G B)" : "0 0 0"
]
@BaseClass base(RenderFxChoices, RenderMode) = RenderFieldsMax
[
renderamt(integer) : "FX Amount (1 - 255)" : 255
rendercolor(color255) : "FX Color (R G B)" : "255 255 255"
]
@BaseClass = LockSounds
[
//* The locked sound & sentence will be played if:
//* 1) The player walks into a door which has a name. (and Force Touchable isn't selected.)
//* 2) A door/button with a master gets activated, but the master is disabled.
//*
//* The number against each sound corresponds to the wav file played.
//* e.g. Buzz (10) plays "buttons/button10.wav".
locked_sound(choices) : "Locked Sound" : 0 =
[
0 : "None"
2 : "Access Denied (2)"
8 : "Small zap (8)"
10: "Buzz (10)"
11: "Buzz Off (11)"
12: "Latch Locked (12)"
]
//* The unlocked sound & sentence will be played whenever a door starts to open and whenever
//* a button starts to push in. (They will never be played when a door starts to close, even if
//* "Toggle" is selected.)
//*
//* The number against each sound (except lightswitch) corresponds to the wav file played.
//* e.g. Buzz (10) plays "buttons/button10.wav".
unlocked_sound(choices) : "Unlocked Sound" : 0 =
[
0 : "None"
1 : "Big zap & Warmup (1)"
3 : "Access Granted (3)"
4 : "Quick Combolock (4)"
5 : "Power Deadbolt 1 (5)"
6 : "Power Deadbolt 2 (6)"
7 : "Plunger (7)"
8 : "Small zap (8)"
9 : "Keycard Sound (9)"
10: "Buzz (10)"
13: "Latch Unlocked (13)"
14: "Lightswitch"
]
//* The letters correspond to the sentence group played (see sound/sentences.txt);
//* e.g. Blast Door (NF) will cycle through NF0, NF1 and NF3.
locked_sentence(choices) : "Locked Sentence" : 0 =
[
0: "None"
1: "Gen. Access Denied (NA)"
2: "Security Lockout (ND)"
3: "Blast Door (NF)"
4: "Fire Door (NFIRE)"
5: "Chemical Door (NCHEM)"
6: "Radiation Door (NRAD)"
7: "Gen. Containment (NCON)"
8: "Maintenance Door (NH)"
9: "Broken Shut Door (NG)"
]
//* The letters correspond to the sentence group played (see sound/sentences.txt);
//* e.g. Blast Door (EF) will cycle through EF0, EF1 and EF3.
unlocked_sentence(choices) : "Unlocked Sentence" : 0 =
[
0: "None"
1: "Gen. Access Granted (EA)"
2: "Security Disengaged (ED)"
3: "Blast Door (EF)"
4: "Fire Door (EFIRE)"
5: "Chemical Door (ECHEM)"
6: "Radiation Door (ERAD)"
7: "Gen. Containment (ECON)"
8: "Maintenance area (EH)"
]
]
@BaseClass base(Appearflags, Angles) size(-16 -16 -36, 16 16 36) color(0 255 0) = PlayerClass []
@BaseClass base(Targetname, Angles, RenderFields, Appearflags) color(0 200 200) = Monster
[
//NEW 0.7.1
health(integer) : "Initial health (0 = normal)"
//NEW 0.7.1
//* Be careful when changing this - a monster's actions are tied closely to its model.
model(studio) : "Model (e.g. models/can.mdl)"
//NEW 0.7.1
skin(integer) : "Skin"
//NEW 1.0
scale(string) : "Scale (1.0 = normal size)"
target(string) : "Patrol Path"
//NEW 0.4
//* If you just want a monster to be ignored, use the "Prisoner" flag instead.
m_iClass(choices) : "Behave as" : 0 =
[
0 : "Normal"
//* Likes players and barneys; hates Human Military and most aliens; scared of Alien Military and Bullsquids.
3 : "Scientist"
//* Likes players and scientists; dislikes Machines, Human Military, and all aliens.
11: "Barney"
//* Dislikes scientists and most aliens. Hates players, barneys and Alien Military.
4 : "Human Military"
//* Machines go clang when hit, and never gib. Bioweapons (Snarks and Hornets) ignore them.
//* Otherwise, they're pretty much like Human Military.
1 : "Machine (Human Military)"
//* Hates players and Human Military. Dislikes Machines, scientists and barneys.
5 : "Alien Military"
//* Dislikes Machines and all humans.
7 : "Other Alien"
//* Dislikes all humans. Scared of Bullsquids.
8 : "Headcrab"
//* Hates Headcrabs. Dislikes humans and other Bullsquids.
9 : "Bullsquid"
//* Dislikes everyone, except other Faction A members.
14 : "Faction A"
//* Dislikes everyone, except other Faction B members.
15 : "Faction B"
//* Dislikes everyone, except other Faction C members.
16 : "Faction C"
]
//NEW 0.5
//* Replaces the old "Player Ally" flag.
m_iPlayerReact(choices) : "Reaction to player" : 0 =
[
0 : "Normal"
1 : "Ignore"
//* Scientists usually use this behaviour.
2 : "Friendly until hurt"
//* Barneys usually use this behaviour.
3 : "Friendly unless provoked"
4 : "Enemy"
// Not yet implemented, but will allow any monster to act like a barney/scientist.
//5 : "Follower"
]
TriggerTarget(String) : "TriggerTarget"
TriggerCondition(Choices) : "Trigger Condition" =
[
0 : "No Trigger"
1 : "See Player, Mad at Player"
2 : "Take Damage"
3 : "50% Health Remaining"
4 : "Death"
7 : "Hear World"
8 : "Hear Player"
9 : "Hear Combat"
10: "See Player Unconditional"
11: "See Player, Not In Combat"
]
spawnflags(Flags) =
[
//* Don't attack the player until s/he can see us.
1 : "WaitTillSeen" : 0
//* Don't speak except when in combat. Don't make "idle" noises.
2 : "Gag" : 0
//* If ticked, the monster can't enter a func_monsterclip area.
4 : "Monster Clip" : 0
//* If ticked, the monster will ignore all other monsters and vice versa.
16: "Prisoner" : 0
//NEW 0.4
//* The dreaded yellow blobs appear for a good reason; they show a monster is stuck
//* in a wall and unable to move. Only tick this if you're happy for it to be stuck.
128: "No yellow blobs" : 0
512: "Fade Corpse" : 0
]
]
@BaseClass = TalkMonster
[
//* The sentence (see sound/sentences.txt) to speak when the player tells us to follow.
UseSentence(String) : "Use Sentence"
//* The sentence to speak when the player tells us to stop following.
UnUseSentence(String) : "Un-Use Sentence"
//NEW 0.4
//* The sentence to speak when refusing to follow the player.
RefusalSentence(String) : "Refusal Sentence"
//NEW 0.4
//* While locked by the master, this monster will refuse to follow the player.
master(String) : "Master (prevents following)"
//NEW 0.4
//* Mostly provided for mod-makers. In the standard sentences.txt, valid settings for
//* this are BA (speak as a Barney) and SC (speak as a Scientist). To define a
//* speech group "XX", you need to define sentences XX_ANSWER, XX_QUESTION, XX_IDLE,
//* XX_STARE, XX_OK, XX_WAIT, XX_STOP, XX_NOSHOOT, XX_HELLO, XX_SMELL, XX_WOUND and
//* XX_MORTAL. (as well as some others, if the monsters are going to be Pre-Disaster.)
SpeakAs(string) : "Speech Group"
spawnflags(Flags) =
[
//* Unless given a Master, a pre-disaster monster will refuse to follow the player.
256: "Pre-Disaster" : 0
]
]
@BaseClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) = gibshooterbase
[
//* The number of pieces to create.
m_iGibs(integer) : "Number of shots" : 1
//* Delay (in seconds) between shots. If 0, all the shots are fired at once.
delay(string) : "Delay between shots" : "0"
m_iszPosition(string) : "At position (blank = here) [LP]"
m_iszVelocity(string) : "At velocity (blank = angle) [LV]"
//* How fast the gibs are fired
m_flVelocity(string) : "Gib Speed Factor [LN]" : "200"
//* Course variance
m_flVariance(string) : "Course Variance" : "0.15"
//* Time in seconds for gibs to live, +/- 5%
m_flGibLife(string) : "Shot lifetime (secs)" : "4"
m_iszTargetName(string) : "Shot's name"
//NEW 0.7.1
//* If you want to change the behaviour of the shot, this is the field to use -
//* for example, you could target a motion_manager here, to change the shot's movement.
m_iszSpawnTarget(string) : "Fire on spawn (locus = shot)"
spawnflags(Flags) =
[
1 : "Repeatable" : 0
4 : "Debug" : 0
]
]
@BaseClass = Light
[
//* Don't create a light whose name begins with "light" - a bug/feature in RAD means
//* that such a light won't be able to switch on and off.
targetname(target_source) : "Name"
_light(color255) : "Brightness" : "255 255 128 200"
//* This field will have no effect on a dynamic (i.e. named) light.
style(Choices) : "Appearance (static)" : 0 =
[
0 : "Normal (on)"
10: "Fluorescent flicker"
2 : "Slow, strong pulse"
11: "Slow pulse, noblack"
5 : "Gentle pulse"
1 : "Flicker A"
6 : "Flicker B"
3 : "Candle A"
7 : "Candle B"
8 : "Candle C"
4 : "Fast strobe"
9 : "Slow strobe"
12: "Underwater"
]
//* This field will have no effect on a static (i.e. nameless) light.
//* 'a' is dark, 'm' is normal brightness, 'z' is full brightness.
//* There's no support for a light to have a custom appearances when it's in a
//* state other than 'on'. See @trigger_lightstyle if you need this effect.
pattern(string) : "Custom Appearance (on)"
//NEW 0.3
//* This field will have no effect on a static (i.e. nameless) light.
m_iOnStyle(Choices) : "Appearance (on)" : 0 =
[
0 : "Normal (on)"
13: "Off"
10: "Fluorescent flicker"
2 : "Slow, strong pulse"
11: "Slow pulse, noblack"
5 : "Gentle pulse"
1 : "Flicker A"
6 : "Flicker B"
3 : "Candle A"
7 : "Candle B"
8 : "Candle C"
4 : "Fast strobe"
9 : "Slow strobe"
12: "Underwater"
]
//NEW 0.3
//* This field will have no effect on a static (i.e. nameless) light.
m_iOffStyle(Choices) : "Appearance (off)" : 0 =
[
0: "Normal (off)"
20: "On"
10: "Fluorescent flicker"
2 : "Slow, strong pulse"
11: "Slow pulse, noblack"
5 : "Gentle pulse"
1 : "Flicker A"
6 : "Flicker B"
3 : "Candle A"
7 : "Candle B"
8 : "Candle C"
4 : "Fast strobe"
9 : "Slow strobe"
12: "Underwater"
]
//NEW 0.3
m_iTurnOnTime(integer) : "Time taken to turn on (secs)" : 0
//NEW 0.3
//* This field will have no effect on a static (i.e. nameless) light.
m_iTurnOnStyle(Choices) : "Appearance (turn on)" : 0 =
[
0: "Normal (off)"
20: "On"
10: "Fluorescent flicker"
2 : "Slow, strong pulse"
11: "Slow pulse, noblack"
5 : "Gentle pulse"
1 : "Flicker A"
6 : "Flicker B"
3 : "Candle A"
7 : "Candle B"
8 : "Candle C"
4 : "Fast strobe"
9 : "Slow strobe"
12: "Underwater"
]
//NEW 0.3
m_iTurnOffTime(integer) : "Time taken to turn off (secs)" : 0
//NEW 0.3
//* This field will have no effect on a static (i.e. nameless) light.
m_iTurnOffStyle(Choices) : "Appearance (turn off)" : 0 =
[
0 : "Normal (on)"
13: "Off"
10: "Fluorescent flicker"
2 : "Slow, strong pulse"
11: "Slow pulse, noblack"
5 : "Gentle pulse"
1 : "Flicker A"
6 : "Flicker B"
3 : "Candle A"
7 : "Candle B"
8 : "Candle C"
4 : "Fast strobe"
9 : "Slow strobe"
12: "Underwater"
]
]
@BaseClass base(Targetname, Global) = Breakable
[
target(target_destination) : "Target on break"
//NEW 0.7.1
//* Whenever the breakable takes damage, this entity will be triggered, and passed
//* the position and direction of the bullet (or whatever).
whenhit(string) : "Trigger when hit (locus = position)"
health(integer) : "Strength" : 100
material(choices) : "Material type" : 0 =
[
//* <b>Gibs:</b> models/glassgibs.mdl
//* <b>Break noise:</b> debris/bustglassX.wav
//* <b>Bounce noise:</b> debris/glassX.wav
0: "Glass"
//* <b>Gibs:</b> models/woodgibs.mdl
//* <b>Break noise:</b> debris/bustcrateX.wav
//* <b>Bounce noise:</b> debris/woodX.wav
1: "Wood"
//* <b>Gibs:</b> models/metalplategibs.mdl
//* <b>Break noise:</b> debris/bustmetalX.wav
//* <b>Bounce noise:</b> debris/metalX.wav
2: "Metal"
//* <b>Gibs:</b> models/fleshgibs.mdl
//* <b>Break noise:</b> debris/bustfleshX.wav
//* <b>Bounce noise:</b> debris/fleshX.wav
3: "Flesh"
//* <b>Gibs:</b> models/cindergibs.mdl
//* <b>Break noise:</b> debris/bustconcreteX.wav
//* <b>Bounce noise:</b> debris/concreteX.wav
4: "Cinder Block"
//* <b>Gibs:</b> models/ceilinggibs.mdl
//* <b>Break noise:</b> debris/bustceilingX.wav
//* <b>Bounce noise:</b> none
5: "Ceiling Tile"
//* <b>Gibs:</b> models/computergibs.mdl
//* <b>Break noise:</b> debris/bustmetalX.wav
//* <b>Bounce noise:</b> debris/woodX.wav
//* <b>Note:</b> Generates sparks when damaged.
6: "Computer"
//* <b>Gibs:</b> models/glassgibs.mdl
//* <b>Break noise:</b> debris/bustglassX.wav
//* <b>Bounce noise:</b> debris/glassX.wav
//* <b>Note:</b> Makes ricochet noises when damaged.
7: "Unbreakable Glass"
//* <b>Gibs:</b> models/rockgibs.mdl
//* <b>Break noise:</b> debris/bustconcreteX.wav
//* <b>Bounce noise:</b> debris/concreteX.wav
8: "Rocks"
]
explosion(choices) : "Gibs Direction" : 0 =
[
0: "Random"
1: "Relative to Attack"
]
delay(string) : "Delay before fire" : "0"
//* Can be used to override the default "gibs" value for the material you've specified.
gibmodel(studio) : "Gib Model"
spawnobject(choices) : "Spawn On Break" : 0 =
[
0: "Nothing"
1: "Battery"
2: "Healthkit"
3: "9mm Handgun"
4: "9mm Clip"
5: "Machine Gun"
6: "Machine Gun Clip"
7: "Machine Gun Grenades"
8: "Shotgun"
9: "Shotgun Shells"
10: "Crossbow"
11: "Crossbow Bolts"
12: "357"
13: "357 clip"
14: "RPG"
15: "RPG Clip"
16: "Gauss clip"
17: "Hand grenade"
18: "Tripmine"
19: "Satchel Charge"
20: "Snark"
21: "Hornet Gun"
]
explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0
//NEW 0.4
respawn(choices) : "Respawn time (secs)" : 0 =
[
0: "No respawn"
-1: "Respawn when triggered"
]
//NEW 0.4
netname(string) : "Target on respawn"
spawnflags(flags) =
[
1 : "Only Trigger" : 0
2 : "Touch" : 0
4 : "Pressure" : 0
8 : "Fade Respawn" : 0
16 : "Invert Hit Vector" : 0
256: "Instant Crowbar" : 0
]
]
@BaseClass base(Appearflags) = Door
[
target(target_destination) : "Target (Always)"
//NEW 0.4
message(string) : "Target on Open"
netname(string) : "Target on Close"
killtarget(target_destination) : "KillTarget"
//NEW 0.5
//* Together with "On/Off Aware", this field replaces the old
//* "synchronised" flag.
//* When set, the door will fire its Target as soon as it
//* <u>starts</u> to move, instead of firing when it reaches the end
//* of its move.
//* (NB: the "Target on Open" and "Target on Close" fields are not
//* affected; they will still fire at the end of movement.)
immediatemode(choices) : "Fire before moving" : 0 =
[
0 : "No"
1 : "Yes"
]
//NEW 0.5
//* Together with "Fire before moving", this field replaces the old
//* "synchronised" flag.
//* When this is set, instead of always firing its target with
//* USE_TOGGLE, the door will send USE_ON when opening and USE_OFF
//* when closing. (NB: the "fire on open" and "fire on close" fields
//* will still send USE_TOGGLE.)
//* Additionally, instead of simply toggling whenever it's
//* triggered, the door will open when sent USE_ON, and close when
//* sent USE_OFF.
onoffmode(choices) : "On/Off Aware" : 0 =
[
0 : "No"
1 : "Yes"
]
speed(integer) : "Speed" : 100
//* The number against each sound corresponds to the wav file played.
//* e.g. Vacuum (4) plays "doors/doormove4.wav".
movesnd(choices) : "Move Sound" : 0 =
[
0: "No Sound"
1: "Servo (Sliding) (1)"
2: "Pneumatic (Sliding) (2)"
3: "Pneumatic (Rolling) (3)"
4: "Vacuum (4)"
5: "Power Hydraulic (5)"
6: "Large Rollers (6)"
7: "Track Door (7)"
8: "Snappy Metal Door (8)"
9: "Squeaky 1 (9)"
10: "Squeaky 2 (10)"
]
//* The number against each sound corresponds to the wav file played.
//* e.g. Chunk (4) plays "doors/doorstop4.wav".
stopsnd(choices) : "Stop Sound" : 0 =
[
0: "No Sound"
1: "Clang with brake (1)"
2: "Clang reverb (2)"
3: "Ratchet Stop (3)"
4: "Chunk (4)"
5: "Light airbrake (5)"
6: "Metal Slide Stop (6)"
7: "Metal Lock Stop (7)"
8: "Snappy Metal Stop (8)"
]
//* Setting wait to -1 also prevents the door from reversing when it comes into
//* contact with the player, as seen on the bunker door in Crossfire.
//* This setting isn't recommended if the door is using MoveWith.
wait(choices) : "Delay before close" : 3 =
[
-1 : "Stays Open (-1)"
]
lip(integer) : "Lip"
dmg(integer) : "Damage inflicted when blocked" : 0
//* This delay only applies to the Target, not the Fire on Open/Close fields.
delay(integer) : "Delay before fire"
health(integer) : "Health (shoot open)" : 0
spawnflags(flags) =
[
1 : "Starts Open" : 0
4 : "Don't link" : 0
8: "Passable" : 0
32: "Toggle" : 0
256:"Use Only" : 0
512: "Monsters Can't" : 0
//NEW 0.3
//* Normally a named door, or a door with "use only" selected, won't open when touched.
//* Tick here to override that.
1024: "Force Touchable" : 0
]
_minlight(string) : "Minimum light level"
]
@BaseClass base(Targetname, Target, Angles, MoveWith, RenderFields, Global) = BaseTank
[
spawnflags(flags) =
[
//* For computer-controlled guns. The gun is 'On'- i.e. ready to fire at the player- at the start of the level.
1 : "Active" : 0
//* For computer-controlled guns. If the gun can't see the player, it won't fire.
//* (usually, for a while, the tank will keep firing at the last place it saw the player.)
2 : "Not Solid" : 0
16: "Line of Sight" : 0
//* To make a tank which the player can use, you'll also need a @func_tankcontrols entity.
32: "Controllable" : 0
//NEW 0.2
//* Makes the gun project a laser spot, similar to the player's rocket launcher.
//* This is helpful for players who are trying to aim with it.
64: "Laser Spot" : 0
//NEW 0.2
//* For player-controlled guns.
//* Makes the gun point at whatever is at the centre of the player's view, instead of simply facing the same way as the player.
128: "Match Target" : 0
]
//* Mainly for use with 1009 team settings (game_team_master)
master(string) : "(Team) Master"
//NEW 0.6
//* While this master is locked, the gun cannot fire, but the player can still control it.
//* (Intended to enable reloading effects.)
firemaster(string) : "Fire Master"
//NEW 0.7.1
//* Whenever the tank fires, this entity is triggered. (the locus for this is
//* the coordinates and direction at the end of the gun.)
m_iszLocusFire(string) : "Trigger on firing (locus = barrel)"
yawrate(string) : "Yaw rate" : "30"
yawrange(string) : "Yaw range" : "180"
yawtolerance(string) : "Yaw tolerance" : "15"
pitchrate(string) : "Pitch rate" : "0"
pitchrange(string) : "Pitch range" : "0"
pitchtolerance(string) : "Pitch tolerance" : "5"
barrel(string) : "Barrel Length" : "0"
barrely(string) : "Barrel Horizontal" : "0"
barrelz(string) : "Barrel Vertical" : "0"
spritesmoke(sprite) : "Smoke Sprite" : ""
spriteflash(sprite) : "Flash Sprite" : ""
spritescale(string) : "Sprite scale" : "1"
//* Bug fixed: rotate sound now stops when a player releases control of the gun.
rotatesound(sound) : "Rotate Sound" : ""
firerate(string) : "Rate of Fire" : "1"
bullet_damage(string) : "Damage Per Bullet" : "0"
persistence(string) : "Firing persistence" : "1"
firespread(choices) : "Bullet accuracy" : 0 =
[
0: "Perfect Shot"
1: "Small cone"
2: "Medium cone"
3: "Large cone"
4: "Extra-large cone"
]
minRange(string) : "Minmum target range" : "0"
maxRange(string) : "Maximum target range" : "0"
//NEW 0.4
m_iClass(choices) : "Behaviour" : 0 =
[
0: "Attack only players"
11: "Barney"
4: "Human Military"
5: "Alien Military"
]
_minlight(string) : "Minimum light level"
]
@BaseClass = PlatSounds
[
movesnd(choices) : "Move Sound" : 0 =
[
0: "No Sound"
//* plats/bigmove1.wav
1: "big elev 1"
//* plats/bigmove2.wav
2: "big elev 2"
//* plats/elevmove1.wav
3: "tech elev 1"
//* plats/elevmove2.wav
4: "tech elev 2"
//* plats/elevmove3.wav
5: "tech elev 3"
//* plats/freightmove1.wav
6: "freight elev 1"
//* plats/freightmove2.wav
7: "freight elev 2"
//* plats/heavymove1.wav
8: "heavy elev"
//* plats/rackmove1.wav
9: "rack elev"
//* plats/railmove1.wav
10: "rail elev"
//* plats/squeekmove1.wav
11: "squeek elev"
//* plats/talkmove1.wav
12: "odd elev 1"
//* plats/talkmove2.wav
13: "odd elev 2"
]
custommovesnd(sound) : "Custom Move Sound"
stopsnd(choices) : "Stop Sound" : 0 =
[
0: "No Sound"
//* plats/bigstop1.wav
1: "big elev stop1"
//* plats/bigstop2.wav
2: "big elev stop2"
//* plats/freightstop1.wav
3: "freight elev stop"
//* plats/heavystop2.wav
4: "heavy elev stop"
//* plats/rackstop1.wav
5: "rack stop"
//* plats/railstop1.wav
6: "rail stop"
//* plats/squeekstop1.wav
7: "squeek stop"
//* plats/talkstop1.wav
8: "quick stop"
]
customstopsnd(sound) : "Custom Stop Sound"
volume(string) : "Sound Volume 0.0 - 1.0" : "0.85"
]
@BaseClass base(Targetname, RenderFields, Global, PlatSounds) = Trackchange
[
height(integer) : "Travel altitude" : 0
spawnflags(flags) =
[
1: "Auto Activate train" : 0
2: "Relink track" : 0
8: "Start at Bottom" : 0
16: "Rotate Only" : 0
64: "X Axis" : 0
128: "Y Axis" : 0
]
rotation(integer) : "Spin amount" : 0