forked from SimsOCallaghan/ArcaneDimensions
-
Notifications
You must be signed in to change notification settings - Fork 0
/
defscustom.qc
1822 lines (1644 loc) · 91.9 KB
/
defscustom.qc
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
//======================================================================
// Author : Simon "Sock" OCallaghan
// Website: www.simonoc.com
//======================================================================
//#pragma warning disable Fxxx // How to suppress compiler warnings
nosave float configflag; // Temp cvar used to hold serverflags until live
nosave float temp1flag; // Temp cvar used to hold temp1 console flag
nosave float prethink; // runs everytime the map is start/load/quickload
nosave float postthink; // runs after the prethink conditions in postplayer
nosave float chaoscount; //
nosave float coop_cvar; // Has the coop cvar been read from console
nosave float skill_cvar; // Has the skill cvar been read from console
nosave float autoaim_cvar; // What is the current state of autoaim
nosave float mapvar_cvar; // Detects if map variables have been loaded
// Client related features
entity client_ent; // Client entity that started server
entity camera_ent; // Start of the info_intermission camera chain
entity coop_ent; // Start of the info_coop spawn locations
float coop_artifacts; // Do artifacts drop from backpacks for coop
float coop_ammoboxes; // Toggle ammo boxes respawning in coop
float coop_weapons; // Toggle weapons respawning in coop
float coop_health; // Toggle health packs respawning in coop
float coop_powerups; // Toggle powerups respawning in coop
float trig_cdtrack; // Trigger changed CD track
string trig_skybox; // Trigger changed Skybox
float engine; // Type of engine active 0=Fitz, 1=DP/FTE/QSS
float ext_active; // PR extenstions active (DP/FTE)
float ext_dpfog; // Extra DP fog parameters
float ext_dppart; // Extra DP particle system
float ext_ftepart; // Extra FTE particle system
float ext_dpsurf; // Extra DP query surface information
float ext_dprain; // Extra DP particle rain system
float ext_dpsnow; // Extra DP particle snow system
float ext_dprot; // Extra DP rotating bmodel system
float ext_fteskin; // Extra FTE skin/ladder system
float ext_frikfile; // Extra FRIK File extension system
float ext_ftestrings; // Extra FTE/QSS file extensions
float ext_sprintf; // Sprintf C code function (exposed to QC)
float pixelmode; // Change texture pixel mode (linear/nearest)
float weathersys; // Change weather particles (enable/disable)
float playerprojsize; // Player projectiles 0=Large or 1=Small
entity gibitem; // Latest gib to be generated
float gibstone; // Has stone gibs been precached
float gibpoison; // Has poison gibs been precached
float gibblood; // Has blood gibs been precached
float healthcache; // Have the Health packs been precached
float liquid_alpha; // Stores water alpha, used for monster sight checks
float map_gravity; // Current map gravity setting
float map_notargetblock; // Override for notarget blocking items
float mapstyle_start; // Starting point for compiler light styles
float map_jumpheight; // Current player jump height (def=270)
float map_bodyflrcheck; // Check floor for monster dead bodies
float map_bodyfadeaway; // Fade all dead monster bodies (time in secs)
float map_fallspeedlow; // Fall Speed for any checks (def=-300)
float map_fallspeedhigh; // Fall Speed for damage check (def=-650)
float map_fallspeeddebug; // Displays players fall velocity to console
float map_falldmg; // Fall damage for player (def=5, <-1 no dmg/sound)
float map_falldmgwater; // Fall damage into water (>0 for dmg/sound)
float map_passivestate; // All monsters are setup in a passive state
float map_notrackondeath; // Homing missiles stop tracking when monster dead
vector map_hazarddmg; // Hazard damage override (water=2/slime=4/lava=10)
vector map_plasmagundmg; // Plasma gun damage (direct, random, splash)
vector map_bleedingdmg; // Percentage reduction / HoT Qty / Initial pause
entity debugent1, debugent2, debugent3; // Used on wide visibility tests
float mod_version; // Version number of mod
float mod_patch; // Patch number of mod
float mod_beta; // Beta version of mod
// Worldspawn features
.float alpha; // Alpha value (requires modern engine)
.float gravity; // per-entity gravity (support added in engines after hipnotic xpac)
.float oldgravity; // Previous gravity setting for player
.float water_alpha; // Map specific alpha value for water surfaces
.float compilerstyle_start;// Starting point for compiler lightstyles
.float proj_shotgun; // Enable/Disable projectile shotgun
.float no_trackondeath; // Homing missiles stop tracking when monster dead
.float upgrade_axe; // Upgrade the axe with new weapon
.float upgrade_ghook; // Upgrade the axe with grapple hook
.float upgrade_ssg; // Upgrade Super Shotgun with new weapon
.float upgrade_lg; // Upgrade Lightning Gun with new weapon
.float no_item_offset; // All ammo + heal items to use central rotation
.float no_item_rotate; // Not used anymore, kept for compatibility
.float no_zaware; // Switches OFF ALL zaware monsters
.float no_sgprojectile; // Switches OFF ALL shotgun projectiles
.float no_sgcasing; // Switches OFF ALL shotgun casings
.float no_bigprojectiles; // Switches OFF large player projectiles size
.float no_liquiddmg; // Blocks liquid damage checks for monsters
.float no_moncountdevmsg; // No monster count developer messages
.float no_surfacecheck; // Stop sky brush surface checks for large maps
.float proj_noskycheck; // Stop checking for sky brushes (individual tests)
.float sprite_particles; // Forces all particles to be dots/sprites
.float knight_defskin; // Default skin (0-3) type for new knight model
.float give_weapons; // Which weapons the player always starts with
.float take_weapons; // Which weapons the player never starts with
.float no_axestart; // Removes axe and all weapons on start of map!
.float reset_health; // Reset health to this value upon spawning
.float jump_height; // The default player jump height (def=270)
.float fall_speedlow; // Fall Speed for any checks (def=-300)
.float fall_speedhigh; // Fall Speed for damage check (def=-650)
.float fall_speeddebug; // Displays players fall velocity to console
.float fall_dmg; // Fall damage for player (def=5, <-1 no dmg/sound)
.float fall_dmgwater; // Fall damage into water (>0 for dmg/sound)
.float bodyflrcheck; // Check floor for monster dead bodies
.float bodyfadeaway; // Time in seconds before body/head fades away
.float corpse_time; // Quoth version of body fade timer
.vector hazard_dmg; // Hazard damage override (water=2/slime=4/lava=10)
.vector plasmagun_dmg; // Plasma gun damage (direct, random, splash)
.vector bleeding_dmg; // Percentage reduction / HoT Qty / Initial pause
.vector player_health; // Maximum / Mega Maximum / Skill restrictions
.vector mapvar_update; // Update map variables (Range X->Y=Z)
.vector modver_check; // Mod version/patch/beta check
.vector _skyroom; // Origin for skyroom location
.string skybox; // Used by intermission camera's to change skybox
// Global fog system
float fog_active; // Global fog values are active
entity fog_control; // Global fog controller (unique to map)
.float fog_density; // Global fog density when map loads
.vector fog_colour; // Global fog colour when map loads
.string fog_dpextra; // Extra parameters for DP engine
.float fog_currden; // Current fog density
.float fog_targden; // Target fog density
.float fog_diffden; // Difference between current and target
.vector fog_currcol; // Current fog colour (RGB)
.vector fog_targcol; // Target fog colour (RBG)
.vector fog_diffcol; // Difference between current and target
.float fog_difftime; // Amount of time to fade fog (seconds)
.float fog_steptime; // Amount of steps to fade (20 per second)
// Global SKY fog system
float skyfog_active; // Global sky fog values are active
entity skyfog_control; // Global sky fog controller (unique)
.float skyfog_density; // Global sky fog density when map loads
.float skyfog_currden; // Current sky fog density
.float skyfog_targden; // Target sky fog density
.float skyfog_diffden; // Difference between current and target
.float skyfog_difftime; // Amount of time to fade sky fog (seconds)
.float skyfog_steptime; // Amount of steps to fade (20 per second)
// Cinematic Camera System
float CINECAM_SETUP = 1; // Check camera/client is correct
float cinematic_running; // QC wide flag to stop entities
float cam_startup; // Special startup for spawning players
.string cameratarget; // Camera target for spawning players
float cam_hudsize; // State of the hud layout
float cam_crosshair; // State of crosshair before cinematic
entity cam_control; // Misc camera controller
float cam_active; // Camera controller status
float cam_exit; // Exit cinematic condition
float cam_fakeplay; // Display fake player at start
entity cam_player; // Fake player at start position
entity cam_focus; // Active camera entity
entity cam_track; // Tracking entity for camera movement
entity cam_client; // Active player using system
vector cam_colour; // V_Cshift background colour
float cam_locked; // Fixed angle/direction for camera
float cam_bezier; // Camera is using bezier curves
vector cam_angle; // Direction to keep looking
float cam_fixangle; // Fixed direction for camera chain
float cam_sequence; // First or Last camera active
float cam_movement; // Camera movement flag (on/off)
.float cam_debugarrow; // Shown debug arrow for target angle
.string modeltarget; // Location for fake player model
.string returntarget; // Location for returning player
.string controltarget; // Location for bezier control point
.float focalpoint; // Always focus the camera on angletarget
.entity cam_chain; // Chain/list of debug diamonds
// Cinematic Camera Angle Smoothing System V2
vector cam_newangle; // The new angle direction to look
vector cam_lastangle; // Last value of cam_angle
float cam_lastanglevalid; // Is lastangle is valid?
.float angleblend; // Blend between current/last camera angles
float CINECAM_ANGLEBLEND = 0.03;// Camera angle blend fraction
float secloc_running; // QC flag for secret location camera
entity secloc_cam; // Camera entity keeping track of stuff
// General features
.float moditems; // New items flag for new stuff in the mod
.float permitems; // Permanant castlevania style items (powerups)
.float customkey; // Bit flag for custom keys (func_door)
.float bsporigin; // All bmodel origins are 0,0,0 check this first
.float savedeffects; // Saved effects to apply after spawn
.float nightmare; // Only spawn entity if nightmare skill active
.float cooponly; // Only spawn entity if coop gameplay active
.float mega_health; // Mega Health Maximum (checked in items.qc)
.float tog_health; // Toggle percentage for health max/mega
.entity mega_rotdown; // Entity defined on player for mega countdown
.float rotting_qty; // Total ammount to rot down (DoT)
.float startspawn2; // player_start2 unique spawn location number
.entity activate; // When something is triggered, this is the culprit!
.entity bmodel_act; // Trigger bmodel generic touch/kill/use functions
.float bboxtype; // Different types of bounding box setups
.vector bbmins; // Saved bounding box size (minimum)
.vector bbmaxs; // Saved bounding box size (maximum)
.vector idmins; // Original ID bounding box (min)
.vector idmaxs; // Used for stuck issues in original id maps
.entity touching; // The trigger entity that is touching
.string startmsg; // Start message for trigger_counter entity
.string message2; // Additional messages for all entities
.string message3; // Used by misc_books for addtional text
.string message4; // Used by misc_books for addtional text
.string target2; // Second target field (additional fires)
.string target3; // Third target field (additional fires)
.string target4; // Fourth target field (additional fires)
.string timertarget; // Timer target updated every frame tic
.string counttarget; // Count target updated for trigger_count
.void() touch2; // Used by items for final touch function
.float classtype; // Class type - used for quick reference
.float classgroup; // Class group - used for quick reference
.float classmove; // 1=Walk, 2=Fly, 4=Swim
.float classproj; // Projectile used by entity class
.float projeffect; // Special effects and states active
.float gibhealth; // The negative health value for gibbing
.float gibbed; // true/false flag on body state
.vector dmgskill; // Damage done depending on skill level
.float teledest; // Unique number for teleporter destination
.float telefxtimer; // Time between playing of sound/fx effects
.float telefixangle; // Exit angle is fixed based on destination
.float touchedvoid; // true/false flag if touched void bmodel
.float touchedliquid; // true/false flag if touched fake liquid
.string touchedsound; // Sound string for fake liquid exit
.string headmdl; // Head model for gib routine
.float bleedcolour; // Alternative colour for 'bleeding' objects
.float locksounds; // Locked sound for doors etc
.float persistentkey; // Silver/Gold/Custom key not removed on doors
.float skin_override; // Override skin selection based on world theme
.float frame_override; // Override frame number (ammo_boxes)
.float frame_box; // Set frame number for model animation (-1=random)
.float item_flrcheck; // Check the floor surface under items
.float item_tossvel; // Toss velocity upward (XYZ axis) for item
.float item_expired; // Removal timer for item in item_thinkloop
.float item_skinanim; // Does the skin require animating?
.float item_skincycle; // Skin animations are usually 0.3s (health packs)
.float item_skinanim_no; // Skin no for animation groups
.float noradiusdmg; // Block all T_RadiusDamage, stops grenade spam
.float nodebuginfo; // Blocks certain debug info for entities
.entity attachment; // 1st Entity attachment (additional model)
.entity attachment2; // 2nd entity attachment (additional model)
.entity attachment3; // 3rd entity attachment (additional model)
.float entactive; // Player particle emitter status
.entity entattachment; // Player particle emitter attachment entity
.entity sound_emitter; // Used by various entities for add sound
.float check_weather; // Checks for weather system on sound emitters
.float entno_unique; // Unique number for linking entities
.string str_unique; // Unique string name for testing
.string ckeyname1, ckeyname2, ckeyname3, ckeyname4; // Custom key netnames
.float ckeyskin1, ckeyskin2, ckeyskin3, ckeyskin4; // Custom key skins
.float ckeyhudskin; // Override of Custom key HUD skin
.float ckeyhint; // Hint to the player about inventory key
.vector anglockx, anglocky; // Angles axis (XY) lock restrictions
.float midstart; // Start func_door at 2 pos function logic
.float progspawnlist; // Item progress spawner list entity
.entity progspawncont; // Item progress controller (code generated)
// Ladder system variables for clients
.float onladder; // Update state from ladder entity to client
.float blockladder; // Block ladder touch function working
.entity entladder; // Ladder entity for reference (time, sounds etc)
.float timeladder; // Amount of time before playing climb sound
.vector orgladder; // Origin of player last time checked ladder
.float distladder; // Distance travelled on ladder
// Pressure switch/ volume trigger parameters
.float presstype; // 0/1 if touching entity type is valid
.float presstimersound; // Timer for sound FX (stops repeating)
.float no_deadbody; // Monster dead bodies don't work with trigger
// Item respawning parameter
.float respawn_time; // Amount of time to spend respawning item
.float respawn_count; // Total amount of times to respawn an item
.float respawn_trig; // Wait for a trigger before respawning
.float respawn_effect; // Show particle effect for respawning items
.float respawn_style; // Which particle colour and pattern to use
.vector respawn_ofs; // Z axis height for respawn burst
.entity respawn_part; // Respawn particle emiiter link on items
// AI Pathing (corners/trains)
.float direction; // Travel direction for func_trains
.float corner_route; // Change path_corner route (1-3 routes, 4=exact, 5=random)
.float corner_switch; // Change spawnflags REVERSE (-1=NO, 1=YES, 2=Toggle)
.float corner_pause; // Change spawnflags NOPAUSE (-1=NO, 1=YES, 2=Toggle)
.float corner_pstate; // Change monster passive state (-1=OFF, 1=ON, 2=TOGGLE)
.float corner_speed; // Change path_corner speed (def=100)
.string corner_event; // Special target event on path_corners
.string targetback; // Override backwards pathing route on path_corners
.entity movetarget2; // Additional move target for AI pathing
.entity movetarget3; // Additional move target for AI pathing
.entity movelast; // The last AI pathing corner been at
.entity movestart; // Starting AI path corner (spawning position)
// SubMoveFacingAngle parameters
.float faceangle; // Setup facing angle while moving around
.entity facetarget; // +1 path corner target for correct angle
.vector facevector; // Facing angle vector direction
.float faceangle_div; // Time division for distance (def=0.05)
.float faceangle_time; // Time when move/angle should finish
.vector faceangle_inc; // Incremental change to angle over time
.float normalangle; // Normal plane facing angle setup
// Ingame number displays
.float targetnumber; // Float number to pass to misc_targetnumber
.entity tno1, tno2, tno3, tno4, tno5, tno6, tno7, tno8; // Entity digits
// Entity state system
.float estate_trigger; // Entity state to be applied to target
.float estate; // Entity state (off,on and disable)
.void() estate_on; // Entity state ON function
.void() estate_off; // Entity state OFF function
.void() estate_disable; // Entity state DISABLE function
.void() estate_use; // Entity state USE function
.void() estate_fire; // Entity state USE++ function
.void() estate_reset; // Entity state RESET function
.void() estate_aframe; // Entity state AFRAME function
// Breakable system
.float brksound; // Initial sound type
.float brkimpsound; // Impact sound type
.float brkimpqty; // Total impact sounds setup
.float brkobjects; // Breakable sub object type
.string brkobj1; // Breakable object 1 (bsp/mdl)
.string brkobj2; // Breakable object 2 (bsp/mdl)
.string brkobj3; // Breakable object 3 (bsp/mdl)
.string brkobj4; // Breakable object 4 (bsp/mdl)
.float brkmdltype; // Breakable model setup types
.float brkobjqty; // Total breakable sub objects setup
.vector brkvelbase; // Base amount for velocity of broken parts
.vector brkveladd; // Random additions for velocity of broken parts
.float brkavel; // Amount of breaking object angle velocity
.float brkfade; // Fade time before rumble fades away
.vector brkvol; // Spawning volume for breakable point entity
.float brkgravity; // Change the gravity for rumble, useful for underwater
.float brkpuff; // Puff of smoke for model breakables
.float brkmondmg; // Damage multipler for monster attacks
.float brktrigmissile; // Trigger breakable if hit by - rocket/grenade/shalball
.float brktrigjump; // Trigger breakable if hit by jumping monster attack
.float brktrignoplayer; // Players cannot damage this breakable
.float brkdelaydamage; // Pause from damage when triggered on
// Monster features
.float bossflag; // Flag set on all bosses
.float ticktimer; // nextthink tick timer value (def=0.1)
.entity enemytarget; // flying monsters enemy target
.float enemytargetlock; // Lockout timer for enemy target
.float enemylastseen; // Last time enemy has been seen
.float enemyexit; // Not seen enemy for a while, exit combat
.float debuglvl; // Used to debug monsters behaviour
.float debugalpha; // Shows entities with alpha when testing
.float randomskin; // 0=nothing, x=random number of skins
.float exactskin; // 1-x exact skin number to choose
.float startingpose; // On spawn special starting animation set
.void() th_checkattack; // Which check attack function to use
.void() th_slide; // Mainly used by wizard monster
.void() th_charge; // Mainly used by Hell/Death Knight monsters
.void() th_altstand; // Alternative stand animation (Knights only)
.void() th_wakeup; // Special wakeup animations before combat
.void() th_jump; // Special jump animation for jumpers!
.void() th_jumpexit; // Exit animation to stop flying (stuck)
.void() th_updmissile; // Update monster missiles while flying
.void() th_gibdie; // Special function for gib death
.void() th_summon; // Special boss ONLY summon mode
.float liquidbase; // Liquid content at base of model (feet)
.float liquidcheck; // Timer to prevent over checking of liqdmg
.float liquidblock; // Cannot see through liquids for wakeup
.float distmin; // Minimum amount of distance to teleport
.float distmax; // Maximum amount of distance to teleport
.float attack_elev; // Iternative attack angle for zaware monsters
.float move_elev; // Z movement adjustment for flying units
.vector move_state; // AI state movement; Stand, Walk & Run
.float move_altwalk; // Alternative walk animation (special setup)
.float bouncegrenade; // All grenades bounce off monster body
.float reflectlightning; // All Lightning strikes are reflected
.float reflectplasma; // All plasma projectiles are reflected
.float reflectnails; // All NG/SNG projectiles are reflected
.float reflectaxe; // All axe/shadow damage is reflected
.entity reflectent; // Entity to generate lightning from
.vector attack_track; // Iternative tracking for range attacks
.vector attack_origin; // Enemy Origin for tracking range attacks
.float attack_active; // Attack state has been actived
.float attack_disabled; // Enemy origin tracking disabled
.float attack_summon; // Total amount of minions to summon
.float attack_chance; // The percentage chance the monster will attack
.float attack_speed; // Skill based adjusted projectile speed
.float attack_maxspeed; // Maximum speed of (steering) projectile
.float attack_timer; // Blocking of certain attack types (charging)
.float attack_switch; // Prevent switching of attack types
.float attack_lifetime; // Lifetime of certain projectile attacks
.float attack_count; // Total amount of consecutive attacks
.vector attack_offset; // Vector where AI fires projectiles from
.vector attack_offset2; // Second attack vector for projectiles
.vector attack_offset3; // Third attack vector for projectiles
.vector attack_offset4; // Fourth attack vector for projectiles
.float attack_rage; // Is the monster in a rage mode
.float attack_frame; // Animation attack frame limit
.float attack_angle; // Up/down rotation angle for attack vector
.float attack_sidestep; // Timer to switch sides for movement
.float attack_sidedeny; // Timer to block side movement
.float attack_instant; // No pause when waking up to attack
.float attack_sniper; // Will wake up at any range (def=1000)
.float attack_explosive; // Can attack with explosives (brk check)
.float attack_expflame; // Limit the explosive flame attacks
.float attack_ricochet; // Projectile will bounce off geo surfaces
.string attack_proj1; // Attack 1 projectile for R/B monsters
.string attack_proj2; // Attack 2 projectile for R/B monsters
.float attack_steering; // Percentage to steer by over time
.float meleeattack; // Which type of melee attack is happening
.float meleerange; // Distance used for checking melee contact
.float meleetimer; // Blood and gore sound/effect timer
.string meleehitsound; // Sound to play when melee impacts on enemy
.float meleecontact; // Flag set if monster has melee contact sound
.vector meleeoffset; // Offset for melee contact (spawning blood)
.float plasma_burn; // Timer to stop constant plasma explosions
.float weaponstate; // State of the weapon (up/down etc)
.float weaponswitch; // Switch timer for different weapons
.string weaponglow; // Special glowing model for magic attacks
.string weaponglow2; // Special glowing model for magic attacks
.float blendstart; // Starting point for a blend animation (set)
.float blenddir; // Direction of blend animation
.float blendsfx; // Sound FX type (unique table lookup)
.float velocityfriction; // Slowdown friction for flying velocity
.float bodyphased; // Used for teleporter monsters
.float bodystatic; // Used to prevent teleporting monsters
.float spawnstatue; // Start/spawn as a statue (cannot be move)
.float spawndelay; // Spawn delay once monster triggered
.float spawnnosight; // Spawn when not in sight of player
.float spawnnosighttime; // Time to wait for sight condition
.float spawnnotelefrag; // Spawn when nothing is blocking location
.float nospawndamage; // Will not do any telefrag damage on spawn
.float wakeuptrigger; // Trigger flag to use special wakeup animation
.entity turretactive; // Set when a monster touches a triggerturret
.float turrettimer; // Timer used to prevent constant spamming
.float turrethealth; // % HP for a trigger event to happen (+releases turret monsters)
.string turrettarget; // Targets to fire when % HP is turrethealth reached
.float turrethealth2; // % HP for a trigger event to happen (must be < turrethealth)
.string turrettarget2; // Targets to fire when % HP is turrethealth2 reached
.string turretopening; // Targets to fire when turret is opening
.string turretclosing; // Targets to fire when turret is closing
.float turretlocked; // Turret locked, will not hide in wall
.float wakeup_angle; // Turret closed, wakeup angle adjustment
.float pain_flinch; // Random chance to ignore this much damage
.float pain_longanim; // Force monster into long pain animations
.float pain_finstate; // Store the current pain finished state
.float pain_check; // Pain condition results
.float pain_timeout; // Time block to pain function
.float pain_ignore; // Ignore pain when hit by other monsters
.string pain_sound; // Pain sound wav file
.string pain_sound2; // Alternative Pain sound wav file
.string death_sound; // Death sound wav file
.string death_sound2; // Alternative death sound wav file
.float death_dmg; // Used by tarbaby for explosive damage on death
.string deathstring; // Used by client for player death messages
.string customsound; // Custom sound for Judicator/Justice sounds
.float idlebusy; // Busy with an alternative idle animation
.float idlereverse; // Reverse direction for idle animation
.float idletimer; // Idle sound timer (next time to check)
.float idleframe; // Used for multi functional monster setups
.float idlemoreoften; // Chance of more idle sound (def=random)
.string idle_sound; // Idle sound wav file
.string idle_sound2; // Alternative Idle sound wav file
.string idle_soundcom; // Combat Idle sound wav file
.string idle_soundcom2; // Alternative Combat Idle sound wav file
.float sight_timeout; // Time block for sight sound
.string sight_sound; // Sight sound wav file 1
.string sight_sound2; // Sight sound wav file 2
.string sight_sound3; // Sight sound wav file 3
.string sight_sound4; // Sight sound wav file 4
.float sight_count; // Total amount of sight sounds defined
.float sight_nofront; // Monster has no infront check
.float enemydist; // Distance the enemy is from the monster
.float enemymaxdist; // Maximum distance enemy is out of range
.entity lostenemy; // Lost soul enemy before losing sight
.float losttimer; // Lost soul idle timer after losing sight
.float lostsearch; // Lost soul searching for previous enemy
.string angrytarget; // Alternative target to attack upon spawn
.string deathtarget; // Alternative target to fire when dying
.string angletarget; // Will create custom bmodel move direction
.entity switchattacker; // Last entity to attack and cause damage
.float switchtimer; // Cooldown before switching targets (infighting)
.float switchoverride; // Cooldown override timer to stop rapid switch
.float infightextra; // Damage multiplier for infighting damage
.float noinfighting; // Will ignore/start any infighting
.float nomonstercount; // excluded from map monster count
.float delaymonstercount; // Monster added to count when spawned
.entity jumptouch; // Last entity a jumping monster touched
.float jumptimer; // Slowdown jump touch functionality (player)
.float ignore_monjump; // Cannot use ANY monster jump triggers
.float jumpsquash; // Player jumped on this, squash contents!
.vector jumpdist; // Monster jump forward + up distance
.vector jumprange; // Monster jump minimum/maximum range checks
.float dangle; // Spawn on ceiling flag for certain entities
// Misc model animation (frame, skin and rotation loops)
.float framestart; // FRAME Starting number for misc_model animations
.float frameloop; // FRAME Loop 0=Constant, 1+=Range, -1=Toggle, -2=Trigger
.float skinstart; // SKIN Starting number for misc_model animations
.float skinloop; // SKIN Loop 0=Constant, 1+=Range, -1=Toggle, -2=Trigger
.float rotateloop; // ROTATE Loop 0=Constant, 1+=Range, -1=Toggle, -2=Trigger
.vector rotateangles; // ROTATE axis (XYZ) changing (+/-) angles
.float alphastart; // ALPHA fade IN time for misc_model
.float alphadiff; // ALPHA fade range left for diff start positions
.float eventswitch; // Toggles the event on/off conditions
.float eventontrigger; // Number used to start an event sequence
.string eventontarget; // Target to fire when event is switched on
.float eventofftrigger; // Number used to stop an event sequence
.string eventofftarget; // Target to fire when event is switched off
.float steptype; // Primary footstep type
.float altsteptype; // Secondary footstep type
.float steplast; // Last footstep sound
.float altsteplast; // Last club foot sound
.string stepc1, stepc2, stepc3, stepc4, stepc5; // Custom feet sounds
.float zombieflr; // Get up frame for zombie on floor
.string bodyonflr; // String used for find function
.string bodyonflrtrig; // Trigger to fire when body is axed!
.float dmgtimeframe; // Time before damage frame can be reset
.float dmgcombined; // combined damage over 1 frame (0.1 time)
.float bosswave; // Current wave of the boss (backwards)
.float bosswavetotal; // Total amount of boss waves
.float bosswaveqty; // Total HP for each boss wave
.float bosswavetrig; // Current HP trigger for wave
.float bosswaveuse; // Let waves advance via use/triggers
.entity bossminchain; // Chain of entity locations for minions
.float bossminbase; // Minimum summon distance for minions
.float bossminrnd; // Extra random summon distance
float MONAI_BOSS_SUMDIST = 128; // Default base value for distance
float MONAI_BOSS_SUMRND = 128; // Default random value
// Minions (rest of the parameters in ai_minions.qc)
.float minion_active; // is the minion system active
// Grapple Hook styles
float GNC_HOOKLINE = 0; // LINEAR movement of the chain (default)
float GNC_HOOKBOOST = 1; // BOOST movement while on the chain
float GNC_HOOKTRICK = 2; // TRICK movement stops pulling and swings
// FUNC grapple hook point keys
.string gh_searchstr; // Search string name for func hooks
.float gh_funchook; // The client is using a func_grapplehook
.float gh_functotalhooks; // Total amount of func_grapple hooks
.float gh_functotalblock; // Total amount of func_grapple blockers
// Grapple Hook entity keys
.entity hookent; // Projectile entity
.entity hookchain; // Chain/list of debug diamonds
.float gh_onhook; // flying through the air!
.float gh_hookout; // Hook flying towards target!
.float gh_pullchain; // Hook pulls the player towards it
.float gh_blockhook; // Prevents hook from being fired (timer)
.float gh_hookdist; // Hook chain distance (constant update)
.float gh_hookfixed; // Fixed hook chain distance (trick mode)
.float gh_timetravel; // Maximum time allowed for grapple to travel
.float gh_misfire; // Sound delay for misfiring weapon
.float gh_debugafter; // Count debug entities after grapple release
// Stuff that can be changed via worldspawn
.float gh_hookstyle; // Swing / linear movement of hook/client
.float gh_debugmove; // Show debug entities for grapple movement
.float gh_funchookonly; // Only works with func grapple hook points
.float gh_hookearly; // Chain pulling start before hook attached
.float gh_maxdist; // Maximum distance grapple hook can travel
.float gh_hookspeed; // Forward momentum of hook (rocket spd+)
.float gh_pullspeed; // Forward momentum on chain (pulling forward)
.float gh_mindist; // Minimum distance to slowdown velocity
.float gh_minbeam; // Minimum distance to stop drawing beam
.vector gh_dmg; // Damage to Player/Monsters/World (def=4 8 8)
.vector gh_linechain; // Linear movement while on the chain
.vector gh_jumpchain; // Jump movement to jumping off the chain
.vector gh_boostchain; // Boost movement during swing/pull chain
.vector gh_movemonster; // Monster movement when impacted by chain
// Projectile resistance (% protection) for monsters
.float resist_shells, resist_nails, resist_rockets, resist_cells;
.float lightning_timer; // Cool down for LG resist effect
// Quoth extra entity keys to reduce console spam
.float quothflags; // Not used for anything in this MOD
.float startonground; // Always tracedown and spawn on floor
.float notelefrag; // Prevents monster spawn telefrag
//----------------------------------------------------------------------
float ENG_UNKNOWN = 0; // Default engine type
float ENG_FITZ = 1; // Fitz clone engines
float ENG_DPEXT = 2; // Engine with Darkplaces extensions
float DEF_GRAVITY = 800; // Default gravity for maps
float DEF_JUMPHEIGHT = 270; // Default player jump height
float DEF_FALLSPEEDLOW = -300; // Default Low player fall Speed
float DEF_FALLSPEEDHIGH = -650; // Default High player fall Speed
float DEF_FALLDMGWATER = 0; // Default player water fall damage
float DEF_FALLDMG = 5; // Default player fall damage
float DEF_FOGDEN = 0.1; // Default fog parameter
float DEF_SKYFOGDEN = 0.5; // Default sky fog parameter
vector DEF_FOGCOL = '0.1 0.1 0.1'; // Wispy white
string DEF_FOGEXT = "1 0 8192 1024 32"; // DP only extra
float TELE_SPEED = 300; // Default teleport velocity
float LARGE_TIMER = 999999; // Don't run out of time!
float MEGADEATH = 50000; // Time to die!
float TIME_MINTICK = 0.01; // Smallest amount of time to tick functions
float FADEMODEL_TIME = 0.01; // Small amount of time
float FADEFOG_TIME = 0.05; // 20 updates per second
float PARTICLE_DEBUGMAX = 2; // Maximum debug level
float part_debug; // Particle debug level (visual details)
float POWERUP_TIMER = 30; // Default timer for powerups
float POWERUP_VANIA = -1; // Vania timeout for powerups
float DEF_SHELLS = 25; // Default ammo given to new players
float FLOOR_TRACE_DIST = 256; // Default distance for floor trace checks
float FLOOR_TRACE_MONSTER = 40; // Distance for monster/body checks
float FLOOR_TRACE_GIBS = 16; // Distance for gib/head checks
float FLOOR_TRACE_BREAK = 16; // Distance for breakable checks
//----------------------------------------------------------------------
// Server flags (only way to carry items over between maps)
// bits 1-4 Runes, 5-8 Additional keys/items
float SVR_RUNE_KEY1 = 1; // Rune 1
float SVR_RUNE_KEY2 = 2; // Rune 2
float SVR_RUNE_KEY3 = 4; // Rune 3
float SVR_RUNE_KEY4 = 8; // Rune 4
float SVR_RUNE_ALL = 15; // Runes 1-4 (together)
float SVR_SPAWN_BIT1 = 16; // 3 bit spawn location
float SVR_SPAWN_BIT2 = 32; // Supports 7 locations 001-111
float SVR_SPAWN_BIT3 = 64; // Set via trigger_change_level
float SVR_LIVE = 128; // Bit 8 - Serverflag has active data
float SVR_RUNEFLAG = 255; // Bits 1- 8 - Runes and Keys
float SVR_LOWFLAG = 65535; // Bits 1-16 - rune keys and spawn settings
float SVR_WORLDFLAG = 65280; // Bits 9-16 - default/worldspawn options
float SVR_HIGHFLAG = 8323072; // Bits 17-23 - these options carry over
// MOD Options that can only be changed via temp1 console variable
// These affect the spawning functions of monster / items
float SVR_ITEMOFFSET = 256; // Toggle item offset (corner/center)
float SVR_SPRPARTON = 512; // Always use sprite particles (default OFF)
float SVR_PARTICLES = 1024; // Turn ON particle system (default OFF)
float SVR_DEVHELPER = 2048; // Turn OFF Dev helpers (marks+arrows)
float SVR_UPDAXE = 4096; // Upgrade Axe, +75% dmg, gib zombies
float SVR_UPDSSG = 8192; // Upgrade Super Shotgun, +50% dmg, uses 3 shells
float SVR_UPDLG = 16384; // Upgrade Lightning Gun, Direct+Splashdamage
float SVR_UPDGHOOK = 32768; // Upgrade Grapple Hook, +dmg, +flying, -axes
// MOD Options that can be changed via impulse commands (need a map loaded)
// These options will override the temp1 console variable
float SVR_EMPTY1 = 65536; // Not used atm
float SVR_SHOTGPROJ = 131072; // Turn OFF Shotgun projectiles
float SVR_SHOTGCASE = 262144; // Turn OFF Shotgun casings
float SVR_ZAWARE = 524288; // Turn OFF Z aware monsters
float SVR_FOOTSTEP = 1048576; // Turn OFF Enemy/player footsteps
float SVR_MWHEELSKIP = 2097152; // Turn OFF NG/SNG mwheel skip
float SVR_LIQDAM = 4194304; // Turn OFF Monster Liquid damage
//----------------------------------------------------------------------
float IT_NOWEAPON = 0; // No extra mod weapon (blank)
float IT_UPGRADE_AXE = 4096; // Shadow Axe, +75% dmg, +gib bodies
float IT_UPGRADE_SSG = 2; // The Widowmaker, +50 dmg, +3 shells
float IT_UPGRADE_LG = 64; // Plasma Gun, direct + splashdamage
float IT_UPGRADE_GHOOK = 128; // Grapple Hook, fly around the map!
float IT_ALLARMOR = 57344;// Test for player grn/yel/red armour
float IT_CKEY1 = 8192; // Custom Key 1
float IT_CKEY2 = 16384; // Custom Key 2
float IT_CKEY3 = 32768; // Custom Key 3
float IT_CKEY4 = 65536; // Custom Key 4
float IT_CKEYALL = 122880; // All Custom keys
float IT_ARTLAVASHIELD = 131072;// No health or armor damage in lava
float IT_ARTAIRTANK = 262144; // No running out of oxygen under water
float IT_ARTBLASTBELT= 524288; // Immunity to all splashdamage
float IT_ARTJUMPBOOTS= 1048576; // JCR Jump Boots (1-4 power levels)
float IT_ARTSHARP = 2097152; // Reduce SG/SSG/RG spread pattern
float IT_ARTPIERCE = 4194304; // NG/SNG Nails travel through enemy bodies
.float lavashield_finished, lavashield_time, lavashield_sound, lavashield_volume;
.float airtank_finished, airtank_time, airtank_sound, airtank_silent;
.float airtank_level, airtank_bubbles, airtank_volume, airtank_outwater;
.float blastbelt_finished, blastbelt_time, blastbelt_sound, blastbelt_volume;
float ART_BLASTBELT_DD = 0.5; // Direct damage
// Jump boots idea by JCR from mod jam pack 1
.float jumpboots_finished, jumpboots_time, jumpboots_sound;
.float jumpboots_airlvl, jumpboots_airmax, jumpboots_onground;
.float jumpboots_height, jumpboots_forward;
float ART_JUMPBOOTS_AIRMAX = 4; // Max amount of jumps available
float ART_JUMPHEIGHT = 360; // Second jump height
float ART_JUMPFORWARD = 320; // Jump speed forward
.float powerup_sound;
.float sharpshoot_finished, sharpshoot_time, sharpshooter_sound;
.float nailpiercer_finished, nailpiercer_time, nailpiercer_sound;
//----------------------------------------------------------------------
// Permanant powerup items (castlevania style) given to the player
// Uses parm9 for storage (previously armourtype 0.3/0.6/0.8 300/600/800)
float PERM_LOWRESET = 1023;
float PERM_ARTLAVASHIELD = 1024;
float PERM_ARTAIRTANK = 2048;
float PERM_ARTBLASTBELT = 4096;
float PERM_ARTJUMPBOOTS = 8192;
float PERM_ARTSHARP = 16384;
float PERM_ARTPIERCE = 32768;
// float PERM_ = 65536;
// float PERM_ = 131072;
// float PERM_ = 262144;
float PERM_INVISIBILITY = 524288;
float PERM_INVULNERABILITY = 1048576;
float PERM_SUIT = 2097152;
float PERM_QUAD = 4194304;
//----------------------------------------------------------------------
float SKILL_EASY = 0; // Skill level constants
float SKILL_NORMAL = 1;
float SKILL_HARD = 2;
float SKILL_NIGHTMARE = 3;
float SKILL_EVIL = 4; // Evil nightmare (max 50hp)
float HP_EASY = 1; // HP skill level constants
float HP_NORMAL = 2;
float HP_HARD = 4;
float HP_NIGHTMARE = 8;
float HUD_SECRETS = 2; // Update secrets screen counter
float HUD_MONSTERS = 4; // Update monster screen counter
float BUFFER_STUFFCMD = 1; // Long float print function (lftos)
float BUFFER_SPRINT = 2; // Defined in subs.soc.qc
float BUFFER_DPRINT = 4;
//----------------------------------------------------------------------
float STATE_SETUP = -1; // Setup state (on/off functions)
float STATE_ON = 1; // Stupid idea to have on states as 0
float STATE_OFF = 2; // Impossible to test for 0 as 'not setup' is 0
float ENT_SPNSTATIC = 32; // Will convert entity to static on spawn
float ENT_STARTOFF = 64; // Global spawnflags setting
float ESTATE_BLOCK = 6; // Blocked OFF+DISABLE
float ESTATE_LOWER = 7; // ON+OFF+DISABLE
float ESTATE_ON = 1; // Switch ON
float ESTATE_OFF = 2; // Switch OFF
float ESTATE_DISABLE = 4; // Disabled (blocks toggle)
float ESTATE_RESET = 8; // Reset parameters
float ESTATE_AFRAME = 16; // Changes Aframe only
float TARGET_BACK = 0; // Behind - 315-45
float TARGET_LEFT = 1; // Side - 45-135
float TARGET_FRONT = 2; // Front - 135-225
float TARGET_RIGHT = 3; // Right - 225-315
float SPNMARK_YELLOW = 0; // Error, something is broken!
float SPNMARK_BLUE = 1; // Delay spawn monster/item
float SPNMARK_GREEN = 2; // Delay spawn monster with no counter
float SPNMARK_RED = 3; // Nightmare only spawn
float SPNMARK_PURPLE = 4; // Coop only spawn
float SPNMARK_WHITE = 5; // Monsters with no Z Aware functionality
//----------------------------------------------------------------------
float LADDER_NONE = 0; // No player contact with ladder
float LADDER_JUMP = 1; // Jump movement system (rubicon2)
float LADDER_VEL = 2; // Push velocity system (extra4)
//----------------------------------------------------------------------
// Environmental damage
float LIQUID_TIMER = 1; // Amount of time to check for liquid damage
float MON_MULTIPLIER = 10; // Multiplier for liquid damage against monsters
float WATER_AIR = 12; // time before damage
float WATER_DAMAGE = 2; // Water drowning
float SLIME_DAMAGE = 4; // Slime/Acid burning
float LAVA_DAMAGE = 10; // Lava is super hot!
//----------------------------------------------------------------------
// Footstep types (slow, drag, light, medium, heavy, large, giant)
float FS_TYPESLOW = 1; // Demon, Dogs, Ogres, Zombies
float FS_TYPEDRAG = 2; // Alt Zombie foot
float FS_TYPELIGHT = 3;
float FS_TYPEMEDIUM = 4;
float FS_TYPEHEAVY = 5; // Death/Hell Knight, Drole, Player, Enforcer
float FS_TYPELARGE = 6; // Minotaur, Shambler
float FS_TYPEGIANT = 7; // Golem
float FS_TYPECUSTOM = 9; // Defined/precached by monster
float FS_FLYING = 10; // Exclusion, no happy feet!
//----------------------------------------------------------------------
// Monster constant values
float MON_MOVEWALK = 1; // Walking Monster
float MON_MOVEFLY = 2; // Flying Monster
float MON_MOVESWIM = 4; // Swiming Monster
float MON_MOVESTATIC = 8; // No movement monster
float MON_SIGHTSOUND = 10; // Stop repeating sightsounds
float PAIN_ALWAY = 5; // Always go into a pain animation after this time
float MON_VIEWOFS = 24; // Default view ofset for monsters
float MON_ZMOVEMENT = 8; // Z Movement for flying monsters
float MON_ZTOL = 16; // Z movement tolerance for adjustment
string MON_ONFLR = "TRUE"; // Search string for bodies on the floor
float MON_NOGIBVELOCITY = -1; // Gib system will use minimal velocity
float MON_XYGIBVELOCITY = -2; // Gib system will add more XY velocity
float MON_GIBFOUNTAIN = -3; // Gibs fly up and outwards (fountain)
float MON_GIBEXPLOSION = -4; // Gibs fly upwards with force
float MON_GIBTARGET = -5; // Gibs fly in target direction
float MON_NEVERGIB = -300; // Monster can never be gibbed
// Used in AI.QC routine for AI distance checks
float MON_RANGE_MELEE = 120; // Melee range
float MON_RANGE_CLOSE = 192; // Close melee range
float MON_RANGE_WAKEUP = 256; // Sight Wakeup range
float MON_RANGE_NEAR = 500; // Near range
float MON_RANGE_MID = 1000; // Mid range
float MON_MAX_RANGE = 1000; // Max range (realistic)
float MON_STEPRANGE = 100; // Step points for range chance
float MONAI_MDLHEIGHT = 24; // Offset height of monsters from floor
float MONAI_STEPHEIGHT = 16; // Maximum step height
float MONAI_STEPLARGE = 32; // large height distance, flight of steps?
float MONAI_ABOVEMELEE = 120; // Always be high above enemies inside this distance
float MONAI_ABOVEDIST = 128; // Distance to maintain above enemytarget
float MONAI_ABOVETIMER = 2; // Amount of time before changing Z
float MONAI_TURRETMODE = 0.3; // Percentage change of attack in turret mode
float MON_IDLE_SOUND = 0.2; // random chance of idle sound
float MON_IDLE_ANIMATION = 0.2; // random chance of idle animation
//----------------------------------------------------------------------
// Generic options
float MON_AMBUSH = 1; // Ambush (will only wakeup if see the player)
float MON_SPAWN_NOSIGHT = 8; // No wakeup sight sound
float MON_SPAWN_NOIDLE = 16; // no idle sounds (cupboard monster)
float MON_SPAWN_NOGFX = 32; // no spawn effect or sound
float MON_SPAWN_DELAY = 64; // Trigger spawn DELAY
float MON_SPAWN_ANGRY = 128; // Trigger spawn ANGRY
float MON_GHOST_ONLY = 4096; // Design for any ghost like monster
float MON_POINT_KNIGHT = 8192; // Pointy Electricity Knight
//----------------------------------------------------------------------
// Unique options
float MON_HOGRE_METAL = 4; // Metal Skin version +HP
float MON_HOGRE_METUPG = 50; // Extra health for metal upgrade
float MON_OGRE_NAIL = 2; // Fires Nails instead of grenades
float MON_OGRE_GREEN = 4; // Green Skin version +HP
float MON_OGRE_GRNUPG = 50; // Extra health for green upgrade
float MON_FREDDIE_LASER = 2; // Fires laser instead of nails
float MON_SPIDER_LARGE = 2; // Large green spitting version
float MON_SPIDER_CEILING = 4; // Spider starts on the ceiling
float MON_VORELING_LARGE = 2; // Large purple spitting version
float MON_VORELING_CEILING = 4; // Voreling starts on the ceiling
float MON_SWAMPLING_LARGE = 2; // Large Green spitting version
float MON_SWAMPLING_CEILING = 4; // Swampling starts on the ceiling
float MON_GARGOYLE_PERCH = 4; // Start in perched position
float MON_GAUNT_PERCH = 4; // Start in perched position
float MON_BOIL_HANGING = 2; // Hanging on wall upside down by spikes
float MON_BOIL_HOBBLED = 4; // Hobbled on the floor, random A/B position
float MON_SEEK_SHIELD = 4; // Shield mode until triggered
float MON_SENTINEL_NAIL = 4; // Red nail firing sentinels (quoth)
float MON_SWEEPER_LASER = 2; // Fires lasers instead of mines
float MON_SWEEPER_SHIELD = 4; // Shield mode until triggered
float MON_CHTHON_RED = 2; // New red skin + fire balls
float MON_CHTHON_GREEN = 4; // Green skin + Slime balls
float MON_SHUB_DMGTRIG = 2; // Can be triggered with damage
float MON_SHUB_UPSIDE = 4; // Setup upside (ceiling pose)
float MON_NOUR_BOSS = 2; // Boss version (with waves+minions)
float MON_BOGL_STRONG = 2; // Stronger +HP and skin 2
float MON_DCROSSSNIPER = 2; // No max range limitations for enemies
float MON_DCROSSTRACK = 4; // Enable tracking for crossbow knights
float MON_FLOYDROLL = 2; // Start on floor and eventually explode
float MON_FLOYDASLEEP = 4; // Start off unless shot or triggered
float MON_FLOYDCUSTOM = 6; // Both custom types combined
float MON_ELF_MAGIC = 2; // Magic range attack (+HP)
float MON_RAINDEER_DEAD = 2; // Dead body sacrifice
float MON_SANTA_GOOD = 2; // Good Santa with touch trigger
float MON_TURRETB_TRIPLE = 2; // Fire triple shot instead of single
float MON_TURRETB_PLASMA = 4; // Fire plasma bolts instead of laser
float MON_DPRINCE_FIRE = 2; // Fire bolt/burning and skin 1
float MON_DEFLECTOR_PLASMA = 2; // Plasma/Rockets attacks and skin 1
float MON_JUDGE_BLUE = 4; // Blue flame setup/explosions
// Underwater enemies (liquid block option for all of them)
float MON_LIQUIDBLOCK = 4; // Liquids block sightlines (fish/eel)
float MON_FISH_SMALL = 2; // Smaller and faster fish!
// Minion spawner options
float MON_MINOTAUR_MINIONS = 4; // Allow the Minotaur to spawn gargoyles
float MON_SHALRATH_MINIONS = 4; // Allow the Shalrath to spawn vorlings
float MON_SKULLWIZ_GUARDIAN = 2; // Special version guarding the runes
float MON_SKULLWIZ_MINIONS = 4; // Allow the Skull Wizard to spawn skulls
float MON_WRAITH_SCORPIONS = 2; // Allow the wraith to spawn scorpions
float MON_WRAITH_SPIDERS = 4; // Allow the wraith to spawn spiders
float MON_JIM_ROCKET = 4; // Rocket version of Jim the Robot
float MON_SCORPION_STINGER = 4; // Black stinger scorpion (debuff)
float MON_TARBYLESSJUMP = 4; // Will not constantly jump around
float MON_WIZARD_ABOVE = 4; // Wizard will float above enemy
float MON_GOLEM_MELEEONLY = 4; // Golems only do melee + stomp
// Statue/Zombie options
float MON_CRUCIFIED = 2; // Zombies - start in crucified position
float MON_STATUE = 2; // Will start frozen with stone skin
float MON_NOTFROZEN = 4; // Will not start frozen (works with statues)
float MON_ONFLOOR = 4; // Zombies - start lying on the floor
// Zombie hacks
float MON_ZOMCRUCIFIED = 1; // Zombies - crucified
float MON_ZOMBAMBUSH = 2; // Zombies - Ambush (ID hack)
float MON_ZOMIDHACK = 3; // Used to switch ID hack around
//----------------------------------------------------------------------
// Player
float RANGE_PLAYAXE = 72; // Distance for fire axe (player)
float RANGE_CHOPAXE = 64; // Player distance to chop up bodies
float DAMAGE_PLAYAXE1 = 20; // Default axe damage
float DAMAGE_PLAYAXE2 = 35; // Enhanced axe damage
//----------------------------------------------------------------------
// Weapon damage and parameters
float SPEED_PLAYAIM = 10000; // Player auto aim distance
float SPEED_PLAYERSG = 2000; // Player speed for SG
float SPEED_PLAYERSSG = 1500; // Player speed for SSG/Upgrade
float SPEED_MONSG = 800; // Monster speed for SG
float SPEED_MONSGMULT = 150; // 800=easy, 950=normal, 1100=hard, 1250=nm
float QUANTITY_SG = 6; // SG - Shotgun
float QUANTITY_SSG = 14; // SSG - Super Shotgun
float QUANTITY_WM = 21; // WM - Widow Maker
float QUANTITY_GRUNT = 4; // Soldier
float QUANTITY_DEFENDER = 10; // Defender
vector SPREAD_SG = '0.04 0.04 0'; // Narrow and square spread
vector SPREAD_SG2 = '0.01 0.01 0'; // Sharpshooter version
vector SPREAD_SSG = '0.14 0.08 0'; // Wide and short SSG spread
vector SPREAD_SSG2 = '0.04 0.04 0'; // Sharpshooter version
vector SPREAD_GRUNT = '0.1 0.1 0'; // Solider version (very narrow)
vector SPREAD_DEF = '0.18 0.1 0'; // Defender version (really wide)
float DAMAGE_SHELL = 4; // Single Shotgun Shell (hitscan)
float DAMAGE_PSHELL = 4; // Single Shotgun Shell (projectile)
float DAMAGE_PTSHELL = 4; // Dead center tracer shell (proj only)
float LIFE_SHELLS = 6; // Lifetime before being removed
float SPEED_PLAYSPIKE = 1000; // Player speed for Spikes
float SPEED_TRAPSPIKE = 500; // Trap shooters
float SPEED_HKSPIKE = 200; // Hell Knight (def=300)
float SPEED_HKSKILL = 50; // 200=easy, 250=normal, 300=hard, 350=nm
float SPEED_WIZSPIKE = 500; // Wizards (def=600)
float SPEED_WIZSKILL = 50; // 500=easy, 550=normal, 600=hard, 650=nm
float SPEED_SPIDER = 600; // Large Spiders (acid spit)
float SPEED_VORELING = 600; // Large Voreling (purple spit)
float SPEED_SWAMPLING = 600; // Large Swamping (poison spit)
float SPEED_SWEEPER = 600; // Sweeper (Lava Spike)
float SPEED_DPRINCE = 600; // Dark Prince (Plasma spit)
float SPEED_BLORD = 600; // Boglord (acid spit)
float SPEED_ELF = 600; // Dark Elf (snowballs)
float SPEED_FLAME = 600; // Flying flames (sprite)
float SPEED_LAVABALL = 250; // Boss Lava balls
float SPEED_LAVASKILL = 50; // 250=easy, 300=normal, 350=hard, 400=nm
float SPEED_RLPLAYER = 1000; // Player rocket speed
float SPEED_PLAYGRENADE = 600; // Player speed for Grenades
float SPEED_MONGRENADE = 500; // Ogre grenade speed (org 600)
float SPEED_MONGLSKILL = 50; // 500=easy, 550=normal, 600=hard, 650=nm
float SPEED_ZOMBFLESH = 550; // Zombie flesh speed (org 600)
float SPEED_ZOMBIESKILL = 25; // 550=easy, 575=normal, 600=hard, 625=nm
float SPEED_PLAYPLASMA = 900; // Player speed for Plasma
float SPEED_REFLECTION = 600; // Reflection speed for Plasma/Lightning
float SPEED_LASER = 600; // Enforcer laser speed
float SPEED_PLASMA = 600; // Eliminator plasma speed
float SPEED_ROCSTEERDIS = 160; // How close to target before stop steering
float SPEED_ROCSTEERDISSKILL = 20; // 160=Easy, 140=Normal, 120=Hard, 100=NM
float SPEED_ROCSTEERINC = 70; // Steering missile speed increase (0.1 tick)
float SPEED_ROCSTEERINCSKILL = 10; // 70=Easy, 80=Normal, 90=Hard, 100=NM
float SPEED_ROCSTEERBASE = 0.7; // Base percentage of steering accuracy
float SPEED_ROCSTEERINCACC = 0.1; // Increase accuracy of steering
float SPEED_JIMPROJ = 575; // Crazy flying jim robot laz0r/rockets!?
float SPEED_JIMPROJSKILL = 75; // 575=easy, 650=normal, 725=hard, 800=nm
float SPEED_SENTPROJ = 575; // Crazy flying jim robot laz0r/rockets!?
float SPEED_SENTPROJSKILL = 75; // 575=easy, 650=normal, 725=hard, 800=nm
float SPEED_TURRETBPROJ = 575; // Wall mounted turret speed
float SPEED_TURRETBPROJSKILL = 75; // 575=easy, 650=normal, 725=hard, 800=nm
float SPEED_SWEEPERPROJ = 575; // Slow flying robot laz0r/spikes!?
float SPEED_SWEEPERPROJSKILL = 75; // 575=easy, 650=normal, 725=hard, 800=nm
float SPEED_MAMMOTHLAZ = 600; // The "fridge" Mammoth
float SPEED_MAMMOTHLAZSKILL = 200; // 600=easy, 800=normal, 1000=hard, 1200=nm
float SPEED_MAMMOTHROCK = 700; // The "fridge" Mammoth
float SPEED_MAMMOTHROCKSKILL = 100; // 700=easy, 800=normal, 900=hard, 1000=nm
float SPEED_ARMYROCKPROJ = 575; // Army rocketeer (red skin version)
float SPEED_ARMYROCKPROJSKILL = 75; // 575=easy, 650=normal, 725=hard, 800=nm
float SPEED_DGQFB = 700; // Chainmail Hell Knight from Quoth
float SPEED_DGQFBSKILL = 100; // 700=easy, 800=normal, 900=hard, 1000=nm
float SPEED_SEEKROCK = 575; // Large UV ugly robot from rrp
float SPEED_SEEKROCKSKILL = 75; // 575=easy, 650=normal, 725=hard, 800=nm
float SPEED_SEEKLAZ = 400; // Base speed of Laser attacks
float SPEED_SEEKLAZSKILL = 225; // 400=easy, 625=normal, 850=hard, 1075=nm
float SPEED_RAINDROCK = 575; // Mobile xmas meat wagaon