]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into TimePath/effectinfo
authorTimePath <andrew.hardaker1995@gmail.com>
Sat, 3 Oct 2015 06:11:23 +0000 (16:11 +1000)
committerTimePath <andrew.hardaker1995@gmail.com>
Sat, 3 Oct 2015 06:11:23 +0000 (16:11 +1000)
17 files changed:
effectinfo.txt
qcsrc/client/progs.inc
qcsrc/common/command/generic.qc
qcsrc/common/effects/effectinfo.inc [new file with mode: 0644]
qcsrc/common/effects/effectinfo.qc [new file with mode: 0644]
qcsrc/common/effects/effectinfo_buffs.inc [new file with mode: 0644]
qcsrc/common/effects/effectinfo_ctf.inc [new file with mode: 0644]
qcsrc/common/effects/effectinfo_gentle.inc [new file with mode: 0644]
qcsrc/common/effects/effectinfo_gentle_happy.inc [new file with mode: 0644]
qcsrc/common/effects/effectinfo_gentle_morphed.inc [new file with mode: 0644]
qcsrc/common/effects/effectinfo_gentle_particlegibs.inc [new file with mode: 0644]
qcsrc/common/effects/effectinfo_instagib.inc [new file with mode: 0644]
qcsrc/common/effects/effectinfo_nades.inc [new file with mode: 0644]
qcsrc/common/effects/effectinfo_onslaught.inc [new file with mode: 0644]
qcsrc/common/effects/effectinfo_vehicles.inc [new file with mode: 0644]
qcsrc/lib/log.qh
qcsrc/server/progs.inc

index 2ba9a413b01ded720c47c53afbead18b3d3c99b0..cad4b11bcfea49b5521913ae558570f37496ecc2 100644 (file)
-// item respawn effect
-// flare particle and light
-// used in qcsrc/server/bots.qc:       //te_wizspike(e.origin)
-// used in qcsrc/server/bots.qc:               //te_wizspike(e.nearestwaypoint.wpnearestpoint)
-// used in qcsrc/server/havocbot.qc:                   //      te_wizspike(newgoal.origin)
+// ********************************************** //
+// ** WARNING - DO NOT MANUALLY EDIT THIS FILE ** //
+// **                                          ** //
+// **  This file is automatically generated by ** //
+// **  code with the command 'dumpeffectinfo'. ** //
+// **                                          ** //
+// **  If you modify an effect, please         ** //
+// **  regenerate this file with that command. ** //
+// **                                          ** //
+// ********************************************** //
+
 effect TE_WIZSPIKE
-countabsolute 1
-type static
-color 0x63F2EA 0x63f2EA
-size 20 20
-alpha 128 128 128
-lightradius 200
-lightradiusfade 200
-lightcolor 0.4 0.9 0.9
-// cloud of particles which expand rapidly and then slow to form a ball
+       alpha 128 128 128
+       color 0x63F2EA 0x63f2EA
+       countabsolute 1
+       lightcolor 0.4 0.9 0.9
+       lightradiusfade 200
+       lightradius 200
+       size 20 20
+       type static
 effect TE_WIZSPIKE
-count 50
-type static
-color 0x63F2EA 0x63f2EA
-size 2 2
-alpha 64 64 64
-airfriction 2
-liquidfriction 2
-originjitter 16 16 16
-velocityjitter 32 32 32
-
-// laser impact
-// decal
-// used in qcsrc/server/w_seeker.qc:   te_knightspike(org2)
+       airfriction 2
+       alpha 64 64 64
+       color 0x63F2EA 0x63f2EA
+       count 50
+       liquidfriction 2
+       originjitter 16 16 16
+       size 2 2
+       type static
+       velocityjitter 32 32 32
 effect TE_KNIGHTSPIKE
-countabsolute 1
-type decal
-tex 47 47
-size 24 24
-alpha 256 256 0
-originjitter 16 16 16
-lightradius 200
-lightradiusfade 1000
-lightcolor 4 0.2 0.2
-// flare effect
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 4 0.2 0.2
+       lightradiusfade 1000
+       lightradius 200
+       originjitter 16 16 16
+       size 24 24
+       tex 47 47
+       type decal
 effect TE_KNIGHTSPIKE
-countabsolute 1
-type static
-tex 39 39
-color 0xFF2010 0xFF2010
-alpha 256 256 1024
-size 24 24
-// sparks that rapidly expand and rapidly slow down to form an interesting spherical effect
+       alpha 256 256 1024
+       color 0xFF2010 0xFF2010
+       countabsolute 1
+       size 24 24
+       tex 39 39
+       type static
 effect TE_KNIGHTSPIKE
-count 128
-type spark
-color 0x800000 0xFF8020
-alpha 256 256 1024
-size 4 4
-//bounce 1.5
-airfriction 6
-liquidfriction 6
-//originjitter 32 32 32
-velocityjitter 256 256 256
-
-// machinegun bullet impact
-// bullet impact decal
-// used nowhere in code
+       airfriction 6
+       alpha 256 256 1024
+       color 0x800000 0xFF8020
+       count 128
+       liquidfriction 6
+       size 4 4
+       type spark
+       velocityjitter 256 256 256
 effect TE_SPIKE
-countabsolute 1
-type decal
-tex 56 59
-size 5 5
-alpha 256 256 0
-originjitter 6 6 6
-// dust/smoke drifting away from the impact
+       alpha 256 256 0
+       countabsolute 1
+       originjitter 6 6 6
+       size 5 5
+       tex 56 59
+       type decal
 effect TE_SPIKE
-count 4
-type smoke
-tex 0 8
-color 0x101010 0x101010
-size 3 3
-sizeincrease 3
-alpha 255 255 256
-originjitter 0 0 0
-velocityjitter 8 8 8
-// dust/smoke staying at the impact
+       alpha 255 255 256
+       color 0x101010 0x101010
+       count 4
+       sizeincrease 3
+       size 3 3
+       tex 0 8
+       type smoke
+       velocityjitter 8 8 8
 effect TE_SPIKE
-count 0.5
-type smoke
-tex 0 8
-color 0x505050 0x505050
-size 4 4
-sizeincrease 4
-alpha 255 255 128
-originjitter 0 0 0
-velocityjitter 0 0 0
-// bouncing sparks
+       alpha 255 255 128
+       color 0x505050 0x505050
+       count 0.500000
+       sizeincrease 4
+       size 4 4
+       tex 0 8
+       type smoke
 effect TE_SPIKE
-count 10
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 0 256 256
-gravity 1
-bounce 1.5
-velocityoffset 0 0 80
-velocityjitter 64 64 64
-
-// electro combo explosion
-// decal
-// used nowhere in code
+       alpha 0 256 256
+       bounce 1.500000
+       color 0x8f4333 0xfff31b
+       count 10
+       gravity 1
+       size 0.400000 0.400000
+       type spark
+       velocityjitter 64 64 64
+       velocityoffset 0 0 80
 effect TE_SPIKEQUAD
-countabsolute 1
-type decal
-tex 59 59
-size 64 64
-alpha 256 256 0
-originjitter 34 34 34
-lightradius 400
-lightradiusfade 200
-lightcolor 2 2.5 3
-// flare effect
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 2 2.5 3
+       lightradiusfade 200
+       lightradius 400
+       originjitter 34 34 34
+       size 64 64
+       tex 59 59
+       type decal
 effect TE_SPIKEQUAD
-countabsolute 1
-type static
-tex 38 38
-color 0x80C0FF 0x80C0FF
-size 48 48
-alpha 256 256 128
-// large sparks
+       alpha 256 256 128
+       color 0x80C0FF 0x80C0FF
+       countabsolute 1
+       size 48 48
+       tex 38 38
+       type static
 effect TE_SPIKEQUAD
-count 10
-type static
-color 0x2030FF 0x80C0FF
-size 32 32
-alpha 256 256 256
-//gravity 1
-bounce 1.5
-airfriction 4
-liquidfriction 16
-//velocityoffset 0 0 120
-velocityjitter 512 512 512
-
-// quake effect
-// decal
-// used nowhere in code
+       airfriction 4
+       alpha 256 256 256
+       bounce 1.500000
+       color 0x2030FF 0x80C0FF
+       count 10
+       liquidfriction 16
+       size 32 32
+       type static
+       velocityjitter 512 512 512
 effect TE_SUPERSPIKE
-countabsolute 1
-type decal
-tex 56 59
-size 3 3
-alpha 256 256 0
-originjitter 6 6 6
-// dust/smoke drifting away from the impact
+       alpha 256 256 0
+       countabsolute 1
+       originjitter 6 6 6
+       size 3 3
+       tex 56 59
+       type decal
 effect TE_SUPERSPIKE
-count 4
-type smoke
-tex 0 8
-color 0x101010 0x101010
-size 3 3
-sizeincrease 3
-alpha 255 255 256
-originjitter 0 0 0
-velocityjitter 8 8 8
-// dust/smoke staying at the impact
+       alpha 255 255 256
+       color 0x101010 0x101010
+       count 4
+       sizeincrease 3
+       size 3 3
+       tex 0 8
+       type smoke
+       velocityjitter 8 8 8
 effect TE_SUPERSPIKE
-count 0.5
-type smoke
-tex 0 8
-color 0x505050 0x505050
-size 4 4
-sizeincrease 4
-alpha 255 255 128
-originjitter 0 0 0
-velocityjitter 0 0 0
-// sparks that disappear on impact
+       alpha 255 255 128
+       color 0x505050 0x505050
+       count 0.500000
+       sizeincrease 4
+       size 4 4
+       tex 0 8
+       type smoke
 effect TE_SUPERSPIKE
-count 15
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 0 256 768
-gravity 1
-bounce -1
-velocityoffset 0 0 80
-velocityjitter 64 64 64
-
-// quake effect
-// decal
-// used nowhere in code
+       alpha 0 256 768
+       bounce -1
+       color 0x8f4333 0xfff31b
+       count 15
+       gravity 1
+       size 0.400000 0.400000
+       type spark
+       velocityjitter 64 64 64
+       velocityoffset 0 0 80
 effect TE_SUPERSPIKEQUAD
-countabsolute 1
-type decal
-tex 56 59
-size 3 3
-alpha 256 256 0
-originjitter 6 6 6
-lightradius 100
-lightradiusfade 500
-lightcolor 0.15 0.15 1.5
-// dust/smoke drifting away from the impact
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 0.2 0.2 1.5
+       lightradiusfade 500
+       lightradius 100
+       originjitter 6 6 6
+       size 3 3
+       tex 56 59
+       type decal
 effect TE_SUPERSPIKEQUAD
-count 4
-type smoke
-tex 0 8
-color 0x101010 0x101010
-size 3 3
-sizeincrease 3
-alpha 255 255 256
-originjitter 0 0 0
-velocityjitter 8 8 8
-// dust/smoke staying at the impact
+       alpha 255 255 256
+       color 0x101010 0x101010
+       count 4
+       sizeincrease 3
+       size 3 3
+       tex 0 8
+       type smoke
+       velocityjitter 8 8 8
 effect TE_SUPERSPIKEQUAD
-count 0.5
-type smoke
-tex 0 8
-color 0x505050 0x505050
-size 4 4
-sizeincrease 4
-alpha 255 255 128
-originjitter 0 0 0
-velocityjitter 0 0 0
-// sparks that disappear on impact
+       alpha 255 255 128
+       color 0x505050 0x505050
+       count 0.500000
+       sizeincrease 4
+       size 4 4
+       tex 0 8
+       type smoke
 effect TE_SUPERSPIKEQUAD
-count 15
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 0 256 768
-gravity 1
-bounce -1
-velocityoffset 0 0 80
-velocityjitter 64 64 64
-
-// shotgun pellet impact
-// decal
-// used nowhere in code
+       alpha 0 256 768
+       bounce -1
+       color 0x8f4333 0xfff31b
+       count 15
+       gravity 1
+       size 0.400000 0.400000
+       type spark
+       velocityjitter 64 64 64
+       velocityoffset 0 0 80
 effect TE_GUNSHOT
-countabsolute 1
-type decal
-tex 56 59
-size 3 3
-alpha 256 256 0
-originjitter 6 6 6
-// dust/smoke drifting away from the impact
+       alpha 256 256 0
+       countabsolute 1
+       originjitter 6 6 6
+       size 3 3
+       tex 56 59
+       type decal
 effect TE_GUNSHOT
-count 0.8
-type smoke
-tex 0 8
-color 0x101010 0x101010
-size 3 3
-sizeincrease 3
-alpha 128 128 64
-originjitter 0 0 0
-velocityjitter 8 8 8
-// dust/smoke staying at the impact
+       alpha 128 128 64
+       color 0x101010 0x101010
+       count 0.800000
+       sizeincrease 3
+       size 3 3
+       tex 0 8
+       type smoke
+       velocityjitter 8 8 8
 effect TE_GUNSHOT
-count 0.2
-type smoke
-tex 0 8
-color 0x505050 0x505050
-size 4 4
-sizeincrease 4
-alpha 128 128 64
-originjitter 0 0 0
-velocityjitter 0 0 0
-// bouncing sparks
+       alpha 128 128 64
+       color 0x505050 0x505050
+       count 0.200000
+       sizeincrease 4
+       size 4 4
+       tex 0 8
+       type smoke
 effect TE_GUNSHOT
-count 2.5
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 0 64 64
-gravity 1
-bounce 1.5
-velocityoffset 0 0 80
-velocityjitter 64 64 64
-
-// crylink impact effect
-// decal
-// used nowhere in code
+       alpha 0 64 64
+       bounce 1.500000
+       color 0x8f4333 0xfff31b
+       count 2.500000
+       gravity 1
+       size 0.400000 0.400000
+       type spark
+       velocityjitter 64 64 64
+       velocityoffset 0 0 80
 effect TE_GUNSHOTQUAD
-countabsolute 1
-type decal
-tex 47 47
-size 8 8
-alpha 256 256 0
-originjitter 12 12 12
-//lightradius 100
-//lightradiusfade 300
-//lightcolor 0.5 0.5 0.5
-// purple flare effect
+       alpha 256 256 0
+       countabsolute 1
+       originjitter 12 12 12
+       size 8 8
+       tex 47 47
+       type decal
 effect TE_GUNSHOTQUAD
-countabsolute 1
-type static
-tex 39 39
-color 0x504060 0x504060
-size 8 8
-alpha 256 256 512
-// purple sparks
+       alpha 256 256 512
+       color 0x504060 0x504060
+       countabsolute 1
+       size 8 8
+       tex 39 39
+       type static
 effect TE_GUNSHOTQUAD
-count 6
-type spark
-color 0xA040C0 0xFFFFFF
-size 1 1
-alpha 128 128 384
-gravity 1
-bounce 1.5
-velocityoffset 0 0 80
-velocityjitter 128 128 128
-
-// mortar/hagar explosion (smaller than rocket)
-// decal
-// used in qcsrc/server/cl_client.qc:  te_explosion(org)
+       alpha 128 128 384
+       bounce 1.500000
+       color 0xA040C0 0xFFFFFF
+       count 6
+       gravity 1
+       size 1 1
+       type spark
+       velocityjitter 128 128 128
+       velocityoffset 0 0 80
 effect TE_EXPLOSION
-countabsolute 1
-type decal
-tex 8 16
-size 48 48
-alpha 256 256 0
-originjitter 40 40 40
-lightradius 150
-lightradiusfade 300
-lightcolor 4 2 0.5
-// flare effect
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 4 2 0.5
+       lightradiusfade 300
+       lightradius 150
+       originjitter 40 40 40
+       size 48 48
+       tex 8 16
+       type decal
 effect TE_EXPLOSION
-countabsolute 1
-type static
-tex 35 37
-color 0x404040 0x404040
-size 48 48
-alpha 192 192 64
-// fire effect which expands then slows
+       alpha 192 192 64
+       color 0x404040 0x404040
+       countabsolute 1
+       size 48 48
+       tex 35 37
+       type static
 effect TE_EXPLOSION
-notunderwater
-count 64
-type static
-tex 48 55
-color 0x902010 0xFFD080
-size 16 16
-alpha 128 128 256
-bounce 1.5
-airfriction 4
-liquidfriction 4
-originjitter 8 8 8
-velocityjitter 256 256 256
-// underwater bubbles
+       airfriction 4
+       alpha 128 128 256
+       bounce 1.500000
+       color 0x902010 0xFFD080
+       count 64
+       liquidfriction 4
+       notunderwater
+       originjitter 8 8 8
+       size 16 16
+       tex 48 55
+       type static
+       velocityjitter 256 256 256
 effect TE_EXPLOSION
-underwater
-count 16
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 96 96 96
-// bouncing sparks
+       alpha 128 256 64
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 16
+       gravity -0.125000
+       liquidfriction 0.250000
+       originjitter 16 16 16
+       size 3 3
+       tex 62 62
+       type bubble
+       underwater
+       velocityjitter 96 96 96
 effect TE_EXPLOSION
-notunderwater
-count 16
-type spark
-color 0x903010 0xFFD030
-size 2 2
-alpha 256 256 384
-gravity 1
-airfriction 0.2
-bounce 1.5
-liquidfriction 0.8
-velocityoffset 0 0 80
-velocityjitter 256 256 256
-
-// quake effect
-// decal
-// used nowhere in code
+       airfriction 0.200000
+       alpha 256 256 384
+       bounce 1.500000
+       color 0x903010 0xFFD030
+       count 16
+       gravity 1
+       liquidfriction 0.800000
+       notunderwater
+       size 2 2
+       type spark
+       velocityjitter 256 256 256
+       velocityoffset 0 0 80
 effect TE_EXPLOSIONQUAD
-countabsolute 1
-type decal
-tex 8 16
-size 48 48
-alpha 256 256 0
-originjitter 40 40 40
-lightradius 350
-lightradiusfade 700
-lightcolor 4 2 8
-// smoke cloud
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 4 2 8
+       lightradiusfade 700
+       lightradius 350
+       originjitter 40 40 40
+       size 48 48
+       tex 8 16
+       type decal
 effect TE_EXPLOSIONQUAD
-notunderwater
-count 16
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 12 12
-alpha 32 32 64
-velocityjitter 48 48 48
-// underwater bubbles
+       alpha 32 32 64
+       color 0x202020 0x404040
+       count 16
+       notunderwater
+       size 12 12
+       tex 0 8
+       type smoke
+       velocityjitter 48 48 48
 effect TE_EXPLOSIONQUAD
-underwater
-count 16
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 96 96 96
-// sparks which go through walls
+       alpha 128 256 64
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 16
+       gravity -0.125000
+       liquidfriction 0.250000
+       originjitter 16 16 16
+       size 3 3
+       tex 62 62
+       type bubble
+       underwater
+       velocityjitter 96 96 96
 effect TE_EXPLOSIONQUAD
-notunderwater
-count 64
-type spark
-color 0x903010 0xFFD030
-size 1 1
-alpha 0 256 512
-gravity 1
-airfriction 0.2
-liquidfriction 0.8
-velocityoffset 0 0 80
-velocityjitter 256 256 256
-
-// quake effect
-// decal
-// used in qcsrc/server/keyhunt.qc:    te_tarexplosion(lostkey.origin)
+       airfriction 0.200000
+       alpha 0 256 512
+       color 0x903010 0xFFD030
+       count 64
+       gravity 1
+       liquidfriction 0.800000
+       notunderwater
+       size 1 1
+       type spark
+       velocityjitter 256 256 256
+       velocityoffset 0 0 80
 effect TE_TAREXPLOSION
-countabsolute 1
-type decal
-tex 8 16
-size 48 48
-alpha 256 256 0
-originjitter 40 40 40
-lightradius 600
-lightradiusfade 1200
-lightcolor 1.6 0.8 2
-// smoke cloud
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 1.6 0.8 2
+       lightradiusfade 1200
+       lightradius 600
+       originjitter 40 40 40
+       size 48 48
+       tex 8 16
+       type decal
 effect TE_TAREXPLOSION
-notunderwater
-count 16
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 12 12
-alpha 32 32 64
-velocityjitter 48 48 48
-// underwater bubbles
+       alpha 32 32 64
+       color 0x202020 0x404040
+       count 16
+       notunderwater
+       size 12 12
+       tex 0 8
+       type smoke
+       velocityjitter 48 48 48
 effect TE_TAREXPLOSION
-underwater
-count 16
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 96 96 96
-// sparks which go through walls
+       alpha 128 256 64
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 16
+       gravity -0.125000
+       liquidfriction 0.250000
+       originjitter 16 16 16
+       size 3 3
+       tex 62 62
+       type bubble
+       underwater
+       velocityjitter 96 96 96
 effect TE_TAREXPLOSION
-notunderwater
-count 64
-type spark
-color 0x903010 0xFFD030
-size 1 1
-alpha 0 256 512
-gravity 1
-airfriction 0.2
-liquidfriction 0.8
-velocityoffset 0 0 80
-velocityjitter 256 256 256
-
-// bloody impact effect indicating damage
-// used nowhere in code
+       airfriction 0.200000
+       alpha 0 256 512
+       color 0x903010 0xFFD030
+       count 64
+       gravity 1
+       liquidfriction 0.800000
+       notunderwater
+       size 1 1
+       type spark
+       velocityjitter 256 256 256
+       velocityoffset 0 0 80
 effect TE_BLOOD
-count 0.167
-type blood
-tex 24 32
-size 8 8
-alpha 256 256 64
-bounce -1
-airfriction 1
-liquidfriction 4
-velocityjitter 64 64 64
-velocitymultiplier 1
-staincolor 0x808080 0x808080
-staintex 16 24
-
-
-
-// sparks (quake effect)
-// used in qcsrc/server/antilag.qc:            te_spark(antilag_takebackorigin(e, time - e.antilag_debug), '0 0 0', 32)
-// used in qcsrc/server/g_triggers.qc: self.mdl = "TE_SPARK"
+       airfriction 1
+       alpha 256 256 64
+       bounce -1
+       count 0.167000
+       liquidfriction 4
+       size 8 8
+       staincolor 0x808080 0x808080
+       staintex 16 24
+       tex 24 32
+       type blood
+       velocityjitter 64 64 64
+       velocitymultiplier 1
 effect TE_SPARK
-count 0.5
-type spark
-tex 40 40
-color 0x8f4333 0xfff31b
-size 0.4 0.6
-alpha 64 256 768
-gravity 1
-bounce -1
-velocityoffset 0 0 80
-velocityjitter 64 64 64
-velocitymultiplier 1
-
-// nex impact
-// decal
-// used in qcsrc/server/bots.qc:               te_plasmaburn(org)
+       alpha 64 256 768
+       bounce -1
+       color 0x8f4333 0xfff31b
+       count 0.500000
+       gravity 1
+       size 0.400000 0.600000
+       tex 40 40
+       type spark
+       velocityjitter 64 64 64
+       velocitymultiplier 1
+       velocityoffset 0 0 80
 effect TE_PLASMABURN
-countabsolute 1
-type decal
-tex 47 47
-size 24 24
-alpha 256 256 0
-originjitter 16 16 16
-lightradius 200
-lightradiusfade 400
-lightcolor 1 1 1
-// flare effect
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 1 1 1
+       lightradiusfade 400
+       lightradius 200
+       originjitter 16 16 16
+       size 24 24
+       tex 47 47
+       type decal
 effect TE_PLASMABURN
-countabsolute 1
-type static
-tex 37 37
-color 0x80C0FF 0x80C0FF
-size 8 8
-alpha 256 256 512
-// small sparks which form a sphere as they slow down
+       alpha 256 256 512
+       color 0x80C0FF 0x80C0FF
+       countabsolute 1
+       size 8 8
+       tex 37 37
+       type static
 effect TE_PLASMABURN
-count 128
-type spark
-color 0x2030FF 0x80C0FF
-size 1 2
-alpha 256 256 1024
-bounce 2
-airfriction 8
-liquidfriction 8
-velocityjitter 128 128 128
-
-// quake effect
-// used in qcsrc/server/bots.qc:       //te_smallflash((e.absmin + e.absmax) * 0.5)
-// used in qcsrc/server/bots.qc:               //te_smallflash((e.absmin + e.absmax) * 0.5)
+       airfriction 8
+       alpha 256 256 1024
+       bounce 2
+       color 0x2030FF 0x80C0FF
+       count 128
+       liquidfriction 8
+       size 1 2
+       type spark
+       velocityjitter 128 128 128
 effect TE_SMALLFLASH
-lightradius 200
-lightradiusfade 1000
-lightcolor 2 2 2
-
-// quake effect
-// used nowhere in code
+       lightcolor 2 2 2
+       lightradiusfade 1000
+       lightradius 200
 effect TE_FLAMEJET
-count 0.5
-type smoke
-color 0x6f0f00 0xe3974f
-size 4 4
-alpha 64 128 384
-gravity -1
-bounce 1.1
-airfriction 1
-liquidfriction 4
-velocityjitter 128 128 128
-velocitymultiplier 1
-
-// quake effect
-// used nowhere in code
+       airfriction 1
+       alpha 64 128 384
+       bounce 1.100000
+       color 0x6f0f00 0xe3974f
+       count 0.500000
+       gravity -1
+       liquidfriction 4
+       size 4 4
+       type smoke
+       velocityjitter 128 128 128
+       velocitymultiplier 1
 effect TE_LAVASPLASH
-count 32
-type alphastatic
-color 0x6f0f00 0xe3974f
-size 12 12
-alpha 256 256 256
-gravity 0.05
-originoffset 0 0 32
-originjitter 128 128 32
-velocityoffset 0 0 256
-velocityjitter 128 128 0
-
-// player teleport effect
-// used nowhere in code
+       alpha 256 256 256
+       color 0x6f0f00 0xe3974f
+       count 32
+       gravity 0.050000
+       originjitter 128 128 32
+       originoffset 0 0 32
+       size 12 12
+       type alphastatic
+       velocityjitter 128 128 0
+       velocityoffset 0 0 256
 effect TE_TELEPORT
-count 56
-type static
-color 0xA0A0A0 0xFFFFFF
-size 10 10
-alpha 64 128 256
-airfriction 1
-liquidfriction 4
-originoffset 0 0 28
-originjitter 16 16 28
-velocityjitter 0 0 256
-
-// nex beam
-// used in qcsrc/server/w_minstanex.qc:        trailparticles(world, particleeffectnum("TE_TEI_G3"), w_shotorg, trace_endpos)
-// used in qcsrc/client/particles.qc:          trailparticles(world, particleeffectnum("TE_TEI_G3"), shotorg, endpos)
+       airfriction 1
+       alpha 64 128 256
+       color 0xA0A0A0 0xFFFFFF
+       count 56
+       liquidfriction 4
+       originjitter 16 16 28
+       originoffset 0 0 28
+       size 10 10
+       type static
+       velocityjitter 0 0 256
 effect TE_TEI_G3
-countabsolute 1
-type beam
-tex 200 200
-color 0xFFFFFF 0xFFFFFF
-size 4 4
-alpha 128 128 256
-// experimental
+       alpha 128 128 256
+       color 0xFFFFFF 0xFFFFFF
+       countabsolute 1
+       size 4 4
+       tex 200 200
+       type beam
 effect TE_TEI_G3
-trailspacing 4
-type static
-color 0x202020 0x404040
-size 1 1
-alpha 256 256 512
-airfriction -4
-//liquidfriction -4
-velocityjitter 8 8 8
-type smoke
-
-// smoke effect
-// used nowhere in code
+       airfriction -4
+       alpha 256 256 512
+       color 0x202020 0x404040
+       size 1 1
+       trailspacing 4
+       type smoke
+       velocityjitter 8 8 8
 effect TE_TEI_SMOKE
-count 0.167
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 5 5
-alpha 256 256 512
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-velocitymultiplier 1
-
-// rocket explosion (bigger than mortar and hagar)
-// decal
-// used nowhere in code
+       alpha 256 256 512
+       color 0x202020 0x404040
+       count 0.167000
+       originjitter 1.5 1.5 1.5
+       size 5 5
+       tex 0 8
+       type smoke
+       velocityjitter 6 6 6
+       velocitymultiplier 1
 effect TE_TEI_BIGEXPLOSION
-countabsolute 1
-type decal
-tex 8 16
-size 72 72
-alpha 256 256 0
-originjitter 40 40 40
-lightradius 500
-lightradiusfade 500
-lightcolor 4 2 0.5
-// flare effect
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 4 2 0.5
+       lightradiusfade 500
+       lightradius 500
+       originjitter 40 40 40
+       size 72 72
+       tex 8 16
+       type decal
 effect TE_TEI_BIGEXPLOSION
-countabsolute 1
-type static
-tex 35 37
-color 0x404040 0x404040
-size 72 72
-alpha 192 192 64
-// fire effect
+       alpha 192 192 64
+       color 0x404040 0x404040
+       countabsolute 1
+       size 72 72
+       tex 35 37
+       type static
 effect TE_TEI_BIGEXPLOSION
-notunderwater
-count 128
-type static
-tex 48 55
-color 0x902010 0xFFD080
-size 16 16
-alpha 128 128 256
-bounce 1.5
-airfriction 4
-liquidfriction 4
-originjitter 8 8 8
-velocityjitter 512 512 512
-// underwater bubbles
+       airfriction 4
+       alpha 128 128 256
+       bounce 1.500000
+       color 0x902010 0xFFD080
+       count 128
+       liquidfriction 4
+       notunderwater
+       originjitter 8 8 8
+       size 16 16
+       tex 48 55
+       type static
+       velocityjitter 512 512 512
 effect TE_TEI_BIGEXPLOSION
-underwater
-count 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 144 144 144
-// bouncing sparks
+       alpha 128 256 64
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 32
+       gravity -0.125000
+       liquidfriction 0.250000
+       originjitter 16 16 16
+       size 3 3
+       tex 62 62
+       type bubble
+       underwater
+       velocityjitter 144 144 144
 effect TE_TEI_BIGEXPLOSION
-notunderwater
-count 64
-type spark
-color 0x903010 0xFFD030
-size 2 2
-alpha 256 256 384
-gravity 1
-airfriction 0.2
-bounce 1.5
-liquidfriction 0.8
-velocityoffset 0 0 80
-velocityjitter 384 384 384
-
-// electro explosion
-// decal
-// used nowhere in code
+       airfriction 0.200000
+       alpha 256 256 384
+       bounce 1.500000
+       color 0x903010 0xFFD030
+       count 64
+       gravity 1
+       liquidfriction 0.800000
+       notunderwater
+       size 2 2
+       type spark
+       velocityjitter 384 384 384
+       velocityoffset 0 0 80
 effect TE_TEI_PLASMAHIT
-countabsolute 1
-type decal
-tex 59 59
-size 32 32
-alpha 256 256 0
-originjitter 20 20 20
-lightradius 200
-lightradiusfade 600
-lightcolor 2.4 4.8 8
-// flare effect
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 2.4 4.8 8
+       lightradiusfade 600
+       lightradius 200
+       originjitter 20 20 20
+       size 32 32
+       tex 59 59
+       type decal
 effect TE_TEI_PLASMAHIT
-countabsolute 1
-type static
-tex 38 38
-color 0x80C0FF 0x80C0FF
-size 32 32
-alpha 256 256 512
-// cloud of bouncing sparks
+       alpha 256 256 512
+       color 0x80C0FF 0x80C0FF
+       countabsolute 1
+       size 32 32
+       tex 38 38
+       type static
 effect TE_TEI_PLASMAHIT
-count 0.5
-type spark
-color 0x2030FF 0x80C0FF
-size 2 4
-alpha 256 256 1024
-//gravity 1
-bounce 1.5
-//velocityoffset 0 0 120
-velocityjitter 512 512 512
-
-
-
-
-
-
-
-
-
-//////////////////////////////////////////////////
-// New effects in 2.4
-//////////////////////////////////////////////////
-
-
-
-// bloody impact effect indicating damage
-// used in qcsrc/client/gibs.qc:       pointparticles(particleeffectnum("blood"), self.origin + '0 0 1', '0 0 30', 10)
-// used in qcsrc/client/gibs.qc:                       pointparticles(particleeffectnum("blood"), org, vel, amount * 16)
+       alpha 256 256 1024
+       bounce 1.500000
+       color 0x2030FF 0x80C0FF
+       count 0.500000
+       size 2 4
+       type spark
+       velocityjitter 512 512 512
 effect blood
-count 0.4
-type spark
-blend invmod
-tex 24 32
-size 5 11
-alpha 1560 2560 7000
-color 0xA8FFFF 0xA8FFFFF
-bounce -1
-airfriction 0.4
-velocityjitter 99 99 55
-//velocitymultiplier 2
-staincolor 0x808080 0x808080
-staintex 16 24
-stainsize 1 2
-stretchfactor 20
-sizeincrease 20
-//blood mist
+       airfriction 0.400000
+       alpha 1560 2560 7000
+       blend invmod
+       bounce -1
+       color 0xA8FFFF 0xA8FFFFF
+       count 0.400000
+       sizeincrease 20
+       size 5 11
+       staincolor 0x808080 0x808080
+       stainsize 1 2
+       staintex 16 24
+       stretchfactor 20
+       tex 24 32
+       type spark
+       velocityjitter 99 99 55
 effect blood
-countabsolute 1
-type alphastatic
-blend invmod
-tex 24 32
-size 25 30
-sizeincrease 20
-alpha 100 256 400
-color 0x000000 0x420000
-originjitter 11 11 11
-
-
-// player teleport effect
-// used in qcsrc/server/t_teleporters.qc:              pointparticles(particleeffectnum("teleport"), player.origin, '0 0 0', 1)
-// used in qcsrc/server/t_teleporters.qc:              pointparticles(particleeffectnum("teleport"), to + v_forward * 32, '0 0 0', 1)
+       alpha 100 256 400
+       blend invmod
+       color 0x000000 0x420000
+       countabsolute 1
+       originjitter 11 11 11
+       sizeincrease 20
+       size 25 30
+       tex 24 32
+       type alphastatic
 effect teleport
-count 500
-type spark
-tex 64 64
-color 0x807aff 0x4463d5
-size 1 1
-alpha 0 256 100
-stretchfactor 2
-//gravity 1
-bounce 1.5
-originjitter 1 1 1
-velocityjitter 1000 1000 1500
-velocitymultiplier 0.5
-airfriction 2
-stretchfactor 0.6
+       airfriction 2
+       alpha 0 256 100
+       bounce 1.500000
+       color 0x807aff 0x4463d5
+       count 500
+       originjitter 1 1 1
+       size 1 1
+       stretchfactor 0.600000
+       tex 64 64
+       type spark
+       velocityjitter 1000 1000 1500
+       velocitymultiplier 0.500000
 effect teleport
-countabsolute 1
-type smoke
-tex 65 65
-size 150 150
-alpha 190 190 180
-sizeincrease -80
-color 0x807aff 0x4463d5
-
-
-
-// normal super gory blood trail (used by gibs)
-// used in qcsrc/client/gibs.qc:               trailparticles(self, particleeffectnum("TR_BLOOD"), oldorg, self.origin)
+       alpha 190 190 180
+       color 0x807aff 0x4463d5
+       countabsolute 1
+       sizeincrease -80
+       size 150 150
+       tex 65 65
+       type smoke
 effect TR_BLOOD
-trailspacing 20
-type spark
-blend invmod
-color 0xA8FFFF 0xA8FFFF
-tex 24 32
-size 4 19
-alpha 384 984 1492
-bounce -1
-gravity 0.4
-airfriction -2
-liquidfriction 1
-velocityjitter 64 64 64
-velocitymultiplier -0.1
-staincolor 0x808080 0x808080
-staintex 16 24
-stainsize 1 2
-stretchfactor 7
-sizeincrease -5
-// splash around gib
+       airfriction -2
+       alpha 384 984 1492
+       blend invmod
+       bounce -1
+       color 0xA8FFFF 0xA8FFFF
+       gravity 0.400000
+       liquidfriction 1
+       sizeincrease -5
+       size 4 19
+       staincolor 0x808080 0x808080
+       stainsize 1 2
+       staintex 16 24
+       stretchfactor 7
+       tex 24 32
+       trailspacing 20
+       type spark
+       velocityjitter 64 64 64
+       velocitymultiplier -0.100000
 effect TR_BLOOD
-trailspacing 42
-type blood
-color 0xA8FFFF 0xA8FFFF
-tex 24 32
-size 4 6
-alpha 684 684 7492
-sizeincrease 500
-
-// thinner blood trail (used by quake zombies)
-// used in qcsrc/client/gibs.qc:               trailparticles(self, particleeffectnum("TR_SLIGHTBLOOD"), oldorg, self.origin)
+       alpha 684 684 7492
+       color 0xA8FFFF 0xA8FFFF
+       sizeincrease 500
+       size 4 6
+       tex 24 32
+       trailspacing 42
+       type blood
 effect TR_SLIGHTBLOOD
-trailspacing 64
-type blood
-color 0xA8FFFF 0xA8FFFF
-tex 24 32
-size 8 8
-alpha 384 384 192
-bounce -1
-airfriction 1
-liquidfriction 4
-velocityjitter 64 64 64
-velocitymultiplier 0.5
-staincolor 0x808080 0x808080
-staintex 16 24
-
-
-
-// func_stardust effect, used in some maps to indicate teleporters
-// used in qcsrc/server/g_triggers.qc: self.effects = EF_STARDUST
-// used in qcsrc/server/portals.qc:    portal.effects = EF_STARDUST | EF_BLUE
+       airfriction 1
+       alpha 384 384 192
+       bounce -1
+       color 0xA8FFFF 0xA8FFFF
+       liquidfriction 4
+       size 8 8
+       staincolor 0x808080 0x808080
+       staintex 16 24
+       tex 24 32
+       trailspacing 64
+       type blood
+       velocityjitter 64 64 64
+       velocitymultiplier 0.500000
 effect EF_STARDUST
-count 37.5
-type static
-color 0xfff368 0xfff368
-size 1.0 2.0
-alpha 64 128 128
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 16 16 64
-velocityjitter 32 32 0
-//lightradius 200
-//lighttime 0
-//lightcolor 0.4 0.9 0.9
-
-// flare particle and light
-// used in qcsrc/server/t_items.qc:    //pointparticles(particleeffectnum("item_respawn"), self.origin + self.mins_z * '0 0 1' + '0 0 48', '0 0 0', 1)
-// used in qcsrc/server/t_items.qc:    pointparticles(particleeffectnum("item_respawn"), self.origin + 0.5 * (self.mins + self.maxs), '0 0 0', 1)
+       airfriction 0.200000
+       alpha 64 128 128
+       color 0xfff368 0xfff368
+       count 37.500000
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 16 16 64
+       size 1 2
+       type static
+       velocityjitter 32 32 0
 effect item_respawn
-countabsolute 1
-type static
-color 0x63F2EA 0x63f2EA
-size 32 32
-alpha 128 128 128
-// cloud of particles which expand rapidly and then slow to form a ball
+       alpha 128 128 128
+       color 0x63F2EA 0x63f2EA
+       countabsolute 1
+       size 32 32
+       type static
 effect item_respawn
-count 128
-type spark
-tex 41 41
-color 0x63F2EA 0x63f2EA
-size 2 2
-alpha 256 256 1280
-//originjitter 24 24 24
-velocityjitter 256 256 256
-
-
-
-// used in qcsrc/server/t_jumppads.qc:                 pointparticles(particleeffectnum("jumppad_activate"), other.origin, other.velocity, 1)
+       alpha 256 256 1280
+       color 0x63F2EA 0x63f2EA
+       count 128
+       size 2 2
+       tex 41 41
+       type spark
+       velocityjitter 256 256 256
 effect jumppad_activate
-lightradius 200
-lightradiusfade 2000
-lightcolor 2 2 2
-
-
-
-// used in qcsrc/server/w_hlac.qc:     pointparticles(particleeffectnum("laser_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
-// used in qcsrc/server/w_hlac.qc:     pointparticles(particleeffectnum("laser_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
-// used in qcsrc/server/w_laser.qc:    pointparticles(particleeffectnum("laser_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+       lightcolor 2 2 2
+       lightradiusfade 2000
+       lightradius 200
 effect laser_muzzleflash
-// glow and light
-countabsolute 1
-type smoke
-color 0xcc0000 0xff0000
-tex 65 65
-size 10 15
-alpha 256 512 6280
-airfriction 10
-sizeincrease -100
-stretchfactor 2
-lightradius 200
-lightradiusfade 2000
-lightcolor 3 0.1 0.1
-// electricity
+       airfriction 10
+       alpha 256 512 6280
+       color 0xcc0000 0xff0000
+       countabsolute 1
+       lightcolor 3 0.1 0.1
+       lightradiusfade 2000
+       lightradius 200
+       sizeincrease -100
+       size 10 15
+       stretchfactor 2
+       tex 65 65
+       type smoke
 effect laser_muzzleflash
-count 3
-type spark
-color 0xb44215 0xff0000
-tex 43 43
-size 5 7
-alpha 256 512 6280
-airfriction 10
-originjitter 2 2 2
-velocityjitter 150 150 150
-velocitymultiplier 0.2
-sizeincrease -100
-stretchfactor 2.3
-rotate -180 180 4000 -4000
-// fire
+       airfriction 10
+       alpha 256 512 6280
+       color 0xb44215 0xff0000
+       count 3
+       originjitter 2 2 2
+       rotate -180 180 4000 -4000
+       sizeincrease -100
+       size 5 7
+       stretchfactor 2.300000
+       tex 43 43
+       type spark
+       velocityjitter 150 150 150
+       velocitymultiplier 0.200000
 effect laser_muzzleflash
-count 6
-type spark
-color 0xff4200 0xff0000
-tex 8 15
-size 7 9
-alpha 256 512 6280
-airfriction 12
-originjitter 2 2 2
-velocityjitter 100 100 100
-velocitymultiplier 0.2
-sizeincrease -100
-stretchfactor 2
-
-
-// decal
-// used in qcsrc/client/damage.qc:                             pointparticles(particleeffectnum("laser_impact"), org2, backoff * 1000, 1)
-// used in qcsrc/client/damage.qc:                             pointparticles(particleeffectnum("laser_impact"), org2, backoff * 1000, 1)
+       airfriction 12
+       alpha 256 512 6280
+       color 0xff4200 0xff0000
+       count 6
+       originjitter 2 2 2
+       sizeincrease -100
+       size 7 9
+       stretchfactor 2
+       tex 8 15
+       type spark
+       velocityjitter 100 100 100
+       velocitymultiplier 0.200000
 effect laser_impact
-countabsolute 1
-type decal
-tex 47 47
-size 24 24
-alpha 256 256 0
-originjitter 14 14 14
-lightradius 200
-lightradiusfade 500
-lightcolor 8 0.4 0.4
-// flare effect
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 8 0.4 0.4
+       lightradiusfade 500
+       lightradius 200
+       originjitter 14 14 14
+       size 24 24
+       tex 47 47
+       type decal
 effect laser_impact
-countabsolute 1
-type static
-tex 39 39
-color 0xFF2010 0xFF2010
-alpha 256 256 1024
-size 24 24
-// sparks that rapidly expand and rapidly slow down to form an interesting spherical effect
+       alpha 256 256 1024
+       color 0xFF2010 0xFF2010
+       countabsolute 1
+       size 24 24
+       tex 39 39
+       type static
 effect laser_impact
-count 128
-type spark
-color 0x800000 0xFF8020
-alpha 256 256 1024
-size 4 4
-//bounce 1.5
-airfriction 6
-liquidfriction 6
-//originjitter 32 32 32
-velocityjitter 256 256 256
+       airfriction 6
+       alpha 256 256 1024
+       color 0x800000 0xFF8020
+       count 128
+       liquidfriction 6
+       size 4 4
+       type spark
+       velocityjitter 256 256 256
 effect laser_impact
-count 4
-type smoke
-tex 48 55
-color 0x800000 0xFF8020
-size 12 12
-alpha 128 256 256
-originjitter 1 1 1
-velocitymultiplier 0.01
-velocityjitter 16 16 16
-sizeincrease 6
-
-
-
-// used in qcsrc/server/w_campingrifle.qc:     pointparticles(particleeffectnum("shotgun_muzzleflash"), w_shotorg, w_shotdir * 2000, 1)
-// used in qcsrc/server/w_shotgun.qc:  pointparticles(particleeffectnum("shotgun_muzzleflash"), w_shotorg, w_shotdir * 1000, cvar("g_balance_shotgun_primary_ammo"))
-// used in qcsrc/server/w_shotgun.qc:  pointparticles(particleeffectnum("shotgun_muzzleflash"), w_shotorg, w_shotdir * 1000, cvar("g_balance_shotgun_secondary_ammo"))
-effect shotgun_muzzleflash
-count 1.5
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 5 5
-alpha 256 256 512
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-velocitymultiplier 0.01
-lightradius 200
-lightradiusfade 2000
-lightcolor 2 1.5 0.2
-sizeincrease 12
-velocitymultiplier 0.05
+       alpha 128 256 256
+       color 0x800000 0xFF8020
+       count 4
+       originjitter 1 1 1
+       sizeincrease 6
+       size 12 12
+       tex 48 55
+       type smoke
+       velocityjitter 16 16 16
+       velocitymultiplier 0.010000
 effect shotgun_muzzleflash
-count 16
-type spark
-tex 48 55
-color 0xffdb96 0xff5400
-size 10 20
-alpha 0 128 1024
-originjitter 1 1 1
-velocityjitter 100 100 100
-airfriction 5
-stretchfactor 2.5
-velocitymultiplier 0.5
-
-// shotgun pellet impact
-// decal
-// used in qcsrc/client/damage.qc:                             pointparticles(particleeffectnum("shotgun_impact"), org2, backoff * 1000, 1)
+       alpha 256 256 512
+       color 0x202020 0x404040
+       count 1.500000
+       lightcolor 2 1.5 0.2
+       lightradiusfade 2000
+       lightradius 200
+       originjitter 1.5 1.5 1.5
+       sizeincrease 12
+       size 5 5
+       tex 0 8
+       type smoke
+       velocityjitter 6 6 6
+       velocitymultiplier 0.050000
+effect shotgun_muzzleflash
+       airfriction 5
+       alpha 0 128 1024
+       color 0xffdb96 0xff5400
+       count 16
+       originjitter 1 1 1
+       size 10 20
+       stretchfactor 2.500000
+       tex 48 55
+       type spark
+       velocityjitter 100 100 100
+       velocitymultiplier 0.500000
 effect shotgun_impact
-countabsolute 1
-type decal
-tex 56 59
-size 5 8
-alpha 256 256 0
-originjitter 10 10 10
-//lightradius 30
-//lightradiusfade 90
-//lightcolor 1 1 1
-// dust/smoke drifting away from the impact
+       alpha 256 256 0
+       countabsolute 1
+       originjitter 10 10 10
+       size 5 8
+       tex 56 59
+       type decal
 effect shotgun_impact
-type alphastatic
-notunderwater
-tex 0 8
-count 1
-size 10 20
-sizeincrease 25
-alpha 300 550 756
-velocityjitter 150 150 150
-velocitymultiplier 0.2
-airfriction 5
-color 0x473a37 0x0b0a07
-rotate 0 360 -50 50
-// dust/smoke staying at the impact
+       airfriction 5
+       alpha 300 550 756
+       color 0x473a37 0x0b0a07
+       count 1
+       notunderwater
+       rotate 0 360 -50 50
+       sizeincrease 25
+       size 10 20
+       tex 0 8
+       type alphastatic
+       velocityjitter 150 150 150
+       velocitymultiplier 0.200000
 effect shotgun_impact
-type alphastatic
-notunderwater
-tex 36 36
-count 0.2
-size 10 11
-sizeincrease 74
-alpha 200 350 500
-velocityjitter 11 11 11
-airfriction 5
-color 0x201d1a 0x000000
-bounce 6
-velocitymultiplier 0.03
-rotate 0 360 -50 50
-// sparks
+       airfriction 5
+       alpha 200 350 500
+       bounce 6
+       color 0x201d1a 0x000000
+       count 0.200000
+       notunderwater
+       rotate 0 360 -50 50
+       sizeincrease 74
+       size 10 11
+       tex 36 36
+       type alphastatic
+       velocityjitter 11 11 11
+       velocitymultiplier 0.030000
 effect shotgun_impact
-notunderwater
-count 0.5
-type spark
-tex 40 40
-color 0xFDFFD9 0xFDFFD9
-size 0.6 0.6
-alpha 0 356 268
-gravity 1
-bounce 1.5
-airfriction 1.1
-originjitter 1 1 1
-velocityjitter 200 200 200
-velocitymultiplier 0.2
-
-
-// used in qcsrc/server/w_uzi.qc:      pointparticles(particleeffectnum("uzi_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+       airfriction 1.100000
+       alpha 0 356 268
+       bounce 1.500000
+       color 0xFDFFD9 0xFDFFD9
+       count 0.500000
+       gravity 1
+       notunderwater
+       originjitter 1 1 1
+       size 0.600000 0.600000
+       tex 40 40
+       type spark
+       velocityjitter 200 200 200
+       velocitymultiplier 0.200000
 effect uzi_muzzleflash
-count 1
-type static
-color 0x202020 0x404040
-tex 0 8
-size 5 5
-alpha 256 256 512
-originjitter 1.5 1.5 1.5
-velocityjitter 1 1 1
-velocitymultiplier 0.03
-lightradius 200
-lightradiusfade 2000
-lightcolor 2 1.5 0.2
-gravity -0.1
+       alpha 256 256 512
+       color 0x202020 0x404040
+       count 1
+       gravity -0.100000
+       lightcolor 2 1.5 0.2
+       lightradiusfade 2000
+       lightradius 200
+       originjitter 1.5 1.5 1.5
+       size 5 5
+       tex 0 8
+       type static
+       velocityjitter 1 1 1
+       velocitymultiplier 0.030000
 effect uzi_muzzleflash
-count 3
-type spark
-tex 40 40
-color 0xff9c00 0xffd200
-size 0.3 0.4
-alpha 0 256 6000
-originjitter 1 1 1
-velocityjitter 555 555 555
-velocitymultiplier 3
-stretchfactor 0.15
-airfriction 12
-
-
-// used in qcsrc/server/cl_client.qc:  //pointparticles(particleeffectnum("machinegun_impact"), self.origin + self.view_ofs + '0 0 7', '0 0 0', 1)
-// used in qcsrc/client/damage.qc:                             pointparticles(particleeffectnum("machinegun_impact"), org2, backoff * 1000, 1)
-// used in qcsrc/client/damage.qc:                             pointparticles(particleeffectnum("machinegun_impact"), org2, backoff * 1000, 1)
-// decal
+       airfriction 12
+       alpha 0 256 6000
+       color 0xff9c00 0xffd200
+       count 3
+       originjitter 1 1 1
+       size 0.300000 0.400000
+       stretchfactor 0.150000
+       tex 40 40
+       type spark
+       velocityjitter 555 555 555
+       velocitymultiplier 3
 effect machinegun_impact
-countabsolute 1
-type decal
-tex 56 59
-size 5 5
-alpha 256 256 0
-originjitter 10 10 10
-lightradius 80
-lightradiusfade 800
-lightcolor 6 3.6 0.6
-// dust/smoke drifting away from the impact
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 6 3.6 0.6
+       lightradiusfade 800
+       lightradius 80
+       originjitter 10 10 10
+       size 5 5
+       tex 56 59
+       type decal
 effect machinegun_impact
-type alphastatic
-notunderwater
-tex 0 8
-count 1.5
-size 10 20
-sizeincrease 15
-alpha 300 550 456
-velocityjitter 150 150 150
-velocitymultiplier 0.1
-airfriction 5
-color 0x473a37 0x0b0a07
-rotate 0 360 -50 50
-// dust/smoke staying at the impact
+       airfriction 5
+       alpha 300 550 456
+       color 0x473a37 0x0b0a07
+       count 1.500000
+       notunderwater
+       rotate 0 360 -50 50
+       sizeincrease 15
+       size 10 20
+       tex 0 8
+       type alphastatic
+       velocityjitter 150 150 150
+       velocitymultiplier 0.100000
 effect machinegun_impact
-type alphastatic
-notunderwater
-tex 36 36
-count 0.5
-size 10 11
-sizeincrease 74
-alpha 200 350 500
-velocityjitter 11 11 11
-airfriction 5
-color 0x201d1a 0x000000
-bounce 6
-velocitymultiplier 0.03
-rotate 0 360 -50 50
-//debris
+       airfriction 5
+       alpha 200 350 500
+       bounce 6
+       color 0x201d1a 0x000000
+       count 0.500000
+       notunderwater
+       rotate 0 360 -50 50
+       sizeincrease 74
+       size 10 11
+       tex 36 36
+       type alphastatic
+       velocityjitter 11 11 11
+       velocitymultiplier 0.030000
 effect machinegun_impact
-type alphastatic
-notunderwater
-tex 66 68
-count 1
-size 1 5
-airfriction 1
-gravity 1.4
-alpha 300 550 256
-velocityjitter 350 350 350
-velocitymultiplier 0.2
-bounce 1.7
-color 0x63493e 0xffffff
-rotate 0 360 -500 500
-// sparks
+       airfriction 1
+       alpha 300 550 256
+       bounce 1.700000
+       color 0x63493e 0xffffff
+       count 1
+       gravity 1.400000
+       notunderwater
+       rotate 0 360 -500 500
+       size 1 5
+       tex 66 68
+       type alphastatic
+       velocityjitter 350 350 350
+       velocitymultiplier 0.200000
 effect machinegun_impact
-notunderwater
-count 1
-type spark
-tex 40 40
-color 0xFDFFD9 0xFDFFD9
-size 0.3 0.3
-alpha 256 256 168
-gravity 1
-bounce 1
-airfriction 2
-originjitter 1 1 1
-velocityjitter 300 300 300
-velocitymultiplier 0.2
-
-
-
-
-// used in qcsrc/server/nexball.qc:    pointparticles(particleeffectnum("grenadelauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
-// used in qcsrc/server/w_grenadelauncher.qc:  pointparticles(particleeffectnum("grenadelauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
-// used in qcsrc/server/w_grenadelauncher.qc:  pointparticles(particleeffectnum("grenadelauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
-// used in qcsrc/server/w_porto.qc:    //pointparticles(particleeffectnum("grenadelauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+       airfriction 2
+       alpha 256 256 168
+       bounce 1
+       color 0xFDFFD9 0xFDFFD9
+       count 1
+       gravity 1
+       notunderwater
+       originjitter 1 1 1
+       size 0.300000 0.300000
+       tex 40 40
+       type spark
+       velocityjitter 300 300 300
+       velocitymultiplier 0.200000
 effect grenadelauncher_muzzleflash
-count 1.5
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 5 5
-alpha 256 256 512
-originjitter 1.5 1.5 1.5
-airfriction 12
-velocityjitter 20 20 20
-velocitymultiplier 0.03
-lightradius 200
-lightradiusfade 2000
-lightcolor 2 1.5 0.2
+       airfriction 12
+       alpha 256 256 512
+       color 0x202020 0x404040
+       count 1.500000
+       lightcolor 2 1.5 0.2
+       lightradiusfade 2000
+       lightradius 200
+       originjitter 1.5 1.5 1.5
+       size 5 5
+       tex 0 8
+       type smoke
+       velocityjitter 20 20 20
+       velocitymultiplier 0.030000
 effect grenadelauncher_muzzleflash
-count 16
-type spark
-tex 48 55
-color 0xffdb96 0xff5400
-size 10 20
-alpha 0 128 1024
-originjitter 1 1 1
-velocityjitter 100 100 100
-velocitymultiplier 0.5
-airfriction 5
-stretchfactor 2.5
-
-
-
-// mortar trail
-// smoke
-// used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_GRENADE"), from, to)
-// used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_GRENADE"), from, to)
+       airfriction 5
+       alpha 0 128 1024
+       color 0xffdb96 0xff5400
+       count 16
+       originjitter 1 1 1
+       size 10 20
+       stretchfactor 2.500000
+       tex 48 55
+       type spark
+       velocityjitter 100 100 100
+       velocitymultiplier 0.500000
 effect TR_GRENADE
-trailspacing 4
-type smoke
-color 0x101010 0x000000
-tex 0 8
-size 3 2
-bounce 1
-sizeincrease 10
-alpha 300 400 780
-originjitter 1 1 1
-velocityjitter 1 1 1
-velocitymultiplier -0.02
-//gravity -0.11
-// fire
+       alpha 300 400 780
+       bounce 1
+       color 0x101010 0x000000
+       originjitter 1 1 1
+       sizeincrease 10
+       size 3 2
+       tex 0 8
+       trailspacing 4
+       type smoke
+       velocityjitter 1 1 1
+       velocitymultiplier -0.020000
 effect TR_GRENADE
-notunderwater
-trailspacing 4
-type static
-color 0xffdf72 0x811200
-tex 48 55
-size 5 2
-sizeincrease -15
-alpha 100 144 988
-airfriction 8
-velocityjitter 32 32 32
-velocitymultiplier -1.0
-// bubbles
+       airfriction 8
+       alpha 100 144 988
+       color 0xffdf72 0x811200
+       notunderwater
+       sizeincrease -15
+       size 5 2
+       tex 48 55
+       trailspacing 4
+       type static
+       velocityjitter 32 32 32
+       velocitymultiplier -1
 effect TR_GRENADE
-underwater
-trailspacing 16
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 1 1
-alpha 256 256 256
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
-
-
-
-// hookbomb trail
-// smoke
-// used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_KNIGHTSPIKE"), from, to)
-// used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_KNIGHTSPIKE"), from, to)
-// used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_KNIGHTSPIKE"), from, to)
-effect TR_KNIGHTSPIKE // used for MF_TRACER2
-notunderwater
-trailspacing 6
-type smoke
-color 0x303030 0x000000
-tex 0 8
-size 3 3
-bounce 1
-sizeincrease 11
-alpha 300 400 600
-originjitter 2 2 2
-velocityjitter 3 3 3
-velocitymultiplier -0.02
-gravity -0.11
-//marker
-effect TR_KNIGHTSPIKE // used for MF_TRACER2
-type alphastatic
-color 0x666666 0x000000
-tex 62 62
-size 1 1
-sizeincrease -0.1
-trailspacing 2
-alpha 256 256 720
-// bubbles
-effect TR_KNIGHTSPIKE // used for MF_TRACER2
-underwater
-trailspacing 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 1 1
-alpha 256 256 256
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
-
-
-
-// decal
-// used in qcsrc/client/damage.qc:                             pointparticles(particleeffectnum("grenade_explode"), org2, '0 0 0', 1)
+       alpha 256 256 256
+       bounce 1.500000
+       color 0x404040 0x808080
+       gravity -0.125000
+       liquidfriction 4
+       size 1 1
+       tex 62 62
+       trailspacing 16
+       type bubble
+       underwater
+       velocityjitter 16 16 16
+effect TR_KNIGHTSPIKE
+       alpha 300 400 600
+       bounce 1
+       color 0x303030 0x000000
+       gravity -0.110000
+       notunderwater
+       originjitter 2 2 2
+       sizeincrease 11
+       size 3 3
+       tex 0 8
+       trailspacing 6
+       type smoke
+       velocityjitter 3 3 3
+       velocitymultiplier -0.020000
+effect TR_KNIGHTSPIKE
+       alpha 256 256 720
+       color 0x666666 0x000000
+       sizeincrease -0.100000
+       size 1 1
+       tex 62 62
+       trailspacing 2
+       type alphastatic
+effect TR_KNIGHTSPIKE
+       alpha 256 256 256
+       bounce 1.500000
+       color 0x404040 0x808080
+       gravity -0.125000
+       liquidfriction 4
+       size 1 1
+       tex 62 62
+       trailspacing 32
+       type bubble
+       underwater
+       velocityjitter 16 16 16
 effect grenade_explode
-countabsolute 1
-type decal
-tex 8 16
-size 48 48
-alpha 256 256 0
-originjitter 26 26 26
-lightradius 250
-lightradiusfade 400
-lightcolor 8 4 1
-// fire effect which expands then slows
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 8 4 1
+       lightradiusfade 400
+       lightradius 250
+       originjitter 26 26 26
+       size 48 48
+       tex 8 16
+       type decal
 effect grenade_explode
-notunderwater
-count 40
-type static
-tex 48 55
-color 0xe03f00 0x5e0000
-size 16 26
-sizeincrease 20
-alpha 128 228 356
-bounce 4.5
-airfriction 8
-liquidfriction 8
-originjitter 8 8 8
-velocityjitter 256 256 256
-// fire effect which make brigt dot inside
+       airfriction 8
+       alpha 128 228 356
+       bounce 4.500000
+       color 0xe03f00 0x5e0000
+       count 40
+       liquidfriction 8
+       notunderwater
+       originjitter 8 8 8
+       sizeincrease 20
+       size 16 26
+       tex 48 55
+       type static
+       velocityjitter 256 256 256
 effect grenade_explode
-notunderwater
-count 15
-type static
-tex 48 55
-color 0xe03f00 0xffdf92
-size 6 16
-sizeincrease 40
-alpha 228 328 756
-bounce 1
-airfriction 8
-liquidfriction 8
-originjitter 8 8 8
-velocityjitter 256 256 256
-// smoke
+       airfriction 8
+       alpha 228 328 756
+       bounce 1
+       color 0xe03f00 0xffdf92
+       count 15
+       liquidfriction 8
+       notunderwater
+       originjitter 8 8 8
+       sizeincrease 40
+       size 6 16
+       tex 48 55
+       type static
+       velocityjitter 256 256 256
 effect grenade_explode
-type alphastatic
-notunderwater
-tex 0 8
-count 10
-size 20 40
-sizeincrease 34
-alpha 300 550 556
-velocityjitter 256 256 256
-airfriction 5
-color 0x000000 0x111111
-bounce 6
-// underwater bubbles
+       airfriction 5
+       alpha 300 550 556
+       bounce 6
+       color 0x000000 0x111111
+       count 10
+       notunderwater
+       sizeincrease 34
+       size 20 40
+       tex 0 8
+       type alphastatic
+       velocityjitter 256 256 256
 effect grenade_explode
-underwater
-count 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 6
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 196 196 196
-rotate 0 0 0 0
-// underwatershockwave
+       alpha 128 256 64
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 32
+       gravity -0.125000
+       liquidfriction 0.250000
+       originjitter 16 16 16
+       size 3 6
+       tex 62 62
+       type bubble
+       underwater
+       velocityjitter 196 196 196
 effect grenade_explode
-underwater
-type smoke
-countabsolute 1
-tex 33 33
-size 5 5
-sizeincrease 1500
-alpha 40 40 300
-velocitymultiplier 0.3
-// bouncing sparks
+       alpha 40 40 300
+       countabsolute 1
+       sizeincrease 1500
+       size 5 5
+       tex 33 33
+       type smoke
+       underwater
+       velocitymultiplier 0.300000
 effect grenade_explode
-notunderwater
-count 16
-type spark
-tex 40 40
-color 0xffa35b 0xfff2be
-size 1 0.1
-alpha 644 956 484
-gravity 1
-airfriction 1
-bounce 1.6
-liquidfriction 0.8
-velocityoffset 0 0 80
-originjitter 16 16 16
-velocityjitter 424 424 624
-// debris
+       airfriction 1
+       alpha 644 956 484
+       bounce 1.600000
+       color 0xffa35b 0xfff2be
+       count 16
+       gravity 1
+       liquidfriction 0.800000
+       notunderwater
+       originjitter 16 16 16
+       size 1 0.100000
+       tex 40 40
+       type spark
+       velocityjitter 424 424 624
+       velocityoffset 0 0 80
 effect grenade_explode
-notunderwater
-count 12
-type alphastatic
-tex 66 68
-color 0x6a3d25 0xcac5b4
-size 2 6
-alpha 644 956 684
-gravity 1.3
-airfriction 0.5
-bounce 1.6
-velocityjitter 324 324 524
-rotate -180 180 -1000 1000
-
-
-
-// used in qcsrc/server/w_electro.qc:  pointparticles(particleeffectnum("electro_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
-// used in qcsrc/server/w_electro.qc:  pointparticles(particleeffectnum("electro_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+       airfriction 0.500000
+       alpha 644 956 684
+       bounce 1.600000
+       color 0x6a3d25 0xcac5b4
+       count 12
+       gravity 1.300000
+       notunderwater
+       rotate -180 180 -1000 1000
+       size 2 6
+       tex 66 68
+       type alphastatic
+       velocityjitter 324 324 524
 effect electro_muzzleflash
-countabsolute 1
-type smoke
-color 0x283880 0x283880 // 0x202020 0x404040
-tex 65 65
-size 15 15
-alpha 256 256 512
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-sizeincrease -10
-velocitymultiplier 0.01
-lightradius 200
-lightradiusfade 2000
-lightcolor 1.5 3 6
-
+       alpha 256 256 512
+       color 0x283880 0x283880
+       countabsolute 1
+       lightcolor 1.5 3 6
+       lightradiusfade 2000
+       lightradius 200
+       originjitter 1.5 1.5 1.5
+       sizeincrease -10
+       size 15 15
+       tex 65 65
+       type smoke
+       velocityjitter 6 6 6
+       velocitymultiplier 0.010000
 effect electro_muzzleflash
-count 7
-type spark
-tex 8 15
-color 0xD9FDFF 0xD9FDFF
-size 5 15
-alpha 110 228 2024
-originjitter 1 1 1
-velocityjitter 150 150 150
-velocitymultiplier 0.5
-airfriction 2
-stretchfactor 1.5
-
+       airfriction 2
+       alpha 110 228 2024
+       color 0xD9FDFF 0xD9FDFF
+       count 7
+       originjitter 1 1 1
+       size 5 15
+       stretchfactor 1.500000
+       tex 8 15
+       type spark
+       velocityjitter 150 150 150
+       velocitymultiplier 0.500000
 effect electro_muzzleflash
-count 5
-type spark
-tex 41 41
-color 0xD9FDFF 0xD9FDFF
-size 7 6
-alpha 110 228 1024
-originjitter 1 1 1
-velocityjitter 350 350 350
-velocitymultiplier 2.5
-airfriction 8
-gravity 1.3
-stretchfactor 0.1
-
-
-// electro trail
-// glowing vapor trail
-// used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_NEXUIZPLASMA"), from, to)
+       airfriction 8
+       alpha 110 228 1024
+       color 0xD9FDFF 0xD9FDFF
+       count 5
+       gravity 1.300000
+       originjitter 1 1 1
+       size 7 6
+       stretchfactor 0.100000
+       tex 41 41
+       type spark
+       velocityjitter 350 350 350
+       velocitymultiplier 2.500000
 effect TR_NEXUIZPLASMA
-trailspacing 2
-type static
-color 0x283880 0x283880
-size 3 3
-tex 38 38
-alpha 256 256 968
-//velocityjitter 16 16 16
-lightradius 90
-lighttime 0
-lightcolor 1.5 3 6
-velocitymultiplier -0.1
-// bright sparks
+       alpha 256 256 968
+       color 0x283880 0x283880
+       lightcolor 1.5 3 6
+       lightradius 90
+       size 3 3
+       tex 38 38
+       trailspacing 2
+       type static
+       velocitymultiplier -0.100000
 effect TR_NEXUIZPLASMA
-trailspacing 12
-count 1.5
-type snow
-tex 42 42
-color 0x629dff 0x0018ff
-size 2 4
-sizeincrease -20
-alpha 444 512 1866
-bounce 1
-velocityoffset 0 0 15
-airfriction 12
-originjitter 1 1 1
-velocityjitter 50 50 50
-
-
-
-// decal
-// used in qcsrc/client/damage.qc:                                             pointparticles(particleeffectnum("electro_impact"), org2, '0 0 0', 1)
+       airfriction 12
+       alpha 444 512 1866
+       bounce 1
+       color 0x629dff 0x0018ff
+       count 1.500000
+       originjitter 1 1 1
+       sizeincrease -20
+       size 2 4
+       tex 42 42
+       trailspacing 12
+       type snow
+       velocityjitter 50 50 50
+       velocityoffset 0 0 15
 effect electro_impact
-countabsolute 1
-type decal
-tex 59 59
-size 32 32
-alpha 256 256 0
-originjitter 17 17 17
-lightradius 250
-lightradiusfade 250
-lightcolor 3.125 4.375 10
-// shockwave
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 3.1 4.4 10
+       lightradiusfade 250
+       lightradius 250
+       originjitter 17 17 17
+       size 32 32
+       tex 59 59
+       type decal
 effect electro_impact
-type smoke
-countabsolute 1
-tex 33 33
-size 32 32
-sizeincrease 1000
-color 0x80C0FF 0x80C0FF
-alpha 40 40 350
-velocitymultiplier 44
-// flare effect
+       alpha 40 40 350
+       color 0x80C0FF 0x80C0FF
+       countabsolute 1
+       sizeincrease 1000
+       size 32 32
+       tex 33 33
+       type smoke
+       velocitymultiplier 44
 effect electro_impact
-countabsolute 1
-type static
-tex 38 38
-color 0x80C0FF 0x80C0FF
-size 12 32
-alpha 256 256 512
-// cloud of bouncing sparks
+       alpha 256 256 512
+       color 0x80C0FF 0x80C0FF
+       countabsolute 1
+       size 12 32
+       tex 38 38
+       type static
 effect electro_impact
-count 30
-type smoke
-tex 42 42
-color 0x629dff 0x0018ff
-size 36 36
-sizeincrease -50
-alpha 256 256 1024
-bounce 2
-gravity -0.3
-airfriction 6
-originjitter 1 1 1
-velocityjitter 512 512 512
-rotate -180 180 -9999 9999
-// inner cloud of smoke
+       airfriction 6
+       alpha 256 256 1024
+       bounce 2
+       color 0x629dff 0x0018ff
+       count 30
+       gravity -0.300000
+       originjitter 1 1 1
+       rotate -180 180 -9999 9999
+       sizeincrease -50
+       size 36 36
+       tex 42 42
+       type smoke
+       velocityjitter 512 512 512
 effect electro_impact
-count 30
-type smoke
-color 0x629dff 0x0018ff
-tex 0 8
-size 20 24
-sizeincrease 50
-alpha 200 256 512
-airfriction 30
-originjitter 20 20 20
-velocityjitter 320 320 320
-
-// decal
-// used in qcsrc/client/damage.qc:                                     pointparticles(particleeffectnum("electro_ballexplode"), org2, '0 0 0', 1)
+       airfriction 30
+       alpha 200 256 512
+       color 0x629dff 0x0018ff
+       count 30
+       originjitter 20 20 20
+       sizeincrease 50
+       size 20 24
+       tex 0 8
+       type smoke
+       velocityjitter 320 320 320
 effect electro_ballexplode
-countabsolute 1
-type decal
-tex 59 59
-size 32 32
-alpha 256 256 0
-originjitter 17 17 17
-lightradius 250
-lightradiusfade 250
-lightcolor 3.125 4.375 10
-// flare effect
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 3.1 4.4 10
+       lightradiusfade 250
+       lightradius 250
+       originjitter 17 17 17
+       size 32 32
+       tex 59 59
+       type decal
 effect electro_ballexplode
-countabsolute 1
-type static
-tex 38 38
-color 0x80C0FF 0x80C0FF
-size 32 32
-alpha 256 256 512
-// cloud of bouncing sparks
+       alpha 256 256 512
+       color 0x80C0FF 0x80C0FF
+       countabsolute 1
+       size 32 32
+       tex 38 38
+       type static
 effect electro_ballexplode
-count 64
-type spark
-tex 41 41
-color 0xFDFFD9 0xFDFFD9
-size 1 2
-alpha 256 256 1024
-bounce 2
-stretchfactor 0.4
-//airfriction 2
-originjitter 1 1 1
-velocityjitter 512 512 512
-// inner cloud of smoke
+       alpha 256 256 1024
+       bounce 2
+       color 0xFDFFD9 0xFDFFD9
+       count 64
+       originjitter 1 1 1
+       size 1 2
+       stretchfactor 0.400000
+       tex 41 41
+       type spark
+       velocityjitter 512 512 512
 effect electro_ballexplode
-count 8
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 24 24
-alpha 256 256 512
-originjitter 20 20 20
-velocityjitter 32 32 32
-
-
-
-// decal
-// used in qcsrc/client/damage.qc:                                             pointparticles(particleeffectnum("electro_combo"), org2, '0 0 0', 1)
+       alpha 256 256 512
+       color 0x202020 0x404040
+       count 8
+       originjitter 20 20 20
+       size 24 24
+       tex 0 8
+       type smoke
+       velocityjitter 32 32 32
 effect electro_combo
-countabsolute 1
-type decal
-tex 59 59
-size 64 64
-alpha 256 256 0
-originjitter 17 17 17
-lightradius 400
-lightradiusfade 300
-lightcolor 4 5 6
-// flare effect
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 4 5 6
+       lightradiusfade 300
+       lightradius 400
+       originjitter 17 17 17
+       size 64 64
+       tex 59 59
+       type decal
 effect electro_combo
-countabsolute 1
-type static
-tex 38 38
-color 0x80C0FF 0x80C0FF
-size 48 48
-alpha 128 128 64
-// large sparks
+       alpha 128 128 64
+       color 0x80C0FF 0x80C0FF
+       countabsolute 1
+       size 48 48
+       tex 38 38
+       type static
 effect electro_combo
-count 5
-type static
-color 0x2030FF 0x80C0FF
-size 32 32
-sizeincrease 50
-tex 0 7
-alpha 156 156 156
-bounce 2
-airfriction 6
-liquidfriction 16
-//velocityoffset 0 0 120
-velocityjitter 512 512 512
+       airfriction 6
+       alpha 156 156 156
+       bounce 2
+       color 0x2030FF 0x80C0FF
+       count 5
+       liquidfriction 16
+       sizeincrease 50
+       size 32 32
+       tex 0 7
+       type static
+       velocityjitter 512 512 512
 effect electro_combo
-count 32
-type spark
-tex 41 41
-color 0xa9cacf 0x0054ff
-size 2 4
-stretchfactor 2
-gravity 0.3
-alpha 444 512 700
-velocitymultiplier 3
-bounce 1.6
-//airfriction 2
-originjitter 1 1 1
-velocityjitter 312 312 312
-// inner cloud of smoke
+       alpha 444 512 700
+       bounce 1.600000
+       color 0xa9cacf 0x0054ff
+       count 32
+       gravity 0.300000
+       originjitter 1 1 1
+       size 2 4
+       stretchfactor 2
+       tex 41 41
+       type spark
+       velocityjitter 312 312 312
+       velocitymultiplier 3
 effect electro_combo
-count 0.125
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 24 24
-alpha 256 256 256
-originjitter 20 20 20
-velocityjitter 32 32 32
-// shockwave
+       alpha 256 256 256
+       color 0x202020 0x404040
+       count 0.125000
+       originjitter 20 20 20
+       size 24 24
+       tex 0 8
+       type smoke
+       velocityjitter 32 32 32
 effect electro_combo
-type smoke
-countabsolute 1
-color 0xa9cacf 0x0054ff
-tex 33 33
-size 30 30
-sizeincrease 600
-alpha 40 40 100
-velocitymultiplier 0.3
-
-
-
-// used in qcsrc/server/w_crylink.qc:  pointparticles(particleeffectnum("crylink_muzzleflash"), w_shotorg, w_shotdir * 1000, shots)
-// used in qcsrc/server/w_crylink.qc:  pointparticles(particleeffectnum("crylink_muzzleflash"), w_shotorg, w_shotdir * 1000, shots)
+       alpha 40 40 100
+       color 0xa9cacf 0x0054ff
+       countabsolute 1
+       sizeincrease 600
+       size 30 30
+       tex 33 33
+       type smoke
+       velocitymultiplier 0.300000
 effect crylink_muzzleflash
-count 0.5
-type smoke
-color 0xdd9cff 0xff0090
-tex 65 65
-size 15 20
-alpha 128 128 2024
-velocitymultiplier 0.01
-lightradius 200
-lightradiusfade 2000
-lightcolor 1.6 0.2 2
+       alpha 128 128 2024
+       color 0xdd9cff 0xff0090
+       count 0.500000
+       lightcolor 1.6 0.2 2
+       lightradiusfade 2000
+       lightradius 200
+       size 15 20
+       tex 65 65
+       type smoke
+       velocitymultiplier 0.010000
 effect crylink_muzzleflash
-count 5
-type spark
-tex 35 36
-color 0xA080C0 0xA080C0
-size 5 10
-alpha 0 128 1024
-originjitter 1 1 1
-velocityjitter 200 200 200
-velocitymultiplier 0.3
-airfriction 12
-stretchfactor 1.5
-
-
-// crylink impact effect
-// decal
-// used in qcsrc/client/damage.qc:                                     pointparticles(particleeffectnum("crylink_impact"), org2, '0 0 0', 1)
+       airfriction 12
+       alpha 0 128 1024
+       color 0xA080C0 0xA080C0
+       count 5
+       originjitter 1 1 1
+       size 5 10
+       stretchfactor 1.500000
+       tex 35 36
+       type spark
+       velocityjitter 200 200 200
+       velocitymultiplier 0.300000
 effect crylink_impact
-countabsolute 1
-type decal
-tex 47 47
-size 24 24
-alpha 256 256 0
-originjitter 12 12 12
-//lightradius 200
-//lightradiusfade 800
-//lightcolor 3.2 0.4 4
-// purple flare effect
+       alpha 256 256 0
+       countabsolute 1
+       originjitter 12 12 12
+       size 24 24
+       tex 47 47
+       type decal
 effect crylink_impact
-countabsolute 1
-type static
-tex 39 39
-color 0x504060 0x504060
-size 24 24
-alpha 256 256 512
-// purple sparks
+       alpha 256 256 512
+       color 0x504060 0x504060
+       countabsolute 1
+       size 24 24
+       tex 39 39
+       type static
 effect crylink_impact
-count 40
-type spark
-tex 41 41
-color 0xA040C0 0xA040C0
-bounce 2
-size 6 6
-alpha 256 256 1024
-velocityjitter 512 512 512
-// purple splash
+       alpha 256 256 1024
+       bounce 2
+       color 0xA040C0 0xA040C0
+       count 40
+       size 6 6
+       tex 41 41
+       type spark
+       velocityjitter 512 512 512
 effect crylink_impact
-count 1.5
-type static
-color 0xE070FF 0xE070FF
-size 16 16
-alpha 256 256 512
-velocityjitter 32 32 32
-// purple splash
+       alpha 256 256 512
+       color 0xE070FF 0xE070FF
+       count 1.500000
+       size 16 16
+       type static
+       velocityjitter 32 32 32
 effect crylink_impact
-count 3
-type static
-color 0xE070FF 0xE070FF
-size 16 16
-alpha 256 256 1024
-velocityjitter 256 256 256
-
-
-
-// used in qcsrc/server/w_minstanex.qc:        pointparticles(particleeffectnum("nex_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
-// used in qcsrc/client/particles.qc:  pointparticles(particleeffectnum("nex_muzzleflash"), shotorg, normalize(endpos - shotorg) * 1000, 1)
+       alpha 256 256 1024
+       color 0xE070FF 0xE070FF
+       count 3
+       size 16 16
+       type static
+       velocityjitter 256 256 256
 effect nex_muzzleflash
-count 12
-type spark
-color 0x202020 0x0072ff
-tex 48 55
-size 16 16
-alpha 328 328 4000
-originjitter 4 4 4
-velocityjitter 180 180 180
-velocitymultiplier 1.4
-stretchfactor 2
-sizeincrease -100
-airfriction 9
-lightradius 200
-lightradiusfade 200
-lightcolor 2 2.5 3
+       airfriction 9
+       alpha 328 328 4000
+       color 0x202020 0x0072ff
+       count 12
+       lightcolor 2 2.5 3
+       lightradiusfade 200
+       lightradius 200
+       originjitter 4 4 4
+       sizeincrease -100
+       size 16 16
+       stretchfactor 2
+       tex 48 55
+       type spark
+       velocityjitter 180 180 180
+       velocitymultiplier 1.400000
 effect nex_muzzleflash
-count 50
-type spark
-tex 41 41
-color 0xD9FDFF 0xD9FDFF
-size 1 1
-alpha 0 128 1024
-originjitter 1 1 1
-velocityjitter 600 600 600
-velocitymultiplier 1.5
-airfriction 9
-
-
-
-//// nex beam
-//effect nex_beam
-//countabsolute 1
-//type beam
-//tex 200 200
-//color 0xFFFFFF 0xFFFFFF
-//size 6 6
-//alpha 128 128 192
-// nex beam: ring smoke
-// used in qcsrc/client/particles.qc:          trailparticles(world, particleeffectnum("nex_beam"), shotorg, endpos)
+       airfriction 9
+       alpha 0 128 1024
+       color 0xD9FDFF 0xD9FDFF
+       count 50
+       originjitter 1 1 1
+       size 1 1
+       tex 41 41
+       type spark
+       velocityjitter 600 600 600
+       velocitymultiplier 1.500000
 effect nex_beam
-trailspacing 64
-color 0x1680A0 0x1680A0
-size 4 4
-tex 32 32
-alpha 64 128 64
-airfriction 5
-sizeincrease 2
-type static
-// nex beam: drifting smoke
+       airfriction 5
+       alpha 64 128 64
+       color 0x1680A0 0x1680A0
+       sizeincrease 2
+       size 4 4
+       tex 32 32
+       trailspacing 64
+       type static
 effect nex_beam
-trailspacing 12
-color 0x5080A0 0x5080A0
-size 1 1
-tex 0 8
-alpha 32 64 32
-airfriction 9
-sizeincrease 8
-velocityjitter 64 64 64
-type static
-// nex beam: bright core
+       airfriction 9
+       alpha 32 64 32
+       color 0x5080A0 0x5080A0
+       sizeincrease 8
+       size 1 1
+       tex 0 8
+       trailspacing 12
+       type static
+       velocityjitter 64 64 64
 effect nex_beam
-trailspacing 12
-color 0x80CDFF 0x80CDFF
-size 4 4
-//tex 48 55
-alpha 256 256 1280
-type static
-//sparks
+       alpha 256 256 1280
+       color 0x80CDFF 0x80CDFF
+       size 4 4
+       trailspacing 12
+       type static
 effect nex_beam
-trailspacing 16
-color 0x1680A0 0x1680A0
-size 1 1
-tex 63 63
-alpha 64 128 80
-airfriction 5
-gravity -0.01
-type snow
-
-// nex impact
-// decal
-// used in qcsrc/client/damage.qc:                             pointparticles(particleeffectnum("nex_impact"), org2, '0 0 0', 1)
-// used in qcsrc/client/damage.qc:                             pointparticles(particleeffectnum("nex_impact"), org2, '0 0 0', 1)
+       airfriction 5
+       alpha 64 128 80
+       color 0x1680A0 0x1680A0
+       gravity -0.010000
+       size 1 1
+       tex 63 63
+       trailspacing 16
+       type snow
 effect nex_impact
-countabsolute 1
-type decal
-tex 47 47
-size 24 24
-alpha 256 256 0
-originjitter 14 14 14
-lightradius 200
-lightradiusfade 250
-lightcolor 4 6 8
-rotate -180 180 0 0
-// rotating something
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 4 6 8
+       lightradiusfade 250
+       lightradius 200
+       originjitter 14 14 14
+       rotate -180 180 0 0
+       size 24 24
+       tex 47 47
+       type decal
 effect nex_impact
-count 5
-type smoke
-tex 46 46
-color 0x1680A0 0x1680A0
-size 25 28
-sizeincrease 20
-alpha 55 55 50
-rotate 180 -180 500 -500
-// shockwave
+       alpha 55 55 50
+       color 0x1680A0 0x1680A0
+       count 5
+       rotate 180 -180 500 -500
+       sizeincrease 20
+       size 25 28
+       tex 46 46
+       type smoke
 effect nex_impact
-countabsolute 1
-type static
-tex 33 33
-color 0x1680A0 0x1680A0
-size 16 16
-alpha 50 50 400
-sizeincrease 900
-// shockwave2
+       alpha 50 50 400
+       color 0x1680A0 0x1680A0
+       countabsolute 1
+       sizeincrease 900
+       size 16 16
+       tex 33 33
+       type static
 effect nex_impact
-countabsolute 1
-type static
-tex 65 65
-color 0x1680A0 0x1680A0
-size 5 5
-alpha 50 50 100
-sizeincrease 500
-
-// flare effect
+       alpha 50 50 100
+       color 0x1680A0 0x1680A0
+       countabsolute 1
+       sizeincrease 500
+       size 5 5
+       tex 65 65
+       type static
 effect nex_impact
-countabsolute 1
-type static
-tex 37 37
-color 0x80C0FF 0x80C0FF
-size 8 8
-alpha 256 256 256
-// small sparks which form a sphere as they slow down
-//effect nex_impact
-//count 256
-//type spark
-//color 0x2030FF 0x80C0FF
-//size 1 2
-//alpha 256 256 512
-//bounce 2
-//airfriction 8
-//liquidfriction 8
-//velocityjitter 384 384 384
-// small sparks which glow brightly but live briefly
+       alpha 256 256 256
+       color 0x80C0FF 0x80C0FF
+       countabsolute 1
+       size 8 8
+       tex 37 37
+       type static
 effect nex_impact
-count 64
-type spark
-tex 41 41
-color 0xD9FDFF 0xD9FDFF
-size 4 4
-alpha 0 128 512
-bounce 2
-stretchfactor 3
-velocityjitter 600 600 600
-velocitymultiplier 0.5
-airfriction 9
-// small sparks that live longer
+       airfriction 9
+       alpha 0 128 512
+       bounce 2
+       color 0xD9FDFF 0xD9FDFF
+       count 64
+       size 4 4
+       stretchfactor 3
+       tex 41 41
+       type spark
+       velocityjitter 600 600 600
+       velocitymultiplier 0.500000
 effect nex_impact
-count 16
-type spark
-tex 41 41
-color 0xD9FDFF 0xD9FDFF
-size 2 2
-alpha 255 255 112
-bounce 1.6
-stretchfactor 0.7
-velocityjitter 300 300 600
-velocitymultiplier 2.5
-airfriction 2
-gravity 1
-
-// used in qcsrc/server/w_hagar.qc:    pointparticles(particleeffectnum("hagar_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
-// used in qcsrc/server/w_hagar.qc:    pointparticles(particleeffectnum("hagar_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
-// used in qcsrc/server/w_seeker.qc:   pointparticles(particleeffectnum("hagar_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+       airfriction 2
+       alpha 255 255 112
+       bounce 1.600000
+       color 0xD9FDFF 0xD9FDFF
+       count 16
+       gravity 1
+       size 2 2
+       stretchfactor 0.700000
+       tex 41 41
+       type spark
+       velocityjitter 300 300 600
+       velocitymultiplier 2.500000
 effect hagar_muzzleflash
-count 2
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 5 5
-alpha 256 256 512
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-velocitymultiplier 0.01
-lightradius 200
-lightradiusfade 2000
-lightcolor 2 1.5 0.2
+       alpha 256 256 512
+       color 0x202020 0x404040
+       count 2
+       lightcolor 2 1.5 0.2
+       lightradiusfade 2000
+       lightradius 200
+       originjitter 1.5 1.5 1.5
+       size 5 5
+       tex 0 8
+       type smoke
+       velocityjitter 6 6 6
+       velocitymultiplier 0.010000
 effect hagar_muzzleflash
-count 15
-type spark
-tex 48 55
-color 0xff8400 0xff4200
-size 5 10
-alpha 0 128 1024
-originjitter 1 1 1
-velocityjitter 200 200 200
-velocitymultiplier 0.5
-airfriction 12
-stretchfactor 2
-rotate -180 180 -400 400
-
-
-
-// used in qcsrc/server/w_hagar.qc:            pointparticles(particleeffectnum("hagar_bounce"), self.origin, self.velocity, 1)
+       airfriction 12
+       alpha 0 128 1024
+       color 0xff8400 0xff4200
+       count 15
+       originjitter 1 1 1
+       rotate -180 180 -400 400
+       size 5 10
+       stretchfactor 2
+       tex 48 55
+       type spark
+       velocityjitter 200 200 200
+       velocitymultiplier 0.500000
 effect hagar_bounce
-count 2
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 5 5
-alpha 256 256 256
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-velocitymultiplier 0.01
-lightradius 60
-lightradiusfade 300
-lightcolor 2 1.5 0.2
+       alpha 256 256 256
+       color 0x202020 0x404040
+       count 2
+       lightcolor 2 1.5 0.2
+       lightradiusfade 300
+       lightradius 60
+       originjitter 1.5 1.5 1.5
+       size 5 5
+       tex 0 8
+       type smoke
+       velocityjitter 6 6 6
+       velocitymultiplier 0.010000
 effect hagar_bounce
-count 15
-type spark
-tex 40 40
-color 0xFFFDD9 0xFFFDD9
-size 3 3
-alpha 0 256 256
-gravity 1
-bounce 1.5
-originjitter 1 1 1
-velocityjitter 600 600 600
-velocitymultiplier 0.5
-airfriction 12
-
-
-
-// decal
-// used in qcsrc/client/damage.qc:                             pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1)
-// used in qcsrc/client/damage.qc:                                             pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1)
-// used in qcsrc/client/damage.qc:                                             pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1)
+       airfriction 12
+       alpha 0 256 256
+       bounce 1.500000
+       color 0xFFFDD9 0xFFFDD9
+       count 15
+       gravity 1
+       originjitter 1 1 1
+       size 3 3
+       tex 40 40
+       type spark
+       velocityjitter 600 600 600
+       velocitymultiplier 0.500000
 effect hagar_explode
-countabsolute 1
-type decal
-tex 8 16
-size 28 38
-alpha 256 256 0
-originjitter 14 14 14
-lightradius 120
-lightradiusfade 400
-lightcolor 8 4 1
-// fire effect which make bright dot inside
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 8 4 1
+       lightradiusfade 400
+       lightradius 120
+       originjitter 14 14 14
+       size 28 38
+       tex 8 16
+       type decal
 effect hagar_explode
-notunderwater
-count 3.5
-type smoke
-tex 48 55
-color 0xffe955 0xff5a00
-size 16 26
-sizeincrease 5
-alpha 80 200 356
-bounce 1.5
-airfriction 8
-liquidfriction 8
-originjitter 8 8 8
-velocityjitter 156 156 156
-// fire effect which expands then slows
+       airfriction 8
+       alpha 80 200 356
+       bounce 1.500000
+       color 0xffe955 0xff5a00
+       count 3.500000
+       liquidfriction 8
+       notunderwater
+       originjitter 8 8 8
+       sizeincrease 5
+       size 16 26
+       tex 48 55
+       type smoke
+       velocityjitter 156 156 156
 effect hagar_explode
-notunderwater
-count 12
-type static
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 20 26
-sizeincrease 15
-alpha 128 256 456
-bounce 1.5
-airfriction 12
-liquidfriction 8
-originjitter 8 8 8
-velocityjitter 286 286 286
-
-// smoke
+       airfriction 12
+       alpha 128 256 456
+       bounce 1.500000
+       color 0x8f0d00 0xff5a00
+       count 12
+       liquidfriction 8
+       notunderwater
+       originjitter 8 8 8
+       sizeincrease 15
+       size 20 26
+       tex 48 55
+       type static
+       velocityjitter 286 286 286
 effect hagar_explode
-type alphastatic
-notunderwater
-tex 0 8
-count 7
-size 20 40
-sizeincrease 20
-alpha 200 500 600
-velocityjitter 244 244 244
-airfriction 5
-color 0x000000 0x111111
-bounce 2
-
-// underwater bubbles
+       airfriction 5
+       alpha 200 500 600
+       bounce 2
+       color 0x000000 0x111111
+       count 7
+       notunderwater
+       sizeincrease 20
+       size 20 40
+       tex 0 8
+       type alphastatic
+       velocityjitter 244 244 244
 effect hagar_explode
-underwater
-count 16
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 96 96 96
-// bouncing sparks
+       alpha 128 256 64
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 16
+       gravity -0.125000
+       liquidfriction 0.250000
+       originjitter 16 16 16
+       size 3 3
+       tex 62 62
+       type bubble
+       underwater
+       velocityjitter 96 96 96
 effect hagar_explode
-notunderwater
-count 4
-type spark
-tex 40 40
-color 0xffa35b 0xfff2be
-size 1 0.1
-alpha 644 956 684
-gravity 1
-airfriction 1
-bounce 1.6
-liquidfriction 0.8
-velocityoffset 0 0 80
-originjitter 16 16 16
-velocityjitter 224 224 224
-
-
-
-// used in qcsrc/server/w_rocketlauncher.qc:   pointparticles(particleeffectnum("rocketlauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+       airfriction 1
+       alpha 644 956 684
+       bounce 1.600000
+       color 0xffa35b 0xfff2be
+       count 4
+       gravity 1
+       liquidfriction 0.800000
+       notunderwater
+       originjitter 16 16 16
+       size 1 0.100000
+       tex 40 40
+       type spark
+       velocityjitter 224 224 224
+       velocityoffset 0 0 80
 effect rocketlauncher_muzzleflash
-count 10
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 1 1
-sizeincrease 20
-alpha 256 256 256
-airfriction 2
-originjitter 1.5 1.5 1.5
-velocityjitter 40 40 40
-velocitymultiplier -0.13
-//lightradius 200
-//lightradiusfade 2000
-//lightcolor 2 1.5 0.2
+       airfriction 2
+       alpha 256 256 256
+       color 0x202020 0x404040
+       count 10
+       originjitter 1.5 1.5 1.5
+       sizeincrease 20
+       size 1 1
+       tex 0 8
+       type smoke
+       velocityjitter 40 40 40
+       velocitymultiplier -0.130000
 effect rocketlauncher_muzzleflash
-count 6
-type smoke
-tex 35 36
-color 0xFFFDD9 0xFFFDD9
-size 5 10
-sizeincrease 20
-alpha 10 25 20
-originjitter 3 3 3
-velocityjitter 100 100 100
-velocitymultiplier 0.3
-airfriction 9
-rotate -180 180 -30 30
-
-
-
-// rocket trail
-// smoke
-// used in qcsrc/server/cl_client.qc:          self.modelflags |= MF_ROCKET
-// used in qcsrc/server/cl_client.qc:          self.modelflags &~= MF_ROCKET
-// used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_ROCKET"), from, to)
-// used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_ROCKET"), from, to)
+       airfriction 9
+       alpha 10 25 20
+       color 0xFFFDD9 0xFFFDD9
+       count 6
+       originjitter 3 3 3
+       rotate -180 180 -30 30
+       sizeincrease 20
+       size 5 10
+       tex 35 36
+       type smoke
+       velocityjitter 100 100 100
+       velocitymultiplier 0.300000
 effect TR_ROCKET
-trailspacing 10
-type smoke
-notunderwater
-color 0x000000 0x666666
-tex 0 8
-size 3 4
-bounce 1
-sizeincrease 11
-alpha 200 300 200
-lightradius 150
-lighttime 0
-lightcolor 6 3 1
-originjitter 2 2 2
-velocityjitter 3 3 3
-velocitymultiplier -0.02
-rotate -180 180 -30 30
-//gravity -0.11
-// fire
+       alpha 200 300 200
+       bounce 1
+       color 0x000000 0x666666
+       lightcolor 6 3 1
+       lightradius 150
+       notunderwater
+       originjitter 2 2 2
+       rotate -180 180 -30 30
+       sizeincrease 11
+       size 3 4
+       tex 0 8
+       trailspacing 10
+       type smoke
+       velocityjitter 3 3 3
+       velocitymultiplier -0.020000
 effect TR_ROCKET
-trailspacing 4
-type static
-color 0xffdf72 0x811200
-tex 48 55
-size 7 7
-sizeincrease -30
-alpha 100 144 588
-airfriction 8
-velocityjitter 32 32 32
-velocitymultiplier -1.5
-// bubbles
+       airfriction 8
+       alpha 100 144 588
+       color 0xffdf72 0x811200
+       sizeincrease -30
+       size 7 7
+       tex 48 55
+       trailspacing 4
+       type static
+       velocityjitter 32 32 32
+       velocitymultiplier -1.500000
 effect TR_ROCKET
-type bubble
-underwater
-trailspacing 16
-tex 62 62
-size 1 2
-alpha 256 256 256
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
-velocitymultiplier -0.31
-rotate 0 0 0 0
-// sparks
+       alpha 256 256 256
+       bounce 1.500000
+       gravity -0.125000
+       liquidfriction 4
+       size 1 2
+       tex 62 62
+       trailspacing 16
+       type bubble
+       underwater
+       velocityjitter 16 16 16
+       velocitymultiplier -0.310000
 effect TR_ROCKET
-notunderwater
-trailspacing 20
-type spark
-tex 40 40
-color 0xFFFDD9 0xFFFDD9
-size 0.5 0.5
-alpha 444 512 1866
-stretchfactor 0.3
-//gravity 1
-bounce 1
-//velocityoffset 0 0 15
-airfriction 5
-originjitter 1 1 1
-velocityjitter 100 100 100
-velocitymultiplier -0.31
-
-// rocket explosion (bigger than mortar and hagar)
+       airfriction 5
+       alpha 444 512 1866
+       bounce 1
+       color 0xFFFDD9 0xFFFDD9
+       notunderwater
+       originjitter 1 1 1
+       size 0.500000 0.500000
+       stretchfactor 0.300000
+       tex 40 40
+       trailspacing 20
+       type spark
+       velocityjitter 100 100 100
+       velocitymultiplier -0.310000
 effect rocket_explode
-countabsolute 1
-type decal
-tex 8 16
-size 72 72
-alpha 256 256 0
-originjitter 23 23 23
-lightradius 400
-lightradiusfade 750
-lightcolor 8 4 1
-// fire effect
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 8 4 1
+       lightradiusfade 750
+       lightradius 400
+       originjitter 23 23 23
+       size 72 72
+       tex 8 16
+       type decal
 effect rocket_explode
-notunderwater
-count 32
-type static
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 33 44
-sizeincrease 45
-alpha 200 256 512
-bounce 1.5
-airfriction 8
-liquidfriction 8
-originjitter 8 8 8
-velocityjitter 512 512 512
-// fire effect 2
+       airfriction 8
+       alpha 200 256 512
+       bounce 1.500000
+       color 0x8f0d00 0xff5a00
+       count 32
+       liquidfriction 8
+       notunderwater
+       originjitter 8 8 8
+       sizeincrease 45
+       size 33 44
+       tex 48 55
+       type static
+       velocityjitter 512 512 512
 effect rocket_explode
-notunderwater
-count 14
-type smoke
-tex 48 55
-color 0xea691b 0xeed05a
-size 33 44
-sizeincrease 55
-alpha 200 256 612
-bounce 2.5
-airfriction 19
-liquidfriction 19
-originjitter 8 8 8
-velocityjitter 912 912 912
-// smoke
+       airfriction 19
+       alpha 200 256 612
+       bounce 2.500000
+       color 0xea691b 0xeed05a
+       count 14
+       liquidfriction 19
+       notunderwater
+       originjitter 8 8 8
+       sizeincrease 55
+       size 33 44
+       tex 48 55
+       type smoke
+       velocityjitter 912 912 912
 effect rocket_explode
-type alphastatic
-notunderwater
-tex 0 8
-count 32
-size 20 40
-sizeincrease 44
-alpha 200 450 456
-velocityjitter 444 444 444
-airfriction 5
-color 0x000000 0x111111
-bounce 2
-// underwater bubbles
+       airfriction 5
+       alpha 200 450 456
+       bounce 2
+       color 0x000000 0x111111
+       count 32
+       notunderwater
+       sizeincrease 44
+       size 20 40
+       tex 0 8
+       type alphastatic
+       velocityjitter 444 444 444
 effect rocket_explode
-underwater
-count 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 144 144 144
-// underwatershockwave
+       alpha 128 256 64
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 32
+       gravity -0.125000
+       liquidfriction 0.250000
+       originjitter 16 16 16
+       size 3 3
+       tex 62 62
+       type bubble
+       underwater
+       velocityjitter 144 144 144
 effect rocket_explode
-underwater
-type smoke
-countabsolute 1
-tex 33 33
-size 30 30
-sizeincrease 1900
-alpha 40 40 300
-velocitymultiplier 0.3
-// bouncing sparks
+       alpha 40 40 300
+       countabsolute 1
+       sizeincrease 1900
+       size 30 30
+       tex 33 33
+       type smoke
+       underwater
+       velocitymultiplier 0.300000
 effect rocket_explode
-notunderwater
-count 16
-type spark
-tex 40 40
-color 0xffa35b 0xfff2be
-size 1 0.1
-alpha 644 956 484
-gravity 1
-airfriction 1
-bounce 1.6
-liquidfriction 0.8
-velocityoffset 0 0 80
-originjitter 16 16 16
-velocityjitter 424 424 624
-// debris
+       airfriction 1
+       alpha 644 956 484
+       bounce 1.600000
+       color 0xffa35b 0xfff2be
+       count 16
+       gravity 1
+       liquidfriction 0.800000
+       notunderwater
+       originjitter 16 16 16
+       size 1 0.100000
+       tex 40 40
+       type spark
+       velocityjitter 424 424 624
+       velocityoffset 0 0 80
 effect rocket_explode
-notunderwater
-count 12
-type alphastatic
-tex 66 68
-color 0x6a3d25 0xcac5b4
-size 2 6
-alpha 644 956 684
-gravity 1.3
-airfriction 0.5
-bounce 1.6
-velocityjitter 324 324 524
-rotate -180 180 -1000 1000
-
-// used in qcsrc/server/g_hook.qc:     pointparticles(particleeffectnum("grapple_muzzleflash"), org, '0 0 0', 1)
+       airfriction 0.500000
+       alpha 644 956 684
+       bounce 1.600000
+       color 0x6a3d25 0xcac5b4
+       count 12
+       gravity 1.300000
+       notunderwater
+       rotate -180 180 -1000 1000
+       size 2 6
+       tex 66 68
+       type alphastatic
+       velocityjitter 324 324 524
 effect grapple_muzzleflash
-lightradius 160
-lightradiusfade 800
-lightcolor 1 0 0
-
-
-
-// used in qcsrc/server/g_hook.qc:     pointparticles(particleeffectnum("grapple_impact"), self.origin, '0 0 0', 1)
+       lightcolor 1 0 0
+       lightradiusfade 800
+       lightradius 160
 effect grapple_impact
-lightradius 160
-lightradiusfade 800
-lightcolor 1 0 0
-
-
-
-// used nowhere in code
+       lightcolor 1 0 0
+       lightradiusfade 800
+       lightradius 160
 effect nex242_misc_laser_beam
-countabsolute 1
-type beam
-tex 200 200
-size 1 1
-alpha 256 256 64
-color 0xff0000 0xff0000
-sizeincrease 1
-
-// used nowhere in code
+       alpha 256 256 64
+       color 0xff0000 0xff0000
+       countabsolute 1
+       sizeincrease 1
+       size 1 1
+       tex 200 200
+       type beam
 effect nex242_misc_laser_beam_end
-count 0.5
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-
-
-// used nowhere in code
+       alpha 128 256 768
+       bounce -1
+       color 0x8f4333 0xfff31b
+       count 0.500000
+       gravity 1
+       size 0.400000 0.400000
+       type spark
+       velocityjitter 64 64 64
+       velocitymultiplier 100
 effect nex242_misc_laser_beam_fast
-countabsolute 1
-type beam
-tex 200 200
-size 1 1
-alpha 256 256 640
-color 0xff0000 0xff0000
-sizeincrease 0.1
-
-// used nowhere in code
+       alpha 256 256 640
+       color 0xff0000 0xff0000
+       countabsolute 1
+       sizeincrease 0.100000
+       size 1 1
+       tex 200 200
+       type beam
 effect nex242_misc_laser_beam_fast_end
-count 0.5
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-// additional laser colors (mike)
-// used nowhere in code
+       alpha 128 256 768
+       bounce -1
+       color 0x8f4333 0xfff31b
+       count 0.500000
+       gravity 1
+       size 0.400000 0.400000
+       type spark
+       velocityjitter 64 64 64
+       velocitymultiplier 100
 effect nex242_misc_laser_green_beam
-countabsolute 1
-type beam
-tex 200 200
-size 1 1
-alpha 256 256 64
-color 0x00ff00 0x00ff00
-sizeincrease 1
-
-// used nowhere in code
+       alpha 256 256 64
+       color 0x00ff00 0x00ff00
+       countabsolute 1
+       sizeincrease 1
+       size 1 1
+       tex 200 200
+       type beam
 effect nex242_misc_laser_green_beam_end
-count 0.5
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-// used nowhere in code
+       alpha 128 256 768
+       bounce -1
+       color 0x8f4333 0xfff31b
+       count 0.500000
+       gravity 1
+       size 0.400000 0.400000
+       type spark
+       velocityjitter 64 64 64
+       velocitymultiplier 100
 effect nex242_misc_laser_blue_beam
-countabsolute 1
-type beam
-tex 200 200
-size 1 1
-alpha 256 256 64
-color 0x0000ff 0x0000ff
-sizeincrease 1
-
-// used nowhere in code
+       alpha 256 256 64
+       color 0x0000ff 0x0000ff
+       countabsolute 1
+       sizeincrease 1
+       size 1 1
+       tex 200 200
+       type beam
 effect nex242_misc_laser_blue_beam_end
-count 0.5
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-// used nowhere in code
+       alpha 128 256 768
+       bounce -1
+       color 0x8f4333 0xfff31b
+       count 0.500000
+       gravity 1
+       size 0.400000 0.400000
+       type spark
+       velocityjitter 64 64 64
+       velocitymultiplier 100
 effect nex242_misc_laser_yellow_beam
-countabsolute 1
-type beam
-tex 200 200
-size 1 1
-alpha 256 256 64
-color 0xffff00 0xffff00
-sizeincrease 1
-
-// used nowhere in code
+       alpha 256 256 64
+       color 0xffff00 0xffff00
+       countabsolute 1
+       sizeincrease 1
+       size 1 1
+       tex 200 200
+       type beam
 effect nex242_misc_laser_yellow_beam_end
-count 0.5
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-// used nowhere in code
+       alpha 128 256 768
+       bounce -1
+       color 0x8f4333 0xfff31b
+       count 0.500000
+       gravity 1
+       size 0.400000 0.400000
+       type spark
+       velocityjitter 64 64 64
+       velocitymultiplier 100
 effect nex242_misc_laser_cyan_beam
-countabsolute 1
-type beam
-tex 200 200
-size 1 1
-alpha 256 256 64
-color 0x00ffff 0x00ffff
-sizeincrease 1
-
-// used nowhere in code
+       alpha 256 256 64
+       color 0x00ffff 0x00ffff
+       countabsolute 1
+       sizeincrease 1
+       size 1 1
+       tex 200 200
+       type beam
 effect nex242_misc_laser_cyan_beam_end
-count 0.5
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-// used nowhere in code
+       alpha 128 256 768
+       bounce -1
+       color 0x8f4333 0xfff31b
+       count 0.500000
+       gravity 1
+       size 0.400000 0.400000
+       type spark
+       velocityjitter 64 64 64
+       velocitymultiplier 100
 effect nex242_misc_laser_magenta_beam
-countabsolute 1
-type beam
-tex 200 200
-size 1 1
-alpha 256 256 64
-color 0xff00ff 0xff00ff
-sizeincrease 1
-
-// used nowhere in code
+       alpha 256 256 64
+       color 0xff00ff 0xff00ff
+       countabsolute 1
+       sizeincrease 1
+       size 1 1
+       tex 200 200
+       type beam
 effect nex242_misc_laser_magenta_beam_end
-count 0.5
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-// used nowhere in code
+       alpha 128 256 768
+       bounce -1
+       color 0x8f4333 0xfff31b
+       count 0.500000
+       gravity 1
+       size 0.400000 0.400000
+       type spark
+       velocityjitter 64 64 64
+       velocitymultiplier 100
 effect nex242_misc_laser_white_beam
-countabsolute 1
-type beam
-tex 200 200
-size 1 1
-alpha 256 256 64
-color 0xffffff 0xffffff
-sizeincrease 1
-
-// used nowhere in code
+       alpha 256 256 64
+       color 0xffffff 0xffffff
+       countabsolute 1
+       sizeincrease 1
+       size 1 1
+       tex 200 200
+       type beam
 effect nex242_misc_laser_white_beam_end
-count 0.5
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-// used nowhere in code
+       alpha 128 256 768
+       bounce -1
+       color 0x8f4333 0xfff31b
+       count 0.500000
+       gravity 1
+       size 0.400000 0.400000
+       type spark
+       velocityjitter 64 64 64
+       velocitymultiplier 100
 effect nex242_misc_laser_black_beam
-countabsolute 1
-type beam
-tex 200 200
-size 1 1
-alpha 256 256 64
-color 0x000000 0x000000
-sizeincrease 1
-
-// used nowhere in code
+       alpha 256 256 64
+       color 0x000000 0x000000
+       countabsolute 1
+       sizeincrease 1
+       size 1 1
+       tex 200 200
+       type beam
 effect nex242_misc_laser_black_beam_end
-count 0.5
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-// used nowhere in code
+       alpha 128 256 768
+       bounce -1
+       color 0x8f4333 0xfff31b
+       count 0.500000
+       gravity 1
+       size 0.400000 0.400000
+       type spark
+       velocityjitter 64 64 64
+       velocitymultiplier 100
 effect nex242_misc_laser_orange_beam
-countabsolute 1
-type beam
-tex 200 200
-size 1 1
-alpha 256 256 64
-color 0xff6600 0xff6600
-sizeincrease 1
-
-// used nowhere in code
+       alpha 256 256 64
+       color 0xff6600 0xff6600
+       countabsolute 1
+       sizeincrease 1
+       size 1 1
+       tex 200 200
+       type beam
 effect nex242_misc_laser_orange_beam_end
-count 0.5
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-
-
-
-// bigger crylink impact effect
-// decal
-// used in qcsrc/client/damage.qc:                                     pointparticles(particleeffectnum("crylink_impactbig"), org2, '0 0 0', 1)
+       alpha 128 256 768
+       bounce -1
+       color 0x8f4333 0xfff31b
+       count 0.500000
+       gravity 1
+       size 0.400000 0.400000
+       type spark
+       velocityjitter 64 64 64
+       velocitymultiplier 100
 effect crylink_impactbig
-countabsolute 1
-type decal
-tex 47 47
-size 24 24
-alpha 256 256 0
-originjitter 12 12 12
-//lightradius 200
-//lightradiusfade 800
-//lightcolor 3.2 0.4 4
-// purple flare effect
+       alpha 256 256 0
+       countabsolute 1
+       originjitter 12 12 12
+       size 24 24
+       tex 47 47
+       type decal
 effect crylink_impactbig
-countabsolute 1
-type static
-tex 39 39
-color 0x504060 0x504060
-size 24 24
-alpha 256 256 512
-// purple sparks
+       alpha 256 256 512
+       color 0x504060 0x504060
+       countabsolute 1
+       size 24 24
+       tex 39 39
+       type static
 effect crylink_impactbig
-count 40
-type spark
-tex 41 41
-color 0xA040C0 0xA040C0
-bounce 2
-size 6 6
-alpha 256 256 1024
-velocityjitter 512 512 512
-// purple splash
+       alpha 256 256 1024
+       bounce 2
+       color 0xA040C0 0xA040C0
+       count 40
+       size 6 6
+       tex 41 41
+       type spark
+       velocityjitter 512 512 512
 effect crylink_impactbig
-count 1.5
-type static
-color 0xE070FF 0xE070FF
-size 16 16
-alpha 256 256 512
-velocityjitter 32 32 32
-// purple splash
+       alpha 256 256 512
+       color 0xE070FF 0xE070FF
+       count 1.500000
+       size 16 16
+       type static
+       velocityjitter 32 32 32
 effect crylink_impactbig
-count 3
-type static
-color 0xE070FF 0xE070FF
-size 16 16
-alpha 256 256 1024
-velocityjitter 256 256 256
-
-// Zero-violence effects
-
-// impact effect indicating damage
-// used in qcsrc/client/gibs.qc:                       pointparticles(particleeffectnum("damage_hit"), org, vel, amount * 16)
+       alpha 256 256 1024
+       color 0xE070FF 0xE070FF
+       count 3
+       size 16 16
+       type static
+       velocityjitter 256 256 256
 effect damage_hit
-tex 48 55
-count 0.5
-type alphastatic
-color 0x00FFFF 0xFF00FF
-size 16 16
-sizeincrease -24
-alpha 128 128 192
-gravity -0.4
-bounce 1.5
-airfriction 5
-liquidfriction 10
-velocityjitter 256 256 256
+       airfriction 5
+       alpha 128 128 192
+       bounce 1.500000
+       color 0x00FFFF 0xFF00FF
+       count 0.500000
+       gravity -0.400000
+       liquidfriction 10
+       sizeincrease -24
+       size 16 16
+       tex 48 55
+       type alphastatic
+       velocityjitter 256 256 256
 effect damage_hit
-tex 48 55
-count 0.5
-type alphastatic
-color 0xFF00FF 0xFFFF00
-size 16 16
-sizeincrease -24
-alpha 128 128 192
-gravity -0.4
-bounce 1.5
-airfriction 5
-liquidfriction 10
-velocityjitter 256 256 256
+       airfriction 5
+       alpha 128 128 192
+       bounce 1.500000
+       color 0xFF00FF 0xFFFF00
+       count 0.500000
+       gravity -0.400000
+       liquidfriction 10
+       sizeincrease -24
+       size 16 16
+       tex 48 55
+       type alphastatic
+       velocityjitter 256 256 256
 effect damage_hit
-tex 48 55
-count 0.5
-type alphastatic
-color 0xFFFF00 0x00FFFF
-size 16 16
-sizeincrease -24
-alpha 128 128 192
-gravity -0.4
-bounce 1.5
-airfriction 5
-liquidfriction 10
-velocityjitter 256 256 256
-
-// effect for removing player model
-// "teleport"
-// NOTE: maintained by div0, make your own new effect instead of changing this one without asking!
-// large sparks
-// used in qcsrc/client/gibs.qc:                       pointparticles(particleeffectnum("damage_dissolve"), org, vel, amount)
+       airfriction 5
+       alpha 128 128 192
+       bounce 1.500000
+       color 0xFFFF00 0x00FFFF
+       count 0.500000
+       gravity -0.400000
+       liquidfriction 10
+       sizeincrease -24
+       size 16 16
+       tex 48 55
+       type alphastatic
+       velocityjitter 256 256 256
 effect damage_dissolve
-tex 48 55
-count 15
-type alphastatic
-color 0x00FFFF 0xFF00FF
-size 32 32
-sizeincrease -16
-alpha 256 256 128
-gravity -0.4
-bounce 1.5
-airfriction 3
-liquidfriction 6
-velocityjitter 512 512 512
+       airfriction 3
+       alpha 256 256 128
+       bounce 1.500000
+       color 0x00FFFF 0xFF00FF
+       count 15
+       gravity -0.400000
+       liquidfriction 6
+       sizeincrease -16
+       size 32 32
+       tex 48 55
+       type alphastatic
+       velocityjitter 512 512 512
 effect damage_dissolve
-tex 48 55
-count 15
-type alphastatic
-color 0xFF00FF 0xFFFF00
-size 32 32
-sizeincrease -16
-alpha 256 256 128
-gravity -0.4
-bounce 1.5
-airfriction 3
-liquidfriction 6
-velocityjitter 512 512 512
+       airfriction 3
+       alpha 256 256 128
+       bounce 1.500000
+       color 0xFF00FF 0xFFFF00
+       count 15
+       gravity -0.400000
+       liquidfriction 6
+       sizeincrease -16
+       size 32 32
+       tex 48 55
+       type alphastatic
+       velocityjitter 512 512 512
 effect damage_dissolve
-tex 48 55
-count 15
-type alphastatic
-color 0xFFFF00 0x00FFFF
-size 32 32
-sizeincrease -16
-alpha 256 256 128
-gravity -0.4
-bounce 1.5
-airfriction 3
-liquidfriction 6
-velocityjitter 512 512 512
-
-
-// decal
-// used in qcsrc/server/g_triggers.qc:                                 self.cnt = particleeffectnum("laser_deadly")
-// used in qcsrc/server/g_triggers.qc:                 self.cnt = particleeffectnum("laser_deadly")
+       airfriction 3
+       alpha 256 256 128
+       bounce 1.500000
+       color 0xFFFF00 0x00FFFF
+       count 15
+       gravity -0.400000
+       liquidfriction 6
+       sizeincrease -16
+       size 32 32
+       tex 48 55
+       type alphastatic
+       velocityjitter 512 512 512
 effect laser_deadly
-countabsolute 1
-type decal
-tex 56 59
-size 5 5
-alpha 256 256 0
-originjitter 6 6 6
-// dust/smoke drifting away from the impact
+       alpha 256 256 0
+       countabsolute 1
+       originjitter 6 6 6
+       size 5 5
+       tex 56 59
+       type decal
 effect laser_deadly
-count 0.025
-type smoke
-tex 48 55
-color 0xFFFFFF 0xFFFFFF
-size 3 3
-alpha 0 64 64
-originjitter 1 1 1
-airfriction 7
-liquidfriction 16
-velocityjitter 15 15 15
-sizeincrease 2
-velocitymultiplier 20
-// sparks
+       airfriction 7
+       alpha 0 64 64
+       color 0xFFFFFF 0xFFFFFF
+       count 0.025000
+       liquidfriction 16
+       originjitter 1 1 1
+       sizeincrease 2
+       size 3 3
+       tex 48 55
+       type smoke
+       velocityjitter 15 15 15
+       velocitymultiplier 20
 effect laser_deadly
-notunderwater
-count 0.025
-type spark
-tex 40 40
-color 0xFDFFD9 0xFDFFD9
-size 0.6 0.6
-alpha 256 256 768
-gravity 1
-bounce 1
-airfriction 5
-originjitter 1 1 1
-velocityjitter 100 100 100
-velocitymultiplier 100
-
-
-//torch
-//fire
-// used nowhere in code
+       airfriction 5
+       alpha 256 256 768
+       bounce 1
+       color 0xFDFFD9 0xFDFFD9
+       count 0.025000
+       gravity 1
+       notunderwater
+       originjitter 1 1 1
+       size 0.600000 0.600000
+       tex 40 40
+       type spark
+       velocityjitter 100 100 100
+       velocitymultiplier 100
 effect torch_small
-//notunderwater
-count 8
-type smoke
-tex 48 55
-size 1 11
-alpha 200 256 512
-gravity -0.5
-color 0x8f0d00 0xff5a00
-//bounce 1
-sizeincrease -1
-originjitter 5 5 5
-velocityjitter 1 1 50
-// smoke
+       alpha 200 256 512
+       color 0x8f0d00 0xff5a00
+       count 8
+       gravity -0.500000
+       originjitter 5 5 5
+       sizeincrease -1
+       size 1 11
+       tex 48 55
+       type smoke
+       velocityjitter 1 1 50
 effect torch_small
-type alphastatic
-count 4
-tex 0 8
-size 5 10
-sizeincrease 5
-alpha 200 256 200
-color 0x000000 0x111111
-gravity -0.3
-originjitter 3 3 3
-velocityjitter 11 11 50
-//bounce 1
-
-//fountain01
-// used nowhere in code
+       alpha 200 256 200
+       color 0x000000 0x111111
+       count 4
+       gravity -0.300000
+       originjitter 3 3 3
+       sizeincrease 5
+       size 5 10
+       tex 0 8
+       type alphastatic
+       velocityjitter 11 11 50
 effect fountain01
-count 16
-tex 0 8
-size 10 15
-alpha 0 100 100
-gravity 0.6
-bounce 1
-sizeincrease 20
-type snow
-bounce 1
-originjitter 5 5 5
-velocityjitter 81 81 150
-color 0x7cbaff 0xcfd1ff
-velocitymultiplier 2
-
-// decal
-// used in qcsrc/client/damage.qc:                             pointparticles(particleeffectnum("hookbomb_explode"), org2, '0 0 0', 1)
+       alpha 0 100 100
+       bounce 1
+       color 0x7cbaff 0xcfd1ff
+       count 16
+       gravity 0.600000
+       originjitter 5 5 5
+       sizeincrease 20
+       size 10 15
+       tex 0 8
+       type snow
+       velocityjitter 81 81 150
+       velocitymultiplier 2
 effect hookbomb_explode
-count 25
-type static
-tex 38 38
-color 0x807aff 0x4463d5
-size 150 200
-sizeincrease -160
-alpha 0 256 200
-//gravity 1
-bounce 1.5
-originjitter 10 10 10
-velocityjitter 550 550 550
-//velocitymultiplier -20
-airfriction 10
-// decal in the air
+       airfriction 10
+       alpha 0 256 200
+       bounce 1.500000
+       color 0x807aff 0x4463d5
+       count 25
+       originjitter 10 10 10
+       sizeincrease -160
+       size 150 200
+       tex 38 38
+       type static
+       velocityjitter 550 550 550
 effect hookbomb_explode
-countabsolute 3
-type static
-tex 38 38
-color 0x807aff 0x4463d5
-size 160 200
-alpha 256 265 100
-sizeincrease -60
-originoffset 0 0 6
-// decal on the ground
+       alpha 256 265 100
+       color 0x807aff 0x4463d5
+       countabsolute 3
+       originoffset 0 0 6
+       sizeincrease -60
+       size 160 200
+       tex 38 38
+       type static
 effect hookbomb_explode
-countabsolute 1
-type decal
-tex 39 39
-size 80 100
-alpha 256 256 0
-originjitter 6 6 6
-// some sparks
+       alpha 256 256 0
+       countabsolute 1
+       originjitter 6 6 6
+       size 80 100
+       tex 39 39
+       type decal
 effect hookbomb_explode
-count 30
-type spark
-tex 38 38
-color 0x807aff 0x4463d5
-size 20 30
-alpha 256 256 456
-sizeincrease -60
-gravity 1
-bounce 1.5
-originjitter 1 1 1
-velocityjitter 1900 1900 1300
-velocitymultiplier 0.5
-airfriction 2
-
-
-// smoke
+       airfriction 2
+       alpha 256 256 456
+       bounce 1.500000
+       color 0x807aff 0x4463d5
+       count 30
+       gravity 1
+       originjitter 1 1 1
+       sizeincrease -60
+       size 20 30
+       tex 38 38
+       type spark
+       velocityjitter 1900 1900 1300
+       velocitymultiplier 0.500000
 effect EF_MGTURRETTRAIL
-notunderwater
-trailspacing 10
-type smoke
-color 0xd0d0a0 0xffffff
-tex 0 8
-size 5 4
-alpha 128 196 768
-sizeincrease -8
-gravity -0.01
-// bubbles
+       alpha 128 196 768
+       color 0xd0d0a0 0xffffff
+       gravity -0.010000
+       notunderwater
+       sizeincrease -8
+       size 5 4
+       tex 0 8
+       trailspacing 10
+       type smoke
 effect EF_MGTURRETTRAIL
-underwater
-trailspacing 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 1 1
-alpha 256 256 256
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
-
-//fire_big
-//fire
-// used nowhere in code
+       alpha 256 256 256
+       bounce 1.500000
+       color 0x404040 0x808080
+       gravity -0.125000
+       liquidfriction 4
+       size 1 1
+       tex 62 62
+       trailspacing 32
+       type bubble
+       underwater
+       velocityjitter 16 16 16
 effect fire_big
-//notunderwater
-count 26
-type smoke
-tex 48 55
-size 11 31
-alpha 200 356 512
-gravity -0.5
-color 0x8f0d00 0xff5a00
-bounce 2
-sizeincrease -3
-originjitter 33 33 33
-velocityjitter 22 22 50
-// smoke
+       alpha 200 356 512
+       bounce 2
+       color 0x8f0d00 0xff5a00
+       count 26
+       gravity -0.500000
+       originjitter 33 33 33
+       sizeincrease -3
+       size 11 31
+       tex 48 55
+       type smoke
+       velocityjitter 22 22 50
 effect fire_big
-type alphastatic
-count 11
-tex 0 8
-size 22 33
-sizeincrease 11
-alpha 200 256 200
-color 0x000000 0x111111
-gravity -0.3
-originjitter 44 44 44
-velocityjitter 11 11 50
-bounce 2
-
-//red_flare
-//smoke
-// used nowhere in code
+       alpha 200 256 200
+       bounce 2
+       color 0x000000 0x111111
+       count 11
+       gravity -0.300000
+       originjitter 44 44 44
+       sizeincrease 11
+       size 22 33
+       tex 0 8
+       type alphastatic
+       velocityjitter 11 11 50
 effect red_flare
-type alphastatic
-count 10.5
-tex 0 8
-size 1 11
-sizeincrease 11
-alpha 200 256 160
-color 0xff0000 0xdc7171
-gravity -0.24
-originjitter 2 2 0
-velocityjitter 15 15 30
-bounce 1
-
-//blue_flare
-//smoke
-// used nowhere in code
+       alpha 200 256 160
+       bounce 1
+       color 0xff0000 0xdc7171
+       count 10.500000
+       gravity -0.240000
+       originjitter 2 2 0
+       sizeincrease 11
+       size 1 11
+       tex 0 8
+       type alphastatic
+       velocityjitter 15 15 30
 effect blue_flare
-type alphastatic
-count 10.5
-tex 0 8
-size 1 11
-sizeincrease 11
-alpha 200 256 160
-color 0x0000ff 0x7194dc
-gravity -0.24
-originjitter 2 2 0
-velocityjitter 15 15 30
-bounce 1
-
-//smoke_ring
-//smoke
-// used in qcsrc/server/ctf.qc:                pointparticles(particleeffectnum("smoke_ring"), 0.5 * (self.absmin + self.absmax), '0 0 0', 1);
+       alpha 200 256 160
+       bounce 1
+       color 0x0000ff 0x7194dc
+       count 10.500000
+       gravity -0.240000
+       originjitter 2 2 0
+       sizeincrease 11
+       size 1 11
+       tex 0 8
+       type alphastatic
+       velocityjitter 15 15 30
 effect smoke_ring
-type smoke
-count 45
-tex 0 8
-size 1 11
-sizeincrease 21
-gravity 0.1
-airfriction 3
-alpha 100 156 200
-color 0x111111 0x979797
-//originjitter 2 2 0
-velocityjitter 190 190 50
-bounce 1.1
-notunderwater
-
-//smoke_large
-//smoke
-// used nowhere in code
+       airfriction 3
+       alpha 100 156 200
+       bounce 1.100000
+       color 0x111111 0x979797
+       count 45
+       gravity 0.100000
+       notunderwater
+       sizeincrease 21
+       size 1 11
+       tex 0 8
+       type smoke
+       velocityjitter 190 190 50
 effect smoke_large
-type alphastatic
-count 25
-tex 0 8
-size 11 21
-sizeincrease 21
-gravity -0.15
-airfriction 7
-alpha 140 256 190
-color 0x9e895f 0xffd39b
-//originjitter 2 2 0
-velocityjitter 390 390 390
-bounce 1.1
-notunderwater
-
-//sparks
-// used nowhere in code
+       airfriction 7
+       alpha 140 256 190
+       bounce 1.100000
+       color 0x9e895f 0xffd39b
+       count 25
+       gravity -0.150000
+       notunderwater
+       sizeincrease 21
+       size 11 21
+       tex 0 8
+       type alphastatic
+       velocityjitter 390 390 390
 effect sparks
-count 15
-type spark
-tex 40 40
-color 0xFFFDD9 0xFFFDD9
-size 1 3
-alpha 0 256 256
-gravity 1
-bounce 1.5
-originjitter 1 1 1
-velocityjitter 300 300 200
-velocitymultiplier 1.5
-airfriction 3
-
-//sparks
-// used nowhere in code
+       airfriction 3
+       alpha 0 256 256
+       bounce 1.500000
+       color 0xFFFDD9 0xFFFDD9
+       count 15
+       gravity 1
+       originjitter 1 1 1
+       size 1 3
+       tex 40 40
+       type spark
+       velocityjitter 300 300 200
+       velocitymultiplier 1.500000
 effect electricity_sparks
-count 35
-type spark
-tex 40 40
-color 0x807aff 0x4463d5
-size 1 3
-alpha 0 256 556
-gravity 1
-bounce 1.5
-originjitter 1 1 1
-velocityjitter 300 300 300
-velocitymultiplier 0.5
-airfriction 3
-
-//steam, it needs direction
-// used nowhere in code
+       airfriction 3
+       alpha 0 256 556
+       bounce 1.500000
+       color 0x807aff 0x4463d5
+       count 35
+       gravity 1
+       originjitter 1 1 1
+       size 1 3
+       tex 40 40
+       type spark
+       velocityjitter 300 300 300
+       velocitymultiplier 0.500000
 effect steam
-type smoke
-count 1
-tex 0 8
-size 1 3
-sizeincrease 7
-gravity -0.25
-velocitymultiplier 14
-airfriction 5
-alpha 140 256 190
-color 0xfffbdf 0xffffff
-//originjitter 2 2 0
-velocityjitter 19 19 19
-bounce 1.1
-notunderwater
-
-// smoke emiter
-// used nowhere in code
+       airfriction 5
+       alpha 140 256 190
+       bounce 1.100000
+       color 0xfffbdf 0xffffff
+       count 1
+       gravity -0.250000
+       notunderwater
+       sizeincrease 7
+       size 1 3
+       tex 0 8
+       type smoke
+       velocityjitter 19 19 19
+       velocitymultiplier 14
 effect smoking
-count 10
-type alphastatic
-tex 0 8
-color 0x292929 0x000000
-size 10 40
-sizeincrease 5
-alpha 100 256 100
-gravity -0.1
-bounce 1.5
-originjitter 10 10 10
-velocityjitter 5 5 20
-//velocitymultiplier -20
-airfriction -1
-
-//golden dust (create it once per second to cover large area in small yellow particles)
-// used nowhere in code
+       airfriction -1
+       alpha 100 256 100
+       bounce 1.500000
+       color 0x292929 0x000000
+       count 10
+       gravity -0.100000
+       originjitter 10 10 10
+       sizeincrease 5
+       size 10 40
+       tex 0 8
+       type alphastatic
+       velocityjitter 5 5 20
 effect goldendust
-count 25
-type snow
-tex 38 38
-color 0xff9600 0xffefb8
-size 2 3
-sizeincrease -0.3
-alpha 256 256 70
-//gravity -0.1
-bounce 1.5
-originjitter 500 500 500
-velocityjitter 0.1 0.1 0.1
-//velocitymultiplier -20
-//airfriction -0.1
-
-// used nowhere in code
+       alpha 256 256 70
+       bounce 1.500000
+       color 0xff9600 0xffefb8
+       count 25
+       originjitter 500 500 500
+       sizeincrease -0.300000
+       size 2 3
+       tex 38 38
+       type snow
+       velocityjitter 0.1 0.1 0.1
 effect healing_fx
-count 25
-type spark
-tex 40 40
-color 0xff0000 0xff0000
-size 1 3
-sizeincrease -0.05
-alpha 256 256 170
-gravity -0.1
-bounce 1.5
-originjitter 5 5 100
-velocityjitter 50 50 0
-//velocitymultiplier 20
-airfriction -0.5
-
-// used nowhere in code
+       airfriction -0.500000
+       alpha 256 256 170
+       bounce 1.500000
+       color 0xff0000 0xff0000
+       count 25
+       gravity -0.100000
+       originjitter 5 5 100
+       sizeincrease -0.050000
+       size 1 3
+       tex 40 40
+       type spark
+       velocityjitter 50 50 0
 effect armorrepair_fx
-count 25
-type spark
-tex 40 40
-color 0x00ff00 0x00ff00
-size 1 3
-sizeincrease -0.05
-alpha 256 256 170
-gravity -0.1
-bounce 1.5
-originjitter 5 5 50
-velocityjitter 50 50 0
-//velocitymultiplier 20
-airfriction -0.5
-
-// used nowhere in code
+       airfriction -0.500000
+       alpha 256 256 170
+       bounce 1.500000
+       color 0x00ff00 0x00ff00
+       count 25
+       gravity -0.100000
+       originjitter 5 5 50
+       sizeincrease -0.050000
+       size 1 3
+       tex 40 40
+       type spark
+       velocityjitter 50 50 0
 effect ammoregen_fx
-count 25
-type spark
-tex 40 40
-color 0x0000ff 0x0000ff
-size 1 3
-sizeincrease -0.05
-alpha 256 256 170
-gravity -0.1
-bounce 1.5
-originjitter 5 5 50
-velocityjitter 50 50 0
-//velocitymultiplier 20
-airfriction -0.5
-
-// red-yellow flame like fx
-// used nowhere in code
+       airfriction -0.500000
+       alpha 256 256 170
+       bounce 1.500000
+       color 0x0000ff 0x0000ff
+       count 25
+       gravity -0.100000
+       originjitter 5 5 50
+       sizeincrease -0.050000
+       size 1 3
+       tex 40 40
+       type spark
+       velocityjitter 50 50 0
 effect rage
-count 2.5
-type smoke
-tex 35 36
-color 0xff0000 0xff7800
-size 1 3
-sizeincrease 10
-gravity -0.06
-alpha 256 256 190
-originjitter 5 5 5
-velocityjitter 25 25 25
-airfriction 2
-
-// pieces of glass or ice falling on the floor
-// used nowhere in code
+       airfriction 2
+       alpha 256 256 190
+       color 0xff0000 0xff7800
+       count 2.500000
+       gravity -0.060000
+       originjitter 5 5 5
+       sizeincrease 10
+       size 1 3
+       tex 35 36
+       type smoke
+       velocityjitter 25 25 25
 effect iceorglass
-count 15
-type alphastatic
-tex 44 44
-color 0xffffff 0xb2d3e6
-size 3 7
-//sizeincrease 10
-gravity 1.3
-alpha 256 256 0
-time 1 3
-bounce 2
-originjitter 30 30 30
-velocityjitter 100 100 100
-airfriction 3
-
-// cover small area in poison gas, spawn it once per second
-// used nowhere in code
+       airfriction 3
+       alpha 256 256 0
+       bounce 2
+       color 0xffffff 0xb2d3e6
+       count 15
+       gravity 1.300000
+       originjitter 30 30 30
+       size 3 7
+       tex 44 44
+       time 1 3
+       type alphastatic
+       velocityjitter 100 100 100
 effect poisonfield
-count 15
-type smoke
-tex 0 8
-color 0x00ff00 0x7db843
-size 1 1
-sizeincrease 30
- gravity -0.01
-alpha 256 256 50
-bounce 1.5
-originjitter 333 333 50
-velocityjitter 5 5 5
-airfriction 1
-
-// cover small area in icy mist, spawn it once per second
-// used nowhere in code
+       airfriction 1
+       alpha 256 256 50
+       bounce 1.500000
+       color 0x00ff00 0x7db843
+       count 15
+       gravity -0.010000
+       originjitter 333 333 50
+       sizeincrease 30
+       size 1 1
+       tex 0 8
+       type smoke
+       velocityjitter 5 5 5
 effect icefield
-count 10
-type smoke
-tex 0 8
-color 0x008aff 0x75e7ff
-size 1 1
-sizeincrease 10
- gravity -0.01
-alpha 256 256 50
-bounce 1.5
-originjitter 333 333 0
-velocityjitter 5 5 30
-airfriction 1
+       airfriction 1
+       alpha 256 256 50
+       bounce 1.500000
+       color 0x008aff 0x75e7ff
+       count 10
+       gravity -0.010000
+       originjitter 333 333 0
+       sizeincrease 10
+       size 1 1
+       tex 0 8
+       type smoke
+       velocityjitter 5 5 30
 effect icefield
-count 5
-type smoke
-tex 48 55
-size 1 1
-sizeincrease 10
-color 0x008aff 0x75e7ff
-alpha 256 256 50
-gravity -0.001
-originjitter 333 333 0
-
-
-// cover very small area in flames, spawn it 3 times per second (or more often to get better looking fire at cost of fps hit )
-// flames that go up
-// used nowhere in code
+       alpha 256 256 50
+       color 0x008aff 0x75e7ff
+       count 5
+       gravity -0.001000
+       originjitter 333 333 0
+       sizeincrease 10
+       size 1 1
+       tex 48 55
+       type smoke
 effect firefield
-count 100
-type smoke
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 1 1
-sizeincrease 20
- gravity -0.06
-alpha 50 256 200
-bounce 1.5
-originjitter 180 180 0
-velocityjitter 5 5 30
-airfriction 1
-//flames that stay on the ground
+       airfriction 1
+       alpha 50 256 200
+       bounce 1.500000
+       color 0x8f0d00 0xff5a00
+       count 100
+       gravity -0.060000
+       originjitter 180 180 0
+       sizeincrease 20
+       size 1 1
+       tex 48 55
+       type smoke
+       velocityjitter 5 5 30
 effect firefield
-count 50
-type smoke
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 1 1
-sizeincrease 40
-alpha 50 256 200
-originjitter 180 180 0
-// smoke
+       alpha 50 256 200
+       color 0x8f0d00 0xff5a00
+       count 50
+       originjitter 180 180 0
+       sizeincrease 40
+       size 1 1
+       tex 48 55
+       type smoke
 effect firefield
-count 20
-type alphastatic
-tex 0 8
-size 1 1
-sizeincrease 7
-color 0x000000 0x111111
-alpha 256 256 70
-gravity -0.02
-originjitter 180 180 0
-
-//flamethrower, spawn it as fast as you can  20 times per second or more, it needs direction
-//fast fire
-// used nowhere in code
+       alpha 256 256 70
+       color 0x000000 0x111111
+       count 20
+       gravity -0.020000
+       originjitter 180 180 0
+       sizeincrease 7
+       size 1 1
+       tex 0 8
+       type alphastatic
 effect flamethrower
-count 3
-type smoke
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 5 5
-sizeincrease 20
- gravity -0.06
-alpha 50 256 250
-bounce 1.5
-velocityjitter 40 40 11
-velocitymultiplier 30
-airfriction 1.2
-//slowfire
+       airfriction 1.200000
+       alpha 50 256 250
+       bounce 1.500000
+       color 0x8f0d00 0xff5a00
+       count 3
+       gravity -0.060000
+       sizeincrease 20
+       size 5 5
+       tex 48 55
+       type smoke
+       velocityjitter 40 40 11
+       velocitymultiplier 30
 effect flamethrower
-count 2.5
-type smoke
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 5 5
-sizeincrease 20
- gravity -0.06
-alpha 50 256 200
-bounce 1.5
-velocityjitter 40 40 40
-velocitymultiplier 20
-airfriction 1.2
-// very slow and small fire
+       airfriction 1.200000
+       alpha 50 256 200
+       bounce 1.500000
+       color 0x8f0d00 0xff5a00
+       count 2.500000
+       gravity -0.060000
+       sizeincrease 20
+       size 5 5
+       tex 48 55
+       type smoke
+       velocityjitter 40 40 40
+       velocitymultiplier 20
 effect flamethrower
-count 1.5
-type smoke
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 5 5
-sizeincrease 10
- gravity -0.06
-alpha 50 256 200
-bounce 1.5
-velocityjitter 30 30 30
-velocitymultiplier 10
-airfriction 0.3
-//decreasing fire
+       airfriction 0.300000
+       alpha 50 256 200
+       bounce 1.500000
+       color 0x8f0d00 0xff5a00
+       count 1.500000
+       gravity -0.060000
+       sizeincrease 10
+       size 5 5
+       tex 48 55
+       type smoke
+       velocityjitter 30 30 30
+       velocitymultiplier 10
 effect flamethrower
-count 2
-type smoke
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 20 30
-sizeincrease -10
- gravity -0.06
-alpha 50 256 200
-bounce 1.5
-velocityjitter 10 10 10
-velocitymultiplier 15
-airfriction 0.3
-//smoke
+       airfriction 0.300000
+       alpha 50 256 200
+       bounce 1.500000
+       color 0x8f0d00 0xff5a00
+       count 2
+       gravity -0.060000
+       sizeincrease -10
+       size 20 30
+       tex 48 55
+       type smoke
+       velocityjitter 10 10 10
+       velocitymultiplier 15
 effect flamethrower
-count 0.5
-type alphastatic
-tex 0 8
-size 5 15
-sizeincrease 7
-color 0x000000 0x111111
-alpha 256 256 90
-//gravity -0.2
-originjitter 10 10 10
-velocitymultiplier 20
-velocityoffset 0 0 10
-airfriction 1
-
-// port-o-launch trail
-// glowing vapor trail
-// used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_WIZSPIKE"), from, to)
-// used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_WIZSPIKE"), from, to)
+       airfriction 1
+       alpha 256 256 90
+       color 0x000000 0x111111
+       count 0.500000
+       originjitter 10 10 10
+       sizeincrease 7
+       size 5 15
+       tex 0 8
+       type alphastatic
+       velocitymultiplier 20
+       velocityoffset 0 0 10
 effect TR_WIZSPIKE
-trailspacing 4
-type static
-color 0x404040 0x404040
-size 3 3
-tex 62 62
-alpha 256 256 968
-//velocityjitter 16 16 16
-lightradius 90
-lighttime 0
-lightcolor 1.5 3 6
-velocitymultiplier -0.1
-// bright sparks
+       alpha 256 256 968
+       color 0x404040 0x404040
+       lightcolor 1.5 3 6
+       lightradius 90
+       size 3 3
+       tex 62 62
+       trailspacing 4
+       type static
+       velocitymultiplier -0.100000
 effect TR_WIZSPIKE
-trailspacing 12
-count 1.5
-type snow
-tex 42 42
-color 0x404040 0x404040
-size 2 4
-sizeincrease -20
-alpha 444 512 1866
-bounce 1
-velocityoffset 0 0 15
-airfriction 12
-originjitter 1 1 1
-velocityjitter 50 50 50
-
-// TAG trail
-// glowing vapor trail
-// used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_VORESPIKE"), from, to)
-// used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_VORESPIKE"), from, to)
+       airfriction 12
+       alpha 444 512 1866
+       bounce 1
+       color 0x404040 0x404040
+       count 1.500000
+       originjitter 1 1 1
+       sizeincrease -20
+       size 2 4
+       tex 42 42
+       trailspacing 12
+       type snow
+       velocityjitter 50 50 50
+       velocityoffset 0 0 15
 effect TR_VORESPIKE
-trailspacing 4
-type static
-color 0x804000 0x804000
-size 3 3
-tex 62 62
-alpha 256 256 968
-//velocityjitter 16 16 16
-lightradius 90
-lighttime 0
-lightcolor 1.5 3 6
-velocitymultiplier -0.1
-// bright sparks
+       alpha 256 256 968
+       color 0x804000 0x804000
+       lightcolor 1.5 3 6
+       lightradius 90
+       size 3 3
+       tex 62 62
+       trailspacing 4
+       type static
+       velocitymultiplier -0.100000
 effect TR_VORESPIKE
-trailspacing 12
-count 1.5
-type snow
-tex 42 42
-color 0xff8000 0xff8000
-size 2 4
-sizeincrease -20
-alpha 444 512 1866
-bounce 1
-velocityoffset 0 0 15
-airfriction 12
-originjitter 1 1 1
-velocityjitter 50 50 50
-
-// used in qcsrc/client/damage.qc:                                     pointparticles(particleeffectnum("flac_explode"), org2, '0 0 0', 1)
+       airfriction 12
+       alpha 444 512 1866
+       bounce 1
+       color 0xff8000 0xff8000
+       count 1.500000
+       originjitter 1 1 1
+       sizeincrease -20
+       size 2 4
+       tex 42 42
+       trailspacing 12
+       type snow
+       velocityjitter 50 50 50
+       velocityoffset 0 0 15
 effect flac_explode
-countabsolute 1
-type decal
-tex 8 16
-size 18 28
-alpha 256 256 0
-originjitter 40 40 40
-lightradius 150
-lightradiusfade 400
-lightcolor 8 4 1
-// fire effect which make bright dot inside
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 8 4 1
+       lightradiusfade 400
+       lightradius 150
+       originjitter 40 40 40
+       size 18 28
+       tex 8 16
+       type decal
 effect flac_explode
-notunderwater
-count 3
-type smoke
-tex 48 55
-color 0xffe955 0xff5a00
-size 6 16
-sizeincrease 5
-alpha 128 256 456
-bounce 1.5
-airfriction 8
-liquidfriction 8
-originjitter 8 8 8
-velocityjitter 156 156 156
-// fire effect which expands then slows
+       airfriction 8
+       alpha 128 256 456
+       bounce 1.500000
+       color 0xffe955 0xff5a00
+       count 3
+       liquidfriction 8
+       notunderwater
+       originjitter 8 8 8
+       sizeincrease 5
+       size 6 16
+       tex 48 55
+       type smoke
+       velocityjitter 156 156 156
 effect flac_explode
-notunderwater
-count 6
-type static
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 10 16
-sizeincrease 15
-alpha 128 256 456
-bounce 1.5
-airfriction 12
-liquidfriction 8
-originjitter 8 8 8
-velocityjitter 256 256 256
-
-// smoke
+       airfriction 12
+       alpha 128 256 456
+       bounce 1.500000
+       color 0x8f0d00 0xff5a00
+       count 6
+       liquidfriction 8
+       notunderwater
+       originjitter 8 8 8
+       sizeincrease 15
+       size 10 16
+       tex 48 55
+       type static
+       velocityjitter 256 256 256
 effect flac_explode
-type alphastatic
-notunderwater
-tex 0 8
-count 5
-size 10 20
-sizeincrease 20
-alpha 500 600 556
-velocityjitter 244 244 244
-airfriction 5
-color 0x000000 0x111111
-bounce 2
-
-// underwater bubbles
+       airfriction 5
+       alpha 500 600 556
+       bounce 2
+       color 0x000000 0x111111
+       count 5
+       notunderwater
+       sizeincrease 20
+       size 10 20
+       tex 0 8
+       type alphastatic
+       velocityjitter 244 244 244
 effect flac_explode
-underwater
-count 8
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 1 2
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 96 96 96
-// bouncing sparks
+       alpha 128 256 64
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 8
+       gravity -0.125000
+       liquidfriction 0.250000
+       originjitter 16 16 16
+       size 1 2
+       tex 62 62
+       type bubble
+       underwater
+       velocityjitter 96 96 96
 effect flac_explode
-notunderwater
-count 4
-type spark
-color 0x903010 0xFFD030
-size 2 2
-tex 40 40
-alpha 256 256 384
-gravity 1
-airfriction 0.2
-bounce 1.5
-liquidfriction 0.8
-velocityoffset 0 0 80
-velocityjitter 256 256 256
-
-
-// bullet trail (somewhat like a tracer)
-// used in qcsrc/server/w_common.qc:                           zcurveparticles_from_tracetoss(particleeffectnum("tr_bullet"), self.origin, trace_endpos, self.velocity)
-// used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("tr_bullet"), from, to)
+       airfriction 0.200000
+       alpha 256 256 384
+       bounce 1.500000
+       color 0x903010 0xFFD030
+       count 4
+       gravity 1
+       liquidfriction 0.800000
+       notunderwater
+       size 2 2
+       tex 40 40
+       type spark
+       velocityjitter 256 256 256
+       velocityoffset 0 0 80
 effect tr_bullet
-trailspacing 750
-type spark
-tex 70 70
-color 0xff8960 0xff8533
-alpha 256 256 2560
-size 4 4
-stretchfactor 0.2
-velocitymultiplier 3
-
-// smoke emitter for small pipes
-// used nowhere in code
+       alpha 256 256 2560
+       color 0xff8960 0xff8533
+       size 4 4
+       stretchfactor 0.200000
+       tex 70 70
+       trailspacing 750
+       type spark
+       velocitymultiplier 3
 effect smoking_smallemitter
-count 10
-type alphastatic
-tex 0 8
-color 0x292929 0x000000
-size 6 15
-sizeincrease 20
-alpha 200 256 100
-gravity -0.1
-bounce 0
-originjitter 10 10 10
-velocityjitter 5 5 20
-//velocitymultiplier -20
-airfriction -1
-
-// crylink trail
-// plasma smoke
-// used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_CRYLINKPLASMA"), from, to)
-// used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_CRYLINKPLASMA"), from, to)
+       airfriction -1
+       alpha 200 256 100
+       color 0x292929 0x000000
+       count 10
+       gravity -0.100000
+       originjitter 10 10 10
+       sizeincrease 20
+       size 6 15
+       tex 0 8
+       type alphastatic
+       velocityjitter 5 5 20
 effect TR_CRYLINKPLASMA
-trailspacing 128
-type static
-color 0x5522aa 0x6622ff
-size 2 2
-sizeincrease 8
-tex 32 32
-alpha 256 256 1024
-velocityjitter 8 8 8
-//lightradius 90
-//lighttime 0
-//lightcolor 1 0 1
-velocitymultiplier -0.01
-// crylink main trail
+       alpha 256 256 1024
+       color 0x5522aa 0x6622ff
+       sizeincrease 8
+       size 2 2
+       tex 32 32
+       trailspacing 128
+       type static
+       velocityjitter 8 8 8
+       velocitymultiplier -0.010000
 effect TR_CRYLINKPLASMA
-trailspacing 16
-type static
-color 0x5522aa 0x6622ff
-size 3 3
-sizeincrease 15
-tex 3 3
-alpha 256 256 2600
-velocityjitter 2 2 2
-velocitymultiplier 0.01
-
+       alpha 256 256 2600
+       color 0x5522aa 0x6622ff
+       sizeincrease 15
+       size 3 3
+       tex 3 3
+       trailspacing 16
+       type static
+       velocityjitter 2 2 2
+       velocitymultiplier 0.010000
 effect cherryblossom
-count 1.5
-type static
-color 0xb123ff 0xb183ff
-size 1.5 2
-alpha 128 256 32
-gravity 0.05
-bounce 1.5
-airfriction 1
-liquidfriction 1
-originjitter 16 16 16
-velocityjitter 32 32 0
-tex 40 40
-//lightradius 200
-//lighttime 0
-
+       airfriction 1
+       alpha 128 256 32
+       bounce 1.500000
+       color 0xb123ff 0xb183ff
+       count 1.500000
+       gravity 0.050000
+       liquidfriction 1
+       originjitter 16 16 16
+       size 1.500000 2
+       tex 40 40
+       type static
+       velocityjitter 32 32 0
 effect alien_blood
-count 0.4
-type spark
-blend invmod
-tex 24 32
-size 5 11
-alpha 1560 2560 7000
-color 0xDC9BCD 0xDC9BCD
-bounce -1
-airfriction 0.4
-velocityjitter 99 99 55
-//velocitymultiplier 2
-staincolor 0xDC9BCD 0xDC9BCD
-staintex 16 24
-stainsize 1 2
-stretchfactor 25
-sizeincrease 20
-//blood mist
+       airfriction 0.400000
+       alpha 1560 2560 7000
+       blend invmod
+       bounce -1
+       color 0xDC9BCD 0xDC9BCD
+       count 0.400000
+       sizeincrease 20
+       size 5 11
+       staincolor 0xDC9BCD 0xDC9BCD
+       stainsize 1 2
+       staintex 16 24
+       stretchfactor 25
+       tex 24 32
+       type spark
+       velocityjitter 99 99 55
 effect alien_blood
-countabsolute 1
-type smoke
-blend invmod
-tex 24 32
-size 25 30
-sizeincrease 20
-alpha 3000 5560 12000
-color 0xDC9BCD 0xDC9BCD
-originjitter 11 11 11
-
+       alpha 3000 5560 12000
+       blend invmod
+       color 0xDC9BCD 0xDC9BCD
+       countabsolute 1
+       originjitter 11 11 11
+       sizeincrease 20
+       size 25 30
+       tex 24 32
+       type smoke
 effect robot_blood
-count 0.167
-type spark
-tex 70 70
-size 1 2
-alpha 256 256 64
-color 0xff3000 0xff7373
-bounce -1
-gravity 1
-airfriction 1
-liquidfriction 4
-velocityjitter 264 264 264
-velocityoffset 0 0 100
-//shockwave
+       airfriction 1
+       alpha 256 256 64
+       bounce -1
+       color 0xff3000 0xff7373
+       count 0.167000
+       gravity 1
+       liquidfriction 4
+       size 1 2
+       tex 70 70
+       type spark
+       velocityjitter 264 264 264
+       velocityoffset 0 0 100
 effect robot_blood
-countabsolute 1
-type smoke
-tex 74 74
-size 2 2
-alpha 0 90 1000
-color 0xff8400 0xffbb72
-originjitter 11 11 11
-sizeincrease 800
-// electo sparcks
+       alpha 0 90 1000
+       color 0xff8400 0xffbb72
+       countabsolute 1
+       originjitter 11 11 11
+       sizeincrease 800
+       size 2 2
+       tex 74 74
+       type smoke
 effect robot_blood
-count 0.1
-type smoke
-tex 71 73
-size 20 40
-alpha 256 256 5120
-color 0xff3000 0xff8585
-originjitter 41 41 21
-rotate -180 180 4000 -4000
-
-
-
+       alpha 256 256 5120
+       color 0xff3000 0xff8585
+       count 0.100000
+       originjitter 41 41 21
+       rotate -180 180 4000 -4000
+       size 20 40
+       tex 71 73
+       type smoke
 effect alien_TR_BLOOD
-trailspacing 20
-type spark
-blend invmod
-color 0xC080B0 0xC080B0
-tex 24 32
-size 4 19
-alpha 384 984 1492
-bounce -1
-gravity 0.4
-airfriction -2
-liquidfriction 1
-velocityjitter 64 64 64
-velocitymultiplier -0.1
-staincolor 0xC080B0 0xC080B0
-staintex 16 24
-stainsize 1 2
-stretchfactor 7
-sizeincrease -5
-// splash around gib
-effect TR_BLOOD
-trailspacing 42
-type blood
-color 0xA8FFFF 0xA8FFFF
-tex 24 32
-size 4 6
-alpha 684 684 7492
-sizeincrease 500
-
+       airfriction -2
+       alpha 384 984 1492
+       blend invmod
+       bounce -1
+       color 0xC080B0 0xC080B0
+       gravity 0.400000
+       liquidfriction 1
+       sizeincrease -5
+       size 4 19
+       staincolor 0xC080B0 0xC080B0
+       stainsize 1 2
+       staintex 16 24
+       stretchfactor 7
+       tex 24 32
+       trailspacing 20
+       type spark
+       velocityjitter 64 64 64
+       velocitymultiplier -0.100000
+effect alien_TR_BLOOD
+       alpha 684 684 7492
+       color 0xA8FFFF 0xA8FFFF
+       sizeincrease 500
+       size 4 6
+       tex 24 32
+       trailspacing 42
+       type blood
 effect robot_TR_BLOOD
-trailspacing 16
-type spark
-blend invmod
-color 0xC0D890 0xC0D890
-tex 24 32
-size 4 13
-alpha 384 984 1892
-bounce -1
-gravity 0.4
-airfriction -2
-liquidfriction 1
-velocityjitter 64 64 64
-velocitymultiplier -0.3
-staincolor 0x808080 0x808080
-staintex 16 24
-stainsize 1 3
-stretchfactor 6
-sizeincrease -6
-// fire
+       airfriction -2
+       alpha 384 984 1892
+       blend invmod
+       bounce -1
+       color 0xC0D890 0xC0D890
+       gravity 0.400000
+       liquidfriction 1
+       sizeincrease -6
+       size 4 13
+       staincolor 0x808080 0x808080
+       stainsize 1 3
+       staintex 16 24
+       stretchfactor 6
+       tex 24 32
+       trailspacing 16
+       type spark
+       velocityjitter 64 64 64
+       velocitymultiplier -0.300000
 effect robot_TR_BLOOD
-notunderwater
-trailspacing 16
-type spark
-tex 48 55
-color 0x902010 0xff3600
-size 5 20
-alpha 128 256 900
-gravity -1
-airfriction 4
-liquidfriction 4
-stretchfactor 5
-sizeincrease 10
-velocityjitter 44 44 44
-// arcs
+       airfriction 4
+       alpha 128 256 900
+       color 0x902010 0xff3600
+       gravity -1
+       liquidfriction 4
+       notunderwater
+       sizeincrease 10
+       size 5 20
+       stretchfactor 5
+       tex 48 55
+       trailspacing 16
+       type spark
+       velocityjitter 44 44 44
 effect robot_TR_BLOOD
-trailspacing 128
-type smoke
-tex 71 73
-color 0xff3000 0xff8585
-size 25 30
-alpha 1128 1256 44900
-rotate -180 180 4000 -4000
-velocityjitter 44 44 44
-
-
+       alpha 1128 1256 44900
+       color 0xff3000 0xff8585
+       rotate -180 180 4000 -4000
+       size 25 30
+       tex 71 73
+       trailspacing 128
+       type smoke
+       velocityjitter 44 44 44
 effect alien_TR_SLIGHTBLOOD
-trailspacing 64
-type blood
-color 0xC080B0 0xC080B0
-tex 24 32
-size 80 80
-alpha 384 384 192
-bounce -1
-airfriction 1
-liquidfriction 4
-velocityjitter 64 64 64
-velocitymultiplier 0.5
-staincolor 0x808080 0x808080
-staintex 16 24
-
+       airfriction 1
+       alpha 384 384 192
+       bounce -1
+       color 0xC080B0 0xC080B0
+       liquidfriction 4
+       size 80 80
+       staincolor 0x808080 0x808080
+       staintex 16 24
+       tex 24 32
+       trailspacing 64
+       type blood
+       velocityjitter 64 64 64
+       velocitymultiplier 0.500000
 effect robot_TR_SLIGHTBLOOD
-trailspacing 64
-type blood
-color 0xC0D890 0xC0D890
-tex 24 32
-size 8 8
-alpha 384 384 192
-bounce -1
-airfriction 1
-liquidfriction 4
-velocityjitter 64 64 64
-velocitymultiplier 0.5
-staincolor 0x808080 0x808080
-staintex 16 24
-
-// flare particle and light
-// used in qcsrc/server/t_items.qc:    pointparticles(particleeffectnum("item_pickup"), self.origin, '0 0 0', 1)
+       airfriction 1
+       alpha 384 384 192
+       bounce -1
+       color 0xC0D890 0xC0D890
+       liquidfriction 4
+       size 8 8
+       staincolor 0x808080 0x808080
+       staintex 16 24
+       tex 24 32
+       trailspacing 64
+       type blood
+       velocityjitter 64 64 64
+       velocitymultiplier 0.500000
 effect item_pickup
-countabsolute 1
-type static
-color 0x63F2EA 0xB0C5C4
-size 8 16
-alpha 128 64 64
-// cloud of particles which expand rapidly and then slow to form a ball
+       alpha 128 64 64
+       color 0x63F2EA 0xB0C5C4
+       countabsolute 1
+       size 8 16
+       type static
 effect item_pickup
-count 32
-type spark
-tex 41 41
-color 0x63F2EA 0xB0C5C4
-size 1 1
-alpha 256 256 1280
-//originjitter 24 24 24
-velocityjitter 256 256 256
-
+       alpha 256 256 1280
+       color 0x63F2EA 0xB0C5C4
+       count 32
+       size 1 1
+       tex 41 41
+       type spark
+       velocityjitter 256 256 256
 effect bloodshower
-count 125
-type spark
-blend invmod
-tex 24 32
-size 8 28
-color 0xA8FFFF 0xA8FFFFF
-alpha 156 656 1664
-bounce -1
-gravity 1
-stretchfactor 3
-liquidfriction 4
-velocityjitter 764 764 764
-// velocitymultiplier 1
-staincolor 0x808080 0x808080
-staintex 16 24
-stainsize 1 2
-// center blood
+       alpha 156 656 1664
+       blend invmod
+       bounce -1
+       color 0xA8FFFF 0xA8FFFFF
+       count 125
+       gravity 1
+       liquidfriction 4
+       size 8 28
+       staincolor 0x808080 0x808080
+       stainsize 1 2
+       staintex 16 24
+       stretchfactor 3
+       tex 24 32
+       type spark
+       velocityjitter 764 764 764
 effect bloodshower
-countabsolute 0.1
-type smoke
-blend invmod
-tex 24 32
-size 1 28
-sizeincrease 300
-originjitter 50 50 50
-color 0xA8FFFF 0xA8FFFFF
-alpha 156 656 1664
-
+       alpha 156 656 1664
+       blend invmod
+       color 0xA8FFFF 0xA8FFFFF
+       countabsolute 0.100000
+       originjitter 50 50 50
+       sizeincrease 300
+       size 1 28
+       tex 24 32
+       type smoke
 effect alien_bloodshower
-count 125
-type spark
-blend invmod
-tex 24 32
-size 8 28
-color 0xC080B0 0xC080B0
-alpha 156 656 1664
-bounce -1
-gravity 1
-stretchfactor 3
-liquidfriction 4
-velocityjitter 764 764 764
-// velocitymultiplier 1
-staincolor 0xC080B0 0xC080B0
-staintex 16 24
-stainsize 1 2
-// center blood
-effect bloodshower
-countabsolute 0.1
-type smoke
-blend invmod
-tex 24 32
-size 1 28
-sizeincrease 300
-originjitter 50 50 50
-color 0xA8FFFF 0xA8FFFFF
-alpha 156 656 1664
-
-
+       alpha 156 656 1664
+       blend invmod
+       bounce -1
+       color 0xC080B0 0xC080B0
+       count 125
+       gravity 1
+       liquidfriction 4
+       size 8 28
+       staincolor 0xC080B0 0xC080B0
+       stainsize 1 2
+       staintex 16 24
+       stretchfactor 3
+       tex 24 32
+       type spark
+       velocityjitter 764 764 764
+effect alien_bloodshower
+       alpha 156 656 1664
+       blend invmod
+       color 0xA8FFFF 0xA8FFFFF
+       countabsolute 0.100000
+       originjitter 50 50 50
+       sizeincrease 300
+       size 1 28
+       tex 24 32
+       type smoke
 effect robot_bloodshower
-count 100
-type spark
-blend invmod
-tex 24 32
-size 8 28
-color 0xC0D890 0xC0D890
-alpha 156 656 1664
-bounce -1
-gravity 1
-stretchfactor 3
-liquidfriction 4
-velocityjitter 764 764 764
-// velocitymultiplier 1
-staincolor 0xC0D890 0xC0D890
-staintex 16 24
-stainsize 1 2
-// arc
+       alpha 156 656 1664
+       blend invmod
+       bounce -1
+       color 0xC0D890 0xC0D890
+       count 100
+       gravity 1
+       liquidfriction 4
+       size 8 28
+       staincolor 0xC0D890 0xC0D890
+       stainsize 1 2
+       staintex 16 24
+       stretchfactor 3
+       tex 24 32
+       type spark
+       velocityjitter 764 764 764
 effect robot_bloodshower
-count 2.5
-type smoke
-tex 71 73
-color 0xff3000 0xff8585
-size 25 40
-alpha 1128 1256 4200
-rotate -180 180 99 -99
-velocityjitter 44 44 44
-originjitter 150 150 150
-// shockwave
+       alpha 1128 1256 4200
+       color 0xff3000 0xff8585
+       count 2.500000
+       originjitter 150 150 150
+       rotate -180 180 99 -99
+       size 25 40
+       tex 71 73
+       type smoke
+       velocityjitter 44 44 44
 effect robot_bloodshower
-count 2.5
-type smoke
-tex 74 74
-color 0xff3000 0xff8585
-size 5 50
-sizeincrease 3000
-alpha 11 125 990
-
-//red_ground_quake
-//smoke
-// used in qsrc/server/ctf.qc:         pointparticles(particleeffectnum("red_ground_quake"), self.origin, '0 0 0', 1);
+       alpha 11 125 990
+       color 0xff3000 0xff8585
+       count 2.500000
+       sizeincrease 3000
+       size 5 50
+       tex 74 74
+       type smoke
 effect red_ground_quake
-type smoke
-count 90
-tex 0 8
-size 20 50
-sizeincrease 100
-gravity 0.5
-time 5 10
-airfriction 3
-alpha 100 126 200
-color 0x111111 0xbbbbbb
-//originjitter 2 2 0
-velocityjitter 190 190 50
-bounce 1.1
-notunderwater
+       airfriction 3
+       alpha 100 126 200
+       bounce 1.100000
+       color 0x111111 0xbbbbbb
+       count 90
+       gravity 0.500000
+       notunderwater
+       sizeincrease 100
+       size 20 50
+       tex 0 8
+       time 5 10
+       type smoke
+       velocityjitter 190 190 50
 effect red_ground_quake
-type smoke
-count 40
-tex 0 8
-size 10 30
-sizeincrease 60
-gravity 0.2
-time 10 15
-airfriction 4
-alpha 100 126 200
-color 0x111111 0x979797
-//originjitter 2 2 0
-velocityjitter 190 190 50
-bounce 1.2
-notunderwater
+       airfriction 4
+       alpha 100 126 200
+       bounce 1.200000
+       color 0x111111 0x979797
+       count 40
+       gravity 0.200000
+       notunderwater
+       sizeincrease 60
+       size 10 30
+       tex 0 8
+       time 10 15
+       type smoke
+       velocityjitter 190 190 50
 effect red_ground_quake
-//notunderwater
-count 16
-type smoke
-tex 48 55
-size 4 20
-time 15 25
-alpha 200 356 512
-gravity -0.5
-color 0x9E6A64 0x91302D
-bounce 6
-sizeincrease 5
-originjitter 33 33 33
-velocityjitter 22 22 50
-// smoke
+       alpha 200 356 512
+       bounce 6
+       color 0x9E6A64 0x91302D
+       count 16
+       gravity -0.500000
+       originjitter 33 33 33
+       sizeincrease 5
+       size 4 20
+       tex 48 55
+       time 15 25
+       type smoke
+       velocityjitter 22 22 50
 effect red_ground_quake
-type alphastatic
-count 11
-tex 0 8
-size 22 33
-sizeincrease 11
-time 25 35
-alpha 200 256 200
-color 0x000000 0xffffff
-gravity -0.3
-originjitter 44 44 44
-velocityjitter 11 11 50
-bounce 2
-
-//blue_ground_quake
-//smoke
-// used in qsrc/server/ctf.qc:         pointparticles(particleeffectnum("blue_ground_quake"), self.origin, '0 0 0', 1);
+       alpha 200 256 200
+       bounce 2
+       color 0x000000 0xffffff
+       count 11
+       gravity -0.300000
+       originjitter 44 44 44
+       sizeincrease 11
+       size 22 33
+       tex 0 8
+       time 25 35
+       type alphastatic
+       velocityjitter 11 11 50
 effect blue_ground_quake
-type smoke
-count 90
-tex 0 8
-size 20 50
-sizeincrease 100
-gravity 0.5
-time 5 10
-airfriction 3
-alpha 100 126 200
-color 0x111111 0xbbbbbb
-//originjitter 2 2 0
-velocityjitter 190 190 50
-bounce 1.1
-notunderwater
+       airfriction 3
+       alpha 100 126 200
+       bounce 1.100000
+       color 0x111111 0xbbbbbb
+       count 90
+       gravity 0.500000
+       notunderwater
+       sizeincrease 100
+       size 20 50
+       tex 0 8
+       time 5 10
+       type smoke
+       velocityjitter 190 190 50
 effect blue_ground_quake
-type smoke
-count 40
-tex 0 8
-size 10 30
-sizeincrease 60
-gravity 0.2
-time 10 15
-airfriction 4
-alpha 100 126 200
-color 0x111111 0x979797
-//originjitter 2 2 0
-velocityjitter 190 190 50
-bounce 1.2
-notunderwater
+       airfriction 4
+       alpha 100 126 200
+       bounce 1.200000
+       color 0x111111 0x979797
+       count 40
+       gravity 0.200000
+       notunderwater
+       sizeincrease 60
+       size 10 30
+       tex 0 8
+       time 10 15
+       type smoke
+       velocityjitter 190 190 50
 effect blue_ground_quake
-//notunderwater
-count 16
-type smoke
-tex 48 55
-size 4 20
-time 15 25
-alpha 200 356 512
-gravity -0.5
-color 0x64679E 0x2D4C91
-bounce 6
-sizeincrease 5
-originjitter 33 33 33
-velocityjitter 22 22 50
-// smoke
+       alpha 200 356 512
+       bounce 6
+       color 0x64679E 0x2D4C91
+       count 16
+       gravity -0.500000
+       originjitter 33 33 33
+       sizeincrease 5
+       size 4 20
+       tex 48 55
+       time 15 25
+       type smoke
+       velocityjitter 22 22 50
 effect blue_ground_quake
-type alphastatic
-count 11
-tex 0 8
-size 22 33
-sizeincrease 11
-time 25 35
-alpha 200 256 200
-color 0x000000 0xffffff
-gravity -0.3
-originjitter 44 44 44
-velocityjitter 11 11 50
-bounce 2
-
-
-
-// cl_gentle impact effect indicating damage
-// maintained by morphed
-// used in qcsrc/client/gibs.qc:                       pointparticles(particleeffectnum("damage_hit"), org, vel, amount * 16)
+       alpha 200 256 200
+       bounce 2
+       color 0x000000 0xffffff
+       count 11
+       gravity -0.300000
+       originjitter 44 44 44
+       sizeincrease 11
+       size 22 33
+       tex 0 8
+       time 25 35
+       type alphastatic
+       velocityjitter 11 11 50
 effect morphed_damage_hit
-tex 43 43
-count 0.5
-type spark
-color 0xffffff 0x9271fb
-size 14 24
-sizeincrease -24
-alpha 128 128 292
-gravity -0.4
-airfriction 5
-liquidfriction 10
-velocityjitter 356 356 456
-
+       airfriction 5
+       alpha 128 128 292
+       color 0xffffff 0x9271fb
+       count 0.500000
+       gravity -0.400000
+       liquidfriction 10
+       sizeincrease -24
+       size 14 24
+       tex 43 43
+       type spark
+       velocityjitter 356 356 456
 effect morphed_damage_hit
-tex 0 8
-count 0.5
-type smoke
-color 0xffffff 0x9271fb
-size 24 24
-sizeincrease -24
-alpha 128 128 292
-airfriction 5
-liquidfriction 10
-originjitter 10 10 10
-
-
-// effect for removing player model
-// "teleport"
-
-// cl_gentle deathfx
-// used in qcsrc/client/gibs.qc:                       pointparticles(particleeffectnum("damage_dissolve"), org, vel, amount)
+       airfriction 5
+       alpha 128 128 292
+       color 0xffffff 0x9271fb
+       count 0.500000
+       liquidfriction 10
+       originjitter 10 10 10
+       sizeincrease -24
+       size 24 24
+       tex 0 8
+       type smoke
 effect morphed_damage_dissolve
-tex 43 43
-count 10
-type smoke
-color 0xffffff 0x9271fb
-size 40 40
-sizeincrease -16
-alpha 456 456 1828
-gravity -1.9
-airfriction 8
-liquidfriction 6
-velocityjitter 256 256 512
-rotate -180 180 -399 -99
-
+       airfriction 8
+       alpha 456 456 1828
+       color 0xffffff 0x9271fb
+       count 10
+       gravity -1.900000
+       liquidfriction 6
+       rotate -180 180 -399 -99
+       sizeincrease -16
+       size 40 40
+       tex 43 43
+       type smoke
+       velocityjitter 256 256 512
 effect morphed_damage_dissolve
-tex 43 43
-count 2.5
-type smoke
-color 0x7bdbff 0xbed2ff
-size 40 40
-sizeincrease -16
-alpha 256 256 628
-gravity -0.8
-airfriction 9
-liquidfriction 6
-velocityjitter 256 256 512
-rotate -180 180 0 0
-
+       airfriction 9
+       alpha 256 256 628
+       color 0x7bdbff 0xbed2ff
+       count 2.500000
+       gravity -0.800000
+       liquidfriction 6
+       rotate -180 180 0 0
+       sizeincrease -16
+       size 40 40
+       tex 43 43
+       type smoke
+       velocityjitter 256 256 512
 effect morphed_damage_dissolve
-tex 65 65
-count 5
-type smoke
-color 0xffffff 0x9271fb
-size 44 44
-sizeincrease -16
-alpha 156 156 128
-airfriction 3
-liquidfriction 6
-originjitter 22 22 76
-
+       airfriction 3
+       alpha 156 156 128
+       color 0xffffff 0x9271fb
+       count 5
+       liquidfriction 6
+       originjitter 22 22 76
+       sizeincrease -16
+       size 44 44
+       tex 65 65
+       type smoke
 effect morphed_damage_dissolve
-tex 46 46
-count 15
-type smoke
-color 0xffffff 0x9271fb
-size 32 32
-sizeincrease -16
-alpha 56 56 128
-gravity 1
-bounce 1.5
-airfriction 3
-liquidfriction 6
-velocityjitter 400 400 0
-rotate -180 180 999 -999
-
-// Team / hit minsta effects
+       airfriction 3
+       alpha 56 56 128
+       bounce 1.500000
+       color 0xffffff 0x9271fb
+       count 15
+       gravity 1
+       liquidfriction 6
+       rotate -180 180 999 -999
+       sizeincrease -16
+       size 32 32
+       tex 46 46
+       type smoke
+       velocityjitter 400 400 0
 effect TE_TEI_G3RED
-countabsolute 1
-type beam
-tex 200 200
-color 0xFF0000 0xFF0000
-size 4 4
-alpha 128 128 256
-// experimental
+       alpha 128 128 256
+       color 0xFF0000 0xFF0011
+       countabsolute 1
+       size 4 4
+       tex 200 200
+       type beam
 effect TE_TEI_G3RED
-trailspacing 8
-type static
-color 0x200000 0x400000
-size 0.3 0.3
-sizeincrease 3
-tex 46 46
-alpha 256 256 512
-airfriction -4
-//liquidfriction -4
-velocityjitter 3 3 3
-type smoke
-
+       airfriction -4
+       alpha 256 256 512
+       color 0x200000 0x400000
+       sizeincrease 3
+       size 0.300000 0.300000
+       tex 46 46
+       trailspacing 8
+       type smoke
+       velocityjitter 3 3 3
 effect TE_TEI_G3RED_HIT
-countabsolute 1
-type beam
-tex 200 200
-color 0xFF0000 0xFF0000
-size 8 8
-alpha 128 128 256
-// experimental
+       alpha 128 128 256
+       color 0xFF0000 0xFF0011
+       countabsolute 1
+       size 8 8
+       tex 200 200
+       type beam
 effect TE_TEI_G3RED_HIT
-trailspacing 20
-type static
-color 0xFFFFFF 0xFF0011
-size 2 2
-sizeincrease -2
-alpha 256 256 512
-airfriction -4
-//liquidfriction -4
-velocityjitter 2 2 2
-type smoke
-// rings
+       airfriction -4
+       alpha 256 256 512
+       color 0xFFFFFF 0xFF0011
+       sizeincrease -2
+       size 2 2
+       trailspacing 20
+       type smoke
+       velocityjitter 2 2 2
 effect TE_TEI_G3RED_HIT
-trailspacing 40
-type static
-color 0xFF0000 0xFF0011
-size 10 10 
-sizeincrease -6
-alpha 256 256 512
-airfriction -4
-//liquidfriction -4
-type smoke
-
+       airfriction -4
+       alpha 256 256 512
+       color 0xFF0000 0xFF0011
+       sizeincrease -6
+       size 10 10
+       trailspacing 40
+       type smoke
 effect TE_TEI_G3BLUE
-countabsolute 1
-type beam
-tex 200 200
-color 0x0000FF 0x1100FF
-size 4 4
-alpha 128 128 256
-// experimental
+       alpha 128 128 256
+       color 0x0000FF 0x1100FF
+       countabsolute 1
+       size 4 4
+       tex 200 200
+       type beam
 effect TE_TEI_G3BLUE
-trailspacing 8
-type static
-color 0x000020 0x000040
-size 0.3 0.3
-sizeincrease 3
-tex 46 46
-alpha 256 256 512
-airfriction -4
-//liquidfriction -4
-velocityjitter 3 3 3
-type smoke
-
+       airfriction -4
+       alpha 256 256 512
+       color 0x000020 0x000040
+       sizeincrease 3
+       size 0.300000 0.300000
+       tex 46 46
+       trailspacing 8
+       type smoke
+       velocityjitter 3 3 3
 effect TE_TEI_G3BLUE_HIT
-countabsolute 1
-type beam
-tex 200 200
-color 0x0000FF 0x1100FF
-size 8 8
-alpha 128 128 256
-// experimental
+       alpha 128 128 256
+       color 0x0000FF 0x1100FF
+       countabsolute 1
+       size 8 8
+       tex 200 200
+       type beam
 effect TE_TEI_G3BLUE_HIT
-trailspacing 20
-type static
-color 0xFFFFFF 0x100FF
-size 2 2
-sizeincrease -2
-alpha 256 256 512
-airfriction -4
-//liquidfriction -4
-velocityjitter 2 2 2
-type smoke
-// rings
+       airfriction -4
+       alpha 256 256 512
+       color 0xFFFFFF 0x1100FF
+       sizeincrease -2
+       size 2 2
+       trailspacing 20
+       type smoke
+       velocityjitter 2 2 2
 effect TE_TEI_G3BLUE_HIT
-trailspacing 40
-type static
-color 0x0000FF 0x1100FF
-size 10 10 
-sizeincrease -6
-alpha 256 256 512
-airfriction -4
-//liquidfriction -4
-type smoke
-
-// Yellow 
+       airfriction -4
+       alpha 256 256 512
+       color 0x0000FF 0x1100FF
+       sizeincrease -6
+       size 10 10
+       trailspacing 40
+       type smoke
 effect TE_TEI_G3YELLOW
-countabsolute 1
-type beam
-tex 200 200
-color 0xffff00 0xffff11
-size 4 4
-alpha 128 128 256
+       alpha 128 128 256
+       color 0xffff00 0xffff11
+       countabsolute 1
+       size 4 4
+       tex 200 200
+       type beam
 effect TE_TEI_G3YELLOW
-trailspacing 8
-type static
-color 0x202000 0x404000
-size 0.3 0.3
-sizeincrease 3
-tex 46 46
-alpha 256 256 512
-airfriction -4
-velocityjitter 3 3 3
-type smoke
-
+       airfriction -4
+       alpha 256 256 512
+       color 0x202000 0x404000
+       sizeincrease 3
+       size 0.300000 0.300000
+       tex 46 46
+       trailspacing 8
+       type smoke
+       velocityjitter 3 3 3
 effect TE_TEI_G3YELLOW_HIT
-countabsolute 1
-type beam
-tex 200 200
-color 0xffff00 0xffff11
-size 8 8
-alpha 128 128 256
+       alpha 128 128 256
+       color 0xffff00 0xffff11
+       countabsolute 1
+       size 8 8
+       tex 200 200
+       type beam
 effect TE_TEI_G3YELLOW_HIT
-trailspacing 20
-type static
-color 0xFFFFFF 0xffff10
-size 2 2
-sizeincrease -2
-alpha 256 256 512
-airfriction -4
-velocityjitter 2 2 2
-type smoke
-// rings
+       airfriction -4
+       alpha 256 256 512
+       color 0xFFFFFF 0xffff11
+       sizeincrease -2
+       size 2 2
+       trailspacing 20
+       type smoke
+       velocityjitter 2 2 2
 effect TE_TEI_G3YELLOW_HIT
-trailspacing 40
-type static
-color 0xffff00 0xffff11
-size 10 10 
-sizeincrease -6
-alpha 256 256 512
-airfriction -4
-//liquidfriction -4
-type smoke
-
-
-// Pink
-effect TE_TEI_G3PINK
-countabsolute 1
-type beam
-tex 200 200
-color 0xFF00FF 0xFF11FF
-size 4 4
-alpha 128 128 256
-// experimental
+       airfriction -4
+       alpha 256 256 512
+       color 0xffff00 0xffff11
+       sizeincrease -6
+       size 10 10
+       trailspacing 40
+       type smoke
 effect TE_TEI_G3PINK
-trailspacing 8
-type static
-color 0x200020 0x400040
-size 0.3 0.3
-sizeincrease 3
-tex 46 46
-alpha 256 256 512
-airfriction -4
-//liquidfriction -4
-velocityjitter 3 3 3
-type smoke
-
+       alpha 128 128 256
+       color 0xFF00FF 0xFF11FF
+       countabsolute 1
+       size 4 4
+       tex 200 200
+       type beam
+effect TE_TEI_G3PINK
+       airfriction -4
+       alpha 256 256 512
+       color 0x200020 0x400040
+       sizeincrease 3
+       size 0.300000 0.300000
+       tex 46 46
+       trailspacing 8
+       type smoke
+       velocityjitter 3 3 3
 effect TE_TEI_G3PINK_HIT
-countabsolute 1
-type beam
-tex 200 200
-color 0xFF00FF 0xFF11FF
-size 8 8
-alpha 128 128 256
-// experimental
+       alpha 128 128 256
+       color 0xFF00FF 0xFF11FF
+       countabsolute 1
+       size 8 8
+       tex 200 200
+       type beam
 effect TE_TEI_G3PINK_HIT
-trailspacing 20
-type static
-color 0xFFFFFF 0xFF10FF
-size 2 2
-sizeincrease -2
-alpha 256 256 512
-airfriction -4
-//liquidfriction -4
-velocityjitter 2 2 2
-type smoke
-// rings
+       airfriction -4
+       alpha 256 256 512
+       color 0xFFFFFF 0xFF11FF
+       sizeincrease -2
+       size 2 2
+       trailspacing 20
+       type smoke
+       velocityjitter 2 2 2
 effect TE_TEI_G3PINK_HIT
-trailspacing 40
-type static
-color 0xFF00FF 0xFF11FF
-size 10 10 
-sizeincrease -6
-alpha 256 256 512
-airfriction -4
-//liquidfriction -4
-type smoke
-
-
-
-
-// cl_gentle impact effect indicating damage
-// maintained by particlegibs
-// used in qcsrc/client/gibs.qc:                        pointparticles(particleeffectnum("damage_hit"), org, vel, amount * 16)
-// core decal
+       airfriction -4
+       alpha 256 256 512
+       color 0xFF00FF 0xFF11FF
+       sizeincrease -6
+       size 10 10
+       trailspacing 40
+       type smoke
 effect particlegibs_damage_hit
-type blood
-count 0.5
-tex 0 8
-size 5 10
-color 0xA8FFFF 0xA8FFFFF
-alpha 256 256 428
-gravity 1
-bounce -1
-airfriction 3
-liquidfriction 6
-velocityjitter 156 156 212
-staincolor 0x808080 0x808080
-staintex 16 24
-// front blood
+       airfriction 3
+       alpha 256 256 428
+       bounce -1
+       color 0xA8FFFF 0xA8FFFFF
+       count 0.500000
+       gravity 1
+       liquidfriction 6
+       size 5 10
+       staincolor 0x808080 0x808080
+       staintex 16 24
+       tex 0 8
+       type blood
+       velocityjitter 156 156 212
 effect particlegibs_damage_hit
-type blood
-count 0.1
-tex 24 32
-size 10 20
-color 0xA8FFFF 0xA8FFFFF
-sizeincrease -15
-alpha 256 256 328
-bounce -1
-gravity 0.5
-airfriction 1
-liquidfriction 3
-velocityjitter 6 6 30
-velocitymultiplier -1
-staincolor 0x808080 0x808080
-staintex 16 24
-// back blood
+       airfriction 1
+       alpha 256 256 328
+       bounce -1
+       color 0xA8FFFF 0xA8FFFFF
+       count 0.100000
+       gravity 0.500000
+       liquidfriction 3
+       sizeincrease -15
+       size 10 20
+       staincolor 0x808080 0x808080
+       staintex 16 24
+       tex 24 32
+       type blood
+       velocityjitter 6 6 30
+       velocitymultiplier -1
 effect particlegibs_damage_hit
-type blood
-count 0.1
-tex 24 32
-size 5 15
-color 0xA8FFFF 0xA8FFFFF
-sizeincrease 10
-alpha 256 256 328
-bounce -1
-gravity 1
-airfriction 1
-liquidfriction 3
-velocityjitter 26 26 112
-originjitter 3 3 3
-velocitymultiplier 2
-staincolor 0x808080 0x808080
-staintex 16 24
-// effect for removing player model
-// "teleport"
-// cl_gentle deathfx
-// used in qcsrc/client/gibs.qc:                        pointparticles(particleeffectnum("damage_dissolve"), org, vel, amount)
-// small core blood no decals
+       airfriction 1
+       alpha 256 256 328
+       bounce -1
+       color 0xA8FFFF 0xA8FFFFF
+       count 0.100000
+       gravity 1
+       liquidfriction 3
+       originjitter 3 3 3
+       sizeincrease 10
+       size 5 15
+       staincolor 0x808080 0x808080
+       staintex 16 24
+       tex 24 32
+       type blood
+       velocityjitter 26 26 112
+       velocitymultiplier 2
 effect particlegibs_damage_dissolve
-type blood
-count 32
-tex 0 8
-size 15 20
-color 0x00ffff 0x82ffff
-alpha 256 256 328
-gravity 1
-airfriction 3
-liquidfriction 6
-originjitter 10 10 25
-velocityjitter 256 256 312
-staincolor 0x808080 0x808080
-staintex 16 24
-// core decal
+       airfriction 3
+       alpha 256 256 328
+       color 0x00ffff 0x82ffff
+       count 32
+       gravity 1
+       liquidfriction 6
+       originjitter 10 10 25
+       size 15 20
+       staincolor 0x808080 0x808080
+       staintex 16 24
+       tex 0 8
+       type blood
+       velocityjitter 256 256 312
 effect particlegibs_damage_dissolve
-type blood
-count 12
-tex 0 8
-size 20 40
-color 0xA8FFFF 0xA8FFFFF
-alpha 256 256 528
-gravity 2
-bounce -1
-airfriction 2
-liquidfriction 6
-originjitter 10 10 25
-velocityjitter 356 356 412
-staincolor 0x808080 0x808080
-staintex 16 24
-// front blood
+       airfriction 2
+       alpha 256 256 528
+       bounce -1
+       color 0xA8FFFF 0xA8FFFFF
+       count 12
+       gravity 2
+       liquidfriction 6
+       originjitter 10 10 25
+       size 20 40
+       staincolor 0x808080 0x808080
+       staintex 16 24
+       tex 0 8
+       type blood
+       velocityjitter 356 356 412
 effect particlegibs_damage_dissolve
-type blood
-count 32
-tex 24 32
-size 10 20
-color 0xA8FFFF 0xA8FFFFF
-sizeincrease -15
-alpha 256 256 328
-bounce -1
-gravity 0.5
-airfriction 1
-liquidfriction 3
-velocityjitter 56 56 212
-originjitter 5 5 10
-velocitymultiplier -0.3
-staincolor 0x808080 0x808080
-staintex 16 24
-// back blood
+       airfriction 1
+       alpha 256 256 328
+       bounce -1
+       color 0xA8FFFF 0xA8FFFFF
+       count 32
+       gravity 0.500000
+       liquidfriction 3
+       originjitter 5 5 10
+       sizeincrease -15
+       size 10 20
+       staincolor 0x808080 0x808080
+       staintex 16 24
+       tex 24 32
+       type blood
+       velocityjitter 56 56 212
+       velocitymultiplier -0.300000
 effect particlegibs_damage_dissolve
-type blood
-count 32
-tex 24 32
-size 5 15
-color 0xA8FFFF 0xA8FFFFF
-sizeincrease 10
-alpha 256 256 328
-bounce -1
-gravity 1
-airfriction 1
-liquidfriction 3
-velocityjitter 56 56 212
-originjitter 5 5 10
-velocitymultiplier 0.5
-staincolor 0x808080 0x808080
-staintex 16 24
-// small bits
+       airfriction 1
+       alpha 256 256 328
+       bounce -1
+       color 0xA8FFFF 0xA8FFFFF
+       count 32
+       gravity 1
+       liquidfriction 3
+       originjitter 5 5 10
+       sizeincrease 10
+       size 5 15
+       staincolor 0x808080 0x808080
+       staintex 16 24
+       tex 24 32
+       type blood
+       velocityjitter 56 56 212
+       velocitymultiplier 0.500000
 effect particlegibs_damage_dissolve
-type blood
-count 75
-tex 24 32
-size 1 1
-color 0xA8FFFF 0xA8FFFFF
-sizeincrease 10
-alpha 256 256 328
-gravity 1
-airfriction 1.5
-liquidfriction 3
-originjitter 10 10 25
-velocityjitter 656 656 912
-staincolor 0x808080 0x808080
-staintex 16 24
-
-// fire effect which expands then slows
+       airfriction 1.500000
+       alpha 256 256 328
+       color 0xA8FFFF 0xA8FFFFF
+       count 75
+       gravity 1
+       liquidfriction 3
+       originjitter 10 10 25
+       sizeincrease 10
+       size 1 1
+       staincolor 0x808080 0x808080
+       staintex 16 24
+       tex 24 32
+       type blood
+       velocityjitter 656 656 912
 effect onslaught_generator_gib_explode
-notunderwater
-count 17
-type static
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 20 26
-sizeincrease 45
-alpha 128 256 356
-bounce 1.5
-airfriction 5
-liquidfriction 8
-originjitter 8 8 8
-velocityjitter 286 286 286
-
-// smoke
+       airfriction 5
+       alpha 128 256 356
+       bounce 1.500000
+       color 0x8f0d00 0xff5a00
+       count 17
+       liquidfriction 8
+       notunderwater
+       originjitter 8 8 8
+       sizeincrease 45
+       size 20 26
+       tex 48 55
+       type static
+       velocityjitter 286 286 286
 effect onslaught_generator_gib_explode
-type alphastatic
-notunderwater
-tex 0 8
-count 6
-size 1 10
-sizeincrease 90
-gravity -0.3
-alpha 200 500 600
-velocityjitter 244 244 244
-airfriction 5
-color 0x000000 0x111111
-bounce 2
-
-// underwater bubbles
+       airfriction 5
+       alpha 200 500 600
+       bounce 2
+       color 0x000000 0x111111
+       count 6
+       gravity -0.300000
+       notunderwater
+       sizeincrease 90
+       size 1 10
+       tex 0 8
+       type alphastatic
+       velocityjitter 244 244 244
 effect onslaught_generator_gib_explode
-underwater
-count 16
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 96 96 96
-
-// fire effect which expands then slows
+       alpha 128 256 64
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 16
+       gravity -0.125000
+       liquidfriction 0.250000
+       originjitter 16 16 16
+       size 3 3
+       tex 62 62
+       type bubble
+       underwater
+       velocityjitter 96 96 96
 effect onslaught_generator_gib_flame
-notunderwater
-count 15
-type static
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 5 10
-sizeincrease 25
-alpha 128 256 356
-gravity -0.5
-airfriction 5
-liquidfriction 8
-originjitter 3 3 3
-velocityjitter 86 86 86
-// smoke
+       airfriction 5
+       alpha 128 256 356
+       color 0x8f0d00 0xff5a00
+       count 15
+       gravity -0.500000
+       liquidfriction 8
+       notunderwater
+       originjitter 3 3 3
+       sizeincrease 25
+       size 5 10
+       tex 48 55
+       type static
+       velocityjitter 86 86 86
 effect onslaught_generator_gib_flame
-type alphastatic
-notunderwater
-tex 0 8
-count 1
-size 10 20
-sizeincrease 30
-gravity -0.8
-alpha 200 500 600
-velocityjitter 44 44 44
-airfriction 5
-color 0x000000 0x111111
-bounce 2
-
-// underwater bubbles
+       airfriction 5
+       alpha 200 500 600
+       bounce 2
+       color 0x000000 0x111111
+       count 1
+       gravity -0.800000
+       notunderwater
+       sizeincrease 30
+       size 10 20
+       tex 0 8
+       type alphastatic
+       velocityjitter 44 44 44
 effect onslaught_generator_gib_flame
-underwater
-count 16
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 96 96 96
-
-
-// used nowhere in code
+       alpha 128 256 64
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 16
+       gravity -0.125000
+       liquidfriction 0.250000
+       originjitter 16 16 16
+       size 3 3
+       tex 62 62
+       type bubble
+       underwater
+       velocityjitter 96 96 96
 effect firemine
-trailspacing 2
-count 0.5
-type smoke
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 1 1
-sizeincrease 5
-gravity -0.06
-alpha 50 256 250
-bounce 1.5
-velocityjitter 10 10 2
-airfriction 1.2
-//slowfire
+       airfriction 1.200000
+       alpha 50 256 250
+       bounce 1.500000
+       color 0x8f0d00 0xff5a00
+       count 0.500000
+       gravity -0.060000
+       sizeincrease 5
+       size 1 1
+       tex 48 55
+       trailspacing 2
+       type smoke
+       velocityjitter 10 10 2
 effect firemine
-trailspacing 2
-count 0.5
-type smoke
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 1 1
-sizeincrease 5
-gravity -0.06
-alpha 50 256 200
-bounce 1.5
-velocityjitter 10 10 10
-airfriction 1.2
-// very slow and small fire
+       airfriction 1.200000
+       alpha 50 256 200
+       bounce 1.500000
+       color 0x8f0d00 0xff5a00
+       count 0.500000
+       gravity -0.060000
+       sizeincrease 5
+       size 1 1
+       tex 48 55
+       trailspacing 2
+       type smoke
+       velocityjitter 10 10 10
 effect firemine
-trailspacing 4
-count 0.5
-type smoke
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 1 1
-sizeincrease 2
-gravity -0.06
-alpha 50 256 200
-bounce 1.5
-velocityjitter 8 8 8
-airfriction 0.3
-//decreasing fire
+       airfriction 0.300000
+       alpha 50 256 200
+       bounce 1.500000
+       color 0x8f0d00 0xff5a00
+       count 0.500000
+       gravity -0.060000
+       sizeincrease 2
+       size 1 1
+       tex 48 55
+       trailspacing 4
+       type smoke
+       velocityjitter 8 8 8
 effect firemine
-trailspacing 4
-count 0.5
-type smoke
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 5 7
-sizeincrease -3
-gravity -0.06
-alpha 50 256 200
-bounce 1.5
-velocityjitter 3 3 3
-airfriction 0.3
-//smoke
+       airfriction 0.300000
+       alpha 50 256 200
+       bounce 1.500000
+       color 0x8f0d00 0xff5a00
+       count 0.500000
+       gravity -0.060000
+       sizeincrease -3
+       size 5 7
+       tex 48 55
+       trailspacing 4
+       type smoke
+       velocityjitter 3 3 3
 effect firemine
-trailspacing 8
-count 0.5
-type alphastatic
-tex 0 8
-size 1 4
-sizeincrease 1
-color 0x000000 0x111111
-alpha 256 256 90
-//gravity -0.2
-originjitter 2 2 2
-velocityoffset 0 0 3
-airfriction 1
-//fastfire
+       airfriction 1
+       alpha 256 256 90
+       color 0x000000 0x111111
+       count 0.500000
+       originjitter 2 2 2
+       sizeincrease 1
+       size 1 4
+       tex 0 8
+       trailspacing 8
+       type alphastatic
+       velocityoffset 0 0 3
 effect firemine
-trailspacing 1
-count 0.5
-type smoke
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 12 12
-sizeincrease 0
-gravity 0
-alpha 50 256 1600
-bounce 1.5
-velocityjitter 0 0 0
-airfriction 1.2
-// light only
+       airfriction 1.200000
+       alpha 50 256 1600
+       bounce 1.500000
+       color 0x8f0d00 0xff5a00
+       count 0.500000
+       size 12 12
+       tex 48 55
+       trailspacing 1
+       type smoke
 effect firemine
-trailspacing 16
-lightradius 50
-lightradiusfade 50000
-lightcolor 2.7 2.7 0.6
-
-// used nowhere in code
+       lightcolor 2.7 2.7 0.6
+       lightradiusfade 50000
+       lightradius 50
+       trailspacing 16
 effect fireball
-trailspacing 2
-count 0.5
-type smoke
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 5 5
-sizeincrease 20
-gravity -0.06
-alpha 50 256 250
-bounce 1.5
-velocityjitter 40 40 11
-airfriction 1.2
-//slowfire
+       airfriction 1.200000
+       alpha 50 256 250
+       bounce 1.500000
+       color 0x8f0d00 0xff5a00
+       count 0.500000
+       gravity -0.060000
+       sizeincrease 20
+       size 5 5
+       tex 48 55
+       trailspacing 2
+       type smoke
+       velocityjitter 40 40 11
 effect fireball
-trailspacing 2
-count 0.5
-type smoke
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 5 5
-sizeincrease 20
-gravity -0.06
-alpha 50 256 200
-bounce 1.5
-velocityjitter 40 40 40
-airfriction 1.2
-// very slow and small fire
+       airfriction 1.200000
+       alpha 50 256 200
+       bounce 1.500000
+       color 0x8f0d00 0xff5a00
+       count 0.500000
+       gravity -0.060000
+       sizeincrease 20
+       size 5 5
+       tex 48 55
+       trailspacing 2
+       type smoke
+       velocityjitter 40 40 40
 effect fireball
-trailspacing 4
-count 0.5
-type smoke
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 5 5
-sizeincrease 10
-gravity -0.06
-alpha 50 256 200
-bounce 1.5
-velocityjitter 30 30 30
-airfriction 0.3
-//decreasing fire
+       airfriction 0.300000
+       alpha 50 256 200
+       bounce 1.500000
+       color 0x8f0d00 0xff5a00
+       count 0.500000
+       gravity -0.060000
+       sizeincrease 10
+       size 5 5
+       tex 48 55
+       trailspacing 4
+       type smoke
+       velocityjitter 30 30 30
 effect fireball
-trailspacing 4
-count 0.5
-type smoke
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 20 30
-sizeincrease -10
-gravity -0.06
-alpha 50 256 200
-bounce 1.5
-velocityjitter 10 10 10
-airfriction 0.3
-//smoke
+       airfriction 0.300000
+       alpha 50 256 200
+       bounce 1.500000
+       color 0x8f0d00 0xff5a00
+       count 0.500000
+       gravity -0.060000
+       sizeincrease -10
+       size 20 30
+       tex 48 55
+       trailspacing 4
+       type smoke
+       velocityjitter 10 10 10
 effect fireball
-trailspacing 8
-count 0.5
-type alphastatic
-tex 0 8
-size 5 15
-sizeincrease 7
-color 0x000000 0x111111
-alpha 256 256 90
-//gravity -0.2
-originjitter 10 10 10
-velocityoffset 0 0 10
-airfriction 1
-//fastfire
+       airfriction 1
+       alpha 256 256 90
+       color 0x000000 0x111111
+       count 0.500000
+       originjitter 10 10 10
+       sizeincrease 7
+       size 5 15
+       tex 0 8
+       trailspacing 8
+       type alphastatic
+       velocityoffset 0 0 10
 effect fireball
-trailspacing 1
-count 0.5
-type smoke
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 48 48
-sizeincrease 0
-gravity 0
-alpha 50 256 1600
-bounce 1.5
-velocityjitter 0 0 0
-airfriction 1.2
-// light only
+       airfriction 1.200000
+       alpha 50 256 1600
+       bounce 1.500000
+       color 0x8f0d00 0xff5a00
+       count 0.500000
+       size 48 48
+       tex 48 55
+       trailspacing 1
+       type smoke
 effect fireball
-trailspacing 16
-lightradius 300
-lightradiusfade 3000
-lightcolor 2.7 2.7 0.6
-
-// fireball
+       lightcolor 2.7 2.7 0.6
+       lightradiusfade 3000
+       lightradius 300
+       trailspacing 16
 effect fireball_laser
-count 10
-type spark
-color 0x800000 0xFF8020
-alpha 192 256 2560
-size 1 1
-velocityjitter 1 1 1
-velocitymultiplier 10
-stretchfactor 0.7
-
-// rocket explosion (bigger than mortar and hagar)
-// decal
-// used nowhere in code
+       alpha 192 256 2560
+       color 0x800000 0xFF8020
+       count 10
+       size 1 1
+       stretchfactor 0.700000
+       type spark
+       velocityjitter 1 1 1
+       velocitymultiplier 10
 effect fireball_explode
-countabsolute 1
-type decal
-tex 8 16
-size 72 72
-alpha 256 256 0
-originjitter 56 56 56
-lightradius 500
-lightradiusfade 500
-lightcolor 4 2 0.5
-// flare effect
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 4 2 0.5
+       lightradiusfade 500
+       lightradius 500
+       originjitter 56 56 56
+       size 72 72
+       tex 8 16
+       type decal
 effect fireball_explode
-countabsolute 1
-type static
-tex 35 37
-color 0x404040 0x404040
-size 72 72
-alpha 192 192 64
-// fire effect
+       alpha 192 192 64
+       color 0x404040 0x404040
+       countabsolute 1
+       size 72 72
+       tex 35 37
+       type static
 effect fireball_explode
-notunderwater
-count 128
-type static
-tex 48 55
-color 0x902010 0xFFD080
-size 16 16
-alpha 128 128 256
-bounce 1.5
-airfriction 4
-liquidfriction 4
-originjitter 8 8 8
-velocityjitter 512 512 512
-// underwater bubbles
+       airfriction 4
+       alpha 128 128 256
+       bounce 1.500000
+       color 0x902010 0xFFD080
+       count 128
+       liquidfriction 4
+       notunderwater
+       originjitter 8 8 8
+       size 16 16
+       tex 48 55
+       type static
+       velocityjitter 512 512 512
 effect fireball_explode
-underwater
-count 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 144 144 144
-// bouncing sparks
+       alpha 128 256 64
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 32
+       gravity -0.125000
+       liquidfriction 0.250000
+       originjitter 16 16 16
+       size 3 3
+       tex 62 62
+       type bubble
+       underwater
+       velocityjitter 144 144 144
 effect fireball_explode
-notunderwater
-count 64
-type spark
-color 0x903010 0xFFD030
-size 2 2
-alpha 256 256 384
-gravity 1
-airfriction 0.2
-bounce 1.5
-liquidfriction 0.8
-velocityoffset 0 0 80
-velocityjitter 384 384 384
-
+       airfriction 0.200000
+       alpha 256 256 384
+       bounce 1.500000
+       color 0x903010 0xFFD030
+       count 64
+       gravity 1
+       liquidfriction 0.800000
+       notunderwater
+       size 2 2
+       type spark
+       velocityjitter 384 384 384
+       velocityoffset 0 0 80
 effect fireball_muzzleflash
-count 2
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 5 5
-alpha 256 256 512
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-velocitymultiplier 0.01
-lightradius 200
-lightradiusfade 2000
-lightcolor 2 1.5 0.2
+       alpha 256 256 512
+       color 0x202020 0x404040
+       count 2
+       lightcolor 2 1.5 0.2
+       lightradiusfade 2000
+       lightradius 200
+       originjitter 1.5 1.5 1.5
+       size 5 5
+       tex 0 8
+       type smoke
+       velocityjitter 6 6 6
+       velocitymultiplier 0.010000
 effect fireball_muzzleflash
-count 15
-type spark
-tex 40 40
-color 0xFFFDD9 0xFFFDD9
-size 3 3
-alpha 0 128 1024
-originjitter 1 1 1
-velocityjitter 300 300 300
-velocitymultiplier 0.5
-airfriction 12
-
+       airfriction 12
+       alpha 0 128 1024
+       color 0xFFFDD9 0xFFFDD9
+       count 15
+       originjitter 1 1 1
+       size 3 3
+       tex 40 40
+       type spark
+       velocityjitter 300 300 300
+       velocitymultiplier 0.500000
 effect fireball_preattack_muzzleflash
-count 2
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 5 5
-alpha 256 256 512
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-velocitymultiplier 0.01
-lightradius 200
-lightradiusfade 2000
-lightcolor 2 1.5 0.2
+       alpha 256 256 512
+       color 0x202020 0x404040
+       count 2
+       lightcolor 2 1.5 0.2
+       lightradiusfade 2000
+       lightradius 200
+       originjitter 1.5 1.5 1.5
+       size 5 5
+       tex 0 8
+       type smoke
+       velocityjitter 6 6 6
+       velocitymultiplier 0.010000
 effect fireball_preattack_muzzleflash
-count 15
-type spark
-tex 40 40
-color 0xFFFDD9 0xFFFDD9
-size 3 3
-alpha 0 128 1024
-originjitter 1 1 1
-velocityjitter 300 300 300
-velocitymultiplier 0.5
-airfriction 12
-
+       airfriction 12
+       alpha 0 128 1024
+       color 0xFFFDD9 0xFFFDD9
+       count 15
+       originjitter 1 1 1
+       size 3 3
+       tex 40 40
+       type spark
+       velocityjitter 300 300 300
+       velocitymultiplier 0.500000
 effect fireball_bfgdamage
-count 2
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 5 5
-alpha 256 256 512
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-velocitymultiplier 0.01
-lightradius 200
-lightradiusfade 2000
-lightcolor 2 1.5 0.2
+       alpha 256 256 512
+       color 0x202020 0x404040
+       count 2
+       lightcolor 2 1.5 0.2
+       lightradiusfade 2000
+       lightradius 200
+       originjitter 1.5 1.5 1.5
+       size 5 5
+       tex 0 8
+       type smoke
+       velocityjitter 6 6 6
+       velocitymultiplier 0.010000
 effect fireball_bfgdamage
-count 15
-type spark
-tex 40 40
-color 0xFFFDD9 0xFFFDD9
-size 3 3
-alpha 0 128 1024
-originjitter 1 1 1
-velocityjitter 300 300 300
-velocitymultiplier 0.5
-airfriction 12
-
-//EF_FLAME
-//fire
-// used nowhere in code
+       airfriction 12
+       alpha 0 128 1024
+       color 0xFFFDD9 0xFFFDD9
+       count 15
+       originjitter 1 1 1
+       size 3 3
+       tex 40 40
+       type spark
+       velocityjitter 300 300 300
+       velocitymultiplier 0.500000
 effect EF_FLAME
-//notunderwater
-count 100
-type smoke
-tex 48 55
-size 5 21
-alpha 200 356 512
-gravity -0.5
-color 0x8f0d00 0xff5a00
-bounce 2
-sizeincrease -1
-originoffset 0 0 10
-originjitter 12 12 34
-velocityjitter 22 22 50
-// smoke
+       alpha 200 356 512
+       bounce 2
+       color 0x8f0d00 0xff5a00
+       count 100
+       gravity -0.500000
+       originjitter 12 12 34
+       originoffset 0 0 10
+       sizeincrease -1
+       size 5 21
+       tex 48 55
+       type smoke
+       velocityjitter 22 22 50
 effect EF_FLAME
-type alphastatic
-count 50
-tex 0 8
-size 11 15
-sizeincrease 6
-alpha 200 256 200
-color 0x000000 0x111111
-gravity -0.3
-originoffset 0 0 10
-originjitter 12 12 34
-velocityjitter 11 11 50
-bounce 2
+       alpha 200 256 200
+       bounce 2
+       color 0x000000 0x111111
+       count 50
+       gravity -0.300000
+       originjitter 12 12 34
+       originoffset 0 0 10
+       sizeincrease 6
+       size 11 15
+       tex 0 8
+       type alphastatic
+       velocityjitter 11 11 50
 effect EF_FLAME
-count 0.5
-lightradius 200
-lightradiusfade 10000
-lightcolor 0.9 0.9 0.2
-
-// rifle bullet trail (somewhat like a tracer)
-// used in qcsrc/server/w_common.qc:                           zcurveparticles_from_tracetoss(particleeffectnum("tr_bullet"), self.origin, trace_endpos, self.velocity)
-// used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("tr_bullet"), from, to)
+       count 0.500000
+       lightcolor 0.9 0.9 0.2
+       lightradiusfade 10000
+       lightradius 200
 effect tr_rifle
-trailspacing 128
-type spark
-color 0x800000 0xFF8020
-alpha 256 256 2560
-size 1.5 1.5
-stretchfactor 1
-velocitymultiplier 0.7
+       alpha 256 256 2560
+       color 0x800000 0xFF8020
+       size 1.500000 1.500000
+       stretchfactor 1
+       trailspacing 128
+       type spark
+       velocitymultiplier 0.700000
 effect tr_rifle
-notunderwater
-tex 0 8
-trailspacing 8
-type static
-color 0x202020 0x404040
-size 4 4
-sizeincrease 0.4
-alpha 256 256 256
-airfriction -4
-velocityjitter 4 4 4
-type smoke
+       airfriction -4
+       alpha 256 256 256
+       color 0x202020 0x404040
+       notunderwater
+       sizeincrease 0.400000
+       size 4 4
+       tex 0 8
+       trailspacing 8
+       type smoke
+       velocityjitter 4 4 4
 effect tr_rifle
-underwater
-trailspacing 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 2 2
-alpha 256 256 128
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
-
-// rocket guiding start
-// underwater bubbles
+       alpha 256 256 128
+       bounce 1.500000
+       color 0x404040 0x808080
+       gravity -0.125000
+       liquidfriction 4
+       size 2 2
+       tex 62 62
+       trailspacing 32
+       type bubble
+       underwater
+       velocityjitter 16 16 16
 effect rocket_guide
-underwater
-count 2
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 1.5 1.5
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 8 8 8
-velocityjitter 48 48 48
-velocitymultiplier -0.1
-// bouncing sparks
+       alpha 128 256 64
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 2
+       gravity -0.125000
+       liquidfriction 0.250000
+       originjitter 8 8 8
+       size 1.500000 1.500000
+       tex 62 62
+       type bubble
+       underwater
+       velocityjitter 48 48 48
+       velocitymultiplier -0.100000
 effect rocket_guide
-notunderwater
-count 8
-type spark
-color 0x903010 0xFFD030
-size 0.3 0.7
-tex 40 40
-alpha 256 256 984
-gravity 1
-airfriction 0.2
-bounce 1.5
-liquidfriction 0.8
-velocityoffset 0 0 80
-velocityjitter 156 156 156
-velocitymultiplier -0.3
-stretchfactor 0.4
+       airfriction 0.200000
+       alpha 256 256 984
+       bounce 1.500000
+       color 0x903010 0xFFD030
+       count 8
+       gravity 1
+       liquidfriction 0.800000
+       notunderwater
+       size 0.300000 0.700000
+       stretchfactor 0.400000
+       tex 40 40
+       type spark
+       velocityjitter 156 156 156
+       velocitymultiplier -0.300000
+       velocityoffset 0 0 80
 effect rocket_guide
-countabsolute 1
-type smoke
-tex 65 65
-color 0x903010 0xFFD030
-size 10 10
-sizeincrease 300
-alpha 100 100 500
-
-
-// gauntlet laser
-// based off morphed's cl_gentle
-// used in qcsrc/server/w_laser.qc
+       alpha 100 100 500
+       color 0x903010 0xFFD030
+       countabsolute 1
+       sizeincrease 300
+       size 10 10
+       tex 65 65
+       type smoke
 effect laser_gauntlet
-count 3
-type spark
-color 0xb44215 0x880000
-tex 43 43
-size 7 10
-alpha 128 512 6280
-airfriction 10
-originjitter 2 2 2
-velocityjitter 150 150 150
-velocitymultiplier 0.2
-sizeincrease -100
-stretchfactor 2.3
-rotate -180 180 4000 -4000
-
+       airfriction 10
+       alpha 128 512 6280
+       color 0xb44215 0x880000
+       count 3
+       originjitter 2 2 2
+       rotate -180 180 4000 -4000
+       sizeincrease -100
+       size 7 10
+       stretchfactor 2.300000
+       tex 43 43
+       type spark
+       velocityjitter 150 150 150
+       velocitymultiplier 0.200000
 effect laser_gauntlet
-count 6
-type spark
-color 0xff4200 0xff0000
-tex 8 15
-size 7 9
-alpha 256 512 6280
-airfriction 12
-originjitter 2 2 2
-velocityjitter 100 100 100
-velocitymultiplier 0.2
-sizeincrease -100
-stretchfactor 2
-
-
-// muzzle flash
+       airfriction 12
+       alpha 256 512 6280
+       color 0xff4200 0xff0000
+       count 6
+       originjitter 2 2 2
+       sizeincrease -100
+       size 7 9
+       stretchfactor 2
+       tex 8 15
+       type spark
+       velocityjitter 100 100 100
+       velocitymultiplier 0.200000
 effect laser_gauntletmuzzleflash
-// glow and light
-countabsolute 1
-type smoke
-color 0x220000 0x880000
-tex 65 65
-size 10 15
-alpha 256 512 6280
-airfriction 10
-sizeincrease -100
-stretchfactor 2
-lightradius 150
-lightradiusfade 500
-lightcolor 3 0.1 0.1
-// electricity
+       airfriction 10
+       alpha 256 512 6280
+       color 0x220000 0x880000
+       countabsolute 1
+       lightcolor 3 0.1 0.1
+       lightradiusfade 500
+       lightradius 150
+       sizeincrease -100
+       size 10 15
+       stretchfactor 2
+       tex 65 65
+       type smoke
 effect laser_gauntletmuzzleflash
-count 3
-type spark
-color 0xb44215 0x880000
-tex 43 43
-size 7 10
-alpha 128 512 6280
-airfriction 10
-originjitter 2 2 2
-velocityjitter 150 150 150
-velocitymultiplier 0.2
-sizeincrease -100
-stretchfactor 2.3
-rotate -180 180 4000 -4000
-
-
-// fire
+       airfriction 10
+       alpha 128 512 6280
+       color 0xb44215 0x880000
+       count 3
+       originjitter 2 2 2
+       rotate -180 180 4000 -4000
+       sizeincrease -100
+       size 7 10
+       stretchfactor 2.300000
+       tex 43 43
+       type spark
+       velocityjitter 150 150 150
+       velocitymultiplier 0.200000
 effect laser_gauntletmuzzleflash
-count 6
-type spark
-color 0xff4200 0xff0000
-tex 8 15
-size 7 9
-alpha 256 512 6280
-airfriction 12
-originjitter 2 2 2
-velocityjitter 100 100 100
-velocitymultiplier 0.2
-sizeincrease -100
-stretchfactor 2
-
-//torch flame, spawn it as fast as you can  20 times per second or more, supports direction but not required
-//fast fire
-// used nowhere in code, meant for maps
+       airfriction 12
+       alpha 256 512 6280
+       color 0xff4200 0xff0000
+       count 6
+       originjitter 2 2 2
+       sizeincrease -100
+       size 7 9
+       stretchfactor 2
+       tex 8 15
+       type spark
+       velocityjitter 100 100 100
+       velocitymultiplier 0.200000
 effect torchflame
-count 3
-type smoke
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 5 5
-sizeincrease 20
- gravity -0.06
-alpha 50 256 250
-velocityjitter 40 40 11
-velocitymultiplier 30
-airfriction 1.2
-//slowfire
+       airfriction 1.200000
+       alpha 50 256 250
+       color 0x8f0d00 0xff5a00
+       count 3
+       gravity -0.060000
+       sizeincrease 20
+       size 5 5
+       tex 48 55
+       type smoke
+       velocityjitter 40 40 11
+       velocitymultiplier 30
 effect torchflame
-count 2.5
-type smoke
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 5 5
-sizeincrease 20
- gravity -0.06
-alpha 50 256 200
-velocityjitter 40 40 40
-velocitymultiplier 20
-airfriction 1.2
-// very slow and small fire
+       airfriction 1.200000
+       alpha 50 256 200
+       color 0x8f0d00 0xff5a00
+       count 2.500000
+       gravity -0.060000
+       sizeincrease 20
+       size 5 5
+       tex 48 55
+       type smoke
+       velocityjitter 40 40 40
+       velocitymultiplier 20
 effect torchflame
-count 1.5
-type smoke
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 5 5
-sizeincrease 10
- gravity -0.06
-alpha 50 256 200
-velocityjitter 30 30 30
-velocitymultiplier 10
-airfriction 0.3
-//decreasing fire
+       airfriction 0.300000
+       alpha 50 256 200
+       color 0x8f0d00 0xff5a00
+       count 1.500000
+       gravity -0.060000
+       sizeincrease 10
+       size 5 5
+       tex 48 55
+       type smoke
+       velocityjitter 30 30 30
+       velocitymultiplier 10
 effect torchflame
-count 2
-type smoke
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 20 30
-sizeincrease -10
- gravity -0.06
-alpha 50 256 200
-velocityjitter 10 10 10
-velocitymultiplier 15
-airfriction 0.3
-//smoke
+       airfriction 0.300000
+       alpha 50 256 200
+       color 0x8f0d00 0xff5a00
+       count 2
+       gravity -0.060000
+       sizeincrease -10
+       size 20 30
+       tex 48 55
+       type smoke
+       velocityjitter 10 10 10
+       velocitymultiplier 15
 effect torchflame
-count 0.5
-type alphastatic
-tex 0 8
-size 5 15
-sizeincrease 7
-color 0x000000 0x111111
-alpha 256 256 90
-//gravity -0.2
-originjitter 10 10 10
-velocitymultiplier 20
-velocityoffset 0 0 10
-airfriction 1
-
-//happy death fx for cl_gentle
+       airfriction 1
+       alpha 256 256 90
+       color 0x000000 0x111111
+       count 0.500000
+       originjitter 10 10 10
+       sizeincrease 7
+       size 5 15
+       tex 0 8
+       type alphastatic
+       velocitymultiplier 20
+       velocityoffset 0 0 10
 effect happy_damage_dissolve
-tex 69 69
-count 15
-type alphastatic
-color 0x00FFFF 0xFF00FF
-size 32 32
-sizeincrease -10
-alpha 256 256 228
-gravity -0.4
-bounce 1.5
-airfriction 3
-liquidfriction 6
-velocityjitter 312 312 312
+       airfriction 3
+       alpha 256 256 228
+       bounce 1.500000
+       color 0x00FFFF 0xFF00FF
+       count 15
+       gravity -0.400000
+       liquidfriction 6
+       sizeincrease -10
+       size 32 32
+       tex 69 69
+       type alphastatic
+       velocityjitter 312 312 312
 effect happy_damage_dissolve
-tex 69 69
-count 15
-type alphastatic
-color 0xFF00FF 0xFFFF00
-size 32 32
-sizeincrease -10
-alpha 256 256 228
-gravity -0.4
-bounce 1.5
-airfriction 3
-liquidfriction 6
-velocityjitter 312 312 312
+       airfriction 3
+       alpha 256 256 228
+       bounce 1.500000
+       color 0xFF00FF 0xFFFF00
+       count 15
+       gravity -0.400000
+       liquidfriction 6
+       sizeincrease -10
+       size 32 32
+       tex 69 69
+       type alphastatic
+       velocityjitter 312 312 312
 effect happy_damage_dissolve
-tex 69 69
-count 15
-type alphastatic
-color 0xFFFF00 0x00FFFF
-size 32 32
-sizeincrease -10
-alpha 256 256 228
-gravity -0.4
-bounce 1.5
-airfriction 3
-liquidfriction 6
-velocityjitter 312 312 312
-
-
-//happy damage fx for cl_gentle
+       airfriction 3
+       alpha 256 256 228
+       bounce 1.500000
+       color 0xFFFF00 0x00FFFF
+       count 15
+       gravity -0.400000
+       liquidfriction 6
+       sizeincrease -10
+       size 32 32
+       tex 69 69
+       type alphastatic
+       velocityjitter 312 312 312
 effect happy_damage_hit
-tex 69 69
-count 0.1
-type alphastatic
-color 0x00FFFF 0xFF00FF
-size 26 26
-sizeincrease -28
-alpha 128 128 192
-gravity -0.4
-bounce 1.5
-airfriction 5
-liquidfriction 10
-velocityjitter 156 156 156
+       airfriction 5
+       alpha 128 128 192
+       bounce 1.500000
+       color 0x00FFFF 0xFF00FF
+       count 0.100000
+       gravity -0.400000
+       liquidfriction 10
+       sizeincrease -28
+       size 26 26
+       tex 69 69
+       type alphastatic
+       velocityjitter 156 156 156
 effect happy_damage_hit
-tex 69 69
-count 0.1
-type alphastatic
-color 0xFF00FF 0xFFFF00
-size 26 26
-sizeincrease -28
-alpha 128 128 192
-gravity -0.4
-bounce 1.5
-airfriction 5
-liquidfriction 10
-velocityjitter 156 156 156
+       airfriction 5
+       alpha 128 128 192
+       bounce 1.500000
+       color 0xFF00FF 0xFFFF00
+       count 0.100000
+       gravity -0.400000
+       liquidfriction 10
+       sizeincrease -28
+       size 26 26
+       tex 69 69
+       type alphastatic
+       velocityjitter 156 156 156
 effect happy_damage_hit
-tex 69 69
-count 0.1
-type alphastatic
-color 0xFFFF00 0x00FFFF
-size 26 26
-sizeincrease -28
-alpha 128 128 192
-gravity -0.4
-bounce 1.5
-airfriction 5
-liquidfriction 10
-velocityjitter 156 156 156
-
-
-
-// used in qcsrc/server/w_electro.qc:  pointparticles(particleeffectnum("electro_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
-// used in qcsrc/server/w_electro.qc:  pointparticles(particleeffectnum("electro_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+       airfriction 5
+       alpha 128 128 192
+       bounce 1.500000
+       color 0xFFFF00 0x00FFFF
+       count 0.100000
+       gravity -0.400000
+       liquidfriction 10
+       sizeincrease -28
+       size 26 26
+       tex 69 69
+       type alphastatic
+       velocityjitter 156 156 156
 effect electro_lightning
-countabsolute 1
-type decal
-tex 59 59
-size 16 16
-alpha 256 256 0
-originjitter 2 2 2
-lightradius 50
-lightradiusfade 500
-lightcolor 3.125 4.375 10
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 3.1 4.4 10
+       lightradiusfade 500
+       lightradius 50
+       originjitter 2 2 2
+       size 16 16
+       tex 59 59
+       type decal
 effect electro_lightning
-count 300
-type spark
-// color 0x501860 0x501860 // 0x202020 0x404040
-color 0x2030FF 0x80C0FF
-tex 65 65
-size 6 6
-alpha 100 206 1724
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-sizeincrease 10
-velocitymultiplier 2000
+       alpha 100 206 1724
+       color 0x2030FF 0x80C0FF
+       count 300
+       originjitter 1.5 1.5 1.5
+       sizeincrease 10
+       size 6 6
+       tex 65 65
+       type spark
+       velocityjitter 6 6 6
+       velocitymultiplier 2000
 effect electro_lightning
-count 30
-type spark
-tex 8 15
-color 0xDDFDFF 0xFDFDFF
-size 2 5
-alpha 110 170 1500
-originjitter 1 1 1
-velocityjitter 150 150 150
-velocitymultiplier 0.5
-airfriction 2
-stretchfactor 1.5
+       airfriction 2
+       alpha 110 170 1500
+       color 0xDDFDFF 0xFDFDFF
+       count 30
+       originjitter 1 1 1
+       size 2 5
+       stretchfactor 1.500000
+       tex 8 15
+       type spark
+       velocityjitter 150 150 150
+       velocitymultiplier 0.500000
 effect electro_lightning
-count 50
-type spark
-tex 41 41
-color 0xFDFDFF 0xF9FDFF
-size 2 3
-alpha 110 170 1500
-originjitter 1 1 1
-velocityjitter 350 350 350
-velocitymultiplier 2.5
-airfriction 8
-gravity 1.3
-stretchfactor 0.1
-
-// used in qcsrc/server/w_gauntlet.qc: pointparticles(particleeffectnum("electro_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+       airfriction 8
+       alpha 110 170 1500
+       color 0xFDFDFF 0xF9FDFF
+       count 50
+       gravity 1.300000
+       originjitter 1 1 1
+       size 2 3
+       stretchfactor 0.100000
+       tex 41 41
+       type spark
+       velocityjitter 350 350 350
+       velocitymultiplier 2.500000
 effect gauntlet_lightning
-count 300
-type spark
-color 0x280000 0x280000 // 0x202020 0x404040
-tex 65 65
-size 3 3
-alpha 256 256 1024
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-sizeincrease 15
-velocitymultiplier 2000
+       alpha 256 256 1024
+       color 0x280000 0x280000
+       count 300
+       originjitter 1.5 1.5 1.5
+       sizeincrease 15
+       size 3 3
+       tex 65 65
+       type spark
+       velocityjitter 6 6 6
+       velocitymultiplier 2000
 effect gauntlet_lightning
-count 30
-type spark
-tex 8 15
-color 0xDD0000 0xFD0000
-size 2 5
-alpha 110 228 1024
-originjitter 1 1 1
-velocityjitter 150 150 150
-velocitymultiplier 0.5
-airfriction 2
-stretchfactor 1.5
+       airfriction 2
+       alpha 110 228 1024
+       color 0xDD0000 0xFD0000
+       count 30
+       originjitter 1 1 1
+       size 2 5
+       stretchfactor 1.500000
+       tex 8 15
+       type spark
+       velocityjitter 150 150 150
+       velocitymultiplier 0.500000
 effect gauntlet_lightning
-count 50
-type spark
-tex 41 41
-color 0xFD0000 0xF90000
-size 2 3
-alpha 110 228 600
-originjitter 1 1 1
-velocityjitter 350 350 350
-velocitymultiplier 2.5
-airfriction 8
-gravity 1.3
-stretchfactor 0.1
-
-
-// crylink joinexplode effect
-// decal
-// used in qcsrc/client/damage.qc:                                     pointparticles(particleeffectnum("crylink_joinexplode"), org2, '0 0 0', 1)
+       airfriction 8
+       alpha 110 228 600
+       color 0xFD0000 0xF90000
+       count 50
+       gravity 1.300000
+       originjitter 1 1 1
+       size 2 3
+       stretchfactor 0.100000
+       tex 41 41
+       type spark
+       velocityjitter 350 350 350
+       velocitymultiplier 2.500000
 effect crylink_joinexplode
-countabsolute 1
-type decal
-tex 47 47
-size 24 24
-alpha 256 256 0
-originjitter 12 12 12
-//lightradius 200
-//lightradiusfade 800
-//lightcolor 3.2 0.4 4
-// purple flare effect
+       alpha 256 256 0
+       countabsolute 1
+       originjitter 12 12 12
+       size 24 24
+       tex 47 47
+       type decal
 effect crylink_joinexplode
-countabsolute 1
-type static
-tex 39 39
-color 0x504060 0x504060
-size 24 24
-alpha 256 256 512
-// purple sparks
+       alpha 256 256 512
+       color 0x504060 0x504060
+       countabsolute 1
+       size 24 24
+       tex 39 39
+       type static
 effect crylink_joinexplode
-count 40
-type spark
-tex 41 41
-color 0xA040C0 0xA040C0
-bounce 2
-size 6 6
-alpha 256 256 1024
-velocityjitter 512 512 512
-// purple splash
+       alpha 256 256 1024
+       bounce 2
+       color 0xA040C0 0xA040C0
+       count 40
+       size 6 6
+       tex 41 41
+       type spark
+       velocityjitter 512 512 512
 effect crylink_joinexplode
-count 1.5
-type static
-color 0xE070FF 0xE070FF
-size 16 16
-alpha 256 256 512
-velocityjitter 32 32 32
-// purple splash
+       alpha 256 256 512
+       color 0xE070FF 0xE070FF
+       count 1.500000
+       size 16 16
+       type static
+       velocityjitter 32 32 32
 effect crylink_joinexplode
-count 3
-type static
-color 0xE070FF 0xE070FF
-size 16 16
-alpha 256 256 1024
-velocityjitter 256 256 256
-
-//sparks for keepaway ball touch
-// used nowhere in code
+       alpha 256 256 1024
+       color 0xE070FF 0xE070FF
+       count 3
+       size 16 16
+       type static
+       velocityjitter 256 256 256
 effect kaball_sparks
-count 35
-type spark
-tex 40 40
-color 0xa9cacf 0x0054ff
-size 1 3
-alpha 0 256 556
-gravity 1
-bounce 1.5
-originjitter 1 1 1
-velocityjitter 300 300 300
-velocitymultiplier 0.5
-airfriction 3
-
-
-// weak rifle bullet trail (somewhat like a tracer)
-// used in qcsrc/server/w_common.qc:                           zcurveparticles_from_tracetoss(particleeffectnum("tr_bullet"), self.origin, trace_endpos, self.velocity)
-// used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("tr_bullet"), from, to)
+       airfriction 3
+       alpha 0 256 556
+       bounce 1.500000
+       color 0xa9cacf 0x0054ff
+       count 35
+       gravity 1
+       originjitter 1 1 1
+       size 1 3
+       tex 40 40
+       type spark
+       velocityjitter 300 300 300
+       velocitymultiplier 0.500000
 effect tr_rifle_weak
-trailspacing 128
-type spark
-color 0x800000 0xFF8020
-alpha 256 256 2560
-size 1.5 1.5
-stretchfactor 1
-velocitymultiplier 0.7
+       alpha 256 256 2560
+       color 0x800000 0xFF8020
+       size 1.500000 1.500000
+       stretchfactor 1
+       trailspacing 128
+       type spark
+       velocitymultiplier 0.700000
 effect tr_rifle_weak
-notunderwater
-tex 0 8
-trailspacing 48
-type static
-color 0x202020 0x404040
-size 4 4
-sizeincrease 0.4
-alpha 256 256 256
-airfriction -4
-velocityjitter 4 4 4
-type smoke
+       airfriction -4
+       alpha 256 256 256
+       color 0x202020 0x404040
+       notunderwater
+       sizeincrease 0.400000
+       size 4 4
+       tex 0 8
+       trailspacing 48
+       type smoke
+       velocityjitter 4 4 4
 effect tr_rifle_weak
-underwater
-trailspacing 192
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 2 2
-alpha 256 256 128
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
-
-// red smoke emiter
-// used nowhere in code
+       alpha 256 256 128
+       bounce 1.500000
+       color 0x404040 0x808080
+       gravity -0.125000
+       liquidfriction 4
+       size 2 2
+       tex 62 62
+       trailspacing 192
+       type bubble
+       underwater
+       velocityjitter 16 16 16
 effect red_smoke
-count 2
-type smoke
-tex 0 8
-color 0xff8866 0x331100
-size 60 120
-sizeincrease 0
-alpha 32 64 32
-gravity -0.007
-originjitter 0 0 0
-velocityjitter 0 0 0
-velocitymultiplier 5
-airfriction -1
-rotate 0 360 -30 30
-
-// pipe smoke emiter
-// used nowhere in code
+       airfriction -1
+       alpha 32 64 32
+       color 0xff8866 0x331100
+       count 2
+       gravity -0.007000
+       rotate 0 360 -30 30
+       size 60 120
+       tex 0 8
+       type smoke
+       velocitymultiplier 5
 effect pipe_smoke
-count 2
-type smoke
-tex 0 8
-color 0x999999 0x555555
-size 5 10
-sizeincrease 35
-alpha 32 64 48
-gravity -0.015
-originjitter 0 0 0
-velocityjitter 0 0 5
-velocitymultiplier 15
-airfriction -1
-rotate 0 360 -180 180
-
-// seeker missile trail
+       airfriction -1
+       alpha 32 64 48
+       color 0x999999 0x555555
+       count 2
+       gravity -0.015000
+       rotate 0 360 -180 180
+       sizeincrease 35
+       size 5 10
+       tex 0 8
+       type smoke
+       velocityjitter 0 0 5
+       velocitymultiplier 15
 effect TR_SEEKER
-trailspacing 10
-type smoke
-notunderwater
-color 0x000000 0x666666
-tex 0 8
-size 2 2
-bounce 1
-sizeincrease 11
-alpha 200 300 200
-lightradius 100
-lighttime 0
-lightcolor 6 3 1
-originjitter 2 2 2
-velocityjitter 3 3 3
-velocitymultiplier -0.02
-rotate -180 180 -30 30
-//gravity -0.11
-// fire
+       alpha 200 300 200
+       bounce 1
+       color 0x000000 0x666666
+       lightcolor 6 3 1
+       lightradius 100
+       notunderwater
+       originjitter 2 2 2
+       rotate -180 180 -30 30
+       sizeincrease 11
+       size 2 2
+       tex 0 8
+       trailspacing 10
+       type smoke
+       velocityjitter 3 3 3
+       velocitymultiplier -0.020000
 effect TR_SEEKER
-trailspacing 4
-type static
-color 0xffdf72 0x811200
-tex 48 55
-size 5 5
-sizeincrease -30
-alpha 100 144 588
-airfriction 8
-velocityjitter 32 32 32
-velocitymultiplier -1.5
-// bubbles
+       airfriction 8
+       alpha 100 144 588
+       color 0xffdf72 0x811200
+       sizeincrease -30
+       size 5 5
+       tex 48 55
+       trailspacing 4
+       type static
+       velocityjitter 32 32 32
+       velocitymultiplier -1.500000
 effect TR_SEEKER
-type bubble
-underwater
-trailspacing 16
-tex 62 62
-size 1 2
-alpha 256 256 256
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
-velocitymultiplier -0.31
-rotate 0 0 0 0
-// sparks
+       alpha 256 256 256
+       bounce 1.500000
+       gravity -0.125000
+       liquidfriction 4
+       size 1 2
+       tex 62 62
+       trailspacing 16
+       type bubble
+       underwater
+       velocityjitter 16 16 16
+       velocitymultiplier -0.310000
 effect TR_SEEKER
-notunderwater
-trailspacing 20
-type spark
-tex 40 40
-color 0xFFFDD9 0xFFFDD9
-size 0.5 0.5
-alpha 444 512 1866
-stretchfactor 0.3
-//gravity 1
-bounce 1
-//velocityoffset 0 0 15
-airfriction 5
-originjitter 1 1 1
-velocityjitter 100 100 100
-velocitymultiplier -0.31
-
-// --------------- vehicles
-
+       airfriction 5
+       alpha 444 512 1866
+       bounce 1
+       color 0xFFFDD9 0xFFFDD9
+       notunderwater
+       originjitter 1 1 1
+       size 0.500000 0.500000
+       stretchfactor 0.300000
+       tex 40 40
+       trailspacing 20
+       type spark
+       velocityjitter 100 100 100
+       velocitymultiplier -0.310000
 effect spiderbot_minigun_trail
-notunderwater
-trailspacing 10
-type smoke
-color 0xd0d0a0 0xffffff
-tex 0 8
-size 1 2
-alpha 20 50 100
-sizeincrease 2
-velocityjitter 5 5 5
-gravity -0.03
-airfriction 1
-
+       airfriction 1
+       alpha 20 50 100
+       color 0xd0d0a0 0xffffff
+       gravity -0.030000
+       notunderwater
+       sizeincrease 2
+       size 1 2
+       tex 0 8
+       trailspacing 10
+       type smoke
+       velocityjitter 5 5 5
 effect spiderbot_minigun_muzzleflash
-count 3
-type spark
-color 0xff9c00 0xff8400
-tex 48 55
-size 10 15
-alpha 256 512 6280
-airfriction 10
-originjitter 2 2 2
-velocityjitter 150 150 150
-velocitymultiplier 0.35
-sizeincrease -100
-stretchfactor 1.3
-rotate -180 180 4000 -4000
-// fire
+       airfriction 10
+       alpha 256 512 6280
+       color 0xff9c00 0xff8400
+       count 3
+       originjitter 2 2 2
+       rotate -180 180 4000 -4000
+       sizeincrease -100
+       size 10 15
+       stretchfactor 1.300000
+       tex 48 55
+       type spark
+       velocityjitter 150 150 150
+       velocitymultiplier 0.350000
 effect spiderbot_minigun_muzzleflash
-count 6
-type spark
-color 0xff9c00 0xff8400
-tex 8 15
-size 5 7
-alpha 256 512 6280
-airfriction 12
-originjitter 2 2 2
-velocityjitter 200 200 200
-velocitymultiplier 0.2
-sizeincrease -10
-stretchfactor 0.8
+       airfriction 12
+       alpha 256 512 6280
+       color 0xff9c00 0xff8400
+       count 6
+       originjitter 2 2 2
+       sizeincrease -10
+       size 5 7
+       stretchfactor 0.800000
+       tex 8 15
+       type spark
+       velocityjitter 200 200 200
+       velocitymultiplier 0.200000
 effect spiderbot_minigun_muzzleflash
-countabsolute 2
-type static
-tex 48 55
-color 0xff9c00 0xff8400
-size 32 32
-alpha 256 512 6680
-sizeincrease -100
-stretchfactor 0.1
-rotate -180 180 4000 -4000
-lightradius 120
-lightradiusfade 8000
-lightcolor 3 3 0
-
+       alpha 256 512 6680
+       color 0xff9c00 0xff8400
+       countabsolute 2
+       lightcolor 3 3 0
+       lightradiusfade 8000
+       lightradius 120
+       rotate -180 180 4000 -4000
+       sizeincrease -100
+       size 32 32
+       stretchfactor 0.100000
+       tex 48 55
+       type static
 effect spiderbot_minigun_impact
-countabsolute 1
-type static
-tex 65 65
-color 0xff9c00 0xf6ff00
-size 52 52
-alpha 50 100 1680
-sizeincrease -100
-stretchfactor 0.1
-rotate -180 180 4000 -4000
-// fire
+       alpha 50 100 1680
+       color 0xff9c00 0xf6ff00
+       countabsolute 1
+       rotate -180 180 4000 -4000
+       sizeincrease -100
+       size 52 52
+       stretchfactor 0.100000
+       tex 65 65
+       type static
 effect spiderbot_minigun_impact
-count 7
-type spark
-color 0xff9c00 0xff8400
-tex 48 55
-size 9 15
-alpha 256 512 6280
-airfriction 10
-originjitter 2 2 2
-velocityjitter 250 250 150
-velocitymultiplier 0.2
-sizeincrease 100
-stretchfactor 3
-airfriction 6
-rotate -180 180 4000 -4000
-// smoke 
+       airfriction 6
+       alpha 256 512 6280
+       color 0xff9c00 0xff8400
+       count 7
+       originjitter 2 2 2
+       rotate -180 180 4000 -4000
+       sizeincrease 100
+       size 9 15
+       stretchfactor 3
+       tex 48 55
+       type spark
+       velocityjitter 250 250 150
+       velocitymultiplier 0.200000
 effect spiderbot_minigun_impact
-count 6
-type smoke
-color 0xd0d0a0 0xffffff
-tex 0 8
-size 10 20
-alpha 50 50 190
-sizeincrease 80
-velocityjitter 100 100 250
-velocitymultiplier 0.49
-gravity 1.3
-airfriction 10
-rotate -180 180 0 0
-// smoke 2
+       airfriction 10
+       alpha 50 50 190
+       color 0xd0d0a0 0xffffff
+       count 6
+       gravity 1.300000
+       rotate -180 180 0 0
+       sizeincrease 80
+       size 10 20
+       tex 0 8
+       type smoke
+       velocityjitter 100 100 250
+       velocitymultiplier 0.490000
 effect spiderbot_minigun_impact
-count 7
-type spark
-color 0xd0d0a0 0xffffff
-tex 0 8
-size 15 19
-alpha 25 51 128
-airfriction 6
-originjitter 2 2 2
-velocityjitter 250 250 150
-velocitymultiplier 0.2
-sizeincrease 100
-stretchfactor 7.6
-// debris
+       airfriction 6
+       alpha 25 51 128
+       color 0xd0d0a0 0xffffff
+       count 7
+       originjitter 2 2 2
+       sizeincrease 100
+       size 15 19
+       stretchfactor 7.600000
+       tex 0 8
+       type spark
+       velocityjitter 250 250 150
+       velocitymultiplier 0.200000
 effect spiderbot_minigun_impact
-notunderwater
-count 3
-type alphastatic
-tex 66 68
-color 0x99977D 0xFFFFFF
-size 6 8
-alpha 644 756 1484
-gravity 1.1
-airfriction 0.4
-sizeincrease -10
-velocitymultiplier 0.15
-originjitter 16 16 16
-velocityjitter 124 124 224
-rotate -180 180 -1000 1000
-// decal
+       airfriction 0.400000
+       alpha 644 756 1484
+       color 0x99977D 0xFFFFFF
+       count 3
+       gravity 1.100000
+       notunderwater
+       originjitter 16 16 16
+       rotate -180 180 -1000 1000
+       sizeincrease -10
+       size 6 8
+       tex 66 68
+       type alphastatic
+       velocityjitter 124 124 224
+       velocitymultiplier 0.150000
 effect spiderbot_minigun_impact
-countabsolute 1
-type decal
-tex 56 59
-size 20 25
-alpha 256 256 0
-originjitter 16 16 16
-rotate -180 180 0 0
-
+       alpha 256 256 0
+       countabsolute 1
+       originjitter 16 16 16
+       rotate -180 180 0 0
+       size 20 25
+       tex 56 59
+       type decal
 effect spiderbot_rocket_explode
-countabsolute 1
-type decal
-tex 8 16
-size 72 72
-alpha 256 256 0
-originjitter 23 23 23
-lightradius 300
-lightradiusfade 1750
-lightcolor 8 4 0
-// shockwave
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 8 4 0
+       lightradiusfade 1750
+       lightradius 300
+       originjitter 23 23 23
+       size 72 72
+       tex 8 16
+       type decal
 effect spiderbot_rocket_explode
-countabsolute 1
-type static
-tex 33 33 
-size 22 22
-alpha 56 56 230
-color 0x8f0d00 0xff5a00
-sizeincrease 2400
-// glow
+       alpha 56 56 230
+       color 0x8f0d00 0xff5a00
+       countabsolute 1
+       sizeincrease 2400
+       size 22 22
+       tex 33 33
+       type static
 effect spiderbot_rocket_explode
-countabsolute 1
-type static
-tex 64 64
-size 120 120
-alpha 156 156 830
-color 0x8f0d00 0xff5a00
-sizeincrease 240
-// fire effect
+       alpha 156 156 830
+       color 0x8f0d00 0xff5a00
+       countabsolute 1
+       sizeincrease 240
+       size 120 120
+       tex 64 64
+       type static
 effect spiderbot_rocket_explode
-notunderwater
-count 32
-type static
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 12 21
-sizeincrease 495
-alpha 200 256 812
-airfriction 8
-liquidfriction 8
-originjitter 100 100 100
-velocityjitter 512 512 512
-rotate -180 180 -50 50
-// fire effect 2
+       airfriction 8
+       alpha 200 256 812
+       color 0x8f0d00 0xff5a00
+       count 32
+       liquidfriction 8
+       notunderwater
+       originjitter 100 100 100
+       rotate -180 180 -50 50
+       sizeincrease 495
+       size 12 21
+       tex 48 55
+       type static
+       velocityjitter 512 512 512
 effect spiderbot_rocket_explode
-notunderwater
-count 16
-type spark
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 3 3
-sizeincrease 120
-alpha 200 256 912
-airfriction -2
-liquidfriction 8
-velocityjitter 412 412 412
-rotate -180 180 -150 150
-stretchfactor 10
-// fire rays
+       airfriction -2
+       alpha 200 256 912
+       color 0x8f0d00 0xff5a00
+       count 16
+       liquidfriction 8
+       notunderwater
+       rotate -180 180 -150 150
+       sizeincrease 120
+       size 3 3
+       stretchfactor 10
+       tex 48 55
+       type spark
+       velocityjitter 412 412 412
 effect spiderbot_rocket_explode
-notunderwater
-count 10
-type spark
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 13 54
-sizeincrease 120
-alpha 200 256 1600
-airfriction -3
-liquidfriction 8
-originjitter 40 40 40
-velocityjitter 712 712 712
-stretchfactor 10
-// smoke
+       airfriction -3
+       alpha 200 256 1600
+       color 0x8f0d00 0xff5a00
+       count 10
+       liquidfriction 8
+       notunderwater
+       originjitter 40 40 40
+       sizeincrease 120
+       size 13 54
+       stretchfactor 10
+       tex 48 55
+       type spark
+       velocityjitter 712 712 712
 effect spiderbot_rocket_explode
-type alphastatic
-notunderwater
-tex 0 8
-count 10
-size 10 15
-sizeincrease 280
-alpha 300 650 756
-originjitter 100 100 100
-velocityjitter 200 200 200
-airfriction 3
-color 0x4F4B46 0x000000
-rotate -180 180 -20 20
-// smoke2
+       airfriction 3
+       alpha 300 650 756
+       color 0x4F4B46 0x000000
+       count 10
+       notunderwater
+       originjitter 100 100 100
+       rotate -180 180 -20 20
+       sizeincrease 280
+       size 10 15
+       tex 0 8
+       type alphastatic
+       velocityjitter 200 200 200
 effect spiderbot_rocket_explode
-type alphastatic
-notunderwater
-tex 0 8
-count 3
-size 100 150
-sizeincrease 30
-alpha 300 650 556
-originjitter 10 10 10
-velocityjitter 200 200 200
-airfriction 2
-gravity -0.5
-color 0x4F4B46 0x000000
-rotate -180 180 -20 20
-// underwater bubbles
+       airfriction 2
+       alpha 300 650 556
+       color 0x4F4B46 0x000000
+       count 3
+       gravity -0.500000
+       notunderwater
+       originjitter 10 10 10
+       rotate -180 180 -20 20
+       sizeincrease 30
+       size 100 150
+       tex 0 8
+       type alphastatic
+       velocityjitter 200 200 200
 effect spiderbot_rocket_explode
-underwater
-count 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 1 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 160 160 160
-velocityjitter 144 144 144
-// underwatershockwave
+       alpha 128 256 64
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 32
+       gravity -0.125000
+       liquidfriction 0.250000
+       originjitter 160 160 160
+       size 1 3
+       tex 62 62
+       type bubble
+       underwater
+       velocityjitter 144 144 144
 effect spiderbot_rocket_explode
-underwater
-type smoke
-countabsolute 1
-tex 33 33
-size 30 30
-sizeincrease 1200
-alpha 40 40 300
-
-
+       alpha 40 40 300
+       countabsolute 1
+       sizeincrease 1200
+       size 30 30
+       tex 33 33
+       type smoke
+       underwater
 effect spiderbot_rocket_thrust
-notunderwater
-count 3
-type spark
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 5 10
-sizeincrease -40
-alpha 200 256 1600
-velocityjitter 20 20 20
-velocitymultiplier -1.4
-stretchfactor 0.9
+       alpha 200 256 1600
+       color 0x8f0d00 0xff5a00
+       count 3
+       notunderwater
+       sizeincrease -40
+       size 5 10
+       stretchfactor 0.900000
+       tex 48 55
+       type spark
+       velocityjitter 20 20 20
+       velocitymultiplier -1.400000
 effect spiderbot_rocket_thrust
-notunderwater
-count 4
-type static
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 25 25
-sizeincrease -3000
-alpha 200 200 9000
-velocityjitter 60 60 60
-velocitymultiplier -1.4
-stretchfactor 1
-rotate -180 180 -500 500
-
-
-
-// long lasting smoke
+       alpha 200 200 9000
+       color 0x8f0d00 0xff5a00
+       count 4
+       notunderwater
+       rotate -180 180 -500 500
+       sizeincrease -3000
+       size 25 25
+       stretchfactor 1
+       tex 48 55
+       type static
+       velocityjitter 60 60 60
+       velocitymultiplier -1.400000
 effect spiderbot_rocket_launch
-notunderwater
-count 8
-type smoke
-tex 0 8
-color 0xFFFFFF 0xD9C4B0
-size 30 30
-sizeincrease 20
-alpha 100 156 60
-velocityjitter 60 60 60
-velocitymultiplier -0.1
-airfriction 0.3
-gravity -0.01
-// fast smoke
+       airfriction 0.300000
+       alpha 100 156 60
+       color 0xFFFFFF 0xD9C4B0
+       count 8
+       gravity -0.010000
+       notunderwater
+       sizeincrease 20
+       size 30 30
+       tex 0 8
+       type smoke
+       velocityjitter 60 60 60
+       velocitymultiplier -0.100000
 effect spiderbot_rocket_launch
-notunderwater
-count 14
-type smoke
-tex 0 8
-color 0xFFFFFF 0xD9C4B0
-size 30 30
-sizeincrease 20
-alpha 100 156 260
-gravity -0.3
-velocityjitter 160 160 60
-airfriction 0.3
-// fire
+       airfriction 0.300000
+       alpha 100 156 260
+       color 0xFFFFFF 0xD9C4B0
+       count 14
+       gravity -0.300000
+       notunderwater
+       sizeincrease 20
+       size 30 30
+       tex 0 8
+       type smoke
+       velocityjitter 160 160 60
 effect spiderbot_rocket_launch
-notunderwater
-count 14
-type spark
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 30 30
-sizeincrease 40
-velocitymultiplier 0.5
-alpha 200 256 1960
-velocityjitter 60 60 60
-airfriction 0.3
-stretchfactor 3
-airfriction 0.3
-//sparks
+       airfriction 0.300000
+       alpha 200 256 1960
+       color 0x8f0d00 0xff5a00
+       count 14
+       notunderwater
+       sizeincrease 40
+       size 30 30
+       stretchfactor 3
+       tex 48 55
+       type spark
+       velocityjitter 60 60 60
+       velocitymultiplier 0.500000
 effect spiderbot_rocket_launch
-notunderwater
-count 10
-type spark
-tex 40 40
-color 0xFFFFFF 0xD9C4B0
-size 1 4
-alpha 200 256 1000
-velocityjitter 160 160 160
-velocitymultiplier -0.5
-
+       alpha 200 256 1000
+       color 0xFFFFFF 0xD9C4B0
+       count 10
+       notunderwater
+       size 1 4
+       tex 40 40
+       type spark
+       velocityjitter 160 160 160
+       velocitymultiplier -0.500000
 effect wakizashi_gun_impact
-count 15
-type spark
-color 0xff0000 0xc03535
-tex 41 41
-size 4 7
-alpha 256 512 1180
-airfriction 4
-gravity 3
-originjitter 40 40 10
-velocityjitter 350 350 550
-velocityoffset 0 0 700
-stretchfactor 0.9
+       airfriction 4
+       alpha 256 512 1180
+       color 0xff0000 0xc03535
+       count 15
+       gravity 3
+       originjitter 40 40 10
+       size 4 7
+       stretchfactor 0.900000
+       tex 41 41
+       type spark
+       velocityjitter 350 350 550
+       velocityoffset 0 0 700
 effect wakizashi_gun_impact
-type smoke
-count 24
-color 0xd0d0a0 0xc03535
-tex 0 8
-size 10 20
-alpha 50 90 150
-sizeincrease 80
-velocityjitter 250 250 450
-velocityoffset 0 0 600
-originjitter 40 40 10
-airfriction 4
-sizeincrease 80
-rotate -180 180 0 0
+       airfriction 4
+       alpha 50 90 150
+       color 0xd0d0a0 0xc03535
+       count 24
+       originjitter 40 40 10
+       rotate -180 180 0 0
+       sizeincrease 80
+       size 10 20
+       tex 0 8
+       type smoke
+       velocityjitter 250 250 450
+       velocityoffset 0 0 600
 effect wakizashi_gun_impact
-countabsolute 1
-type smoke
-tex 65 65
-color 0xff0000 0xc03535
-size 82 82
-alpha 250 300 680
-sizeincrease -180
+       alpha 250 300 680
+       color 0xff0000 0xc03535
+       countabsolute 1
+       sizeincrease -180
+       size 82 82
+       tex 65 65
+       type smoke
 effect wakizashi_gun_impact
-countabsolute 1
-type smoke
-tex 33 33
-color 0xff0000 0xc03535
-size 40 40
-alpha 50 100 620
-sizeincrease 900
-rotate -180 180 400 -400
+       alpha 50 100 620
+       color 0xff0000 0xc03535
+       countabsolute 1
+       rotate -180 180 400 -400
+       sizeincrease 900
+       size 40 40
+       tex 33 33
+       type smoke
 effect wakizashi_gun_impact
-countabsolute 1
-type decal
-tex 59 59
-size 14 14
-alpha 256 256 0
-originjitter 16 16 16
-rotate -180 180 0 0
-
+       alpha 256 256 0
+       countabsolute 1
+       originjitter 16 16 16
+       rotate -180 180 0 0
+       size 14 14
+       tex 59 59
+       type decal
 effect wakizashi_gun_muzzleflash
-count 16
-type spark
-color 0xff0000 0xc03535
-tex 8 15
-size 5 7
-alpha 256 512 6280
-airfriction 12
-originjitter 2 2 2
-velocityjitter 200 200 200
-velocitymultiplier 0.2
-sizeincrease -10
-stretchfactor 0.7
-
+       airfriction 12
+       alpha 256 512 6280
+       color 0xff0000 0xc03535
+       count 16
+       originjitter 2 2 2
+       sizeincrease -10
+       size 5 7
+       stretchfactor 0.700000
+       tex 8 15
+       type spark
+       velocityjitter 200 200 200
+       velocitymultiplier 0.200000
 effect wakizashi_rocket_explode
-countabsolute 1
-type decal
-tex 8 16
-size 72 72
-alpha 256 256 0
-originjitter 23 23 23
-lightradius 300
-lightradiusfade 1750
-lightcolor 8 4 0
-// shockwave
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 8 4 0
+       lightradiusfade 1750
+       lightradius 300
+       originjitter 23 23 23
+       size 72 72
+       tex 8 16
+       type decal
 effect wakizashi_rocket_explode
-countabsolute 1
-type static
-tex 33 33 
-size 22 22
-alpha 56 56 230
-color 0x8f0d00 0xff5a00
-sizeincrease 2400
-// glow
+       alpha 56 56 230
+       color 0x8f0d00 0xff5a00
+       countabsolute 1
+       sizeincrease 2400
+       size 22 22
+       tex 33 33
+       type static
 effect wakizashi_rocket_explode
-countabsolute 1
-type static
-tex 64 64
-size 120 120
-alpha 156 156 830
-color 0x8f0d00 0xff5a00
-sizeincrease 240
-// fire effect
+       alpha 156 156 830
+       color 0x8f0d00 0xff5a00
+       countabsolute 1
+       sizeincrease 240
+       size 120 120
+       tex 64 64
+       type static
 effect wakizashi_rocket_explode
-notunderwater
-count 64
-type static
-tex 48 55
-color 0xFFAE00 0xff5a00
-size 12 21
-sizeincrease 195
-alpha 200 256 512
-airfriction 2
-liquidfriction 8
-originjitter 10 10 10
-velocityjitter 512 512 512
-rotate -180 180 -50 50
-// fire rays
+       airfriction 2
+       alpha 200 256 512
+       color 0xFFAE00 0xff5a00
+       count 64
+       liquidfriction 8
+       notunderwater
+       originjitter 10 10 10
+       rotate -180 180 -50 50
+       sizeincrease 195
+       size 12 21
+       tex 48 55
+       type static
+       velocityjitter 512 512 512
 effect wakizashi_rocket_explode
-notunderwater
-count 10
-type spark
-tex 48 55
-color 0xFFEA00 0xff5a00
-size 43 54
-sizeincrease 120
-alpha 200 256 1600
-airfriction -3
-liquidfriction 8
-originjitter 40 40 40
-velocityjitter 512 512 512
-stretchfactor 10
-// smoke
+       airfriction -3
+       alpha 200 256 1600
+       color 0xFFEA00 0xff5a00
+       count 10
+       liquidfriction 8
+       notunderwater
+       originjitter 40 40 40
+       sizeincrease 120
+       size 43 54
+       stretchfactor 10
+       tex 48 55
+       type spark
+       velocityjitter 512 512 512
 effect wakizashi_rocket_explode
-type alphastatic
-notunderwater
-tex 0 8
-count 32
-size 10 15
-sizeincrease 230
-alpha 300 450 556
-originjitter 100 100 100
-velocityjitter 200 200 200
-airfriction 3
-color 0x4F4B46 0x000000
-rotate -180 180 -20 20
-// bouncing sparks
+       airfriction 3
+       alpha 300 450 556
+       color 0x4F4B46 0x000000
+       count 32
+       notunderwater
+       originjitter 100 100 100
+       rotate -180 180 -20 20
+       sizeincrease 230
+       size 10 15
+       tex 0 8
+       type alphastatic
+       velocityjitter 200 200 200
 effect wakizashi_rocket_explode
-notunderwater
-count 14
-type spark
-tex 40 40
-color 0xffa35b 0xfff2be
-size 1 2
-alpha 644 956 884
-gravity 1
-airfriction 1
-liquidfriction 0.8
-velocityoffset 0 0 170
-originjitter 60 60 60
-velocityjitter 524 524 524
-// underwater bubbles
+       airfriction 1
+       alpha 644 956 884
+       color 0xffa35b 0xfff2be
+       count 14
+       gravity 1
+       liquidfriction 0.800000
+       notunderwater
+       originjitter 60 60 60
+       size 1 2
+       tex 40 40
+       type spark
+       velocityjitter 524 524 524
+       velocityoffset 0 0 170
 effect wakizashi_rocket_explode
-underwater
-count 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 1 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 160 160 160
-velocityjitter 144 144 144
-// underwatershockwave
+       alpha 128 256 64
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 32
+       gravity -0.125000
+       liquidfriction 0.250000
+       originjitter 160 160 160
+       size 1 3
+       tex 62 62
+       type bubble
+       underwater
+       velocityjitter 144 144 144
 effect wakizashi_rocket_explode
-underwater
-type smoke
-countabsolute 1
-tex 33 33
-size 30 30
-sizeincrease 1200
-alpha 40 40 300
-
+       alpha 40 40 300
+       countabsolute 1
+       sizeincrease 1200
+       size 30 30
+       tex 33 33
+       type smoke
+       underwater
 effect wakizashi_rocket_thrust
-notunderwater
-countabsolute 3
-type spark
-tex 48 55
-color 0x00FFDD 0x6200FF
-size 14 19
-sizeincrease -2
-alpha 200 256 1600
-velocityjitter 60 60 60
-velocitymultiplier -1.1
-stretchfactor 1
+       alpha 200 256 1600
+       color 0x00FFDD 0x6200FF
+       countabsolute 3
+       notunderwater
+       sizeincrease -2
+       size 14 19
+       stretchfactor 1
+       tex 48 55
+       type spark
+       velocityjitter 60 60 60
+       velocitymultiplier -1.100000
 effect wakizashi_rocket_thrust
-notunderwater
-countabsolute 2
-type spark
-tex 48 55
-color 0xFFFF33 0xFFEE00
-size 5 10
-sizeincrease -2
-alpha 200 256 1900
-velocityjitter 60 60 60
-velocitymultiplier -0.3
-stretchfactor 3
-
-// long lasting smoke
+       alpha 200 256 1900
+       color 0xFFFF33 0xFFEE00
+       countabsolute 2
+       notunderwater
+       sizeincrease -2
+       size 5 10
+       stretchfactor 3
+       tex 48 55
+       type spark
+       velocityjitter 60 60 60
+       velocitymultiplier -0.300000
 effect wakizashi_rocket_launch
-notunderwater
-count 8
-type smoke
-tex 0 8
-color 0xFFFFFF 0xD9C4B0
-size 3 30
-sizeincrease 20
-alpha 100 156 60
-velocityjitter 160 160 60
-velocitymultiplier -0.1
-airfriction 0.3
-// fast smoke
+       airfriction 0.300000
+       alpha 100 156 60
+       color 0xFFFFFF 0xD9C4B0
+       count 8
+       notunderwater
+       sizeincrease 20
+       size 3 30
+       tex 0 8
+       type smoke
+       velocityjitter 160 160 60
+       velocitymultiplier -0.100000
 effect wakizashi_rocket_launch
-notunderwater
-count 14
-type smoke
-tex 0 8
-color 0xFFFFFF 0xD9C4B0
-size 30 30
-sizeincrease 20
-alpha 100 156 260
-velocityjitter 160 160 60
-velocitymultiplier 0.4
-airfriction 0.3
-//sparks
+       airfriction 0.300000
+       alpha 100 156 260
+       color 0xFFFFFF 0xD9C4B0
+       count 14
+       notunderwater
+       sizeincrease 20
+       size 30 30
+       tex 0 8
+       type smoke
+       velocityjitter 160 160 60
+       velocitymultiplier 0.400000
 effect wakizashi_rocket_launch
-notunderwater
-count 10
-type spark
-tex 40 40
-color 0xFFFFFF 0xD9C4B0
-size 1 4
-alpha 200 256 1000
-velocityjitter 60 60 60
-velocitymultiplier -1.5
-
+       alpha 200 256 1000
+       color 0xFFFFFF 0xD9C4B0
+       count 10
+       notunderwater
+       size 1 4
+       tex 40 40
+       type spark
+       velocityjitter 60 60 60
+       velocitymultiplier -1.500000
 effect wakizashi_booster_smoke
-type alphastatic
-notunderwater
-tex 0 8
-count 3
-size 60 100
-sizeincrease 10
-gravity -0.1
-alpha 200 750 200
-velocityjitter 40 40 40
-originjitter 60 60 60
-airfriction 2
-color 0xA69A80 0xB3B39F
-rotate -180 180 -20 20
-
-// decal
+       airfriction 2
+       alpha 200 750 200
+       color 0xA69A80 0xB3B39F
+       count 3
+       gravity -0.100000
+       notunderwater
+       originjitter 60 60 60
+       rotate -180 180 -20 20
+       sizeincrease 10
+       size 60 100
+       tex 0 8
+       type alphastatic
+       velocityjitter 40 40 40
 effect raptor_cannon_impact
-countabsolute 1
-type decal
-tex 47 47
-size 24 24
-alpha 256 256 0
-originjitter 16 16 16
-rotate -180 180 0 0
-//spark
+       alpha 256 256 0
+       countabsolute 1
+       originjitter 16 16 16
+       rotate -180 180 0 0
+       size 24 24
+       tex 47 47
+       type decal
 effect raptor_cannon_impact
-notunderwater
-count 6
-type spark
-tex 40 40
-color 0xD400FF 0x571863
-size 1 1
-alpha 644 956 784
-gravity 1
-airfriction 0.2
-velocityoffset 0 0 150
-originjitter 16 16 16
-velocityjitter 124 124 524
-// smoke
+       airfriction 0.200000
+       alpha 644 956 784
+       color 0xD400FF 0x571863
+       count 6
+       gravity 1
+       notunderwater
+       originjitter 16 16 16
+       size 1 1
+       tex 40 40
+       type spark
+       velocityjitter 124 124 524
+       velocityoffset 0 0 150
 effect raptor_cannon_impact
-count 4
-type alphastatic
-tex 0 7
-size 50 50
-color 0x646364 0x151515
-alpha 428 428 600
-rotate -180 180 0 0
-velocityjitter 200 200 300
-velocityoffset 0 0 340
-gravity 0.7
-airfriction 2
-// fire
+       airfriction 2
+       alpha 428 428 600
+       color 0x646364 0x151515
+       count 4
+       gravity 0.700000
+       rotate -180 180 0 0
+       size 50 50
+       tex 0 7
+       type alphastatic
+       velocityjitter 200 200 300
+       velocityoffset 0 0 340
 effect raptor_cannon_impact
-notunderwater
-count 10
-type static
-tex 48 55
-color 0xD400FF 0x571863
-size 33 44
-sizeincrease 25
-alpha 200 256 812
-bounce 1.5
-airfriction 8
-liquidfriction 8
-originjitter 8 8 8
-velocityjitter 312 312 312
-
-
+       airfriction 8
+       alpha 200 256 812
+       bounce 1.500000
+       color 0xD400FF 0x571863
+       count 10
+       liquidfriction 8
+       notunderwater
+       originjitter 8 8 8
+       sizeincrease 25
+       size 33 44
+       tex 48 55
+       type static
+       velocityjitter 312 312 312
 effect raptor_cannon_muzzleflash
-count 16
-type spark
-color 0xD400FF 0x571863
-tex 8 15
-size 10 17
-alpha 1256 1512 56280
-airfriction 12
-originjitter 2 2 2
-velocityjitter 200 200 200
-velocitymultiplier 0.2
-sizeincrease -10
-stretchfactor 0.6
+       airfriction 12
+       alpha 1256 1512 56280
+       color 0xD400FF 0x571863
+       count 16
+       originjitter 2 2 2
+       sizeincrease -10
+       size 10 17
+       stretchfactor 0.600000
+       tex 8 15
+       type spark
+       velocityjitter 200 200 200
+       velocitymultiplier 0.200000
 effect raptor_cannon_muzzleflash
-countabsolute 1
-type static
-tex 48 55
-color 0xD400FF 0x571863
-size 32 32
-alpha 6056 20112 406280
-sizeincrease -100
-stretchfactor 0.1
-rotate -180 180 4000 -4000
-lightradius 150
-lightradiusfade 6000
-lightcolor 3 0 6
-
-// decal
+       alpha 6056 20112 406280
+       color 0xD400FF 0x571863
+       countabsolute 1
+       lightcolor 3 0 6
+       lightradiusfade 6000
+       lightradius 150
+       rotate -180 180 4000 -4000
+       sizeincrease -100
+       size 32 32
+       stretchfactor 0.100000
+       tex 48 55
+       type static
 effect raptor_bomb_impact
-countabsolute 1
-type decal
-tex 8 16
-size 84 84
-alpha 256 256 0
-originjitter 16 16 16
-rotate -180 180 0 0
-
-//spark vertical
+       alpha 256 256 0
+       countabsolute 1
+       originjitter 16 16 16
+       rotate -180 180 0 0
+       size 84 84
+       tex 8 16
+       type decal
 effect raptor_bomb_impact
-count 3
-type spark
-color 0xff9c00 0xff3c00
-tex 48 55
-size 20 40
-alpha 300 300 600
-originjitter 10 10 10
-velocityjitter 40 40 120
-stretchfactor 210
-sizeincrease 50
-
-//fire
+       alpha 300 300 600
+       color 0xff9c00 0xff3c00
+       count 3
+       originjitter 10 10 10
+       sizeincrease 50
+       size 20 40
+       stretchfactor 210
+       tex 48 55
+       type spark
+       velocityjitter 40 40 120
 effect raptor_bomb_impact
-count 4
-type static 
-color 0xff9c00 0xff3c00
-tex 48 55
-size 30 120
-alpha 300 300 500
-originjitter 10 10 10
-velocityjitter 950 950 0
-sizeincrease 230
-airfriction 2
-
-//smoke
+       airfriction 2
+       alpha 300 300 500
+       color 0xff9c00 0xff3c00
+       count 4
+       originjitter 10 10 10
+       sizeincrease 230
+       size 30 120
+       tex 48 55
+       type static
+       velocityjitter 950 950 0
 effect raptor_bomb_impact
-count 4
-type spark
-blend alpha
-tex 0 7
-size 120 180
-color 0x646364 0x151515
-alpha 428 428 600
-rotate -180 180 0 0
-velocityjitter 200 200 280
-velocityoffset 0 0 280
-originjitter 30 30 10
-stretchfactor 10
-
-//smoke 2
+       alpha 428 428 600
+       blend alpha
+       color 0x646364 0x151515
+       count 4
+       originjitter 30 30 10
+       rotate -180 180 0 0
+       size 120 180
+       stretchfactor 10
+       tex 0 7
+       type spark
+       velocityjitter 200 200 280
+       velocityoffset 0 0 280
 effect raptor_bomb_impact
-count 4
-//type alphastatic
-type spark
-blend alpha
-tex 0 7
-size 40 100
-color 0x646364 0x151515
-alpha 328 328 350
-rotate -180 180 0 0
-velocityjitter 200 200 300
-velocityoffset 0 0 580
-originjitter 30 30 10
-sizeincrease 60
-airfriction 0.6
-gravity 2
-
-// sparks
+       airfriction 0.600000
+       alpha 328 328 350
+       blend alpha
+       color 0x646364 0x151515
+       count 4
+       gravity 2
+       originjitter 30 30 10
+       rotate -180 180 0 0
+       sizeincrease 60
+       size 40 100
+       tex 0 7
+       type spark
+       velocityjitter 200 200 300
+       velocityoffset 0 0 580
 effect raptor_bomb_impact
-notunderwater
-count 5
-type spark
-tex 40 40
-color 0xffa35b 0xfff2be
-size 3 5
-alpha 644 956 984
-gravity 1
-airfriction 0.3
-velocityoffset 0 0 350
-originjitter 16 16 16
-velocityjitter 174 174 924
-stretchfactor 2
-
+       airfriction 0.300000
+       alpha 644 956 984
+       color 0xffa35b 0xfff2be
+       count 5
+       gravity 1
+       notunderwater
+       originjitter 16 16 16
+       size 3 5
+       stretchfactor 2
+       tex 40 40
+       type spark
+       velocityjitter 174 174 924
+       velocityoffset 0 0 350
 effect raptor_bomb_spread
-notunderwater
-count 34
-type spark
-tex 40 40
-color 0xffa35b 0xfff2be
-size 1 2
-alpha 644 956 1284
-gravity 1
-airfriction 1
-liquidfriction 0.8
-originjitter 110 110 110
-velocityjitter 324 324 324
-
-
-// generic explosion size:big (biggest explosion ever)
+       airfriction 1
+       alpha 644 956 1284
+       color 0xffa35b 0xfff2be
+       count 34
+       gravity 1
+       liquidfriction 0.800000
+       notunderwater
+       originjitter 110 110 110
+       size 1 2
+       tex 40 40
+       type spark
+       velocityjitter 324 324 324
 effect explosion_big
-countabsolute 1
-type decal
-tex 8 16
-size 172 172
-alpha 256 256 0
-originjitter 23 23 23
-lightradius 600
-lightradiusfade 1750
-lightcolor 8 4 0
-// shockwave
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 8 4 0
+       lightradiusfade 1750
+       lightradius 600
+       originjitter 23 23 23
+       size 172 172
+       tex 8 16
+       type decal
 effect explosion_big
-countabsolute 1
-type static
-tex 33 33 
-size 72 72
-alpha 56 56 330
-color 0x8f0d00 0xff5a00
-sizeincrease 4400
-// fire effect
+       alpha 56 56 330
+       color 0x8f0d00 0xff5a00
+       countabsolute 1
+       sizeincrease 4400
+       size 72 72
+       tex 33 33
+       type static
 effect explosion_big
-notunderwater
-count 64
-type static
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 133 144
-sizeincrease 45
-alpha 200 256 712
-airfriction 8
-liquidfriction 8
-originjitter 80 80 80
-velocityjitter 2512 2512 2512
-// fire rays
+       airfriction 8
+       alpha 200 256 712
+       color 0x8f0d00 0xff5a00
+       count 64
+       liquidfriction 8
+       notunderwater
+       originjitter 80 80 80
+       sizeincrease 45
+       size 133 144
+       tex 48 55
+       type static
+       velocityjitter 2512 2512 2512
 effect explosion_big
-notunderwater
-count 64
-type spark
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 133 144
-sizeincrease 45
-alpha 200 256 800
-airfriction -5
-liquidfriction 8
-originjitter 40 40 40
-velocityjitter 512 512 512
-stretchfactor 10
-// smoke
+       airfriction -5
+       alpha 200 256 800
+       color 0x8f0d00 0xff5a00
+       count 64
+       liquidfriction 8
+       notunderwater
+       originjitter 40 40 40
+       sizeincrease 45
+       size 133 144
+       stretchfactor 10
+       tex 48 55
+       type spark
+       velocityjitter 512 512 512
 effect explosion_big
-type alphastatic
-notunderwater
-tex 0 8
-count 32
-size 50 100
-sizeincrease 244
-alpha 300 650 456
-velocityjitter 3444 3444 3444
-airfriction 8
-color 0x4F4B46 0x000000
-// bouncing sparks
+       airfriction 8
+       alpha 300 650 456
+       color 0x4F4B46 0x000000
+       count 32
+       notunderwater
+       sizeincrease 244
+       size 50 100
+       tex 0 8
+       type alphastatic
+       velocityjitter 3444 3444 3444
 effect explosion_big
-notunderwater
-count 34
-type spark
-tex 40 40
-color 0xffa35b 0xfff2be
-size 3 4
-alpha 644 956 1284
-gravity 1
-airfriction 1
-liquidfriction 0.8
-velocityoffset 0 0 370
-originjitter 160 160 160
-velocityjitter 924 924 924
-stretchfactor 0.7
-// debris
+       airfriction 1
+       alpha 644 956 1284
+       color 0xffa35b 0xfff2be
+       count 34
+       gravity 1
+       liquidfriction 0.800000
+       notunderwater
+       originjitter 160 160 160
+       size 3 4
+       stretchfactor 0.700000
+       tex 40 40
+       type spark
+       velocityjitter 924 924 924
+       velocityoffset 0 0 370
 effect explosion_big
-notunderwater
-count 16
-type alphastatic
-tex 66 68
-color 0xFFFFFF 0xcac5b4
-size 10 16
-alpha 444 1356 1184
-gravity 2.3
-airfriction 0.5
-velocityjitter 1800 1800 1800
-velocityoffset 0 0 970
-sizeincrease -5
-rotate -180 180 -1000 1000
-// underwater bubbles
+       airfriction 0.500000
+       alpha 444 1356 1184
+       color 0xFFFFFF 0xcac5b4
+       count 16
+       gravity 2.300000
+       notunderwater
+       rotate -180 180 -1000 1000
+       sizeincrease -5
+       size 10 16
+       tex 66 68
+       type alphastatic
+       velocityjitter 1800 1800 1800
+       velocityoffset 0 0 970
 effect explosion_big
-underwater
-count 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 160 160 160
-velocityjitter 444 444 444
-// underwatershockwave
+       alpha 128 256 64
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 32
+       gravity -0.125000
+       liquidfriction 0.250000
+       originjitter 160 160 160
+       size 3 3
+       tex 62 62
+       type bubble
+       underwater
+       velocityjitter 444 444 444
 effect explosion_big
-underwater
-type smoke
-countabsolute 1
-tex 33 33
-size 30 30
-sizeincrease 2900
-alpha 40 40 300
-velocitymultiplier 0.3
-
-
-// generic explosion size:medium (it leaves rising smoke for a longer time)
-// shockwave
+       alpha 40 40 300
+       countabsolute 1
+       sizeincrease 2900
+       size 30 30
+       tex 33 33
+       type smoke
+       underwater
+       velocitymultiplier 0.300000
 effect explosion_medium
-countabsolute 1
-type static
-tex 33 33 
-size 72 72
-alpha 56 56 330
-color 0x8f0d00 0xff5a00
-sizeincrease 2400
-// fire effect
+       alpha 56 56 330
+       color 0x8f0d00 0xff5a00
+       countabsolute 1
+       sizeincrease 2400
+       size 72 72
+       tex 33 33
+       type static
 effect explosion_medium
-notunderwater
-count 32
-type static
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 133 144
-sizeincrease 45
-alpha 200 256 712
-airfriction 8
-liquidfriction 8
-originjitter 30 30 30
-velocityjitter 1512 1512 1512
-rotate -180 180 -500 500
-// fire effect 2
+       airfriction 8
+       alpha 200 256 712
+       color 0x8f0d00 0xff5a00
+       count 32
+       liquidfriction 8
+       notunderwater
+       originjitter 30 30 30
+       rotate -180 180 -500 500
+       sizeincrease 45
+       size 133 144
+       tex 48 55
+       type static
+       velocityjitter 1512 1512 1512
 effect explosion_medium
-notunderwater
-count 32
-type static
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 73 94
-sizeincrease 40
-gravity -2
-alpha 200 256 612
-airfriction 8
-liquidfriction 8
-originjitter 30 30 30
-velocityjitter 1512 1512 1512
-rotate -180 180 -150 150
-// fire rays
+       airfriction 8
+       alpha 200 256 612
+       color 0x8f0d00 0xff5a00
+       count 32
+       gravity -2
+       liquidfriction 8
+       notunderwater
+       originjitter 30 30 30
+       rotate -180 180 -150 150
+       sizeincrease 40
+       size 73 94
+       tex 48 55
+       type static
+       velocityjitter 1512 1512 1512
 effect explosion_medium
-notunderwater
-count 14
-type spark
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 43 74
-sizeincrease 40
-alpha 200 256 800
-airfriction -3
-liquidfriction 8
-originjitter 40 40 40
-velocityjitter 512 512 512
-stretchfactor 8
-// smoke 
+       airfriction -3
+       alpha 200 256 800
+       color 0x8f0d00 0xff5a00
+       count 14
+       liquidfriction 8
+       notunderwater
+       originjitter 40 40 40
+       sizeincrease 40
+       size 43 74
+       stretchfactor 8
+       tex 48 55
+       type spark
+       velocityjitter 512 512 512
 effect explosion_medium
-type alphastatic
-notunderwater
-tex 0 8
-count 5
-size 250 300
-sizeincrease -30
-alpha 300 650 756
-originjitter 100 100 100
-velocityjitter 200 200 200
-airfriction 3
-color 0x4F4B46 0x000000
-rotate -180 180 -20 20
-// smoke 2
+       airfriction 3
+       alpha 300 650 756
+       color 0x4F4B46 0x000000
+       count 5
+       notunderwater
+       originjitter 100 100 100
+       rotate -180 180 -20 20
+       sizeincrease -30
+       size 250 300
+       tex 0 8
+       type alphastatic
+       velocityjitter 200 200 200
 effect explosion_medium
-type alphastatic
-notunderwater
-tex 0 8
-count 10
-size 50 100
-sizeincrease 50
-gravity -0.3
-alpha 300 650 256
-originjitter 100 100 100
-velocityjitter 500 500 500
-velocityoffset 0 0 200
-airfriction 3
-color 0x4F4B46 0x000000
-rotate -180 180 -20 20
-// smoke rays
+       airfriction 3
+       alpha 300 650 256
+       color 0x4F4B46 0x000000
+       count 10
+       gravity -0.300000
+       notunderwater
+       originjitter 100 100 100
+       rotate -180 180 -20 20
+       sizeincrease 50
+       size 50 100
+       tex 0 8
+       type alphastatic
+       velocityjitter 500 500 500
+       velocityoffset 0 0 200
 effect explosion_medium
-type spark
-notunderwater
-tex 0 8
-count 13
-size 150 200
-sizeincrease 100
-alpha 140 255 350
-velocityjitter 250 250 250
-originjitter 40 40 40
-color 0x4F4B46 0x000000
-stretchfactor 50
-// bouncing sparks
+       alpha 140 255 350
+       color 0x4F4B46 0x000000
+       count 13
+       notunderwater
+       originjitter 40 40 40
+       sizeincrease 100
+       size 150 200
+       stretchfactor 50
+       tex 0 8
+       type spark
+       velocityjitter 250 250 250
 effect explosion_medium
-notunderwater
-count 14
-type spark
-tex 40 40
-color 0xffa35b 0xfff2be
-size 2 3
-alpha 644 956 984
-gravity 1
-airfriction 1
-liquidfriction 0.8
-velocityoffset 0 0 370
-originjitter 100 100 100
-velocityjitter 624 624 624
-stretchfactor 0.7
-// underwater bubbles
+       airfriction 1
+       alpha 644 956 984
+       color 0xffa35b 0xfff2be
+       count 14
+       gravity 1
+       liquidfriction 0.800000
+       notunderwater
+       originjitter 100 100 100
+       size 2 3
+       stretchfactor 0.700000
+       tex 40 40
+       type spark
+       velocityjitter 624 624 624
+       velocityoffset 0 0 370
 effect explosion_medium
-underwater
-count 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 160 160 160
-velocityjitter 444 444 444
-// underwatershockwave
+       alpha 128 256 64
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 32
+       gravity -0.125000
+       liquidfriction 0.250000
+       originjitter 160 160 160
+       size 3 3
+       tex 62 62
+       type bubble
+       underwater
+       velocityjitter 444 444 444
 effect explosion_medium
-underwater
-type smoke
-countabsolute 1
-tex 33 33
-size 30 30
-sizeincrease 2900
-alpha 40 40 300
-velocitymultiplier 0.3
-
-// generic explosion size:small (its fire only, made to support other explosions)
-// shockwave
+       alpha 40 40 300
+       countabsolute 1
+       sizeincrease 2900
+       size 30 30
+       tex 33 33
+       type smoke
+       underwater
+       velocitymultiplier 0.300000
 effect explosion_small
-countabsolute 1
-type static
-tex 33 33 
-size 22 22
-alpha 56 56 330
-color 0x8f0d00 0xff5a00
-sizeincrease 2400
-// fire effect
+       alpha 56 56 330
+       color 0x8f0d00 0xff5a00
+       countabsolute 1
+       sizeincrease 2400
+       size 22 22
+       tex 33 33
+       type static
 effect explosion_small
-notunderwater
-count 16
-type static
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 1 44
-sizeincrease 45
-alpha 200 256 1212
-airfriction 5
-liquidfriction 8
-velocityjitter 512 512 512
-rotate -180 180 -500 500
-// fire effect 2
+       airfriction 5
+       alpha 200 256 1212
+       color 0x8f0d00 0xff5a00
+       count 16
+       liquidfriction 8
+       notunderwater
+       rotate -180 180 -500 500
+       sizeincrease 45
+       size 1 44
+       tex 48 55
+       type static
+       velocityjitter 512 512 512
 effect explosion_small
-notunderwater
-count 16
-type static
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 73 94
-sizeincrease 40
-alpha 200 256 812
-airfriction 8
-liquidfriction 8
-velocityjitter 912 912 912
-rotate -180 180 -150 150
-// fire rays
+       airfriction 8
+       alpha 200 256 812
+       color 0x8f0d00 0xff5a00
+       count 16
+       liquidfriction 8
+       notunderwater
+       rotate -180 180 -150 150
+       sizeincrease 40
+       size 73 94
+       tex 48 55
+       type static
+       velocityjitter 912 912 912
 effect explosion_small
-notunderwater
-count 14
-type spark
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 13 54
-sizeincrease 30
-alpha 200 256 1300
-airfriction -3
-liquidfriction 8
-originjitter 40 40 40
-velocityjitter 512 512 512
-stretchfactor 8
-// underwater bubbles
+       airfriction -3
+       alpha 200 256 1300
+       color 0x8f0d00 0xff5a00
+       count 14
+       liquidfriction 8
+       notunderwater
+       originjitter 40 40 40
+       sizeincrease 30
+       size 13 54
+       stretchfactor 8
+       tex 48 55
+       type spark
+       velocityjitter 512 512 512
 effect explosion_small
-underwater
-count 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 1 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 160 160 160
-velocityjitter 144 144 144
-// underwatershockwave
+       alpha 128 256 64
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 32
+       gravity -0.125000
+       liquidfriction 0.250000
+       originjitter 160 160 160
+       size 1 3
+       tex 62 62
+       type bubble
+       underwater
+       velocityjitter 144 144 144
 effect explosion_small
-underwater
-type smoke
-countabsolute 1
-tex 33 33
-size 30 30
-sizeincrease 1200
-alpha 40 40 300
-
-// big smoke ( for spamming on damaged stuff )
+       alpha 40 40 300
+       countabsolute 1
+       sizeincrease 1200
+       size 30 30
+       tex 33 33
+       type smoke
+       underwater
 effect smoke_big
-type alphastatic
-notunderwater
-tex 0 8
-count 3
-size 30 60
-sizeincrease 15
-gravity -0.5
-alpha 200 750 200
-originjitter 55 55 55
-velocityjitter 140 140 200
-velocityoffset 0 0 200
-airfriction 4
-color 0x4F4B46 0x000000
-rotate -180 180 -20 20
-
-// small smoke ( more precise than big one, for spamming on damaged parts like raptors spinner )
+       airfriction 4
+       alpha 200 750 200
+       color 0x4F4B46 0x000000
+       count 3
+       gravity -0.500000
+       notunderwater
+       originjitter 55 55 55
+       rotate -180 180 -20 20
+       sizeincrease 15
+       size 30 60
+       tex 0 8
+       type alphastatic
+       velocityjitter 140 140 200
+       velocityoffset 0 0 200
 effect smoke_small
-type alphastatic
-notunderwater
-tex 0 8
-count 3
-size 60 100
-sizeincrease -10
-gravity -0.5
-alpha 200 750 200
-velocityjitter 40 40 400
-velocityoffset 0 0 200
-airfriction 4
-color 0x4F4B46 0x000000
-rotate -180 180 -20 20
-
-// metal impact effect
-// used in qcsrc/server/mutators/sandbox.qc:   pointparticles(particleeffectnum("impact_metal"), self.origin, '0 0 0', 1);
+       airfriction 4
+       alpha 200 750 200
+       color 0x4F4B46 0x000000
+       count 3
+       gravity -0.500000
+       notunderwater
+       rotate -180 180 -20 20
+       sizeincrease -10
+       size 60 100
+       tex 0 8
+       type alphastatic
+       velocityjitter 40 40 400
+       velocityoffset 0 0 200
 effect impact_metal
-count 1
-type alphastatic
-tex 0 8
-size 3 6
-sizeincrease 10
-alpha 25 64 50
-gravity -0.01
-color 0x000000 0x886666
-originjitter 20 20 5
-// sparks
+       alpha 25 64 50
+       color 0x000000 0x886666
+       count 1
+       gravity -0.010000
+       originjitter 20 20 5
+       sizeincrease 10
+       size 3 6
+       tex 0 8
+       type alphastatic
 effect impact_metal
-count 2
-type spark
-tex 41 41
-color 0xFFCC22 0xFF4422
-size 2 2
-alpha 255 255 112
-bounce 1.8
-stretchfactor 0.5
-velocityjitter 200 200 300
-velocitymultiplier 2
-airfriction 2
-gravity 1
-
-// stone impact effect
-// used in qcsrc/server/mutators/sandbox.qc:   pointparticles(particleeffectnum("impact_stone"), self.origin, '0 0 0', 1);
+       airfriction 2
+       alpha 255 255 112
+       bounce 1.800000
+       color 0xFFCC22 0xFF4422
+       count 2
+       gravity 1
+       size 2 2
+       stretchfactor 0.500000
+       tex 41 41
+       type spark
+       velocityjitter 200 200 300
+       velocitymultiplier 2
 effect impact_stone
-count 1
-type alphastatic
-tex 0 8
-size 3 6
-sizeincrease 15
-alpha 50 128 75
-gravity -0.01
-color 0x000000 0xcc9966
-originjitter 20 20 5
-// debris
+       alpha 50 128 75
+       color 0x000000 0xcc9966
+       count 1
+       gravity -0.010000
+       originjitter 20 20 5
+       sizeincrease 15
+       size 3 6
+       tex 0 8
+       type alphastatic
 effect impact_stone
-notunderwater
-count 1
-type alphastatic
-tex 66 68
-color 0x000000 0x886644
-size 1 2
-alpha 450 750 300
-gravity 1.3
-airfriction 0.5
-bounce 1.2
-velocityjitter 124 124 324
-rotate -180 180 -1000 1000
-
-// wood impact effect
-// used in qcsrc/server/mutators/sandbox.qc:   pointparticles(particleeffectnum("impact_wood"), self.origin, '0 0 0', 1);
+       airfriction 0.500000
+       alpha 450 750 300
+       bounce 1.200000
+       color 0x000000 0x886644
+       count 1
+       gravity 1.300000
+       notunderwater
+       rotate -180 180 -1000 1000
+       size 1 2
+       tex 66 68
+       type alphastatic
+       velocityjitter 124 124 324
 effect impact_wood
-count 1
-type alphastatic
-tex 0 8
-size 3 6
-sizeincrease 10
-alpha 50 128 75
-gravity -0.01
-color 0x000000 0xcc9966
-originjitter 20 20 5
-// sparks
+       alpha 50 128 75
+       color 0x000000 0xcc9966
+       count 1
+       gravity -0.010000
+       originjitter 20 20 5
+       sizeincrease 10
+       size 3 6
+       tex 0 8
+       type alphastatic
 effect impact_wood
-count 2
-type spark
-tex 41 41
-color 0x221100 0x221100
-size 1 8
-alpha 255 255 75
-bounce 1.5
-velocityjitter 180 180 260
-velocitymultiplier 2
-airfriction 2
-gravity 1
-
-// flesh impact effect
-// used in qcsrc/server/mutators/sandbox.qc:   pointparticles(particleeffectnum("impact_flesh"), self.origin, '0 0 0', 1);
+       airfriction 2
+       alpha 255 255 75
+       bounce 1.500000
+       color 0x221100 0x221100
+       count 2
+       gravity 1
+       size 1 8
+       tex 41 41
+       type spark
+       velocityjitter 180 180 260
+       velocitymultiplier 2
 effect impact_flesh
-count 0.5
-type alphastatic
-tex 0 8
-size 8 12
-alpha 100 256 400
-color 0x000000 0x420000
-originjitter 11 11 11
-// blood splash
+       alpha 100 256 400
+       color 0x000000 0x420000
+       count 0.500000
+       originjitter 11 11 11
+       size 8 12
+       tex 0 8
+       type alphastatic
 effect impact_flesh
-count 0.3
-type blood
-tex 24 32
-size 2 6
-alpha 256 256 64
-color 0xA8FFFF 0xA8FFFFF
-bounce -1
-airfriction 1
-liquidfriction 4
-velocityjitter 96 96 96
-velocitymultiplier 5
-staincolor 0x808080 0x808080
-staintex 16 24
-
-// hagar trail
-// smoke
+       airfriction 1
+       alpha 256 256 64
+       bounce -1
+       color 0xA8FFFF 0xA8FFFFF
+       count 0.300000
+       liquidfriction 4
+       size 2 6
+       staincolor 0x808080 0x808080
+       staintex 16 24
+       tex 24 32
+       type blood
+       velocityjitter 96 96 96
+       velocitymultiplier 5
 effect tr_hagar
-trailspacing 4
-type smoke
-color 0x101010 0x000000
-tex 0 8
-size 3 2
-bounce 1
-sizeincrease 10
-alpha 300 400 780
-originjitter 1 1 1
-velocityjitter 1 1 1
-velocitymultiplier -0.02
-//gravity -0.11
-// fire
+       alpha 300 400 780
+       bounce 1
+       color 0x101010 0x000000
+       originjitter 1 1 1
+       sizeincrease 10
+       size 3 2
+       tex 0 8
+       trailspacing 4
+       type smoke
+       velocityjitter 1 1 1
+       velocitymultiplier -0.020000
 effect tr_hagar
-notunderwater
-trailspacing 4
-type static
-color 0xffdf72 0x811200
-tex 48 55
-size 5 2
-sizeincrease -15
-alpha 100 144 988
-airfriction 8
-velocityjitter 32 32 32
-velocitymultiplier -1.0
-// bubbles
+       airfriction 8
+       alpha 100 144 988
+       color 0xffdf72 0x811200
+       notunderwater
+       sizeincrease -15
+       size 5 2
+       tex 48 55
+       trailspacing 4
+       type static
+       velocityjitter 32 32 32
+       velocitymultiplier -1
 effect tr_hagar
-underwater
-trailspacing 16
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 1 1
-alpha 256 256 256
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
-
-// laser damage effect
-// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+       alpha 256 256 256
+       bounce 1.500000
+       color 0x404040 0x808080
+       gravity -0.125000
+       liquidfriction 4
+       size 1 1
+       tex 62 62
+       trailspacing 16
+       type bubble
+       underwater
+       velocityjitter 16 16 16
 effect damage_laser
-notunderwater
-count 3
-type smoke
-tex 0 8
-color 0x880000 0xff4400
-size 2 4
-sizeincrease 8
-alpha 128 16 128
-gravity 0
-originjitter 2 2 2
-velocityjitter 0.4 0.4 0.6
-velocitymultiplier 0
-airfriction -0.35
-rotate 0 180 -30 30
-
-// shotgun damage effect, normal blood
-// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+       airfriction -0.350000
+       alpha 128 16 128
+       color 0x880000 0xff4400
+       count 3
+       notunderwater
+       originjitter 2 2 2
+       rotate 0 180 -30 30
+       sizeincrease 8
+       size 2 4
+       tex 0 8
+       type smoke
+       velocityjitter 0.4 0.4 0.6
 effect damage_shotgun
-count 0.6
-type blood
-tex 24 32
-size 2 4
-alpha 256 256 64
-color 0xA8FFFF 0xA8FFFFF
-bounce -1
-airfriction 1
-liquidfriction 4
-velocityjitter 64 64 64
-velocitymultiplier 5
-staincolor 0x808080 0x808080
-staintex 16 24
-//blood mist
+       airfriction 1
+       alpha 256 256 64
+       bounce -1
+       color 0xA8FFFF 0xA8FFFFF
+       count 0.600000
+       liquidfriction 4
+       size 2 4
+       staincolor 0x808080 0x808080
+       staintex 16 24
+       tex 24 32
+       type blood
+       velocityjitter 64 64 64
+       velocitymultiplier 5
 effect damage_shotgun
-count 1
-type alphastatic
-tex 0 8
-size 8 16
-alpha 100 256 400
-color 0x000000 0x420000
-originjitter 1 1 1
-
-// shotgun damage effect, alien blood
-// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+       alpha 100 256 400
+       color 0x000000 0x420000
+       count 1
+       originjitter 1 1 1
+       size 8 16
+       tex 0 8
+       type alphastatic
 effect damage_shotgun_alien
-count 0.6
-type blood
-tex 24 32
-size 2 4
-alpha 256 256 64
-color 0xDC9BCD 0xDC9BCD
-bounce -1
-airfriction 1
-liquidfriction 4
-velocityjitter 64 64 64
-velocitymultiplier 5
-staincolor 0x808080 0x808080
-staintex 16 24
-//blood mist
+       airfriction 1
+       alpha 256 256 64
+       bounce -1
+       color 0xDC9BCD 0xDC9BCD
+       count 0.600000
+       liquidfriction 4
+       size 2 4
+       staincolor 0x808080 0x808080
+       staintex 16 24
+       tex 24 32
+       type blood
+       velocityjitter 64 64 64
+       velocitymultiplier 5
 effect damage_shotgun_alien
-count 1
-type alphastatic
-tex 0 8
-size 8 16
-alpha 100 256 400
-color 0x000000 0x204010
-originjitter 1 1 1
-
-// shotgun damage effect, robot blood
-// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+       alpha 100 256 400
+       color 0x000000 0x204010
+       count 1
+       originjitter 1 1 1
+       size 8 16
+       tex 0 8
+       type alphastatic
 effect damage_shotgun_robot
-count 0.6
-type blood
-tex 24 32
-size 2 4
-alpha 256 256 64
-color 0xC0D890 0xC0D890
-bounce -1
-airfriction 1
-liquidfriction 4
-velocityjitter 64 64 64
-velocitymultiplier 5
-staincolor 0x808080 0x808080
-staintex 16 24
-//blood mist
+       airfriction 1
+       alpha 256 256 64
+       bounce -1
+       color 0xC0D890 0xC0D890
+       count 0.600000
+       liquidfriction 4
+       size 2 4
+       staincolor 0x808080 0x808080
+       staintex 16 24
+       tex 24 32
+       type blood
+       velocityjitter 64 64 64
+       velocitymultiplier 5
 effect damage_shotgun_robot
-count 1
-type alphastatic
-tex 0 8
-size 8 16
-alpha 100 256 400
-color 0x000000 0x301860
-originjitter 1 1 1
-
-// uzi damage effect, normal blood
-// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+       alpha 100 256 400
+       color 0x000000 0x301860
+       count 1
+       originjitter 1 1 1
+       size 8 16
+       tex 0 8
+       type alphastatic
 effect damage_uzi
-count 0.3
-type blood
-tex 24 32
-size 2 4
-alpha 256 256 64
-color 0xA8FFFF 0xA8FFFFF
-bounce -1
-airfriction 1
-liquidfriction 4
-velocityjitter 32 32 32
-velocitymultiplier 5
-staincolor 0x808080 0x808080
-staintex 16 24
-//blood mist
+       airfriction 1
+       alpha 256 256 64
+       bounce -1
+       color 0xA8FFFF 0xA8FFFFF
+       count 0.300000
+       liquidfriction 4
+       size 2 4
+       staincolor 0x808080 0x808080
+       staintex 16 24
+       tex 24 32
+       type blood
+       velocityjitter 32 32 32
+       velocitymultiplier 5
 effect damage_uzi
-count 1
-type alphastatic
-tex 0 8
-size 6 12
-alpha 100 256 400
-color 0x000000 0x420000
-originjitter 0 0 0
-
-// uzi damage effect, alien blood
-// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+       alpha 100 256 400
+       color 0x000000 0x420000
+       count 1
+       size 6 12
+       tex 0 8
+       type alphastatic
 effect damage_uzi_alien
-count 0.3
-type blood
-tex 24 32
-size 2 4
-alpha 256 256 64
-color 0xDC9BCD 0xDC9BCD
-bounce -1
-airfriction 1
-liquidfriction 4
-velocityjitter 32 32 32
-velocitymultiplier 5
-staincolor 0x808080 0x808080
-staintex 16 24
-//blood mist
+       airfriction 1
+       alpha 256 256 64
+       bounce -1
+       color 0xDC9BCD 0xDC9BCD
+       count 0.300000
+       liquidfriction 4
+       size 2 4
+       staincolor 0x808080 0x808080
+       staintex 16 24
+       tex 24 32
+       type blood
+       velocityjitter 32 32 32
+       velocitymultiplier 5
 effect damage_uzi_alien
-count 1
-type alphastatic
-tex 0 8
-size 6 12
-alpha 100 256 400
-color 0x000000 0x204010
-originjitter 0 0 0
-
-// uzi damage effect, robot blood
-// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+       alpha 100 256 400
+       color 0x000000 0x204010
+       count 1
+       size 6 12
+       tex 0 8
+       type alphastatic
 effect damage_uzi_robot
-count 0.3
-type blood
-tex 24 32
-size 2 4
-alpha 256 256 64
-color 0xC0D890 0xC0D890
-bounce -1
-airfriction 1
-liquidfriction 4
-velocityjitter 32 32 32
-velocitymultiplier 5
-staincolor 0x808080 0x808080
-staintex 16 24
-//blood mist
+       airfriction 1
+       alpha 256 256 64
+       bounce -1
+       color 0xC0D890 0xC0D890
+       count 0.300000
+       liquidfriction 4
+       size 2 4
+       staincolor 0x808080 0x808080
+       staintex 16 24
+       tex 24 32
+       type blood
+       velocityjitter 32 32 32
+       velocitymultiplier 5
 effect damage_uzi_robot
-count 1
-type alphastatic
-tex 0 8
-size 6 12
-alpha 100 256 400
-color 0x000000 0x301860
-originjitter 0 0 0
-
-// minelayer damage effect
-// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+       alpha 100 256 400
+       color 0x000000 0x301860
+       count 1
+       size 6 12
+       tex 0 8
+       type alphastatic
 effect damage_minelayer
-notunderwater
-count 3
-type smoke
-tex 48 55
-size 4 8
-alpha 512 64 1024
-gravity -0.5
-color 0x8f0d00 0xff5a00
-sizeincrease -15
-originjitter 2 2 2
-velocityjitter 22 22 50
-// smoke
+       alpha 512 64 1024
+       color 0x8f0d00 0xff5a00
+       count 3
+       gravity -0.500000
+       notunderwater
+       originjitter 2 2 2
+       sizeincrease -15
+       size 4 8
+       tex 48 55
+       type smoke
+       velocityjitter 22 22 50
 effect damage_minelayer
-notunderwater
-type alphastatic
-count 2
-tex 0 8
-size 4 8
-sizeincrease 5
-alpha 128 32 128
-color 0x000000 0x111111
-gravity -0.3
-originjitter 4 4 4
-velocityjitter 11 11 50
-// light
-/*effect damage_minelayer
-notunderwater
-trailspacing 8
-lightradius 60
-lightradiusfade 280
-lightcolor 0.7 0.4 0.2*/
-
-// grenadelauncher damage effect
-// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+       alpha 128 32 128
+       color 0x000000 0x111111
+       count 2
+       gravity -0.300000
+       notunderwater
+       originjitter 4 4 4
+       sizeincrease 5
+       size 4 8
+       tex 0 8
+       type alphastatic
+       velocityjitter 11 11 50
 effect damage_grenadelauncher
-notunderwater
-count 3
-type smoke
-tex 48 55
-size 4 8
-alpha 512 64 1024
-gravity -0.5
-color 0x8f0d00 0xff5a00
-sizeincrease -15
-originjitter 2 2 2
-velocityjitter 22 22 50
-// smoke
+       alpha 512 64 1024
+       color 0x8f0d00 0xff5a00
+       count 3
+       gravity -0.500000
+       notunderwater
+       originjitter 2 2 2
+       sizeincrease -15
+       size 4 8
+       tex 48 55
+       type smoke
+       velocityjitter 22 22 50
 effect damage_grenadelauncher
-notunderwater
-type alphastatic
-count 2
-tex 0 8
-size 4 8
-sizeincrease 5
-alpha 128 32 128
-color 0x000000 0x111111
-gravity -0.3
-originjitter 4 4 4
-velocityjitter 11 11 50
-// light
-/*effect damage_grenadelauncher
-notunderwater
-trailspacing 8
-lightradius 60
-lightradiusfade 280
-lightcolor 0.7 0.4 0.2*/
-
-// electro damage effect
-// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+       alpha 128 32 128
+       color 0x000000 0x111111
+       count 2
+       gravity -0.300000
+       notunderwater
+       originjitter 4 4 4
+       sizeincrease 5
+       size 4 8
+       tex 0 8
+       type alphastatic
+       velocityjitter 11 11 50
 effect damage_electro
-notunderwater
-count 2
-type static
-tex 47 47
-color 0x66ffff 0x2288ff
-size 6 10
-sizeincrease -14
-alpha 48 8 48
-gravity -0.0001
-airfriction 0.2
-liquidfriction 0.8
-originjitter 3 3 3
-velocityjitter 8 8 16
-velocitymultiplier 0
-airfriction -0.5
-rotate 180 360 -30 30
-// plasma smoke
+       airfriction -0.500000
+       alpha 48 8 48
+       color 0x66ffff 0x2288ff
+       count 2
+       gravity -0.000100
+       liquidfriction 0.800000
+       notunderwater
+       originjitter 3 3 3
+       rotate 180 360 -30 30
+       sizeincrease -14
+       size 6 10
+       tex 47 47
+       type static
+       velocityjitter 8 8 16
 effect damage_electro
-notunderwater
-count 4
-type smoke
-tex 0 8
-color 0x2244ff 0x002266
-size 4 8
-sizeincrease 10
-alpha 64 16 64
-gravity 0
-originjitter 4 4 4
-velocityjitter 0.4 0.4 0.6
-velocitymultiplier 0
-airfriction -0.35
-rotate 0 180 -30 30
-// bouncing sparks
+       airfriction -0.350000
+       alpha 64 16 64
+       color 0x2244ff 0x002266
+       count 4
+       notunderwater
+       originjitter 4 4 4
+       rotate 0 180 -30 30
+       sizeincrease 10
+       size 4 8
+       tex 0 8
+       type smoke
+       velocityjitter 0.4 0.4 0.6
 effect damage_electro
-count 0.5
-type spark
-tex 66 68
-color 0x003090 0x00CCFF
-size 1 1
-alpha 768 64 256
-gravity 0.2
-airfriction 1
-bounce 1.5
-liquidfriction 0.8
-velocityoffset 0 0 0
-velocityjitter 32 32 32
-// light
-/*effect damage_electro
-notunderwater
-trailspacing 8
-lightradius 50
-lightradiusfade 220
-lightcolor 0.2 0.6 0.8*/
-
-// crylink damage effect
-// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+       airfriction 1
+       alpha 768 64 256
+       bounce 1.500000
+       color 0x003090 0x00CCFF
+       count 0.500000
+       gravity 0.200000
+       liquidfriction 0.800000
+       size 1 1
+       tex 66 68
+       type spark
+       velocityjitter 32 32 32
 effect damage_crylink
-notunderwater
-count 2
-type static
-tex 38 38
-color 0xff44ff 0x9966ff
-size 0.5 1
-sizeincrease -8
-alpha 48 16 48
-gravity -0.0001
-airfriction 0.6
-liquidfriction 0.8
-originjitter 3 3 3
-velocityjitter 10 10 20
-velocitymultiplier 0
-airfriction -0.5
-rotate 180 360 -30 30
-// plasma smoke
+       airfriction -0.500000
+       alpha 48 16 48
+       color 0xff44ff 0x9966ff
+       count 2
+       gravity -0.000100
+       liquidfriction 0.800000
+       notunderwater
+       originjitter 3 3 3
+       rotate 180 360 -30 30
+       sizeincrease -8
+       size 0.500000 1
+       tex 38 38
+       type static
+       velocityjitter 10 10 20
 effect damage_crylink
-notunderwater
-count 4
-type smoke
-tex 0 8
-color 0x8844ff 0x662244
-size 5 10
-sizeincrease 6
-alpha 64 16 64
-gravity 0.001
-originjitter 4 4 4
-velocityjitter 0.4 0.4 0.6
-velocitymultiplier 0
-airfriction -0.35
-rotate 0 180 -30 30
-// floating sparks
+       airfriction -0.350000
+       alpha 64 16 64
+       color 0x8844ff 0x662244
+       count 4
+       gravity 0.001000
+       notunderwater
+       originjitter 4 4 4
+       rotate 0 180 -30 30
+       sizeincrease 6
+       size 5 10
+       tex 0 8
+       type smoke
+       velocityjitter 0.4 0.4 0.6
 effect damage_crylink
-count 0.3
-type spark
-color 0x903090 0xFFD0FF
-size 0.5 0.5
-sizeincrease -5
-alpha 192 192 128
-gravity 0
-airfriction 0.2
-liquidfriction 0.8
-velocityoffset 0 0 0
-velocityjitter 12 12 12
-// light
-/*effect damage_crylink
-notunderwater
-trailspacing 8
-lightradius 50
-lightradiusfade 240
-lightcolor 0.6 0.2 0.8*/
-
-// hlac damage effect
-// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+       airfriction 0.200000
+       alpha 192 192 128
+       color 0x903090 0xFFD0FF
+       count 0.300000
+       liquidfriction 0.800000
+       sizeincrease -5
+       size 0.500000 0.500000
+       type spark
+       velocityjitter 12 12 12
 effect damage_hlac
-notunderwater
-count 3
-type smoke
-tex 0 8
-color 0x880000 0xff4400
-size 2 4
-sizeincrease 10
-alpha 128 16 128
-gravity 0
-originjitter 4 4 4
-velocityjitter 0.4 0.4 0.6
-velocitymultiplier 0
-airfriction -0.35
-rotate 0 180 -30 30
-
-// nex damage effect
-// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+       airfriction -0.350000
+       alpha 128 16 128
+       color 0x880000 0xff4400
+       count 3
+       notunderwater
+       originjitter 4 4 4
+       rotate 0 180 -30 30
+       sizeincrease 10
+       size 2 4
+       tex 0 8
+       type smoke
+       velocityjitter 0.4 0.4 0.6
 effect damage_nex
-count 1
-type static
-tex 47 47
-color 0xffffff 0x88ffff
-size 5 10
-sizeincrease -14
-alpha 64 8 64
-gravity -0.0001
-airfriction 0.1
-liquidfriction 0.6
-originjitter 4 4 4
-velocityjitter 8 8 16
-velocitymultiplier 0
-airfriction -0.5
-rotate 180 360 -30 30
-// plasma smoke
+       airfriction -0.500000
+       alpha 64 8 64
+       color 0xffffff 0x88ffff
+       count 1
+       gravity -0.000100
+       liquidfriction 0.600000
+       originjitter 4 4 4
+       rotate 180 360 -30 30
+       sizeincrease -14
+       size 5 10
+       tex 47 47
+       type static
+       velocityjitter 8 8 16
 effect damage_nex
-count 2
-type smoke
-tex 0 8
-color 0x6688ff 0x226688
-size 4 8
-sizeincrease 8
-alpha 64 16 64
-gravity 0
-originjitter 2 2 2
-velocityjitter 0.5 0.5 0.8
-velocitymultiplier 0
-airfriction -0.35
-rotate 0 180 -30 30
-// bouncing sparks
+       airfriction -0.350000
+       alpha 64 16 64
+       color 0x6688ff 0x226688
+       count 2
+       originjitter 2 2 2
+       rotate 0 180 -30 30
+       sizeincrease 8
+       size 4 8
+       tex 0 8
+       type smoke
+       velocityjitter 0.5 0.5 0.8
 effect damage_nex
-count 0.2
-type spark
-tex 41 41
-color 0xD9FDFF 0xD9FDFF
-size 1 1
-alpha 255 255 112
-bounce 1.6
-stretchfactor 0.7
-velocityjitter 100 100 300
-velocitymultiplier 3
-airfriction 2
-gravity 1
-// light
-/*effect damage_nex
-trailspacing 8
-lightradius 60
-lightradiusfade 280
-lightcolor 0.6 0.8 0.8*/
-
-// minstanex damage effect
-// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+       airfriction 2
+       alpha 255 255 112
+       bounce 1.600000
+       color 0xD9FDFF 0xD9FDFF
+       count 0.200000
+       gravity 1
+       size 1 1
+       stretchfactor 0.700000
+       tex 41 41
+       type spark
+       velocityjitter 100 100 300
+       velocitymultiplier 3
 effect damage_minstanex
-count 2
-type static
-tex 47 47
-color 0xffffff 0x88ffff
-size 5 10
-sizeincrease -14
-alpha 64 8 64
-gravity -0.0001
-airfriction 0.1
-liquidfriction 0.6
-originjitter 4 4 4
-velocityjitter 8 8 16
-velocitymultiplier 0
-airfriction -0.5
-rotate 180 360 -30 30
-// plasma smoke
+       airfriction -0.500000
+       alpha 64 8 64
+       color 0xffffff 0x88ffff
+       count 2
+       gravity -0.000100
+       liquidfriction 0.600000
+       originjitter 4 4 4
+       rotate 180 360 -30 30
+       sizeincrease -14
+       size 5 10
+       tex 47 47
+       type static
+       velocityjitter 8 8 16
 effect damage_minstanex
-count 4
-type smoke
-tex 0 8
-color 0x6688ff 0x226688
-size 4 8
-sizeincrease 8
-alpha 64 16 64
-gravity 0
-originjitter 2 2 2
-velocityjitter 0.5 0.5 0.8
-velocitymultiplier 0
-airfriction -0.35
-rotate 0 180 -30 30
-// bouncing sparks
+       airfriction -0.350000
+       alpha 64 16 64
+       color 0x6688ff 0x226688
+       count 4
+       originjitter 2 2 2
+       rotate 0 180 -30 30
+       sizeincrease 8
+       size 4 8
+       tex 0 8
+       type smoke
+       velocityjitter 0.5 0.5 0.8
 effect damage_minstanex
-count 0.2
-type spark
-tex 41 41
-color 0xD9FDFF 0xD9FDFF
-size 1 1
-alpha 255 255 112
-bounce 1.6
-stretchfactor 0.7
-velocityjitter 100 100 300
-velocitymultiplier 3
-airfriction 2
-gravity 1
-// light
-/*effect damage_minstanex
-trailspacing 8
-lightradius 60
-lightradiusfade 240
-lightcolor 0.6 0.8 0.8*/
-
-// sniperrifle damage effect, normal blood
-// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+       airfriction 2
+       alpha 255 255 112
+       bounce 1.600000
+       color 0xD9FDFF 0xD9FDFF
+       count 0.200000
+       gravity 1
+       size 1 1
+       stretchfactor 0.700000
+       tex 41 41
+       type spark
+       velocityjitter 100 100 300
+       velocitymultiplier 3
 effect damage_rifle
-count 0.3
-type blood
-tex 24 32
-size 2 4
-alpha 256 256 64
-color 0xA8FFFF 0xA8FFFFF
-bounce -1
-airfriction 1
-liquidfriction 4
-velocityjitter 32 32 32
-velocitymultiplier 5
-staincolor 0x808080 0x808080
-staintex 16 24
-//blood mist
+       airfriction 1
+       alpha 256 256 64
+       bounce -1
+       color 0xA8FFFF 0xA8FFFFF
+       count 0.300000
+       liquidfriction 4
+       size 2 4
+       staincolor 0x808080 0x808080
+       staintex 16 24
+       tex 24 32
+       type blood
+       velocityjitter 32 32 32
+       velocitymultiplier 5
 effect damage_rifle
-count 1
-type alphastatic
-tex 0 8
-size 6 12
-alpha 100 256 400
-color 0x000000 0x420000
-originjitter 0 0 0
-
-// sniperrifle damage effect, alien blood
-// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+       alpha 100 256 400
+       color 0x000000 0x420000
+       count 1
+       size 6 12
+       tex 0 8
+       type alphastatic
 effect damage_rifle_alien
-count 0.3
-type blood
-tex 24 32
-size 2 4
-alpha 256 256 64
-color 0xDC9BCD 0xDC9BCD
-bounce -1
-airfriction 1
-liquidfriction 4
-velocityjitter 32 32 32
-velocitymultiplier 5
-staincolor 0x808080 0x808080
-staintex 16 24
-//blood mist
+       airfriction 1
+       alpha 256 256 64
+       bounce -1
+       color 0xDC9BCD 0xDC9BCD
+       count 0.300000
+       liquidfriction 4
+       size 2 4
+       staincolor 0x808080 0x808080
+       staintex 16 24
+       tex 24 32
+       type blood
+       velocityjitter 32 32 32
+       velocitymultiplier 5
 effect damage_rifle_alien
-count 1
-type alphastatic
-tex 0 8
-size 6 12
-alpha 100 256 400
-color 0x000000 0x204010
-originjitter 0 0 0
-
-// sniperrifle damage effect, robot blood
-// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+       alpha 100 256 400
+       color 0x000000 0x204010
+       count 1
+       size 6 12
+       tex 0 8
+       type alphastatic
 effect damage_rifle_robot
-count 0.3
-type blood
-tex 24 32
-size 2 4
-alpha 256 256 64
-color 0xC0D890 0xC0D890
-bounce -1
-airfriction 1
-liquidfriction 4
-velocityjitter 32 32 32
-velocitymultiplier 5
-staincolor 0x808080 0x808080
-staintex 16 24
-//blood mist
+       airfriction 1
+       alpha 256 256 64
+       bounce -1
+       color 0xC0D890 0xC0D890
+       count 0.300000
+       liquidfriction 4
+       size 2 4
+       staincolor 0x808080 0x808080
+       staintex 16 24
+       tex 24 32
+       type blood
+       velocityjitter 32 32 32
+       velocitymultiplier 5
 effect damage_rifle_robot
-count 1
-type alphastatic
-tex 0 8
-size 6 12
-alpha 100 256 400
-color 0x000000 0x301860
-originjitter 0 0 0
-
-// seeker damage effect
-// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+       alpha 100 256 400
+       color 0x000000 0x301860
+       count 1
+       size 6 12
+       tex 0 8
+       type alphastatic
 effect damage_seeker
-notunderwater
-count 3
-type smoke
-tex 48 55
-size 4 8
-alpha 512 32 1024
-gravity -0.3
-color 0x8f0c00 0xff2200
-sizeincrease -10
-originjitter 2 2 2
-velocityjitter 22 22 50
-// smoke
+       alpha 512 32 1024
+       color 0x8f0c00 0xff2200
+       count 3
+       gravity -0.300000
+       notunderwater
+       originjitter 2 2 2
+       sizeincrease -10
+       size 4 8
+       tex 48 55
+       type smoke
+       velocityjitter 22 22 50
 effect damage_seeker
-notunderwater
-type alphastatic
-count 2
-tex 0 8
-size 2 4
-sizeincrease 10
-alpha 128 32 128
-color 0x000000 0x111111
-gravity -0.3
-originjitter 4 4 4
-velocityjitter 11 11 50
-// light
-/*effect damage_seeker
-notunderwater
-trailspacing 8
-lightradius 65
-lightradiusfade 280
-lightcolor 0.7 0.5 0.1*/
-
-// hagar damage effect
-// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+       alpha 128 32 128
+       color 0x000000 0x111111
+       count 2
+       gravity -0.300000
+       notunderwater
+       originjitter 4 4 4
+       sizeincrease 10
+       size 2 4
+       tex 0 8
+       type alphastatic
+       velocityjitter 11 11 50
 effect damage_hagar
-notunderwater
-count 3
-type smoke
-tex 48 55
-size 4 8
-alpha 512 32 1024
-gravity -0.3
-color 0x8f0c00 0xff3a00
-sizeincrease -10
-originjitter 2 2 2
-velocityjitter 22 22 50
-// smoke
+       alpha 512 32 1024
+       color 0x8f0c00 0xff3a00
+       count 3
+       gravity -0.300000
+       notunderwater
+       originjitter 2 2 2
+       sizeincrease -10
+       size 4 8
+       tex 48 55
+       type smoke
+       velocityjitter 22 22 50
 effect damage_hagar
-notunderwater
-type alphastatic
-count 2
-tex 0 8
-size 2 4
-sizeincrease 10
-alpha 128 32 128
-color 0x000000 0x111111
-gravity -0.3
-originjitter 4 4 4
-velocityjitter 11 11 50
-// light
-/*effect damage_hagar
-notunderwater
-trailspacing 8
-lightradius 65
-lightradiusfade 280
-lightcolor 0.7 0.5 0.1*/
-
-// fireball damage effect
-// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+       alpha 128 32 128
+       color 0x000000 0x111111
+       count 2
+       gravity -0.300000
+       notunderwater
+       originjitter 4 4 4
+       sizeincrease 10
+       size 2 4
+       tex 0 8
+       type alphastatic
+       velocityjitter 11 11 50
 effect damage_fireball
-notunderwater
-count 4
-type smoke
-tex 48 55
-size 5 10
-alpha 256 16 512
-gravity -0.5
-color 0x8f0d00 0xff5a00
-sizeincrease -10
-originjitter 8 8 8
-velocityjitter 22 22 50
-// smoke
+       alpha 256 16 512
+       color 0x8f0d00 0xff5a00
+       count 4
+       gravity -0.500000
+       notunderwater
+       originjitter 8 8 8
+       sizeincrease -10
+       size 5 10
+       tex 48 55
+       type smoke
+       velocityjitter 22 22 50
 effect damage_fireball
-notunderwater
-type alphastatic
-count 4
-tex 0 8
-size 4 8
-sizeincrease 10
-alpha 128 32 128
-color 0x000000 0x111111
-gravity -0.3
-originjitter 6 6 6
-velocityjitter 11 11 50
-// light
-/*effect damage_fireball
-notunderwater
-trailspacing 8
-lightradius 65
-lightradiusfade 280
-lightcolor 1.0 0.8 0.4*/
-
-// rocketlauncher damage effect
-// used in qcsrc/client/damage.qc:                     pointparticles(self.team, org, '0 0 0', 1);
+       alpha 128 32 128
+       color 0x000000 0x111111
+       count 4
+       gravity -0.300000
+       notunderwater
+       originjitter 6 6 6
+       sizeincrease 10
+       size 4 8
+       tex 0 8
+       type alphastatic
+       velocityjitter 11 11 50
 effect damage_rocketlauncher
-notunderwater
-count 3
-type smoke
-tex 48 55
-size 5 10
-alpha 512 64 1024
-gravity -0.7
-color 0x8f0c00 0xff2a00
-sizeincrease -10
-originjitter 4 4 4
-velocityjitter 22 22 30
-// smoke
+       alpha 512 64 1024
+       color 0x8f0c00 0xff2a00
+       count 3
+       gravity -0.700000
+       notunderwater
+       originjitter 4 4 4
+       sizeincrease -10
+       size 5 10
+       tex 48 55
+       type smoke
+       velocityjitter 22 22 30
 effect damage_rocketlauncher
-notunderwater
-type alphastatic
-count 3
-tex 0 8
-size 4 8
-sizeincrease 10
-alpha 128 32 128
-color 0x000000 0x111111
-gravity -0.3
-originjitter 4 4 4
-velocityjitter 11 11 50
-// light
-/*effect damage_rocketlauncher
-notunderwater
-trailspacing 8
-lightradius 60
-lightradiusfade 280
-lightcolor 0.8 0.6 0.2*/
-
-// fireflies
-// used nowhere in code
+       alpha 128 32 128
+       color 0x000000 0x111111
+       count 3
+       gravity -0.300000
+       notunderwater
+       originjitter 4 4 4
+       sizeincrease 10
+       size 4 8
+       tex 0 8
+       type alphastatic
+       velocityjitter 11 11 50
 effect fireflies
-count 1
-bounce -1
-airfriction 5
-time 1 2
-type static
-tex 38 38
-color 0xff9600 0xffefb8
-size 2 3
-sizeincrease -0.3
-alpha 256 256 70
-gravity 0
-originoffset 8 8 8
-originjitter 32 32 32
-velocityoffset 2 2 2
-velocityjitter 64 64 64
-//lightradius 50
-//lightradiusfade 50
-//lightcolor 1 0.9 0.7
-//lightshadow 1
-
-// heal ray muzzleflash
+       airfriction 5
+       alpha 256 256 70
+       bounce -1
+       color 0xff9600 0xffefb8
+       count 1
+       originjitter 32 32 32
+       originoffset 8 8 8
+       sizeincrease -0.300000
+       size 2 3
+       tex 38 38
+       time 1 2
+       type static
+       velocityjitter 64 64 64
+       velocityoffset 2 2 2
 effect healray_muzzleflash
-countabsolute 1
-type smoke
-color 0x283880 0x283880 // 0x202020 0x404040
-tex 65 65
-size 20 20
-alpha 256 256 512
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-sizeincrease -10
-velocitymultiplier 0.01
-lightradius 200
-lightradiusfade 2000
-lightcolor 1.5 3 6
-
+       alpha 256 256 512
+       color 0x283880 0x283880
+       countabsolute 1
+       lightcolor 1.5 3 6
+       lightradiusfade 2000
+       lightradius 200
+       originjitter 1.5 1.5 1.5
+       sizeincrease -10
+       size 20 20
+       tex 65 65
+       type smoke
+       velocityjitter 6 6 6
+       velocitymultiplier 0.010000
 effect healray_muzzleflash
-count 22
-type spark
-tex 71 73
-color 0xD9FDFF 0x00f0ff
-size 1 15
-sizeincrease 3
-alpha 50 150 1924
-originjitter 1 1 1
-velocityjitter 150 150 150
-velocitymultiplier 0.4
-airfriction 5
-stretchfactor 3.9
-
+       airfriction 5
+       alpha 50 150 1924
+       color 0xD9FDFF 0x00f0ff
+       count 22
+       originjitter 1 1 1
+       sizeincrease 3
+       size 1 15
+       stretchfactor 3.900000
+       tex 71 73
+       type spark
+       velocityjitter 150 150 150
+       velocitymultiplier 0.400000
 effect healray_muzzleflash
-count 4
-type spark
-tex 70 70
-color 0xD9FDFF 0x00f0ff
-size 1 1
-alpha 110 228 4024
-originjitter 1 1 1
-velocityjitter 650 650 650
-velocitymultiplier 1.1
-stretchfactor 0.2
-
-
-
-//healray impact
-
+       alpha 110 228 4024
+       color 0xD9FDFF 0x00f0ff
+       count 4
+       originjitter 1 1 1
+       size 1 1
+       stretchfactor 0.200000
+       tex 70 70
+       type spark
+       velocityjitter 650 650 650
+       velocitymultiplier 1.100000
 effect healray_impact
-countabsolute 1
-type decal
-tex 59 59
-size 32 32
-alpha 256 256 0
-color 0xd800ff 0xd800ff
-originjitter 17 17 17
-lightradius 125
-lightradiusfade 450
-lightcolor 0 4.375 0
-// shockwave
+       alpha 256 256 0
+       color 0xd800ff 0xd800ff
+       countabsolute 1
+       lightcolor 0 4.4 0
+       lightradiusfade 450
+       lightradius 125
+       originjitter 17 17 17
+       size 32 32
+       tex 59 59
+       type decal
 effect healray_impact
-type smoke
-countabsolute 1
-tex 33 33
-size 32 32
-sizeincrease 1400
-color 0x00ff00 0x84c52f
-alpha 40 40 350
-velocitymultiplier 44
-// cloud of bouncing sparks
+       alpha 40 40 350
+       color 0x00ff00 0x84c52f
+       countabsolute 1
+       sizeincrease 1400
+       size 32 32
+       tex 33 33
+       type smoke
+       velocitymultiplier 44
 effect healray_impact
-count 30
-type spark
-tex 70 70
-color 0x00ff00 0x84c52f
-size 1 2
-alpha 156 300 1024
-gravity 2
-airfriction 6
-originjitter 1 1 1
-velocityjitter 1112 1112 1112
-// inner cloud of smoke
+       airfriction 6
+       alpha 156 300 1024
+       color 0x00ff00 0x84c52f
+       count 30
+       gravity 2
+       originjitter 1 1 1
+       size 1 2
+       tex 70 70
+       type spark
+       velocityjitter 1112 1112 1112
 effect healray_impact
-count 15
-type smoke
-color 0x00ff00 0x84c52f
-tex 40 40
-size 2 3 
-alpha 200 456 512
-airfriction 3
-gravity -2
-velocityjitter 120 120 420
-rotate -180 180 -90 90
-
-
-
-
-// big plasma muzzle flash
-
+       airfriction 3
+       alpha 200 456 512
+       color 0x00ff00 0x84c52f
+       count 15
+       gravity -2
+       rotate -180 180 -90 90
+       size 2 3
+       tex 40 40
+       type smoke
+       velocityjitter 120 120 420
 effect bigplasma_muzzleflash
-countabsolute 1
-type smoke
-color 0x283880 0x283880 // 0x202020 0x404040
-tex 65 65
-size 50 50
-alpha 256 256 812
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-sizeincrease -10
-velocitymultiplier 0.01
-lightradius 200
-lightradiusfade 2000
-lightcolor 1.5 3 6
-
+       alpha 256 256 812
+       color 0x283880 0x283880
+       countabsolute 1
+       lightcolor 1.5 3 6
+       lightradiusfade 2000
+       lightradius 200
+       originjitter 1.5 1.5 1.5
+       sizeincrease -10
+       size 50 50
+       tex 65 65
+       type smoke
+       velocityjitter 6 6 6
+       velocitymultiplier 0.010000
 effect bigplasma_muzzleflash
-countabsolute 1
-type smoke
-color 0x00f0ff 0x00f0ff
-tex 74 74
-size 20 20
-alpha 56 56 1112
-sizeincrease 300
-
+       alpha 56 56 1112
+       color 0x00f0ff 0x00f0ff
+       countabsolute 1
+       sizeincrease 300
+       size 20 20
+       tex 74 74
+       type smoke
 effect bigplasma_muzzleflash
-count 14
-type spark
-tex 51 55
-color 0xD9FDFF 0x00f0ff
-size 5 10
-sizeincrease 135
-alpha 50 150 1924
-originjitter 1 1 1
-velocityjitter 350 350 350
-velocitymultiplier 0.4
-airfriction 5
-stretchfactor 1.9
-
+       airfriction 5
+       alpha 50 150 1924
+       color 0xD9FDFF 0x00f0ff
+       count 14
+       originjitter 1 1 1
+       sizeincrease 135
+       size 5 10
+       stretchfactor 1.900000
+       tex 51 55
+       type spark
+       velocityjitter 350 350 350
+       velocitymultiplier 0.400000
 effect bigplasma_muzzleflash
-count 4
-type spark
-tex 70 70
-color 0xD9FDFF 0x00f0ff
-size 20 20
-alpha 110 228 4024
-originjitter 1 1 1
-velocityjitter 650 650 650
-velocitymultiplier 1.1
-stretchfactor 0.2
-
-
-// big plasma impact
-
+       alpha 110 228 4024
+       color 0xD9FDFF 0x00f0ff
+       count 4
+       originjitter 1 1 1
+       size 20 20
+       stretchfactor 0.200000
+       tex 70 70
+       type spark
+       velocityjitter 650 650 650
+       velocitymultiplier 1.100000
 effect bigplasma_impact
-countabsolute 1
-type decal
-tex 59 59
-size 32 32
-alpha 256 256 0
-originjitter 17 17 17
-lightradius 125
-lightradiusfade 450
-lightcolor 3.125 4.375 10
-// shockwave
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 3.1 4.4 10
+       lightradiusfade 450
+       lightradius 125
+       originjitter 17 17 17
+       size 32 32
+       tex 59 59
+       type decal
 effect bigplasma_impact
-type smoke
-countabsolute 1
-tex 33 33
-size 32 32
-sizeincrease 1400
-color 0x80C0FF 0x80C0FF
-alpha 40 40 350
-velocitymultiplier 44
-// cloud of bouncing sparks
+       alpha 40 40 350
+       color 0x80C0FF 0x80C0FF
+       countabsolute 1
+       sizeincrease 1400
+       size 32 32
+       tex 33 33
+       type smoke
+       velocitymultiplier 44
 effect bigplasma_impact
-count 30
-type spark
-tex 70 70
-color 0x629dff 0x0018ff
-size 1 2
-alpha 156 300 1024
-gravity 2
-airfriction 6
-originjitter 1 1 1
-velocityjitter 1512 1512 1512
-// inner cloud of smoke
+       airfriction 6
+       alpha 156 300 1024
+       color 0x629dff 0x0018ff
+       count 30
+       gravity 2
+       originjitter 1 1 1
+       size 1 2
+       tex 70 70
+       type spark
+       velocityjitter 1512 1512 1512
 effect bigplasma_impact
-count 15
-type smoke
-color 0x629dff 0x0018ff
-tex 48 55
-size 20 24
-sizeincrease 555
-alpha 200 456 1512
-airfriction 30
-originjitter 20 20 20
-velocityjitter 320 320 320
-rotate -180 180 -9 9
-// smoke
+       airfriction 30
+       alpha 200 456 1512
+       color 0x629dff 0x0018ff
+       count 15
+       originjitter 20 20 20
+       rotate -180 180 -9 9
+       sizeincrease 555
+       size 20 24
+       tex 48 55
+       type smoke
+       velocityjitter 320 320 320
 effect bigplasma_impact
-type smoke
-count 16
-blend alpha
-tex 0 7
-size 60 30
-color 0x222222 0x000000
-alpha 128 328 390
-rotate -180 180 2 -2
-velocityjitter 100 100 200
-velocityoffset 0 0 180
-originjitter 80 80 10
-sizeincrease 30
-airfriction 0.04
-gravity 0.4
-// smoke in the middle
+       airfriction 0.040000
+       alpha 128 328 390
+       blend alpha
+       color 0x222222 0x000000
+       count 16
+       gravity 0.400000
+       originjitter 80 80 10
+       rotate -180 180 2 -2
+       sizeincrease 30
+       size 60 30
+       tex 0 7
+       type smoke
+       velocityjitter 100 100 200
+       velocityoffset 0 0 180
 effect bigplasma_impact
-type alphastatic
-count 10
-tex 0 7
-size 60 70
-color 0x222222 0x000000
-alpha 128 328 310
-rotate -180 180 20 -20
-velocityjitter 10 10 10
-originjitter 80 80 80
-sizeincrease -10
-airfriction 0.04
-gravity -0.2
-
-// redflag_touch -- effects for touching the red flag
-// used nowhere in code
+       airfriction 0.040000
+       alpha 128 328 310
+       color 0x222222 0x000000
+       count 10
+       gravity -0.200000
+       originjitter 80 80 80
+       rotate -180 180 20 -20
+       sizeincrease -10
+       size 60 70
+       tex 0 7
+       type alphastatic
+       velocityjitter 10 10 10
 effect redflag_touch
-count 35
-type spark
-tex 40 40
-color 0xFF0000 0x970000
-size 1 3
-alpha 0 256 556
-gravity 1
-bounce 1.5
-originjitter 1 1 1
-velocityjitter 300 300 300
-velocitymultiplier 0.5
-airfriction 3
-
-// blueflag_touch -- effects for touching the blue flag
-// used nowhere in code
+       airfriction 3
+       alpha 0 256 556
+       bounce 1.500000
+       color 0xFF0000 0x970000
+       count 35
+       gravity 1
+       originjitter 1 1 1
+       size 1 3
+       tex 40 40
+       type spark
+       velocityjitter 300 300 300
+       velocitymultiplier 0.500000
 effect blueflag_touch
-count 35
-type spark
-tex 40 40
-color 0x0000FF 0x000097
-size 1 3
-alpha 0 256 556
-gravity 1
-bounce 1.5
-originjitter 1 1 1
-velocityjitter 300 300 300
-velocitymultiplier 0.5
-airfriction 3
-
-// red_pass
-// used nowhere in code
+       airfriction 3
+       alpha 0 256 556
+       bounce 1.500000
+       color 0x0000FF 0x000097
+       count 35
+       gravity 1
+       originjitter 1 1 1
+       size 1 3
+       tex 40 40
+       type spark
+       velocityjitter 300 300 300
+       velocitymultiplier 0.500000
+effect yellowflag_touch
+       airfriction 3
+       alpha 0 256 556
+       bounce 1.500000
+       color 0xFFFF0F 0xFFFF0F
+       count 35
+       gravity 1
+       originjitter 1 1 1
+       size 1 3
+       tex 40 40
+       type spark
+       velocityjitter 300 300 300
+       velocitymultiplier 0.500000
+effect pinkflag_touch
+       airfriction 3
+       alpha 0 256 556
+       bounce 1.500000
+       color 0xFF0FFF 0xFF0FFF
+       count 35
+       gravity 1
+       originjitter 1 1 1
+       size 1 3
+       tex 40 40
+       type spark
+       velocityjitter 300 300 300
+       velocitymultiplier 0.500000
+effect neutralflag_touch
+       airfriction 3
+       alpha 0 256 556
+       bounce 1.500000
+       color 0xFFFFFF 0xFFFFFF
+       count 35
+       gravity 1
+       originjitter 1 1 1
+       size 1 3
+       tex 40 40
+       type spark
+       velocityjitter 300 300 300
+       velocitymultiplier 0.500000
 effect red_pass
-trailspacing 64
-color 0xFF0000 0x970000
-size 2 2
-tex 32 32
-alpha 64 128 64
-airfriction 5
-sizeincrease 2
-type static
+       airfriction 5
+       alpha 64 128 64
+       color 0xFF0000 0x970000
+       sizeincrease 2
+       size 2 2
+       tex 32 32
+       trailspacing 64
+       type static
 effect red_pass
-trailspacing 12
-color 0xFF0000 0x970000
-size 1 1
-tex 0 8
-alpha 32 64 32
-airfriction 9
-sizeincrease 8
-velocityjitter 64 64 64
-type static
+       airfriction 9
+       alpha 32 64 32
+       color 0xFF0000 0x970000
+       sizeincrease 8
+       size 1 1
+       tex 0 8
+       trailspacing 12
+       type static
+       velocityjitter 64 64 64
 effect red_pass
-trailspacing 12
-color 0xFF0000 0x970000
-size 4 4
-//tex 48 55
-alpha 256 256 1280
-type static
-
-// blue_pass
-// used nowhere in code
+       alpha 256 256 1280
+       color 0xFF0000 0x970000
+       size 4 4
+       trailspacing 12
+       type static
 effect blue_pass
-trailspacing 64
-color 0x0000FF 0x000097
-size 2 2
-tex 32 32
-alpha 64 128 64
-airfriction 5
-sizeincrease 2
-type static
+       airfriction 5
+       alpha 64 128 64
+       color 0x0000FF 0x000097
+       sizeincrease 2
+       size 2 2
+       tex 32 32
+       trailspacing 64
+       type static
 effect blue_pass
-trailspacing 12
-color 0x0000FF 0x000097
-size 1 1
-tex 0 8
-alpha 32 64 32
-airfriction 9
-sizeincrease 8
-velocityjitter 64 64 64
-type static
+       airfriction 9
+       alpha 32 64 32
+       color 0x0000FF 0x000097
+       sizeincrease 8
+       size 1 1
+       tex 0 8
+       trailspacing 12
+       type static
+       velocityjitter 64 64 64
 effect blue_pass
-trailspacing 12
-color 0x0000FF 0x000097
-size 4 4
-//tex 48 55
-alpha 256 256 1280
-type static
-
-// red_cap -- red team capture effect
+       alpha 256 256 1280
+       color 0x0000FF 0x000097
+       size 4 4
+       trailspacing 12
+       type static
+effect yellow_pass
+       airfriction 5
+       alpha 64 128 64
+       color 0xFFFF0F 0xFFFF0F
+       sizeincrease 2
+       size 2 2
+       tex 32 32
+       trailspacing 64
+       type static
+effect yellow_pass
+       airfriction 9
+       alpha 32 64 32
+       color 0xFFFF0F 0xFFFF0F
+       sizeincrease 8
+       size 1 1
+       tex 0 8
+       trailspacing 12
+       type static
+       velocityjitter 64 64 64
+effect yellow_pass
+       alpha 256 256 1280
+       color 0xFFFF0F 0xFFFF0F
+       size 4 4
+       trailspacing 12
+       type static
+effect pink_pass
+       airfriction 5
+       alpha 64 128 64
+       color 0xFFFFFF 0xFFFFFF
+       sizeincrease 2
+       size 2 2
+       tex 32 32
+       trailspacing 64
+       type static
+effect pink_pass
+       airfriction 9
+       alpha 32 64 32
+       color 0xFFFFFF 0xFFFFFF
+       sizeincrease 8
+       size 1 1
+       tex 0 8
+       trailspacing 12
+       type static
+       velocityjitter 64 64 64
+effect pink_pass
+       alpha 256 256 1280
+       color 0xFFFFFF 0xFFFFFF
+       size 4 4
+       trailspacing 12
+       type static
+effect neutral_pass
+       airfriction 5
+       alpha 64 128 64
+       color 0xFFFFFF 0xFFFFFF
+       sizeincrease 2
+       size 2 2
+       tex 32 32
+       trailspacing 64
+       type static
+effect neutral_pass
+       airfriction 9
+       alpha 32 64 32
+       color 0xFFFFFF 0xFFFFFF
+       sizeincrease 8
+       size 1 1
+       tex 0 8
+       trailspacing 12
+       type static
+       velocityjitter 64 64 64
+effect neutral_pass
+       alpha 256 256 1280
+       color 0xFFFFFF 0xFFFFFF
+       size 4 4
+       trailspacing 12
+       type static
 effect red_cap
-count 500
-type spark
-tex 64 64
-color 0xFF0000 0x970000
-size 1 1
-alpha 0 256 100
-stretchfactor 2
-//gravity 1
-bounce 1.5
-originjitter 1 1 1
-velocityjitter 1000 1000 1500
-velocitymultiplier 0.5
-airfriction 2
-stretchfactor 0.6
+       airfriction 2
+       alpha 0 256 100
+       bounce 1.500000
+       color 0xFF0000 0x970000
+       count 500
+       originjitter 1 1 1
+       size 1 1
+       stretchfactor 0.600000
+       tex 64 64
+       type spark
+       velocityjitter 1000 1000 1500
+       velocitymultiplier 0.500000
 effect red_cap
-countabsolute 1
-type smoke
-tex 65 65
-size 150 150
-alpha 190 190 180
-sizeincrease -80
-color 0xFF0000 0x970000
-
-// blue_cap -- blue team capture effect
+       alpha 190 190 180
+       color 0xFF0000 0x970000
+       countabsolute 1
+       sizeincrease -80
+       size 150 150
+       tex 65 65
+       type smoke
 effect blue_cap
-count 500
-type spark
-tex 64 64
-color 0x0000FF 0x000097
-size 1 1
-alpha 0 256 100
-stretchfactor 2
-//gravity 1
-bounce 1.5
-originjitter 1 1 1
-velocityjitter 1000 1000 1500
-velocitymultiplier 0.5
-airfriction 2
-stretchfactor 0.6
+       airfriction 2
+       alpha 0 256 100
+       bounce 1.500000
+       color 0x0000FF 0x000097
+       count 500
+       originjitter 1 1 1
+       size 1 1
+       stretchfactor 0.600000
+       tex 64 64
+       type spark
+       velocityjitter 1000 1000 1500
+       velocitymultiplier 0.500000
 effect blue_cap
-countabsolute 1
-type smoke
-tex 65 65
-size 150 150
-alpha 190 190 180
-sizeincrease -80
-color 0x0000FF 0x000097
-
-// spawn_point_red -- red team idle spawn point effect
+       alpha 190 190 180
+       color 0x0000FF 0x000097
+       countabsolute 1
+       sizeincrease -80
+       size 150 150
+       tex 65 65
+       type smoke
+effect yellow_cap
+       airfriction 2
+       alpha 0 256 100
+       bounce 1.500000
+       color 0xFFFF0F 0xFFFF0F
+       count 500
+       originjitter 1 1 1
+       size 1 1
+       stretchfactor 0.600000
+       tex 64 64
+       type spark
+       velocityjitter 1000 1000 1500
+       velocitymultiplier 0.500000
+effect yellow_cap
+       alpha 190 190 180
+       color 0xFFFF0F 0xFFFF0F
+       countabsolute 1
+       sizeincrease -80
+       size 150 150
+       tex 65 65
+       type smoke
+effect pink_cap
+       airfriction 2
+       alpha 0 256 100
+       bounce 1.500000
+       color 0xFF0FFF 0xFF0FFF
+       count 500
+       originjitter 1 1 1
+       size 1 1
+       stretchfactor 0.600000
+       tex 64 64
+       type spark
+       velocityjitter 1000 1000 1500
+       velocitymultiplier 0.500000
+effect pink_cap
+       alpha 190 190 180
+       color 0xFF0FFF 0xFF0FFF
+       countabsolute 1
+       sizeincrease -80
+       size 150 150
+       tex 65 65
+       type smoke
 effect spawn_point_red
-count 37.5
-type static
-color 0xFF0F0F 0xFF0F0F
-size 1.0 2.0
-alpha 64 128 128
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 16 16 64
-velocityjitter 32 32 0
-//lightradius 200
-//lighttime 0
-//lightcolor 0.4 0.9 0.9
-
-// spawn_point_blue -- blue team idle spawn point effect
+       airfriction 0.200000
+       alpha 64 128 128
+       color 0xFF0F0F 0xFF0F0F
+       count 37.500000
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 16 16 64
+       size 1 2
+       type static
+       velocityjitter 32 32 0
 effect spawn_point_blue
-count 37.5
-type static
-color 0x0F0FFF 0x0F0FFF
-size 1.0 2.0
-alpha 64 128 128
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 16 16 64
-velocityjitter 32 32 0
-//lightradius 200
-//lighttime 0
-//lightcolor 0.4 0.9 0.9
-
-// spawn_point_yellow -- yellow team idle spawn point effect
+       airfriction 0.200000
+       alpha 64 128 128
+       color 0x0F0FFF 0x0F0FFF
+       count 37.500000
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 16 16 64
+       size 1 2
+       type static
+       velocityjitter 32 32 0
 effect spawn_point_yellow
-count 37.5
-type static
-color 0xFFFF0F 0xFFFF0F
-size 1.0 2.0
-alpha 64 128 128
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 16 16 64
-velocityjitter 32 32 0
-//lightradius 200
-//lighttime 0
-//lightcolor 0.4 0.9 0.9
-
-// spawn_point_pink -- pink team idle spawn point effect
+       airfriction 0.200000
+       alpha 64 128 128
+       color 0xFFFF0F 0xFFFF0F
+       count 37.500000
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 16 16 64
+       size 1 2
+       type static
+       velocityjitter 32 32 0
 effect spawn_point_pink
-count 37.5
-type static
-color 0xFF0FFF 0xFF0FFF
-size 1.0 2.0
-alpha 64 128 128
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 16 16 64
-velocityjitter 32 32 0
-//lightradius 200
-//lighttime 0
-//lightcolor 0.4 0.9 0.9
-
-// spawn_point_neutral -- neutral idle spawn point effect
+       airfriction 0.200000
+       alpha 64 128 128
+       color 0xFF0FFF 0xFF0FFF
+       count 37.500000
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 16 16 64
+       size 1 2
+       type static
+       velocityjitter 32 32 0
 effect spawn_point_neutral
-count 37.5
-type static
-color 0xFFFFFF 0xFFFFFF
-size 1.0 2.0
-alpha 64 128 128
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 16 16 64
-velocityjitter 32 32 0
-//lightradius 200
-//lighttime 0
-//lightcolor 0.4 0.9 0.9
-
-// spawn_event_red -- red team spawning effect
+       airfriction 0.200000
+       alpha 64 128 128
+       color 0xFFFFFF 0xFFFFFF
+       count 37.500000
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 16 16 64
+       size 1 2
+       type static
+       velocityjitter 32 32 0
 effect spawn_event_red
-count 100
-type spark
-tex 64 64
-color 0xFF0F0F 0xFF0F0F
-size 1 1
-alpha 0 256 256
-stretchfactor 0.6
-//gravity 1
-bounce 1
-originjitter 1 1 1
-velocityjitter 500 500 500
-velocitymultiplier 0.1
-airfriction 2
+       airfriction 2
+       alpha 0 256 256
+       bounce 1
+       color 0xFF0F0F 0xFF0F0F
+       count 100
+       originjitter 1 1 1
+       size 1 1
+       stretchfactor 0.600000
+       tex 64 64
+       type spark
+       velocityjitter 500 500 500
+       velocitymultiplier 0.100000
 effect spawn_event_red
-countabsolute 1
-type smoke
-tex 65 65
-size 100 100
-alpha 190 190 180
-sizeincrease -80
-color 0xFF0F0F 0xFF0F0F
-
-// spawn_event_blue -- blue team spawning effect
+       alpha 190 190 180
+       color 0xFF0F0F 0xFF0F0F
+       countabsolute 1
+       sizeincrease -80
+       size 100 100
+       tex 65 65
+       type smoke
 effect spawn_event_blue
-count 100
-type spark
-tex 64 64
-color 0x0F0FFF 0x0F0FFF
-size 1 1
-alpha 0 256 256
-stretchfactor 0.6
-//gravity 1
-bounce 1
-originjitter 1 1 1
-velocityjitter 500 500 500
-velocitymultiplier 0.1
-airfriction 2
+       airfriction 2
+       alpha 0 256 256
+       bounce 1
+       color 0x0F0FFF 0x0F0FFF
+       count 100
+       originjitter 1 1 1
+       size 1 1
+       stretchfactor 0.600000
+       tex 64 64
+       type spark
+       velocityjitter 500 500 500
+       velocitymultiplier 0.100000
 effect spawn_event_blue
-countabsolute 1
-type smoke
-tex 65 65
-size 100 100
-alpha 190 190 180
-sizeincrease -80
-color 0x0F0FFF 0x0F0FFF
-
-// spawn_event_yellow -- yellow team spawning effect
+       alpha 190 190 180
+       color 0x0F0FFF 0x0F0FFF
+       countabsolute 1
+       sizeincrease -80
+       size 100 100
+       tex 65 65
+       type smoke
 effect spawn_event_yellow
-count 100
-type spark
-tex 64 64
-color 0xFFFF0F 0xFFFF0F
-size 1 1
-alpha 0 256 256
-stretchfactor 0.6
-//gravity 1
-bounce 1
-originjitter 1 1 1
-velocityjitter 500 500 500
-velocitymultiplier 0.1
-airfriction 2
+       airfriction 2
+       alpha 0 256 256
+       bounce 1
+       color 0xFFFF0F 0xFFFF0F
+       count 100
+       originjitter 1 1 1
+       size 1 1
+       stretchfactor 0.600000
+       tex 64 64
+       type spark
+       velocityjitter 500 500 500
+       velocitymultiplier 0.100000
 effect spawn_event_yellow
-countabsolute 1
-type smoke
-tex 65 65
-size 100 100
-alpha 190 190 180
-sizeincrease -80
-color 0xFFFF0F 0xFFFF0F
-
-// spawn_event_pink -- pink team spawning effect
+       alpha 190 190 180
+       color 0xFFFF0F 0xFFFF0F
+       countabsolute 1
+       sizeincrease -80
+       size 100 100
+       tex 65 65
+       type smoke
 effect spawn_event_pink
-count 100
-type spark
-tex 64 64
-color 0xFF0FFF 0xFF0FFF
-size 1 1
-alpha 0 256 256
-stretchfactor 0.6
-//gravity 1
-bounce 1
-originjitter 1 1 1
-velocityjitter 500 500 500
-velocitymultiplier 0.1
-airfriction 2
+       airfriction 2
+       alpha 0 256 256
+       bounce 1
+       color 0xFF0FFF 0xFF0FFF
+       count 100
+       originjitter 1 1 1
+       size 1 1
+       stretchfactor 0.600000
+       tex 64 64
+       type spark
+       velocityjitter 500 500 500
+       velocitymultiplier 0.100000
 effect spawn_event_pink
-countabsolute 1
-type smoke
-tex 65 65
-size 100 100
-alpha 190 190 180
-sizeincrease -80
-color 0xFF0FFF 0xFF0FFF
-
-// spawn_event_neutral -- neutral spawning effect
+       alpha 190 190 180
+       color 0xFF0FFF 0xFF0FFF
+       countabsolute 1
+       sizeincrease -80
+       size 100 100
+       tex 65 65
+       type smoke
 effect spawn_event_neutral
-count 100
-type spark
-tex 64 64
-color 0xFFFFFF 0xFFFFFF
-size 1 1
-alpha 0 256 256
-stretchfactor 0.6
-//gravity 1
-bounce 1
-originjitter 1 1 1
-velocityjitter 500 500 500
-velocitymultiplier 0.1
-airfriction 2
+       airfriction 2
+       alpha 0 256 256
+       bounce 1
+       color 0xFFFFFF 0xFFFFFF
+       count 100
+       originjitter 1 1 1
+       size 1 1
+       stretchfactor 0.600000
+       tex 64 64
+       type spark
+       velocityjitter 500 500 500
+       velocitymultiplier 0.100000
 effect spawn_event_neutral
-countabsolute 1
-type smoke
-tex 65 65
-size 100 100
-alpha 190 190 180
-sizeincrease -80
-color 0xFFFFFF 0xFFFFFF
-
-// nade effects
+       alpha 190 190 180
+       color 0xFFFFFF 0xFFFFFF
+       countabsolute 1
+       sizeincrease -80
+       size 100 100
+       tex 65 65
+       type smoke
 effect nade_blue
-trailspacing 1
-type smoke
-color 0x006cff 0x0600ff
-tex 65 65
-size 3 3
-sizeincrease -1
-alpha 100 100 250
-//gravity -0.11
-// fire
+       alpha 100 100 250
+       color 0x006cff 0x0600ff
+       sizeincrease -1
+       size 3 3
+       tex 65 65
+       trailspacing 1
+       type smoke
 effect nade_blue
-notunderwater
-trailspacing 8
-type smoke
-color 0x0600ff 0x9794ff
-tex 65 65
-size 15 25
-sizeincrease -10
-alpha 30 30 150
-// bubbles
+       alpha 30 30 150
+       color 0x0600ff 0x9794ff
+       notunderwater
+       sizeincrease -10
+       size 15 25
+       tex 65 65
+       trailspacing 8
+       type smoke
 effect nade_blue
-underwater
-trailspacing 16
-type bubble
-tex 62 62
-color 0x006cff 0x0600ff
-size 1 1
-alpha 256 256 256
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
-
+       alpha 256 256 256
+       bounce 1.500000
+       color 0x006cff 0x0600ff
+       gravity -0.125000
+       liquidfriction 4
+       size 1 1
+       tex 62 62
+       trailspacing 16
+       type bubble
+       underwater
+       velocityjitter 16 16 16
 effect nade_red
-trailspacing 1
-type smoke
-color 0xff0000 0xff3c00
-tex 65 65
-size 3 3
-sizeincrease -1
-alpha 100 100 250
-//gravity -0.11
-// fire
+       alpha 100 100 250
+       color 0xff0000 0xff3c00
+       sizeincrease -1
+       size 3 3
+       tex 65 65
+       trailspacing 1
+       type smoke
 effect nade_red
-notunderwater
-trailspacing 8
-type smoke
-color 0xff0000 0xffa2a2
-tex 65 65
-size 15 25
-sizeincrease -10
-alpha 30 30 150
-// bubbles
+       alpha 30 30 150
+       color 0xff0000 0xffa2a2
+       notunderwater
+       sizeincrease -10
+       size 15 25
+       tex 65 65
+       trailspacing 8
+       type smoke
 effect nade_red
-underwater
-trailspacing 16
-type bubble
-tex 62 62
-color 0xff0000 0xff3c00
-size 1 1
-alpha 256 256 256
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
-
+       alpha 256 256 256
+       bounce 1.500000
+       color 0xff0000 0xff3c00
+       gravity -0.125000
+       liquidfriction 4
+       size 1 1
+       tex 62 62
+       trailspacing 16
+       type bubble
+       underwater
+       velocityjitter 16 16 16
 effect nade_yellow
-trailspacing 1
-type smoke
-color 0xFFFF0F 0xFFFF0F
-tex 65 65
-size 3 3
-sizeincrease -1
-alpha 100 100 250
-//gravity -0.11
-// fire
+       alpha 100 100 250
+       color 0xFFFF0F 0xFFFF0F
+       sizeincrease -1
+       size 3 3
+       tex 65 65
+       trailspacing 1
+       type smoke
 effect nade_yellow
-notunderwater
-trailspacing 8
-type smoke
-color 0xFFFF0F 0xFFFF0F
-tex 65 65
-size 15 25
-sizeincrease -10
-alpha 30 30 150
-// bubbles
+       alpha 30 30 150
+       color 0xFFFF0F 0xFFFF0F
+       notunderwater
+       sizeincrease -10
+       size 15 25
+       tex 65 65
+       trailspacing 8
+       type smoke
 effect nade_yellow
-underwater
-trailspacing 16
-type bubble
-tex 62 62
-color 0xFFFF0F 0xFFFF0F
-size 1 1
-alpha 256 256 256
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
-
+       alpha 256 256 256
+       bounce 1.500000
+       color 0xFFFF0F 0xFFFF0F
+       gravity -0.125000
+       liquidfriction 4
+       size 1 1
+       tex 62 62
+       trailspacing 16
+       type bubble
+       underwater
+       velocityjitter 16 16 16
 effect nade_pink
-trailspacing 1
-type smoke
-color 0xFF0FFF 0xFF0FFF
-tex 65 65
-size 3 3
-sizeincrease -1
-alpha 100 100 250
-//gravity -0.11
-// fire
+       alpha 100 100 250
+       color 0xFF0FFF 0xFF0FFF
+       sizeincrease -1
+       size 3 3
+       tex 65 65
+       trailspacing 1
+       type smoke
 effect nade_pink
-notunderwater
-trailspacing 8
-type smoke
-color 0xFF0FFF 0xFF0FFF
-tex 65 65
-size 15 25
-sizeincrease -10
-alpha 30 30 150
-// bubbles
+       alpha 30 30 150
+       color 0xFF0FFF 0xFF0FFF
+       notunderwater
+       sizeincrease -10
+       size 15 25
+       tex 65 65
+       trailspacing 8
+       type smoke
 effect nade_pink
-underwater
-trailspacing 16
-type bubble
-tex 62 62
-color 0xFF0FFF 0xFF0FFF
-size 1 1
-alpha 256 256 256
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
-
+       alpha 256 256 256
+       bounce 1.500000
+       color 0xFF0FFF 0xFF0FFF
+       gravity -0.125000
+       liquidfriction 4
+       size 1 1
+       tex 62 62
+       trailspacing 16
+       type bubble
+       underwater
+       velocityjitter 16 16 16
 effect nade_neutral
-trailspacing 1
-type smoke
-color 0xFFFFFF 0xFFFFFF
-tex 65 65
-size 3 3
-sizeincrease -1
-alpha 100 100 250
-//gravity -0.11
-// fire
+       alpha 100 100 250
+       color 0xFFFFFF 0xFFFFFF
+       sizeincrease -1
+       size 3 3
+       tex 65 65
+       trailspacing 1
+       type smoke
 effect nade_neutral
-notunderwater
-trailspacing 8
-type smoke
-color 0xFFFFFF 0xFFFFFF
-tex 65 65
-size 15 25
-sizeincrease -10
-alpha 30 30 150
-// bubbles
+       alpha 30 30 150
+       color 0xFFFFFF 0xFFFFFF
+       notunderwater
+       sizeincrease -10
+       size 15 25
+       tex 65 65
+       trailspacing 8
+       type smoke
 effect nade_neutral
-underwater
-trailspacing 16
-type bubble
-tex 62 62
-color 0xFFFFFF 0xFFFFFF
-size 1 1
-alpha 256 256 256
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
-
+       alpha 256 256 256
+       bounce 1.500000
+       color 0xFFFFFF 0xFFFFFF
+       gravity -0.125000
+       liquidfriction 4
+       size 1 1
+       tex 62 62
+       trailspacing 16
+       type bubble
+       underwater
+       velocityjitter 16 16 16
 effect nade_red_burn
-trailspacing 1
-type smoke
-color 0xff0000 0xff3c00
-tex 65 65
-size 5 5
-sizeincrease -1
-alpha 100 100 250
-//gravity -0.11
-// fire
+       alpha 100 100 250
+       color 0xff0000 0xff3c00
+       sizeincrease -1
+       size 5 5
+       tex 65 65
+       trailspacing 1
+       type smoke
 effect nade_red_burn
-notunderwater
-trailspacing 64
-type smoke
-color 0xff0000 0xffa2a2
-tex 65 65
-size 45 25
-sizeincrease -30
-alpha 200 200 1000
-// bubbles
+       alpha 200 200 1000
+       color 0xff0000 0xffa2a2
+       notunderwater
+       sizeincrease -30
+       size 45 25
+       tex 65 65
+       trailspacing 64
+       type smoke
 effect nade_red_burn
-underwater
-trailspacing 16
-type bubble
-tex 62 62
-color 0xff0000 0xff3c00
-size 1 1
-alpha 256 256 256
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
+       alpha 256 256 256
+       bounce 1.500000
+       color 0xff0000 0xff3c00
+       gravity -0.125000
+       liquidfriction 4
+       size 1 1
+       tex 62 62
+       trailspacing 16
+       type bubble
+       underwater
+       velocityjitter 16 16 16
 effect nade_red_burn
-trailspacing 16
-type smoke
-color 0xff0000 0xff3c00
-tex 71 73
-size 15 25
-sizeincrease -40
-rotate -180 180 20 -20
-originjitter 2 2 2
-velocityjitter 10 10 10
-alpha 300 900 1500
-
+       alpha 300 900 1500
+       color 0xff0000 0xff3c00
+       originjitter 2 2 2
+       rotate -180 180 20 -20
+       sizeincrease -40
+       size 15 25
+       tex 71 73
+       trailspacing 16
+       type smoke
+       velocityjitter 10 10 10
 effect nade_blue_burn
-trailspacing 1
-type smoke
-color 0x006cff 0x0600ff
-tex 65 65
-size 5 5
-sizeincrease -1
-alpha 100 100 250
-//gravity -0.11
-// fire
+       alpha 100 100 250
+       color 0x006cff 0x0600ff
+       sizeincrease -1
+       size 5 5
+       tex 65 65
+       trailspacing 1
+       type smoke
 effect nade_blue_burn
-notunderwater
-trailspacing 64
-type smoke
-color 0x0600ff 0x9794ff
-tex 65 65
-size 45 25
-sizeincrease -30
-alpha 200 200 1000
-// bubbles
+       alpha 200 200 1000
+       color 0x0600ff 0x9794ff
+       notunderwater
+       sizeincrease -30
+       size 45 25
+       tex 65 65
+       trailspacing 64
+       type smoke
 effect nade_blue_burn
-underwater
-trailspacing 16
-type bubble
-tex 62 62
-color 0x006cff 0x0600ff
-size 1 1
-alpha 256 256 256
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
+       alpha 256 256 256
+       bounce 1.500000
+       color 0x006cff 0x0600ff
+       gravity -0.125000
+       liquidfriction 4
+       size 1 1
+       tex 62 62
+       trailspacing 16
+       type bubble
+       underwater
+       velocityjitter 16 16 16
 effect nade_blue_burn
-trailspacing 16
-type smoke
-color 0x006cff 0x0600ff
-tex 33 33
-size 25 25
-sizeincrease -30
-
+       alpha 300 900 1500
+       color 0x006cff 0x0600ff
+       originjitter 2 2 2
+       rotate -180 180 20 -20
+       sizeincrease -40
+       size 15 25
+       tex 71 73
+       trailspacing 16
+       type smoke
+       velocityjitter 10 10 10
 effect nade_yellow_burn
-trailspacing 1
-type smoke
-color 0xFFFF0F 0xFFFF0F
-tex 65 65
-size 5 5
-sizeincrease -1
-alpha 100 100 250
-//gravity -0.11
-// fire
+       alpha 100 100 250
+       color 0xFFFF0F 0xFFFF0F
+       sizeincrease -1
+       size 5 5
+       tex 65 65
+       trailspacing 1
+       type smoke
 effect nade_yellow_burn
-notunderwater
-trailspacing 64
-type smoke
-color 0xFFFF0F 0xFFFF0F
-tex 65 65
-size 45 25
-sizeincrease -30
-alpha 200 200 1000
-// bubbles
+       alpha 200 200 1000
+       color 0xFFFF0F 0xFFFF0F
+       notunderwater
+       sizeincrease -30
+       size 45 25
+       tex 65 65
+       trailspacing 64
+       type smoke
 effect nade_yellow_burn
-underwater
-trailspacing 16
-type bubble
-tex 62 62
-color 0xFFFF0F 0xFFFF0F
-size 1 1
-alpha 256 256 256
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
+       alpha 256 256 256
+       bounce 1.500000
+       color 0xFFFF0F 0xFFFF0F
+       gravity -0.125000
+       liquidfriction 4
+       size 1 1
+       tex 62 62
+       trailspacing 16
+       type bubble
+       underwater
+       velocityjitter 16 16 16
 effect nade_yellow_burn
-trailspacing 16
-type smoke
-color 0xFFFF0F 0xFFFF0F
-tex 33 33
-size 25 25
-sizeincrease -30
-
+       alpha 300 900 1500
+       color 0xFFFF0F 0xFFFF0F
+       originjitter 2 2 2
+       rotate -180 180 20 -20
+       sizeincrease -40
+       size 15 25
+       tex 71 73
+       trailspacing 16
+       type smoke
+       velocityjitter 10 10 10
 effect nade_pink_burn
-trailspacing 1
-type smoke
-color 0xFF0FFF 0xFF0FFF
-tex 65 65
-size 5 5
-sizeincrease -1
-alpha 100 100 250
-//gravity -0.11
-// fire
+       alpha 100 100 250
+       color 0xFF0FFF 0xFF0FFF
+       sizeincrease -1
+       size 5 5
+       tex 65 65
+       trailspacing 1
+       type smoke
 effect nade_pink_burn
-notunderwater
-trailspacing 64
-type smoke
-color 0xFF0FFF 0xFF0FFF
-tex 65 65
-size 45 25
-sizeincrease -30
-alpha 200 200 1000
-// bubbles
+       alpha 200 200 1000
+       color 0xFF0FFF 0xFF0FFF
+       notunderwater
+       sizeincrease -30
+       size 45 25
+       tex 65 65
+       trailspacing 64
+       type smoke
 effect nade_pink_burn
-underwater
-trailspacing 16
-type bubble
-tex 62 62
-color 0xFF0FFF 0xFF0FFF
-size 1 1
-alpha 256 256 256
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
+       alpha 256 256 256
+       bounce 1.500000
+       color 0xFF0FFF 0xFF0FFF
+       gravity -0.125000
+       liquidfriction 4
+       size 1 1
+       tex 62 62
+       trailspacing 16
+       type bubble
+       underwater
+       velocityjitter 16 16 16
 effect nade_pink_burn
-trailspacing 16
-type smoke
-color 0xFF0FFF 0xFF0FFF
-tex 33 33
-size 25 25
-sizeincrease -30
-
+       alpha 300 900 1500
+       color 0xFF0FFF 0xFF0FFF
+       originjitter 2 2 2
+       rotate -180 180 20 -20
+       sizeincrease -40
+       size 15 25
+       tex 71 73
+       trailspacing 16
+       type smoke
+       velocityjitter 10 10 10
 effect nade_neutral_burn
-trailspacing 1
-type smoke
-color 0xFFFFFF 0xFFFFFF
-tex 65 65
-size 5 5
-sizeincrease -1
-alpha 100 100 250
-//gravity -0.11
-// fire
+       alpha 100 100 250
+       color 0xFFFFFF 0xFFFFFF
+       sizeincrease -1
+       size 5 5
+       tex 65 65
+       trailspacing 1
+       type smoke
 effect nade_neutral_burn
-notunderwater
-trailspacing 64
-type smoke
-color 0xFFFFFF 0xFFFFFF
-tex 65 65
-size 45 25
-sizeincrease -30
-alpha 200 200 1000
-// bubbles
+       alpha 200 200 1000
+       color 0xFFFFFF 0xFFFFFF
+       notunderwater
+       sizeincrease -30
+       size 45 25
+       tex 65 65
+       trailspacing 64
+       type smoke
 effect nade_neutral_burn
-underwater
-trailspacing 16
-type bubble
-tex 62 62
-color 0xFFFFFF 0xFFFFFF
-size 1 1
-alpha 256 256 256
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
+       alpha 256 256 256
+       bounce 1.500000
+       color 0xFFFFFF 0xFFFFFF
+       gravity -0.125000
+       liquidfriction 4
+       size 1 1
+       tex 62 62
+       trailspacing 16
+       type bubble
+       underwater
+       velocityjitter 16 16 16
 effect nade_neutral_burn
-trailspacing 16
-type smoke
-color 0xFFFFFF 0xFFFFFF
-tex 33 33
-size 25 25
-sizeincrease -30
-
+       alpha 300 900 1500
+       color 0xFFFFFF 0xFFFFFF
+       originjitter 2 2 2
+       rotate -180 180 20 -20
+       sizeincrease -40
+       size 15 25
+       tex 71 73
+       trailspacing 16
+       type smoke
+       velocityjitter 10 10 10
 effect nade_blue_explode
-countabsolute 1
-type decal
-tex 8 16
-size 88 88
-alpha 256 256 0
-originjitter 26 26 26
-lightradius 300
-lightradiusfade 1500
-lightcolor 20 20 100
-// shockwave
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 20 20 100
+       lightradiusfade 1500
+       lightradius 300
+       originjitter 26 26 26
+       size 88 88
+       tex 8 16
+       type decal
 effect nade_blue_explode
-type smoke
-countabsolute 1
-tex 33 33
-size 32 32
-sizeincrease 1800
-color 0x80C0FF 0x80C0FF
-alpha 80 80 650
-velocitymultiplier 44
-// fire
+       alpha 80 80 650
+       color 0x80C0FF 0x80C0FF
+       countabsolute 1
+       sizeincrease 1800
+       size 32 32
+       tex 33 33
+       type smoke
+       velocitymultiplier 44
 effect nade_blue_explode
-notunderwater
-count 16
-type smoke
-color 0x629dff 0x0018ff
-tex 48 55
-size 20 24
-sizeincrease 555
-alpha 400 656 2000
-airfriction 30
-originjitter 50 50 50
-velocityjitter 320 320 320
-rotate -180 180 -9 9
-// fire stretched
+       airfriction 30
+       alpha 400 656 2000
+       color 0x629dff 0x0018ff
+       count 16
+       notunderwater
+       originjitter 50 50 50
+       rotate -180 180 -9 9
+       sizeincrease 555
+       size 20 24
+       tex 48 55
+       type smoke
+       velocityjitter 320 320 320
 effect nade_blue_explode
-count 8
-type spark
-tex 48 55
-color 0x629dff 0x0018ff
-size 60 90
-alpha 1500 3000 13000
-stretchfactor 80
-sizeincrease 40
-velocityjitter 30 30 30
-airfriction -9
-//smoke
+       airfriction -9
+       alpha 1500 3000 13000
+       color 0x629dff 0x0018ff
+       count 8
+       sizeincrease 40
+       size 60 90
+       stretchfactor 80
+       tex 48 55
+       type spark
+       velocityjitter 30 30 30
 effect nade_blue_explode
-type smoke
-count 32
-blend alpha
-tex 0 7
-size 60 30
-color 0x222222 0x000000
-alpha 128 328 390
-rotate -180 180 2 -2
-velocityjitter 200 200 200
-velocityoffset 0 0 180
-originjitter 50 50 10
-sizeincrease 50
-airfriction 0.04
-gravity 0.4
-// underwater bubbles
+       airfriction 0.040000
+       alpha 128 328 390
+       blend alpha
+       color 0x222222 0x000000
+       count 32
+       gravity 0.400000
+       originjitter 50 50 10
+       rotate -180 180 2 -2
+       sizeincrease 50
+       size 60 30
+       tex 0 7
+       type smoke
+       velocityjitter 200 200 200
+       velocityoffset 0 0 180
 effect nade_blue_explode
-underwater
-count 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 6
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 196 196 196
-rotate 0 0 0 0
-// bouncing sparks
+       alpha 128 256 64
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 32
+       gravity -0.125000
+       liquidfriction 0.250000
+       originjitter 16 16 16
+       size 3 6
+       tex 62 62
+       type bubble
+       underwater
+       velocityjitter 196 196 196
 effect nade_blue_explode
-notunderwater
-count 8
-type spark
-tex 40 40
-color 0x006cff 0x0600ff
-size 1 2
-alpha 644 956 484
-gravity 1
-airfriction 1
-bounce 1.6
-liquidfriction 0.8
-velocityoffset 0 0 80
-originjitter 16 16 16
-velocityjitter 424 424 624
-// notbouncing sparks
+       airfriction 1
+       alpha 644 956 484
+       bounce 1.600000
+       color 0x006cff 0x0600ff
+       count 8
+       gravity 1
+       liquidfriction 0.800000
+       notunderwater
+       originjitter 16 16 16
+       size 1 2
+       tex 40 40
+       type spark
+       velocityjitter 424 424 624
+       velocityoffset 0 0 80
 effect nade_blue_explode
-count 16
-type spark
-tex 40 40
-color 0x006cff 0x0600ff
-size 1 2
-alpha 644 956 684
-gravity 0.5
-airfriction 0.7
-liquidfriction 0.8
-velocityoffset 0 0 80
-originjitter 16 16 16
-velocityjitter 424 424 624
-// debris
+       airfriction 0.700000
+       alpha 644 956 684
+       color 0x006cff 0x0600ff
+       count 16
+       gravity 0.500000
+       liquidfriction 0.800000
+       originjitter 16 16 16
+       size 1 2
+       tex 40 40
+       type spark
+       velocityjitter 424 424 624
+       velocityoffset 0 0 80
 effect nade_blue_explode
-notunderwater
-count 12
-type alphastatic
-tex 66 68
-color 0x6a3d25 0xcac5b4
-size 2 6
-alpha 644 956 684
-gravity 1.3
-airfriction 0.5
-bounce 1.6
-velocityjitter 324 324 524
-rotate -180 180 -1000 1000
-
+       alpha 644 956 2500
+       color 0x006cff 0x0600ff
+       count 8
+       notunderwater
+       originjitter 64 64 64
+       rotate -180 180 -100 100
+       size 20 40
+       tex 71 73
+       type smoke
+       velocityjitter 324 324 324
 effect nade_red_explode
-countabsolute 1
-type decal
-tex 8 16
-size 88 88
-alpha 256 256 0
-originjitter 26 26 26
-lightradius 300
-lightradiusfade 1500
-lightcolor 100 20 20
-// shockwave
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 100 20 20
+       lightradiusfade 1500
+       lightradius 300
+       originjitter 26 26 26
+       size 88 88
+       tex 8 16
+       type decal
 effect nade_red_explode
-type smoke
-countabsolute 1
-tex 33 33
-size 32 32
-sizeincrease 2200
-color 0xff0000 0xffa2a2
-alpha 80 80 650
-velocitymultiplier 44
-// fire
+       alpha 80 80 650
+       color 0xff0000 0xffa2a2
+       countabsolute 1
+       sizeincrease 1800
+       size 32 32
+       tex 33 33
+       type smoke
+       velocitymultiplier 44
 effect nade_red_explode
-notunderwater
-count 16
-type smoke
-color 0xff0000 0xff4200
-tex 48 55
-size 20 24
-sizeincrease 555
-alpha 400 656 2000
-airfriction 30
-originjitter 50 50 50
-velocityjitter 320 320 320
-rotate -180 180 -9 9
-// fire stretched
+       airfriction 30
+       alpha 400 656 2000
+       color 0xff0000 0xff4200
+       count 16
+       notunderwater
+       originjitter 50 50 50
+       rotate -180 180 -9 9
+       sizeincrease 555
+       size 20 24
+       tex 48 55
+       type smoke
+       velocityjitter 320 320 320
 effect nade_red_explode
-count 8
-type spark
-tex 48 55
-color 0xff0000 0xff4200
-size 60 90
-alpha 1500 3000 13000
-stretchfactor 80
-sizeincrease 40
-velocityjitter 30 30 30
-airfriction -9
-//smoke
+       airfriction -9
+       alpha 1500 3000 13000
+       color 0xff0000 0xff4200
+       count 8
+       sizeincrease 40
+       size 60 90
+       stretchfactor 80
+       tex 48 55
+       type spark
+       velocityjitter 30 30 30
 effect nade_red_explode
-type smoke
-count 32
-blend alpha
-tex 0 7
-size 60 30
-color 0x222222 0x000000
-alpha 128 328 390
-rotate -180 180 2 -2
-velocityjitter 200 200 200
-velocityoffset 0 0 180
-originjitter 50 50 10
-sizeincrease 50
-airfriction 0.04
-gravity 0.4
-// underwater bubbles
+       airfriction 0.040000
+       alpha 128 328 390
+       blend alpha
+       color 0x222222 0x000000
+       count 32
+       gravity 0.400000
+       originjitter 50 50 10
+       rotate -180 180 2 -2
+       sizeincrease 50
+       size 60 30
+       tex 0 7
+       type smoke
+       velocityjitter 200 200 200
+       velocityoffset 0 0 180
 effect nade_red_explode
-underwater
-count 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 6
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 196 196 196
-rotate 0 0 0 0
-// bouncing sparks
+       alpha 128 256 64
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 32
+       gravity -0.125000
+       liquidfriction 0.250000
+       originjitter 16 16 16
+       size 3 6
+       tex 62 62
+       type bubble
+       underwater
+       velocityjitter 196 196 196
 effect nade_red_explode
-notunderwater
-count 8
-type spark
-tex 40 40
-color 0xff0000 0xffa2a2
-size 1 2
-alpha 644 956 484
-gravity 1
-airfriction 1
-bounce 1.6
-liquidfriction 0.8
-velocityoffset 0 0 80
-originjitter 16 16 16
-velocityjitter 424 424 624
-// notbouncing sparks
+       airfriction 1
+       alpha 644 956 484
+       bounce 1.600000
+       color 0xff0000 0xffa2a2
+       count 8
+       gravity 1
+       liquidfriction 0.800000
+       notunderwater
+       originjitter 16 16 16
+       size 1 2
+       tex 40 40
+       type spark
+       velocityjitter 424 424 624
+       velocityoffset 0 0 80
 effect nade_red_explode
-count 16
-type spark
-tex 40 40
-color 0xff0000 0xffa2a2
-size 1 2
-alpha 644 956 684
-gravity 0.5
-airfriction 0.7
-liquidfriction 0.8
-velocityoffset 0 0 80
-originjitter 16 16 16
-velocityjitter 424 424 624
-// debris
+       airfriction 0.700000
+       alpha 644 956 684
+       color 0xff0000 0xffa2a2
+       count 16
+       gravity 0.500000
+       liquidfriction 0.800000
+       originjitter 16 16 16
+       size 1 2
+       tex 40 40
+       type spark
+       velocityjitter 424 424 624
+       velocityoffset 0 0 80
 effect nade_red_explode
-notunderwater
-count 8
-type smoke
-tex 71 73
-color 0xff0000 0xffa2a2
-size 20 40
-alpha 644 956 2500
-originjitter 64 64 64
-velocityjitter 324 324 324
-rotate -180 180 -100 100
-
+       alpha 644 956 2500
+       color 0xff0000 0xffa2a2
+       count 8
+       notunderwater
+       originjitter 64 64 64
+       rotate -180 180 -100 100
+       size 20 40
+       tex 71 73
+       type smoke
+       velocityjitter 324 324 324
 effect nade_yellow_explode
-countabsolute 1
-type decal
-tex 8 16
-size 88 88
-alpha 256 256 0
-originjitter 26 26 26
-lightradius 300
-lightradiusfade 1500
-lightcolor 100 20 20
-// shockwave
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 100 20 20
+       lightradiusfade 1500
+       lightradius 300
+       originjitter 26 26 26
+       size 88 88
+       tex 8 16
+       type decal
 effect nade_yellow_explode
-type smoke
-countabsolute 1
-tex 33 33
-size 32 32
-sizeincrease 2200
-color 0xff0000 0xffa2a2
-alpha 80 80 650
-velocitymultiplier 44
-// fire
+       alpha 80 80 650
+       color 0xff0000 0xffa2a2
+       countabsolute 1
+       sizeincrease 1800
+       size 32 32
+       tex 33 33
+       type smoke
+       velocitymultiplier 44
 effect nade_yellow_explode
-notunderwater
-count 16
-type smoke
-color 0xFFFF0F 0xFFFF0F
-tex 48 55
-size 20 24
-sizeincrease 555
-alpha 400 656 2000
-airfriction 30
-originjitter 50 50 50
-velocityjitter 320 320 320
-rotate -180 180 -9 9
-// fire stretched
+       airfriction 30
+       alpha 400 656 2000
+       color 0xFFFF0F 0xFFFF0F
+       count 16
+       notunderwater
+       originjitter 50 50 50
+       rotate -180 180 -9 9
+       sizeincrease 555
+       size 20 24
+       tex 48 55
+       type smoke
+       velocityjitter 320 320 320
 effect nade_yellow_explode
-count 8
-type spark
-tex 48 55
-color 0xFFFF0F 0xFFFF0F
-size 60 90
-alpha 1500 3000 13000
-stretchfactor 80
-sizeincrease 40
-velocityjitter 30 30 30
-airfriction -9
-//smoke
+       airfriction -9
+       alpha 1500 3000 13000
+       color 0xFFFF0F 0xFFFF0F
+       count 8
+       sizeincrease 40
+       size 60 90
+       stretchfactor 80
+       tex 48 55
+       type spark
+       velocityjitter 30 30 30
 effect nade_yellow_explode
-type smoke
-count 32
-blend alpha
-tex 0 7
-size 60 30
-color 0x222222 0x000000
-alpha 128 328 390
-rotate -180 180 2 -2
-velocityjitter 200 200 200
-velocityoffset 0 0 180
-originjitter 50 50 10
-sizeincrease 50
-airfriction 0.04
-gravity 0.4
-// underwater bubbles
+       airfriction 0.040000
+       alpha 128 328 390
+       blend alpha
+       color 0x222222 0x000000
+       count 32
+       gravity 0.400000
+       originjitter 50 50 10
+       rotate -180 180 2 -2
+       sizeincrease 50
+       size 60 30
+       tex 0 7
+       type smoke
+       velocityjitter 200 200 200
+       velocityoffset 0 0 180
 effect nade_yellow_explode
-underwater
-count 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 6
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 196 196 196
-rotate 0 0 0 0
-// bouncing sparks
+       alpha 128 256 64
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 32
+       gravity -0.125000
+       liquidfriction 0.250000
+       originjitter 16 16 16
+       size 3 6
+       tex 62 62
+       type bubble
+       underwater
+       velocityjitter 196 196 196
 effect nade_yellow_explode
-notunderwater
-count 8
-type spark
-tex 40 40
-color 0xff0000 0xffa2a2
-size 1 2
-alpha 644 956 484
-gravity 1
-airfriction 1
-bounce 1.6
-liquidfriction 0.8
-velocityoffset 0 0 80
-originjitter 16 16 16
-velocityjitter 424 424 624
-// notbouncing sparks
+       airfriction 1
+       alpha 644 956 484
+       bounce 1.600000
+       color 0xff0000 0xffa2a2
+       count 8
+       gravity 1
+       liquidfriction 0.800000
+       notunderwater
+       originjitter 16 16 16
+       size 1 2
+       tex 40 40
+       type spark
+       velocityjitter 424 424 624
+       velocityoffset 0 0 80
 effect nade_yellow_explode
-count 16
-type spark
-tex 40 40
-color 0xff0000 0xffa2a2
-size 1 2
-alpha 644 956 684
-gravity 0.5
-airfriction 0.7
-liquidfriction 0.8
-velocityoffset 0 0 80
-originjitter 16 16 16
-velocityjitter 424 424 624
-// debris
+       airfriction 0.700000
+       alpha 644 956 684
+       color 0xff0000 0xffa2a2
+       count 16
+       gravity 0.500000
+       liquidfriction 0.800000
+       originjitter 16 16 16
+       size 1 2
+       tex 40 40
+       type spark
+       velocityjitter 424 424 624
+       velocityoffset 0 0 80
 effect nade_yellow_explode
-notunderwater
-count 8
-type smoke
-tex 71 73
-color 0xff0000 0xffa2a2
-size 20 40
-alpha 644 956 2500
-originjitter 64 64 64
-velocityjitter 324 324 324
-rotate -180 180 -100 100
-
+       alpha 644 956 2500
+       color 0xff0000 0xffa2a2
+       count 8
+       notunderwater
+       originjitter 64 64 64
+       rotate -180 180 -100 100
+       size 20 40
+       tex 71 73
+       type smoke
+       velocityjitter 324 324 324
 effect nade_pink_explode
-countabsolute 1
-type decal
-tex 8 16
-size 88 88
-alpha 256 256 0
-originjitter 26 26 26
-lightradius 300
-lightradiusfade 1500
-lightcolor 100 20 20
-// shockwave
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 100 20 20
+       lightradiusfade 1500
+       lightradius 300
+       originjitter 26 26 26
+       size 88 88
+       tex 8 16
+       type decal
 effect nade_pink_explode
-type smoke
-countabsolute 1
-tex 33 33
-size 32 32
-sizeincrease 2200
-color 0xff0000 0xffa2a2
-alpha 80 80 650
-velocitymultiplier 44
-// fire
+       alpha 80 80 650
+       color 0xff0000 0xffa2a2
+       countabsolute 1
+       sizeincrease 1800
+       size 32 32
+       tex 33 33
+       type smoke
+       velocitymultiplier 44
 effect nade_pink_explode
-notunderwater
-count 16
-type smoke
-color 0xFF0FFF 0xFF0FFF
-tex 48 55
-size 20 24
-sizeincrease 555
-alpha 400 656 2000
-airfriction 30
-originjitter 50 50 50
-velocityjitter 320 320 320
-rotate -180 180 -9 9
-// fire stretched
+       airfriction 30
+       alpha 400 656 2000
+       color 0xFF0FFF 0xFF0FFF
+       count 16
+       notunderwater
+       originjitter 50 50 50
+       rotate -180 180 -9 9
+       sizeincrease 555
+       size 20 24
+       tex 48 55
+       type smoke
+       velocityjitter 320 320 320
 effect nade_pink_explode
-count 8
-type spark
-tex 48 55
-color 0xFF0FFF 0xFF0FFF
-size 60 90
-alpha 1500 3000 13000
-stretchfactor 80
-sizeincrease 40
-velocityjitter 30 30 30
-airfriction -9
-//smoke
+       airfriction -9
+       alpha 1500 3000 13000
+       color 0xFF0FFF 0xFF0FFF
+       count 8
+       sizeincrease 40
+       size 60 90
+       stretchfactor 80
+       tex 48 55
+       type spark
+       velocityjitter 30 30 30
 effect nade_pink_explode
-type smoke
-count 32
-blend alpha
-tex 0 7
-size 60 30
-color 0x222222 0x000000
-alpha 128 328 390
-rotate -180 180 2 -2
-velocityjitter 200 200 200
-velocityoffset 0 0 180
-originjitter 50 50 10
-sizeincrease 50
-airfriction 0.04
-gravity 0.4
-// underwater bubbles
+       airfriction 0.040000
+       alpha 128 328 390
+       blend alpha
+       color 0x222222 0x000000
+       count 32
+       gravity 0.400000
+       originjitter 50 50 10
+       rotate -180 180 2 -2
+       sizeincrease 50
+       size 60 30
+       tex 0 7
+       type smoke
+       velocityjitter 200 200 200
+       velocityoffset 0 0 180
 effect nade_pink_explode
-underwater
-count 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 6
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 196 196 196
-rotate 0 0 0 0
-// bouncing sparks
+       alpha 128 256 64
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 32
+       gravity -0.125000
+       liquidfriction 0.250000
+       originjitter 16 16 16
+       size 3 6
+       tex 62 62
+       type bubble
+       underwater
+       velocityjitter 196 196 196
 effect nade_pink_explode
-notunderwater
-count 8
-type spark
-tex 40 40
-color 0xff0000 0xffa2a2
-size 1 2
-alpha 644 956 484
-gravity 1
-airfriction 1
-bounce 1.6
-liquidfriction 0.8
-velocityoffset 0 0 80
-originjitter 16 16 16
-velocityjitter 424 424 624
-// notbouncing sparks
+       airfriction 1
+       alpha 644 956 484
+       bounce 1.600000
+       color 0xff0000 0xffa2a2
+       count 8
+       gravity 1
+       liquidfriction 0.800000
+       notunderwater
+       originjitter 16 16 16
+       size 1 2
+       tex 40 40
+       type spark
+       velocityjitter 424 424 624
+       velocityoffset 0 0 80
 effect nade_pink_explode
-count 16
-type spark
-tex 40 40
-color 0xff0000 0xffa2a2
-size 1 2
-alpha 644 956 684
-gravity 0.5
-airfriction 0.7
-liquidfriction 0.8
-velocityoffset 0 0 80
-originjitter 16 16 16
-velocityjitter 424 424 624
-// debris
+       airfriction 0.700000
+       alpha 644 956 684
+       color 0xff0000 0xffa2a2
+       count 16
+       gravity 0.500000
+       liquidfriction 0.800000
+       originjitter 16 16 16
+       size 1 2
+       tex 40 40
+       type spark
+       velocityjitter 424 424 624
+       velocityoffset 0 0 80
 effect nade_pink_explode
-notunderwater
-count 8
-type smoke
-tex 71 73
-color 0xff0000 0xffa2a2
-size 20 40
-alpha 644 956 2500
-originjitter 64 64 64
-velocityjitter 324 324 324
-rotate -180 180 -100 100
-
-effect nade_neutral_explode
-countabsolute 1
-type decal
-tex 8 16
-size 88 88
-alpha 256 256 0
-originjitter 26 26 26
-lightradius 300
-lightradiusfade 1500
-lightcolor 100 20 20
-// shockwave
+       alpha 644 956 2500
+       color 0xff0000 0xffa2a2
+       count 8
+       notunderwater
+       originjitter 64 64 64
+       rotate -180 180 -100 100
+       size 20 40
+       tex 71 73
+       type smoke
+       velocityjitter 324 324 324
 effect nade_neutral_explode
-type smoke
-countabsolute 1
-tex 33 33
-size 32 32
-sizeincrease 2200
-color 0xff0000 0xffa2a2
-alpha 80 80 650
-velocitymultiplier 44
-// fire
+       alpha 256 256 0
+       countabsolute 1
+       lightcolor 100 20 20
+       lightradiusfade 1500
+       lightradius 300
+       originjitter 26 26 26
+       size 88 88
+       tex 8 16
+       type decal
 effect nade_neutral_explode
-notunderwater
-count 16
-type smoke
-color 0xFFFFFF 0xFFFFFF
-tex 48 55
-size 20 24
-sizeincrease 555
-alpha 400 656 2000
-airfriction 30
-originjitter 50 50 50
-velocityjitter 320 320 320
-rotate -180 180 -9 9
-// fire stretched
+       alpha 80 80 650
+       color 0xff0000 0xffa2a2
+       countabsolute 1
+       sizeincrease 1800
+       size 32 32
+       tex 33 33
+       type smoke
+       velocitymultiplier 44
 effect nade_neutral_explode
-count 8
-type spark
-tex 48 55
-color 0xFFFFFF 0xFFFFFF
-size 60 90
-alpha 1500 3000 13000
-stretchfactor 80
-sizeincrease 40
-velocityjitter 30 30 30
-airfriction -9
-//smoke
+       airfriction 30
+       alpha 400 656 2000
+       color 0xFFFFFF 0xFFFFFF
+       count 16
+       notunderwater
+       originjitter 50 50 50
+       rotate -180 180 -9 9
+       sizeincrease 555
+       size 20 24
+       tex 48 55
+       type smoke
+       velocityjitter 320 320 320
 effect nade_neutral_explode
-type smoke
-count 32
-blend alpha
-tex 0 7
-size 60 30
-color 0x222222 0x000000
-alpha 128 328 390
-rotate -180 180 2 -2
-velocityjitter 200 200 200
-velocityoffset 0 0 180
-originjitter 50 50 10
-sizeincrease 50
-airfriction 0.04
-gravity 0.4
-// underwater bubbles
+       airfriction -9
+       alpha 1500 3000 13000
+       color 0xFFFFFF 0xFFFFFF
+       count 8
+       sizeincrease 40
+       size 60 90
+       stretchfactor 80
+       tex 48 55
+       type spark
+       velocityjitter 30 30 30
 effect nade_neutral_explode
-underwater
-count 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 6
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 196 196 196
-rotate 0 0 0 0
-// bouncing sparks
+       airfriction 0.040000
+       alpha 128 328 390
+       blend alpha
+       color 0x222222 0x000000
+       count 32
+       gravity 0.400000
+       originjitter 50 50 10
+       rotate -180 180 2 -2
+       sizeincrease 50
+       size 60 30
+       tex 0 7
+       type smoke
+       velocityjitter 200 200 200
+       velocityoffset 0 0 180
 effect nade_neutral_explode
-notunderwater
-count 8
-type spark
-tex 40 40
-color 0xff0000 0xffa2a2
-size 1 2
-alpha 644 956 484
-gravity 1
-airfriction 1
-bounce 1.6
-liquidfriction 0.8
-velocityoffset 0 0 80
-originjitter 16 16 16
-velocityjitter 424 424 624
-// notbouncing sparks
+       alpha 128 256 64
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 32
+       gravity -0.125000
+       liquidfriction 0.250000
+       originjitter 16 16 16
+       size 3 6
+       tex 62 62
+       type bubble
+       underwater
+       velocityjitter 196 196 196
 effect nade_neutral_explode
-count 16
-type spark
-tex 40 40
-color 0xff0000 0xffa2a2
-size 1 2
-alpha 644 956 684
-gravity 0.5
-airfriction 0.7
-liquidfriction 0.8
-velocityoffset 0 0 80
-originjitter 16 16 16
-velocityjitter 424 424 624
-// debris
+       airfriction 1
+       alpha 644 956 484
+       bounce 1.600000
+       color 0xff0000 0xffa2a2
+       count 8
+       gravity 1
+       liquidfriction 0.800000
+       notunderwater
+       originjitter 16 16 16
+       size 1 2
+       tex 40 40
+       type spark
+       velocityjitter 424 424 624
+       velocityoffset 0 0 80
 effect nade_neutral_explode
-notunderwater
-count 8
-type smoke
-tex 71 73
-color 0xff0000 0xffa2a2
-size 20 40
-alpha 644 956 2500
-originjitter 64 64 64
-velocityjitter 324 324 324
-rotate -180 180 -100 100
-
-// shockwave_attack
-// used nowhere in code
-effect shockwave_attack // glow and light
-       //countabsolute 1
-       //type smoke
-       //color 0xcc0000 0xff0000
-       //tex 65 65
-       //size 10 15
-       //alpha 256 512 6280
-       //airfriction 10
-       //sizeincrease 1.5
-       //stretchfactor 2
-       //lightradius 200
-       //lightradiusfade 2000
-       //lightcolor 3 0.1 0.1
-effect shockwave_attack // electricity
-       count 1
+       airfriction 0.700000
+       alpha 644 956 684
+       color 0xff0000 0xffa2a2
+       count 16
+       gravity 0.500000
+       liquidfriction 0.800000
+       originjitter 16 16 16
+       size 1 2
+       tex 40 40
        type spark
-       color 0xb44215 0xff0000
-       tex 43 43
-       size 5 7
-       bounce 0
-       alpha 4096 4096 20000
+       velocityjitter 424 424 624
+       velocityoffset 0 0 80
+effect nade_neutral_explode
+       alpha 644 956 2500
+       color 0xff0000 0xffa2a2
+       count 8
+       notunderwater
+       originjitter 64 64 64
+       rotate -180 180 -100 100
+       size 20 40
+       tex 71 73
+       type smoke
+       velocityjitter 324 324 324
+effect shockwave_attack
        airfriction 1
+       alpha 4096 4096 20000
+       color 0xb44215 0xff0000
+       count 1
        originjitter 2 2 2
-       velocityjitter 10 10 10
-       velocitymultiplier 10
-       sizeincrease 1.5
-       stretchfactor 2.3
        rotate -180 180 4000 -4000
-effect shockwave_attack // fire
-       count 1
+       sizeincrease 1.500000
+       size 5 7
+       stretchfactor 2.300000
+       tex 43 43
        type spark
-       color 0xff4200 0xff0000
-       tex 8 15
-       size 7 9
-       bounce 0
-       alpha 4096 4096 20000
+       velocityjitter 10 10 10
+       velocitymultiplier 10
+effect shockwave_attack
        airfriction 1
+       alpha 4096 4096 20000
+       color 0xff4200 0xff0000
+       count 1
        originjitter 2 2 2
+       sizeincrease 1.500000
+       size 7 9
+       stretchfactor 2
+       tex 8 15
+       type spark
        velocityjitter 10 10 10
        velocitymultiplier 10
-       sizeincrease 1.5
-       stretchfactor 2
-
-// ARC
-// used in qcsrc/server/w_arc.qc
-effect arc_lightning // impact decal
-       countabsolute 1
-       type decal
-       tex 16 32 // fps killer, spamming decals like that
-       size 16 16
+effect arc_lightning
        alpha 32 32 0
-       originjitter 2 2 2
-       lightradius 50
+       countabsolute 1
+       lightcolor 3.1 4.4 10
        lightradiusfade 200
-       lightcolor 3.125 4.375 10
-
-effect arc_lightning // impact sparks
-       type static
+       lightradius 50
+       originjitter 2 2 2
+       size 16 16
+       tex 16 32
+       type decal
+effect arc_lightning
+       airfriction 110
+       alpha 256 256 512
+       color 0xDDFDFF 0xFDFDFF
        count 100
-       tex 71 74
+       originjitter 20 20 20
        rotate 0 360 -36000 36000
-       stretchfactor 1
-       size 0 5
        sizeincrease -5
-       color 0xDDFDFF 0xFDFDFF
-       alpha 256 256 512
-       originjitter 20 20 20
+       size 0 5
+       stretchfactor 1
+       tex 71 74
+       type static
        velocityjitter 250 250 250
        velocitymultiplier 100
-       airfriction 110
-
-effect arc_lightning // impact sparks (underwater)
-       type static
-       underwater
+effect arc_lightning
+       airfriction 5
+       alpha 256 256 512
+       color 0xDDFDFF 0xFDFDFF
        count 100
-       tex 71 74
+       liquidfriction 5
+       orientation spark
+       originjitter 20 20 20
        rotate 0 360 -36000 36000
-       stretchfactor 1
-       size 0 5
        sizeincrease -5
-       color 0xDDFDFF 0xFDFDFF
-       alpha 256 256 512
-       originjitter 20 20 20
+       size 0 5
+       stretchfactor 1
+       tex 71 74
+       type static
+       underwater
        velocityjitter 250 250 250
-       // underwater
-       orientation spark
        velocitymultiplier 20
-       airfriction 5
-       liquidfriction 5
-
-effect arc_beam // sparks on beam
-       type spark
-       stretchfactor 1
-       rotate 0 360 360 1000
-       time 0.05 0.05
-       color 0xfafad2 0xffffff
-       alpha 256 256 16384
+effect arc_beam
        airfriction -10
-       originoffset 0 0 0
-       relativeoriginoffset 10 0 0
+       alpha 256 256 16384
+       color 0xfafad2 0xffffff
        originjitter 3 3 3
-       velocityoffset 0 0 0
-       velocityjitter 100 100 100
-       velocitymultiplier 200
-       //lightcolor 0 0 0
-       trailspacing 10
+       relativeoriginoffset 10 0 0
+       rotate 0 360 360 1000
+       stretchfactor 1
        tex 71 74
-
-effect arc_beam // sparks on beam (underwater)
+       time 0.050000 0.050000
+       trailspacing 10
        type spark
-       underwater
-       stretchfactor 1
-       rotate 0 360 360 1000
-       time 0.001 0.001
-       color 0xfafad2 0xffffff
+       velocityjitter 100 100 100
+       velocitymultiplier 200
+effect arc_beam
        alpha 256 256 16384
+       color 0xfafad2 0xffffff
        liquidfriction -10
-       originoffset 0 0 0
-       relativeoriginoffset 10 0 0
        originjitter 30 30 30
-       velocityoffset 0 0 0
+       relativeoriginoffset 10 0 0
+       rotate 0 360 360 1000
+       stretchfactor 1
+       tex 71 74
+       time 0.001000 0.001000
+       trailspacing 10
+       type spark
+       underwater
        velocityjitter 100 100 100
        velocitymultiplier 200
-       //lightcolor 0 0 0
-       trailspacing 10
-       tex 71 74
-
-// ARC healing effect
-effect arc_beam_heal // bubble this...
-       type static
-       trailspacing 1500
-       tex 74 74
-       color 0x20FF20 0x40FF40
-       size 0.1 0.1
-       sizeincrease 20
-       alpha 2048 2048 256
-       //time 0.8 0.8
+effect arc_beam_heal
        airfriction -20
-       type smoke
+       alpha 2048 2048 256
+       color 0x20FF20 0x40FF40
        relativeoriginoffset 5 0 0
        relativevelocityoffset 100 0 0
+       sizeincrease 20
+       size 0.100000 0.100000
+       tex 74 74
+       trailspacing 1500
+       type smoke
        velocityjitter 3 3 3
        velocitymultiplier 200
-
-effect arc_beam_healimpact // healing "aura"
-       type smoke
-       countabsolute 1
-       tex 33 33
-       size 32 32
-       sizeincrease -1000
-       color 0x00ff00 0x84c52f
+effect arc_beam_healimpact
        alpha 40 40 350
-       velocitymultiplier 44
-       lightradius 20
+       color 0x00ff00 0x84c52f
+       countabsolute 1
+       lightcolor 0 4.4 0
        lightradiusfade 150
-       lightcolor 0 4.375 0
-
-effect arc_beam_healimpact // rising "smoke"
+       lightradius 20
+       sizeincrease -1000
+       size 32 32
+       tex 33 33
        type smoke
-       count 15
-       color 0x00ff00 0x84c52f
-       tex 40 40
-       size 0.5 1
-       alpha 200 456 512
+       velocitymultiplier 44
+effect arc_beam_healimpact
        airfriction 3
+       alpha 200 456 512
+       color 0x00ff00 0x84c52f
+       count 15
        gravity -2
-       velocityjitter 120 120 420
        rotate -180 180 -90 90
-
-effect arc_smoke // arc heat smoke  (notunderwater)
-       notunderwater
-       count 2
+       size 0.500000 1
+       tex 40 40
        type smoke
-       tex 0 8
+       velocityjitter 120 120 420
+effect arc_smoke
+       airfriction 1
+       alpha 32 64 48
        color 0x4c453f 0x2a241f
-       size 5 10
+       count 2
+       gravity -0.125000
+       notunderwater
+       rotate 0 360 -180 180
        sizeincrease 10
-       alpha 32 64 48
-       gravity -0.125
-       originjitter 0 0 0
+       size 5 10
+       tex 0 8
+       type smoke
        velocityjitter 0 0 16
-       airfriction 1
-       rotate 0 360 -180 180
-
-effect arc_smoke // arc heat bubbles  (underwater)
-       underwater
-       count 2
-       type bubble
-       tex 62 62
-       color 0x404040 0x808080
-       size 0.1 1
+effect arc_smoke
        alpha 170 256 64
-       gravity -0.125
-       bounce 1.5
-       liquidfriction 0.25
+       bounce 1.500000
+       color 0x404040 0x808080
+       count 2
+       gravity -0.125000
+       liquidfriction 0.250000
        originjitter 6 6 6
+       size 0.100000 1
+       tex 62 62
+       type bubble
+       underwater
        velocityjitter 16 16 16
-
-effect arc_overheat // arc overheat electric bolts
-       tex 43 43
-       count 24
-       type spark
-       color 0xffffff 0x9271fb
-       size 6 12
-       sizeincrease -24
-       alpha 128 128 292
-       gravity -0.4
+effect arc_overheat
        airfriction 5
+       alpha 128 128 292
+       color 0xffffff 0x9271fb
+       count 24
+       gravity -0.400000
        liquidfriction 10
-       velocityjitter 256 256 256
        originjitter 10 10 10
-       
-effect arc_overheat_fire // arc overheat bouncing sparks
-       count 1
+       sizeincrease -24
+       size 6 12
+       tex 43 43
        type spark
-       color 0x4444ff 0xeeeeff
-       size 0.4 1
+       velocityjitter 256 256 256
+effect arc_overheat_fire
        alpha 0 256 640
+       bounce 1.500000
+       color 0x4444ff 0xeeeeff
+       count 1
        gravity 1
-       bounce 1.5
-       velocityoffset 0 0 80
-       velocityjitter 92 92 92
-       originjitter 6 6 6
        liquidfriction 5
+       originjitter 6 6 6
+       size 0.400000 1
+       type spark
+       velocityjitter 92 92 92
        velocitymultiplier 80
-
-// yellowflag_touch -- effects for touching the yellow flag
-// used nowhere in code
-effect yellowflag_touch
-count 35
-type spark
-tex 40 40
-color 0xFFFF0F 0xFFFF0F
-size 1 3
-alpha 0 256 556
-gravity 1
-bounce 1.5
-originjitter 1 1 1
-velocityjitter 300 300 300
-velocitymultiplier 0.5
-airfriction 3
-
-// pinkflag_touch -- effects for touching the pink flag
-// used nowhere in code
-effect pinkflag_touch
-count 35
-type spark
-tex 40 40
-color 0xFF0FFF 0xFF0FFF
-size 1 3
-alpha 0 256 556
-gravity 1
-bounce 1.5
-originjitter 1 1 1
-velocityjitter 300 300 300
-velocitymultiplier 0.5
-airfriction 3
-
-// neutralflag_touch -- effects for touching the neutral flag
-// used nowhere in code
-effect neutralflag_touch
-count 35
-type spark
-tex 40 40
-color 0xFFFFFF 0xFFFFFF
-size 1 3
-alpha 0 256 556
-gravity 1
-bounce 1.5
-originjitter 1 1 1
-velocityjitter 300 300 300
-velocitymultiplier 0.5
-airfriction 3
-
-// yellow_pass
-// used nowhere in code
-effect yellow_pass
-trailspacing 64
-color 0xFFFF0F 0xFFFF0F
-size 2 2
-tex 32 32
-alpha 64 128 64
-airfriction 5
-sizeincrease 2
-type static
-effect yellow_pass
-trailspacing 12
-color 0xFFFF0F 0xFFFF0F
-size 1 1
-tex 0 8
-alpha 32 64 32
-airfriction 9
-sizeincrease 8
-velocityjitter 64 64 64
-type static
-effect yellow_pass
-trailspacing 12
-color 0xFFFF0F 0xFFFF0F
-size 4 4
-//tex 48 55
-alpha 256 256 1280
-type static
-
-// pink_pass
-// used nowhere in code
-effect pink_pass
-trailspacing 64
-color 0xFFFFFF 0xFFFFFF
-size 2 2
-tex 32 32
-alpha 64 128 64
-airfriction 5
-sizeincrease 2
-type static
-effect pink_pass
-trailspacing 12
-color 0xFFFFFF 0xFFFFFF
-size 1 1
-tex 0 8
-alpha 32 64 32
-airfriction 9
-sizeincrease 8
-velocityjitter 64 64 64
-type static
-effect pink_pass
-trailspacing 12
-color 0xFFFFFF 0xFFFFFF
-size 4 4
-//tex 48 55
-alpha 256 256 1280
-type static
-
-// neutral_pass
-// used nowhere in code
-effect neutral_pass
-trailspacing 64
-color 0xFFFFFF 0xFFFFFF
-size 2 2
-tex 32 32
-alpha 64 128 64
-airfriction 5
-sizeincrease 2
-type static
-effect neutral_pass
-trailspacing 12
-color 0xFFFFFF 0xFFFFFF
-size 1 1
-tex 0 8
-alpha 32 64 32
-airfriction 9
-sizeincrease 8
-velocityjitter 64 64 64
-type static
-effect neutral_pass
-trailspacing 12
-color 0xFFFFFF 0xFFFFFF
-size 4 4
-//tex 48 55
-alpha 256 256 1280
-type static
-
-// yellow_cap -- yellow team capture effect
-effect yellow_cap
-count 500
-type spark
-tex 64 64
-color 0xFFFF0F 0xFFFF0F
-size 1 1
-alpha 0 256 100
-stretchfactor 2
-//gravity 1
-bounce 1.5
-originjitter 1 1 1
-velocityjitter 1000 1000 1500
-velocitymultiplier 0.5
-airfriction 2
-stretchfactor 0.6
-effect yellow_cap
-countabsolute 1
-type smoke
-tex 65 65
-size 150 150
-alpha 190 190 180
-sizeincrease -80
-color 0xFFFF0F 0xFFFF0F
-
-// pink_cap -- pink team capture effect
-effect pink_cap
-count 500
-type spark
-tex 64 64
-color 0xFF0FFF 0xFF0FFF
-size 1 1
-alpha 0 256 100
-stretchfactor 2
-//gravity 1
-bounce 1.5
-originjitter 1 1 1
-velocityjitter 1000 1000 1500
-velocitymultiplier 0.5
-airfriction 2
-stretchfactor 0.6
-effect pink_cap
-countabsolute 1
-type smoke
-tex 65 65
-size 150 150
-alpha 190 190 180
-sizeincrease -80
-color 0xFF0FFF 0xFF0FFF
-
-// relic_resistance effect, used by the relics mutator
-// used in qcsrc/server/mutators/relics.qc: pointparticles(particleeffectnum(mdl), e.origin, '0 0 0', 1);
+       velocityoffset 0 0 80
 effect relic_resistance
-count 20
-type static
-color 0x00ff80 0x00ff80
-size 1.5 1.5
-alpha 128 256 256
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 8 8 32
-velocityjitter 64 64 32
-
-// relic_regeneration effect, used by the relics mutator
-// used in qcsrc/server/mutators/relics.qc: pointparticles(particleeffectnum(mdl), e.origin, '0 0 0', 1);
+       airfriction 0.200000
+       alpha 128 256 256
+       color 0x00ff80 0x00ff80
+       count 20
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 8 8 32
+       size 1.500000 1.500000
+       type static
+       velocityjitter 64 64 32
 effect relic_regeneration
-count 1
-type static
-color 0x00ffff 0x00ffff
-size 1.5 1.5
-alpha 128 256 256
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 8 8 32
-velocityjitter 64 64 32
-
-// relic_vempire effect, used by the relics mutator
-// used in qcsrc/server/mutators/relics.qc: pointparticles(particleeffectnum(mdl), e.origin, '0 0 0', 1);
+       airfriction 0.200000
+       alpha 128 256 256
+       color 0x00ffff 0x00ffff
+       count 1
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 8 8 32
+       size 1.500000 1.500000
+       type static
+       velocityjitter 64 64 32
 effect relic_vampire
-count 20
-type static
-color 0xff00ff 0xff00ff
-size 1.5 1.5
-alpha 128 256 256
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 8 8 32
-velocityjitter 64 64 32
-
-// relic_ammo effect, used by the relics mutator
-// used in qcsrc/server/mutators/relics.qc: pointparticles(particleeffectnum(mdl), e.origin, '0 0 0', 1);
+       airfriction 0.200000
+       alpha 128 256 256
+       color 0xff00ff 0xff00ff
+       count 20
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 8 8 32
+       size 1.500000 1.500000
+       type static
+       velocityjitter 64 64 32
 effect relic_ammo
-count 1
-type static
-color 0x80ff00 0x80ff00
-size 1.5 1.5
-alpha 128 256 256
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 8 8 32
-velocityjitter 64 64 32
-
-// relic_damage effect, used by the relics mutator
-// used in qcsrc/server/mutators/relics.qc: pointparticles(particleeffectnum(mdl), e.origin, '0 0 0', 1);
+       airfriction 0.200000
+       alpha 128 256 256
+       color 0x80ff00 0x80ff00
+       count 1
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 8 8 32
+       size 1.500000 1.500000
+       type static
+       velocityjitter 64 64 32
 effect relic_damage
-count 20
-type static
-color 0xff0000 0xff0000
-size 1.5 1.5
-alpha 128 256 256
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 8 8 32
-velocityjitter 64 64 32
-
-// relic_splashdamage effect, used by the relics mutator
-// used in qcsrc/server/mutators/relics.qc: pointparticles(particleeffectnum(mdl), e.origin, '0 0 0', 1);
+       airfriction 0.200000
+       alpha 128 256 256
+       color 0xff0000 0xff0000
+       count 20
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 8 8 32
+       size 1.500000 1.500000
+       type static
+       velocityjitter 64 64 32
 effect relic_ssplashdamage
-count 20
-type static
-color 0xff8000 0xff8000
-size 1.5 1.5
-alpha 128 256 256
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 8 8 32
-velocityjitter 64 64 32
-
-// relic_firingspeed effect, used by the relics mutator
-// used in qcsrc/server/mutators/relics.qc: pointparticles(particleeffectnum(mdl), e.origin, '0 0 0', 1);
+       airfriction 0.200000
+       alpha 128 256 256
+       color 0xff8000 0xff8000
+       count 20
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 8 8 32
+       size 1.500000 1.500000
+       type static
+       velocityjitter 64 64 32
 effect relic_firingspeed
-count 20
-type static
-color 0xffff00 0xffff00
-size 1.5 1.5
-alpha 128 256 256
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 8 8 32
-velocityjitter 64 64 32
-
-// relic_disability effect, used by the relics mutator
-// used in qcsrc/server/mutators/relics.qc: pointparticles(particleeffectnum(mdl), e.origin, '0 0 0', 1);
+       airfriction 0.200000
+       alpha 128 256 256
+       color 0xffff00 0xffff00
+       count 20
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 8 8 32
+       size 1.500000 1.500000
+       type static
+       velocityjitter 64 64 32
 effect relic_disability
-count 20
-type static
-color 0x0000ff 0x0000ff
-size 1.5 1.5
-alpha 128 256 256
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 8 8 32
-velocityjitter 64 64 32
-
-// relic_disability_curse effect, used by the relics mutator
-// used in qcsrc/server/mutators/relics.qc: pointparticles(particleeffectnum(mdl), e.origin, '0 0 0', 1);
+       airfriction 0.200000
+       alpha 128 256 256
+       color 0x0000ff 0x0000ff
+       count 20
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 8 8 32
+       size 1.500000 1.500000
+       type static
+       velocityjitter 64 64 32
 effect relic_disability_curse
-count 1
-type static
-color 0x000080 0x000080
-size 1.5 1.5
-alpha 128 256 256
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 8 8 32
-velocityjitter 64 64 32
-
-// relic_teamboost effect, used by the relics mutator
-// used in qcsrc/server/mutators/relics.qc: pointparticles(particleeffectnum(mdl), e.origin, '0 0 0', 1);
+       airfriction 0.200000
+       alpha 128 256 256
+       color 0x000080 0x000080
+       count 1
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 8 8 32
+       size 1.500000 1.500000
+       type static
+       velocityjitter 64 64 32
 effect relic_teamboost
-count 20
-type static
-color 0xffffff 0xffffff
-size 1.5 1.5
-alpha 128 256 256
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 8 8 32
-velocityjitter 64 64 32
-
-// relic_teamboost_boost effect, used by the relics mutator
-// used in qcsrc/server/mutators/relics.qc: pointparticles(particleeffectnum(mdl), e.origin, '0 0 0', 1);
+       airfriction 0.200000
+       alpha 128 256 256
+       color 0xffffff 0xffffff
+       count 20
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 8 8 32
+       size 1.500000 1.500000
+       type static
+       velocityjitter 64 64 32
 effect relic_teamboost_boost
-count 1
-type static
-color 0x808080 0x808080
-size 1.5 1.5
-alpha 128 256 256
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 8 8 32
-velocityjitter 64 64 32
-
-// relic_speed effect, used by the relics mutator
-// used in qcsrc/server/mutators/relics.qc: pointparticles(particleeffectnum(mdl), e.origin, '0 0 0', 1);
+       airfriction 0.200000
+       alpha 128 256 256
+       color 0x808080 0x808080
+       count 1
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 8 8 32
+       size 1.500000 1.500000
+       type static
+       velocityjitter 64 64 32
 effect relic_speed
-count 1
-type static
-color 0x80ffff 0x80ffff
-size 1.5 1.5
-alpha 128 256 256
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 8 8 32
-velocityjitter 64 64 32
-
-// relic_jump effect, used by the relics mutator
-// used in qcsrc/server/mutators/relics.qc: pointparticles(particleeffectnum(mdl), e.origin, '0 0 0', 1);
+       airfriction 0.200000
+       alpha 128 256 256
+       color 0x80ffff 0x80ffff
+       count 1
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 8 8 32
+       size 1.500000 1.500000
+       type static
+       velocityjitter 64 64 32
 effect relic_jump
-count 20
-type static
-color 0xffff80 0xffff80
-size 1.5 1.5
-alpha 128 256 256
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 8 8 32
-velocityjitter 64 64 32
-
-// relic_flight effect, used by the relics mutator
-// used in qcsrc/server/mutators/relics.qc: pointparticles(particleeffectnum(mdl), e.origin, '0 0 0', 1);
+       airfriction 0.200000
+       alpha 128 256 256
+       color 0xffff80 0xffff80
+       count 20
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 8 8 32
+       size 1.500000 1.500000
+       type static
+       velocityjitter 64 64 32
 effect relic_flight
-count 1
-type static
-color 0x8080ff 0x8080ff
-size 1.5 1.5
-alpha 128 256 256
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 8 8 32
-velocityjitter 64 64 32
-
-// relic_radioactive effect, used by the relics mutator
-// used in qcsrc/server/mutators/relics.qc: pointparticles(particleeffectnum(mdl), e.origin, '0 0 0', 1);
+       airfriction 0.200000
+       alpha 128 256 256
+       color 0x8080ff 0x8080ff
+       count 1
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 8 8 32
+       size 1.500000 1.500000
+       type static
+       velocityjitter 64 64 32
 effect relic_radioactive
-count 20
-type static
-color 0x00ff00 0x00ff00
-size 1.5 1.5
-alpha 128 256 256
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 8 8 32
-velocityjitter 64 64 32
-
-// relic_resurrection effect, used by the relics mutator
-// used in qcsrc/server/mutators/relics.qc: pointparticles(particleeffectnum(mdl), e.origin, '0 0 0', 1);
+       airfriction 0.200000
+       alpha 128 256 256
+       color 0x00ff00 0x00ff00
+       count 20
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 8 8 32
+       size 1.500000 1.500000
+       type static
+       velocityjitter 64 64 32
 effect relic_resurrection
-count 20
-type static
-color 0xff0080 0xff0080
-size 1.5 1.5
-alpha 128 256 256
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 8 8 32
-velocityjitter 64 64 32
-
-// relic_vengeance effect, used by the relics mutator
-// used in qcsrc/server/mutators/relics.qc: pointparticles(particleeffectnum(mdl), e.origin, '0 0 0', 1);
+       airfriction 0.200000
+       alpha 128 256 256
+       color 0xff0080 0xff0080
+       count 20
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 8 8 32
+       size 1.500000 1.500000
+       type static
+       velocityjitter 64 64 32
 effect relic_vengeance
-count 20
-type static
-color 0xff8080 0xff8080
-size 1.5 1.5
-alpha 128 256 256
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 8 8 32
-velocityjitter 64 64 32
-
-// rocketminsta laser trail - red
+       airfriction 0.200000
+       alpha 128 256 256
+       color 0xff8080 0xff8080
+       count 20
+       gravity -0.100000
+       liquidfriction 0.800000
+       originjitter 8 8 32
+       size 1.500000 1.500000
+       type static
+       velocityjitter 64 64 32
 effect rocketminsta_laser_red
-trailspacing 2
-type static
-color 0xFF0F0F 0xFF0F0F
-size 3 3
-tex 38 38
-alpha 256 256 968
-//velocityjitter 16 16 16
-lightradius 90
-lighttime 0
-lightcolor 1.5 3 6
-velocitymultiplier -0.1
-// bright sparks
+       alpha 256 256 968
+       color 0xFF0F0F 0xFF0F0F
+       lightcolor 1.5 3 6
+       lightradius 90
+       size 3 3
+       tex 38 38
+       trailspacing 2
+       type static
+       velocitymultiplier -0.100000
 effect rocketminsta_laser_red
-trailspacing 12
-count 1.5
-type snow
-tex 42 42
-color 0xFF0F0F 0xFF0F0F
-size 2 4
-sizeincrease -20
-alpha 444 512 1866
-bounce 1
-velocityoffset 0 0 15
-airfriction 12
-originjitter 1 1 1
-velocityjitter 50 50 50
-
-// rocketminsta laser trail - blue
+       airfriction 12
+       alpha 444 512 1866
+       bounce 1
+       color 0xFF0F0F 0xFF0F0F
+       count 1.500000
+       originjitter 1 1 1
+       sizeincrease -20
+       size 2 4
+       tex 42 42
+       trailspacing 12
+       type snow
+       velocityjitter 50 50 50
+       velocityoffset 0 0 15
 effect rocketminsta_laser_blue
-trailspacing 2
-type static
-color 0x0F0FFF 0x0F0FFF
-size 3 3
-tex 38 38
-alpha 256 256 968
-//velocityjitter 16 16 16
-lightradius 90
-lighttime 0
-lightcolor 1.5 3 6
-velocitymultiplier -0.1
-// bright sparks
+       alpha 256 256 968
+       color 0x0F0FFF 0x0F0FFF
+       lightcolor 1.5 3 6
+       lightradius 90
+       size 3 3
+       tex 38 38
+       trailspacing 2
+       type static
+       velocitymultiplier -0.100000
 effect rocketminsta_laser_blue
-trailspacing 12
-count 1.5
-type snow
-tex 42 42
-color 0x0F0FFF 0x0F0FFF
-size 2 4
-sizeincrease -20
-alpha 444 512 1866
-bounce 1
-velocityoffset 0 0 15
-airfriction 12
-originjitter 1 1 1
-velocityjitter 50 50 50
-
-// rocketminsta laser trail - yellow
+       airfriction 12
+       alpha 444 512 1866
+       bounce 1
+       color 0x0F0FFF 0x0F0FFF
+       count 1.500000
+       originjitter 1 1 1
+       sizeincrease -20
+       size 2 4
+       tex 42 42
+       trailspacing 12
+       type snow
+       velocityjitter 50 50 50
+       velocityoffset 0 0 15
 effect rocketminsta_laser_yellow
-trailspacing 2
-type static
-color 0xFFFF0F 0xFFFF0F
-size 3 3
-tex 38 38
-alpha 256 256 968
-//velocityjitter 16 16 16
-lightradius 90
-lighttime 0
-lightcolor 1.5 3 6
-velocitymultiplier -0.1
-// bright sparks
+       alpha 256 256 968
+       color 0xFFFF0F 0xFFFF0F
+       lightcolor 1.5 3 6
+       lightradius 90
+       size 3 3
+       tex 38 38
+       trailspacing 2
+       type static
+       velocitymultiplier -0.100000
 effect rocketminsta_laser_yellow
-trailspacing 12
-count 1.5
-type snow
-tex 42 42
-color 0xFFFF0F 0xFFFF0F
-size 2 4
-sizeincrease -20
-alpha 444 512 1866
-bounce 1
-velocityoffset 0 0 15
-airfriction 12
-originjitter 1 1 1
-velocityjitter 50 50 50
-
-// rocketminsta laser trail - pink
+       airfriction 12
+       alpha 444 512 1866
+       bounce 1
+       color 0xFFFF0F 0xFFFF0F
+       count 1.500000
+       originjitter 1 1 1
+       sizeincrease -20
+       size 2 4
+       tex 42 42
+       trailspacing 12
+       type snow
+       velocityjitter 50 50 50
+       velocityoffset 0 0 15
 effect rocketminsta_laser_pink
-trailspacing 2
-type static
-color 0xFF0FFF 0xFF0FFF
-size 3 3
-tex 38 38
-alpha 256 256 968
-//velocityjitter 16 16 16
-lightradius 90
-lighttime 0
-lightcolor 1.5 3 6
-velocitymultiplier -0.1
-// bright sparks
+       alpha 256 256 968
+       color 0xFF0FFF 0xFF0FFF
+       lightcolor 1.5 3 6
+       lightradius 90
+       size 3 3
+       tex 38 38
+       trailspacing 2
+       type static
+       velocitymultiplier -0.100000
 effect rocketminsta_laser_pink
-trailspacing 12
-count 1.5
-type snow
-tex 42 42
-color 0xFF0FFF 0xFF0FFF
-size 2 4
-sizeincrease -20
-alpha 444 512 1866
-bounce 1
-velocityoffset 0 0 15
-airfriction 12
-originjitter 1 1 1
-velocityjitter 50 50 50
-
-// rocketminsta laser trail - neutral
+       airfriction 12
+       alpha 444 512 1866
+       bounce 1
+       color 0xFF0FFF 0xFF0FFF
+       count 1.500000
+       originjitter 1 1 1
+       sizeincrease -20
+       size 2 4
+       tex 42 42
+       trailspacing 12
+       type snow
+       velocityjitter 50 50 50
+       velocityoffset 0 0 15
 effect rocketminsta_laser_neutral
-trailspacing 2
-type static
-color 0xFFFFFF 0xFFFFFF
-size 3 3
-tex 38 38
-alpha 256 256 968
-//velocityjitter 16 16 16
-lightradius 90
-lighttime 0
-lightcolor 1.5 3 6
-velocitymultiplier -0.1
-// bright sparks
+       alpha 256 256 968
+       color 0xFFFFFF 0xFFFFFF
+       lightcolor 1.5 3 6
+       lightradius 90
+       size 3 3
+       tex 38 38
+       trailspacing 2
+       type static
+       velocitymultiplier -0.100000
 effect rocketminsta_laser_neutral
-trailspacing 12
-count 1.5
-type snow
-tex 42 42
-color 0xFFFFFF 0xFFFFFF
-size 2 4
-sizeincrease -20
-alpha 444 512 1866
-bounce 1
-velocityoffset 0 0 15
-airfriction 12
-originjitter 1 1 1
-velocityjitter 50 50 50
+       airfriction 12
+       alpha 444 512 1866
+       bounce 1
+       color 0xFFFFFF 0xFFFFFF
+       count 1.500000
+       originjitter 1 1 1
+       sizeincrease -20
+       size 2 4
+       tex 42 42
+       trailspacing 12
+       type snow
+       velocityjitter 50 50 50
+       velocityoffset 0 0 15
index 1b9c587abb613355193505564e30ddbff4a3cada..3d742a624588ce6de0fc83ae2fef10896ea172ea 100644 (file)
@@ -38,6 +38,7 @@
 #include "../common/animdecide.qc"
 #include "../common/buffs.qc"
 #include "../common/effects/effects.qc"
+#include "../common/effects/effectinfo.qc"
 #include "../common/mapinfo.qc"
 #include "../common/movetypes/include.qc"
 #include "../common/nades.qc"
index 0c8f85816f124f2668255db78a3872a8bb81b033..64083a89dac9e8b407fa16cc17df69bcbe198f0a 100644 (file)
@@ -240,6 +240,47 @@ void GenericCommand_dumpcommands(float request)
        }
 }
 
+void effectinfo_dump(int fh, bool alsoprint);
+void GenericCommand_dumpeffectinfo(float request)
+{
+    switch (request) {
+        case CMD_REQUEST_COMMAND: {
+            #ifndef MENUQC
+            string filename = argv(1);
+                       bool alsoprint = false;
+            if (filename == "") {
+                filename = "effectinfo_dump.txt";
+                alsoprint = false;
+            } else if (filename == "-") {
+                filename = "effectinfo_dump.txt";
+                alsoprint = true;
+            }
+            int fh = fopen(filename, FILE_WRITE);
+            if (fh >= 0) {
+               effectinfo_dump(fh, alsoprint);
+                LOG_INFOF("Dumping effectinfo... File located at ^2data/data/%s^7.\n", filename);
+                               LOG_INFOF("Reload with ^2cl_particles_reloadeffects data/%s^7.\n", filename);
+                fclose(fh);
+            } else {
+                LOG_WARNINGF("Could not open file '%s'!\n", filename);
+            }
+            #else
+            LOG_INFO(_("Effectinfo dump command only works with cl_cmd and sv_cmd.\n"));
+            #endif
+            return;
+        }
+        default:
+        case CMD_REQUEST_USAGE: {
+            LOG_INFO(strcat("\nUsage:^3 ", GetProgramCommandPrefix(), " dumpeffectinfo [filename]"));
+            LOG_INFO("  Where 'filename' is the file to write (default is effectinfo_dump.txt),\n");
+            LOG_INFO("  if supplied with '-' output to console as well as default,\n");
+            LOG_INFO("  if left blank, it will only write to default.\n");
+            return;
+        }
+    }
+}
+STATIC_INIT(dumpeffectinfo) { localcmd("alias dumpeffectinfo \"qc_cmd_svcl dumpeffectinfo ${* ?}\"\n"); }
+
 void GenericCommand_dumpitems(float request)
 {
        switch(request)
@@ -722,6 +763,7 @@ void GenericCommand_(float request)
 #define GENERIC_COMMANDS(request,arguments,command) \
        GENERIC_COMMAND("addtolist", GenericCommand_addtolist(request, arguments), "Add a string to a cvar") \
        GENERIC_COMMAND("dumpcommands", GenericCommand_dumpcommands(request), "Dump all commands on the program to *_cmd_dump.txt") \
+       GENERIC_COMMAND("dumpeffectinfo", GenericCommand_dumpeffectinfo(request), "Dump all effectinfo to effectinfo_dump.txt") \
        GENERIC_COMMAND("dumpitems", GenericCommand_dumpitems(request), "Dump all items to the console") \
        GENERIC_COMMAND("dumpnotifs", GenericCommand_dumpnotifs(request), "Dump all notifications into notifications_dump.txt") \
        GENERIC_COMMAND("dumpturrets", GenericCommand_dumpturrets(request), "Dump all turrets into turrets_dump.txt") \
diff --git a/qcsrc/common/effects/effectinfo.inc b/qcsrc/common/effects/effectinfo.inc
new file mode 100644 (file)
index 0000000..adac07b
--- /dev/null
@@ -0,0 +1,8733 @@
+// item respawn effect
+DEF(TE_WIZSPIKE);
+// flare particle and light
+SUB(TE_WIZSPIKE) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 128;
+       MY(color_min) = "0x63F2EA";
+       MY(color_max) = "0x63f2EA";
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '0.4 0.9 0.9';
+       MY(lightradiusfade) = 200;
+       MY(lightradius) = 200;
+       MY(size_min) = 20;
+       MY(size_max) = 20;
+       MY(type) = "static";
+}
+// cloud of particles which expand rapidly and then slow to form a ball
+SUB(TE_WIZSPIKE) {
+       MY(airfriction) = 2;
+       MY(alpha_min) = 64;
+       MY(alpha_max) = 64;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0x63F2EA";
+       MY(color_max) = "0x63f2EA";
+       MY(count) = 50;
+       MY(liquidfriction) = 2;
+       MY(originjitter) = '16.0 16.0 16.0';
+       MY(size_min) = 2;
+       MY(size_max) = 2;
+       MY(type) = "static";
+       MY(velocityjitter) = '32.0 32.0 32.0';
+}
+
+// laser impact
+DEF(TE_KNIGHTSPIKE);
+// decal
+SUB(TE_KNIGHTSPIKE) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '4.0 0.2 0.2';
+       MY(lightradiusfade) = 1000;
+       MY(lightradius) = 200;
+       MY(originjitter) = '16.0 16.0 16.0';
+       MY(size_min) = 24;
+       MY(size_max) = 24;
+       MY(tex_min) = 47;
+       MY(tex_max) = 47;
+       MY(type) = "decal";
+}
+// flare effect
+SUB(TE_KNIGHTSPIKE) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0xFF2010";
+       MY(color_max) = "0xFF2010";
+       MY(countabsolute) = 1;
+       MY(size_min) = 24;
+       MY(size_max) = 24;
+       MY(tex_min) = 39;
+       MY(tex_max) = 39;
+       MY(type) = "static";
+}
+// sparks that rapidly expand and rapidly slow down to form an interesting spherical effect
+SUB(TE_KNIGHTSPIKE) {
+       MY(airfriction) = 6;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0x800000";
+       MY(color_max) = "0xFF8020";
+       MY(count) = 128;
+       MY(liquidfriction) = 6;
+       MY(size_min) = 4;
+       MY(size_max) = 4;
+       MY(type) = "spark";
+       MY(velocityjitter) = '256.0 256.0 256.0';
+}
+
+// machinegun bullet impact
+DEF(TE_SPIKE);
+// bullet impact decal
+SUB(TE_SPIKE) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(originjitter) = '6.0 6.0 6.0';
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_min) = 56;
+       MY(tex_max) = 59;
+       MY(type) = "decal";
+}
+// dust/smoke drifting away from the impact
+SUB(TE_SPIKE) {
+       MY(alpha_min) = 255;
+       MY(alpha_max) = 255;
+       MY(alpha_fade) = 256;
+       MY(color_min) = "0x101010";
+       MY(color_max) = "0x101010";
+       MY(count) = 4;
+       MY(sizeincrease) = 3;
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '8.0 8.0 8.0';
+}
+// dust/smoke staying at the impact
+SUB(TE_SPIKE) {
+       MY(alpha_min) = 255;
+       MY(alpha_max) = 255;
+       MY(alpha_fade) = 128;
+       MY(color_min) = "0x505050";
+       MY(color_max) = "0x505050";
+       MY(count) = 0.500000;
+       MY(sizeincrease) = 4;
+       MY(size_min) = 4;
+       MY(size_max) = 4;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+}
+// bouncing sparks
+SUB(TE_SPIKE) {
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 256;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x8f4333";
+       MY(color_max) = "0xfff31b";
+       MY(count) = 10;
+       MY(gravity) = 1;
+       MY(size_min) = 0.400000;
+       MY(size_max) = 0.400000;
+       MY(type) = "spark";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocityoffset) = '0.0 0.0 80.0';
+}
+
+// electro combo explosion
+DEF(TE_SPIKEQUAD);
+// decal
+SUB(TE_SPIKEQUAD) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '2.0 2.5 3.0';
+       MY(lightradiusfade) = 200;
+       MY(lightradius) = 400;
+       MY(originjitter) = '34.0 34.0 34.0';
+       MY(size_min) = 64;
+       MY(size_max) = 64;
+       MY(tex_min) = 59;
+       MY(tex_max) = 59;
+       MY(type) = "decal";
+}
+// flare effect
+SUB(TE_SPIKEQUAD) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 128;
+       MY(color_min) = "0x80C0FF";
+       MY(color_max) = "0x80C0FF";
+       MY(countabsolute) = 1;
+       MY(size_min) = 48;
+       MY(size_max) = 48;
+       MY(tex_min) = 38;
+       MY(tex_max) = 38;
+       MY(type) = "static";
+}
+// large sparks
+SUB(TE_SPIKEQUAD) {
+       MY(airfriction) = 4;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 256;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x2030FF";
+       MY(color_max) = "0x80C0FF";
+       MY(count) = 10;
+       MY(liquidfriction) = 16;
+       MY(size_min) = 32;
+       MY(size_max) = 32;
+       MY(type) = "static";
+       MY(velocityjitter) = '512.0 512.0 512.0';
+}
+
+// quake effect
+DEF(TE_SUPERSPIKE);
+// decal
+SUB(TE_SUPERSPIKE) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(originjitter) = '6.0 6.0 6.0';
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 56;
+       MY(tex_max) = 59;
+       MY(type) = "decal";
+}
+// dust/smoke drifting away from the impact
+SUB(TE_SUPERSPIKE) {
+       MY(alpha_min) = 255;
+       MY(alpha_max) = 255;
+       MY(alpha_fade) = 256;
+       MY(color_min) = "0x101010";
+       MY(color_max) = "0x101010";
+       MY(count) = 4;
+       MY(sizeincrease) = 3;
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '8.0 8.0 8.0';
+}
+// dust/smoke staying at the impact
+SUB(TE_SUPERSPIKE) {
+       MY(alpha_min) = 255;
+       MY(alpha_max) = 255;
+       MY(alpha_fade) = 128;
+       MY(color_min) = "0x505050";
+       MY(color_max) = "0x505050";
+       MY(count) = 0.500000;
+       MY(sizeincrease) = 4;
+       MY(size_min) = 4;
+       MY(size_max) = 4;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+}
+// sparks that disappear on impact
+SUB(TE_SUPERSPIKE) {
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 768;
+       MY(bounce) = -1;
+       MY(color_min) = "0x8f4333";
+       MY(color_max) = "0xfff31b";
+       MY(count) = 15;
+       MY(gravity) = 1;
+       MY(size_min) = 0.400000;
+       MY(size_max) = 0.400000;
+       MY(type) = "spark";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocityoffset) = '0.0 0.0 80.0';
+}
+
+// quake effect
+DEF(TE_SUPERSPIKEQUAD);
+// decal
+SUB(TE_SUPERSPIKEQUAD) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '0.2 0.2 1.5';
+       MY(lightradiusfade) = 500;
+       MY(lightradius) = 100;
+       MY(originjitter) = '6.0 6.0 6.0';
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 56;
+       MY(tex_max) = 59;
+       MY(type) = "decal";
+}
+// dust/smoke drifting away from the impact
+SUB(TE_SUPERSPIKEQUAD) {
+       MY(alpha_min) = 255;
+       MY(alpha_max) = 255;
+       MY(alpha_fade) = 256;
+       MY(color_min) = "0x101010";
+       MY(color_max) = "0x101010";
+       MY(count) = 4;
+       MY(sizeincrease) = 3;
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '8.0 8.0 8.0';
+}
+// dust/smoke staying at the impact
+SUB(TE_SUPERSPIKEQUAD) {
+       MY(alpha_min) = 255;
+       MY(alpha_max) = 255;
+       MY(alpha_fade) = 128;
+       MY(color_min) = "0x505050";
+       MY(color_max) = "0x505050";
+       MY(count) = 0.500000;
+       MY(sizeincrease) = 4;
+       MY(size_min) = 4;
+       MY(size_max) = 4;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+}
+// sparks that disappear on impact
+SUB(TE_SUPERSPIKEQUAD) {
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 768;
+       MY(bounce) = -1;
+       MY(color_min) = "0x8f4333";
+       MY(color_max) = "0xfff31b";
+       MY(count) = 15;
+       MY(gravity) = 1;
+       MY(size_min) = 0.400000;
+       MY(size_max) = 0.400000;
+       MY(type) = "spark";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocityoffset) = '0.0 0.0 80.0';
+}
+
+// shotgun pellet impact
+DEF(TE_GUNSHOT);
+// decal
+SUB(TE_GUNSHOT) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(originjitter) = '6.0 6.0 6.0';
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 56;
+       MY(tex_max) = 59;
+       MY(type) = "decal";
+}
+// dust/smoke drifting away from the impact
+SUB(TE_GUNSHOT) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0x101010";
+       MY(color_max) = "0x101010";
+       MY(count) = 0.800000;
+       MY(sizeincrease) = 3;
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '8.0 8.0 8.0';
+}
+// dust/smoke staying at the impact
+SUB(TE_GUNSHOT) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0x505050";
+       MY(color_max) = "0x505050";
+       MY(count) = 0.200000;
+       MY(sizeincrease) = 4;
+       MY(size_min) = 4;
+       MY(size_max) = 4;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+}
+// bouncing sparks
+SUB(TE_GUNSHOT) {
+       MY(alpha_max) = 64;
+       MY(alpha_fade) = 64;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x8f4333";
+       MY(color_max) = "0xfff31b";
+       MY(count) = 2.500000;
+       MY(gravity) = 1;
+       MY(size_min) = 0.400000;
+       MY(size_max) = 0.400000;
+       MY(type) = "spark";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocityoffset) = '0.0 0.0 80.0';
+}
+
+// crylink impact effect
+DEF(TE_GUNSHOTQUAD);
+// decal
+SUB(TE_GUNSHOTQUAD) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(originjitter) = '12.0 12.0 12.0';
+       MY(size_min) = 8;
+       MY(size_max) = 8;
+       MY(tex_min) = 47;
+       MY(tex_max) = 47;
+       MY(type) = "decal";
+}
+// purple flare effect
+SUB(TE_GUNSHOTQUAD) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x504060";
+       MY(color_max) = "0x504060";
+       MY(countabsolute) = 1;
+       MY(size_min) = 8;
+       MY(size_max) = 8;
+       MY(tex_min) = 39;
+       MY(tex_max) = 39;
+       MY(type) = "static";
+}
+// purple sparks
+SUB(TE_GUNSHOTQUAD) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 384;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0xA040C0";
+       MY(color_max) = "0xFFFFFF";
+       MY(count) = 6;
+       MY(gravity) = 1;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(type) = "spark";
+       MY(velocityjitter) = '128.0 128.0 128.0';
+       MY(velocityoffset) = '0.0 0.0 80.0';
+}
+
+// mortar/hagar explosion (smaller than rocket)
+DEF(TE_EXPLOSION);
+// decal
+SUB(TE_EXPLOSION) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '4.0 2.0 0.5';
+       MY(lightradiusfade) = 300;
+       MY(lightradius) = 150;
+       MY(originjitter) = '40.0 40.0 40.0';
+       MY(size_min) = 48;
+       MY(size_max) = 48;
+       MY(tex_min) = 8;
+       MY(tex_max) = 16;
+       MY(type) = "decal";
+}
+// flare effect
+SUB(TE_EXPLOSION) {
+       MY(alpha_min) = 192;
+       MY(alpha_max) = 192;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x404040";
+       MY(countabsolute) = 1;
+       MY(size_min) = 48;
+       MY(size_max) = 48;
+       MY(tex_min) = 35;
+       MY(tex_max) = 37;
+       MY(type) = "static";
+}
+// fire effect which expands then slows
+SUB(TE_EXPLOSION) {
+       MY(airfriction) = 4;
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 256;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x902010";
+       MY(color_max) = "0xFFD080";
+       MY(count) = 64;
+       MY(liquidfriction) = 4;
+       MY(notunderwater) = true;
+       MY(originjitter) = '8.0 8.0 8.0';
+       MY(size_min) = 16;
+       MY(size_max) = 16;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "static";
+       MY(velocityjitter) = '256.0 256.0 256.0';
+}
+// underwater bubbles
+SUB(TE_EXPLOSION) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(count) = 16;
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 0.250000;
+       MY(originjitter) = '16.0 16.0 16.0';
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '96.0 96.0 96.0';
+}
+// bouncing sparks
+SUB(TE_EXPLOSION) {
+       MY(airfriction) = 0.200000;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 384;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x903010";
+       MY(color_max) = "0xFFD030";
+       MY(count) = 16;
+       MY(gravity) = 1;
+       MY(liquidfriction) = 0.800000;
+       MY(notunderwater) = true;
+       MY(size_min) = 2;
+       MY(size_max) = 2;
+       MY(type) = "spark";
+       MY(velocityjitter) = '256.0 256.0 256.0';
+       MY(velocityoffset) = '0.0 0.0 80.0';
+}
+
+// quake effect
+DEF(TE_EXPLOSIONQUAD);
+// decal
+SUB(TE_EXPLOSIONQUAD) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '4.0 2.0 8.0';
+       MY(lightradiusfade) = 700;
+       MY(lightradius) = 350;
+       MY(originjitter) = '40.0 40.0 40.0';
+       MY(size_min) = 48;
+       MY(size_max) = 48;
+       MY(tex_min) = 8;
+       MY(tex_max) = 16;
+       MY(type) = "decal";
+}
+// smoke cloud
+SUB(TE_EXPLOSIONQUAD) {
+       MY(alpha_min) = 32;
+       MY(alpha_max) = 32;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0x202020";
+       MY(color_max) = "0x404040";
+       MY(count) = 16;
+       MY(notunderwater) = true;
+       MY(size_min) = 12;
+       MY(size_max) = 12;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '48.0 48.0 48.0';
+}
+// underwater bubbles
+SUB(TE_EXPLOSIONQUAD) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(count) = 16;
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 0.250000;
+       MY(originjitter) = '16.0 16.0 16.0';
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '96.0 96.0 96.0';
+}
+// sparks which go through walls
+SUB(TE_EXPLOSIONQUAD) {
+       MY(airfriction) = 0.200000;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x903010";
+       MY(color_max) = "0xFFD030";
+       MY(count) = 64;
+       MY(gravity) = 1;
+       MY(liquidfriction) = 0.800000;
+       MY(notunderwater) = true;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(type) = "spark";
+       MY(velocityjitter) = '256.0 256.0 256.0';
+       MY(velocityoffset) = '0.0 0.0 80.0';
+}
+
+// quake effect
+DEF(TE_TAREXPLOSION);
+// decal
+SUB(TE_TAREXPLOSION) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '1.6 0.8 2.0';
+       MY(lightradiusfade) = 1200;
+       MY(lightradius) = 600;
+       MY(originjitter) = '40.0 40.0 40.0';
+       MY(size_min) = 48;
+       MY(size_max) = 48;
+       MY(tex_min) = 8;
+       MY(tex_max) = 16;
+       MY(type) = "decal";
+}
+// smoke cloud
+SUB(TE_TAREXPLOSION) {
+       MY(alpha_min) = 32;
+       MY(alpha_max) = 32;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0x202020";
+       MY(color_max) = "0x404040";
+       MY(count) = 16;
+       MY(notunderwater) = true;
+       MY(size_min) = 12;
+       MY(size_max) = 12;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '48.0 48.0 48.0';
+}
+// underwater bubbles
+SUB(TE_TAREXPLOSION) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(count) = 16;
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 0.250000;
+       MY(originjitter) = '16.0 16.0 16.0';
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '96.0 96.0 96.0';
+}
+// sparks which go through walls
+SUB(TE_TAREXPLOSION) {
+       MY(airfriction) = 0.200000;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x903010";
+       MY(color_max) = "0xFFD030";
+       MY(count) = 64;
+       MY(gravity) = 1;
+       MY(liquidfriction) = 0.800000;
+       MY(notunderwater) = true;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(type) = "spark";
+       MY(velocityjitter) = '256.0 256.0 256.0';
+       MY(velocityoffset) = '0.0 0.0 80.0';
+}
+
+// bloody impact effect indicating damage
+DEF(TE_BLOOD);
+SUB(TE_BLOOD) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = -1;
+       MY(count) = 0.167000;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 8;
+       MY(size_max) = 8;
+       MY(staincolor_min) = "0x808080";
+       MY(staincolor_max) = "0x808080";
+       MY(staintex_min) = 16;
+       MY(staintex_max) = 24;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(type) = "blood";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocitymultiplier) = 1;
+}
+
+// sparks (quake effect)
+DEF(TE_SPARK);
+SUB(TE_SPARK) {
+       MY(alpha_min) = 64;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 768;
+       MY(bounce) = -1;
+       MY(color_min) = "0x8f4333";
+       MY(color_max) = "0xfff31b";
+       MY(count) = 0.500000;
+       MY(gravity) = 1;
+       MY(size_min) = 0.400000;
+       MY(size_max) = 0.600000;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocitymultiplier) = 1;
+       MY(velocityoffset) = '0.0 0.0 80.0';
+}
+
+// vortex impact
+DEF(TE_PLASMABURN);
+// decal
+SUB(TE_PLASMABURN) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '1.0 1.0 1.0';
+       MY(lightradiusfade) = 400;
+       MY(lightradius) = 200;
+       MY(originjitter) = '16.0 16.0 16.0';
+       MY(size_min) = 24;
+       MY(size_max) = 24;
+       MY(tex_min) = 47;
+       MY(tex_max) = 47;
+       MY(type) = "decal";
+}
+// flare effect
+SUB(TE_PLASMABURN) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x80C0FF";
+       MY(color_max) = "0x80C0FF";
+       MY(countabsolute) = 1;
+       MY(size_min) = 8;
+       MY(size_max) = 8;
+       MY(tex_min) = 37;
+       MY(tex_max) = 37;
+       MY(type) = "static";
+}
+// small sparks which form a sphere as they slow down
+SUB(TE_PLASMABURN) {
+       MY(airfriction) = 8;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1024;
+       MY(bounce) = 2;
+       MY(color_min) = "0x2030FF";
+       MY(color_max) = "0x80C0FF";
+       MY(count) = 128;
+       MY(liquidfriction) = 8;
+       MY(size_min) = 1;
+       MY(size_max) = 2;
+       MY(type) = "spark";
+       MY(velocityjitter) = '128.0 128.0 128.0';
+}
+
+// quake effect
+DEF(TE_SMALLFLASH);
+SUB(TE_SMALLFLASH) {
+       MY(lightcolor) = '2.0 2.0 2.0';
+       MY(lightradiusfade) = 1000;
+       MY(lightradius) = 200;
+}
+
+// quake effect
+DEF(TE_FLAMEJET);
+SUB(TE_FLAMEJET) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 64;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 384;
+       MY(bounce) = 1.100000;
+       MY(color_min) = "0x6f0f00";
+       MY(color_max) = "0xe3974f";
+       MY(count) = 0.500000;
+       MY(gravity) = -1;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 4;
+       MY(size_max) = 4;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '128.0 128.0 128.0';
+       MY(velocitymultiplier) = 1;
+}
+
+// quake effect
+DEF(TE_LAVASPLASH);
+SUB(TE_LAVASPLASH) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 256;
+       MY(color_min) = "0x6f0f00";
+       MY(color_max) = "0xe3974f";
+       MY(count) = 32;
+       MY(gravity) = 0.050000;
+       MY(originjitter) = '128.0 128.0 32.0';
+       MY(originoffset) = '0.0 0.0 32.0';
+       MY(size_min) = 12;
+       MY(size_max) = 12;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '128.0 128.0 0.0';
+       MY(velocityoffset) = '0.0 0.0 256.0';
+}
+
+// player teleport effect
+DEF(TE_TELEPORT);
+SUB(TE_TELEPORT) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 64;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 256;
+       MY(color_min) = "0xA0A0A0";
+       MY(color_max) = "0xFFFFFF";
+       MY(count) = 56;
+       MY(liquidfriction) = 4;
+       MY(originjitter) = '16.0 16.0 28.0';
+       MY(originoffset) = '0.0 0.0 28.0';
+       MY(size_min) = 10;
+       MY(size_max) = 10;
+       MY(type) = "static";
+       MY(velocityjitter) = '0.0 0.0 256.0';
+}
+
+// vortex beam
+DEF(TE_TEI_G3);
+SUB(TE_TEI_G3) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 256;
+       MY(color_min) = "0xFFFFFF";
+       MY(color_max) = "0xFFFFFF";
+       MY(countabsolute) = 1;
+       MY(size_min) = 4;
+       MY(size_max) = 4;
+       MY(tex_min) = 200;
+       MY(tex_max) = 200;
+       MY(type) = "beam";
+}
+SUB(TE_TEI_G3) {
+       MY(airfriction) = -4;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x202020";
+       MY(color_max) = "0x404040";
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(trailspacing) = 4;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '8.0 8.0 8.0';
+}
+
+// smoke effect
+DEF(TE_TEI_SMOKE);
+SUB(TE_TEI_SMOKE) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x202020";
+       MY(color_max) = "0x404040";
+       MY(count) = 0.167000;
+       MY(originjitter) = '1.5 1.5 1.5';
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '6.0 6.0 6.0';
+       MY(velocitymultiplier) = 1;
+}
+
+// rocket explosion (bigger than mortar and hagar)
+DEF(TE_TEI_BIGEXPLOSION);
+// decal
+SUB(TE_TEI_BIGEXPLOSION) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '4.0 2.0 0.5';
+       MY(lightradiusfade) = 500;
+       MY(lightradius) = 500;
+       MY(originjitter) = '40.0 40.0 40.0';
+       MY(size_min) = 72;
+       MY(size_max) = 72;
+       MY(tex_min) = 8;
+       MY(tex_max) = 16;
+       MY(type) = "decal";
+}
+// flare effect
+SUB(TE_TEI_BIGEXPLOSION) {
+       MY(alpha_min) = 192;
+       MY(alpha_max) = 192;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x404040";
+       MY(countabsolute) = 1;
+       MY(size_min) = 72;
+       MY(size_max) = 72;
+       MY(tex_min) = 35;
+       MY(tex_max) = 37;
+       MY(type) = "static";
+}
+// fire effect
+SUB(TE_TEI_BIGEXPLOSION) {
+       MY(airfriction) = 4;
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 256;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x902010";
+       MY(color_max) = "0xFFD080";
+       MY(count) = 128;
+       MY(liquidfriction) = 4;
+       MY(notunderwater) = true;
+       MY(originjitter) = '8.0 8.0 8.0';
+       MY(size_min) = 16;
+       MY(size_max) = 16;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "static";
+       MY(velocityjitter) = '512.0 512.0 512.0';
+}
+// underwater bubbles
+SUB(TE_TEI_BIGEXPLOSION) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(count) = 32;
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 0.250000;
+       MY(originjitter) = '16.0 16.0 16.0';
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '144.0 144.0 144.0';
+}
+// bouncing sparks
+SUB(TE_TEI_BIGEXPLOSION) {
+       MY(airfriction) = 0.200000;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 384;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x903010";
+       MY(color_max) = "0xFFD030";
+       MY(count) = 64;
+       MY(gravity) = 1;
+       MY(liquidfriction) = 0.800000;
+       MY(notunderwater) = true;
+       MY(size_min) = 2;
+       MY(size_max) = 2;
+       MY(type) = "spark";
+       MY(velocityjitter) = '384.0 384.0 384.0';
+       MY(velocityoffset) = '0.0 0.0 80.0';
+}
+
+// electro explosion
+DEF(TE_TEI_PLASMAHIT);
+// decal
+SUB(TE_TEI_PLASMAHIT) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '2.4 4.8 8.0';
+       MY(lightradiusfade) = 600;
+       MY(lightradius) = 200;
+       MY(originjitter) = '20.0 20.0 20.0';
+       MY(size_min) = 32;
+       MY(size_max) = 32;
+       MY(tex_min) = 59;
+       MY(tex_max) = 59;
+       MY(type) = "decal";
+}
+// flare effect
+SUB(TE_TEI_PLASMAHIT) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x80C0FF";
+       MY(color_max) = "0x80C0FF";
+       MY(countabsolute) = 1;
+       MY(size_min) = 32;
+       MY(size_max) = 32;
+       MY(tex_min) = 38;
+       MY(tex_max) = 38;
+       MY(type) = "static";
+}
+// cloud of bouncing sparks
+SUB(TE_TEI_PLASMAHIT) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1024;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x2030FF";
+       MY(color_max) = "0x80C0FF";
+       MY(count) = 0.500000;
+       MY(size_min) = 2;
+       MY(size_max) = 4;
+       MY(type) = "spark";
+       MY(velocityjitter) = '512.0 512.0 512.0';
+}
+
+// bloody impact effect indicating damage
+DEF(blood);
+SUB(blood) {
+       MY(airfriction) = 0.400000;
+       MY(alpha_min) = 1560;
+       MY(alpha_max) = 2560;
+       MY(alpha_fade) = 7000;
+       MY(blend) = "invmod";
+       MY(bounce) = -1;
+       MY(color_min) = "0xA8FFFF";
+       MY(color_max) = "0xA8FFFFF";
+       MY(count) = 0.400000;
+       MY(sizeincrease) = 20;
+       MY(size_min) = 5;
+       MY(size_max) = 11;
+       MY(staincolor_min) = "0x808080";
+       MY(staincolor_max) = "0x808080";
+       MY(stainsize_min) = 1;
+       MY(stainsize_max) = 2;
+       MY(staintex_min) = 16;
+       MY(staintex_max) = 24;
+       MY(stretchfactor) = 20;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(type) = "spark";
+       MY(velocityjitter) = '99.0 99.0 55.0';
+}
+//blood mist
+SUB(blood) {
+       MY(alpha_min) = 100;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 400;
+       MY(blend) = "invmod";
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x420000";
+       MY(countabsolute) = 1;
+       MY(originjitter) = '11.0 11.0 11.0';
+       MY(sizeincrease) = 20;
+       MY(size_min) = 25;
+       MY(size_max) = 30;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(type) = "alphastatic";
+}
+
+// player teleport effect
+DEF(teleport);
+SUB(teleport) {
+       MY(airfriction) = 2;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 100;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x807aff";
+       MY(color_max) = "0x4463d5";
+       MY(count) = 500;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(stretchfactor) = 0.600000;
+       MY(tex_min) = 64;
+       MY(tex_max) = 64;
+       MY(type) = "spark";
+       MY(velocityjitter) = '1000.0 1000.0 1500.0';
+       MY(velocitymultiplier) = 0.500000;
+}
+SUB(teleport) {
+       MY(alpha_min) = 190;
+       MY(alpha_max) = 190;
+       MY(alpha_fade) = 180;
+       MY(color_min) = "0x807aff";
+       MY(color_max) = "0x4463d5";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = -80;
+       MY(size_min) = 150;
+       MY(size_max) = 150;
+       MY(tex_min) = 65;
+       MY(tex_max) = 65;
+       MY(type) = "smoke";
+}
+
+// normal super gory blood trail (used by gibs)
+DEF(TR_BLOOD);
+SUB(TR_BLOOD) {
+       MY(airfriction) = -2;
+       MY(alpha_min) = 384;
+       MY(alpha_max) = 984;
+       MY(alpha_fade) = 1492;
+       MY(blend) = "invmod";
+       MY(bounce) = -1;
+       MY(color_min) = "0xA8FFFF";
+       MY(color_max) = "0xA8FFFF";
+       MY(gravity) = 0.400000;
+       MY(liquidfriction) = 1;
+       MY(sizeincrease) = -5;
+       MY(size_min) = 4;
+       MY(size_max) = 19;
+       MY(staincolor_min) = "0x808080";
+       MY(staincolor_max) = "0x808080";
+       MY(stainsize_min) = 1;
+       MY(stainsize_max) = 2;
+       MY(staintex_min) = 16;
+       MY(staintex_max) = 24;
+       MY(stretchfactor) = 7;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(trailspacing) = 20;
+       MY(type) = "spark";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocitymultiplier) = -0.100000;
+}
+// splash around gib
+SUB(TR_BLOOD) {
+       MY(alpha_min) = 684;
+       MY(alpha_max) = 684;
+       MY(alpha_fade) = 7492;
+       MY(color_min) = "0xA8FFFF";
+       MY(color_max) = "0xA8FFFF";
+       MY(sizeincrease) = 500;
+       MY(size_min) = 4;
+       MY(size_max) = 6;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(trailspacing) = 42;
+       MY(type) = "blood";
+}
+
+// thinner blood trail (used by quake zombies)
+DEF(TR_SLIGHTBLOOD);
+SUB(TR_SLIGHTBLOOD) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 384;
+       MY(alpha_max) = 384;
+       MY(alpha_fade) = 192;
+       MY(bounce) = -1;
+       MY(color_min) = "0xA8FFFF";
+       MY(color_max) = "0xA8FFFF";
+       MY(liquidfriction) = 4;
+       MY(size_min) = 8;
+       MY(size_max) = 8;
+       MY(staincolor_min) = "0x808080";
+       MY(staincolor_max) = "0x808080";
+       MY(staintex_min) = 16;
+       MY(staintex_max) = 24;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(trailspacing) = 64;
+       MY(type) = "blood";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocitymultiplier) = 0.500000;
+}
+
+// func_stardust effect, used in some maps to indicate teleporters
+DEF(EF_STARDUST);
+SUB(EF_STARDUST) {
+       MY(airfriction) = 0.200000;
+       MY(alpha_min) = 64;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 128;
+       MY(color_min) = "0xfff368";
+       MY(color_max) = "0xfff368";
+       MY(count) = 37.500000;
+       MY(gravity) = -0.100000;
+       MY(liquidfriction) = 0.800000;
+       MY(originjitter) = '16.0 16.0 64.0';
+       MY(size_min) = 1;
+       MY(size_max) = 2;
+       MY(type) = "static";
+       MY(velocityjitter) = '32.0 32.0 0.0';
+}
+
+// flare particle and light
+DEF(item_respawn);
+SUB(item_respawn) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 128;
+       MY(color_min) = "0x63F2EA";
+       MY(color_max) = "0x63f2EA";
+       MY(countabsolute) = 1;
+       MY(size_min) = 32;
+       MY(size_max) = 32;
+       MY(type) = "static";
+}
+// cloud of particles which expand rapidly and then slow to form a ball
+SUB(item_respawn) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1280;
+       MY(color_min) = "0x63F2EA";
+       MY(color_max) = "0x63f2EA";
+       MY(count) = 128;
+       MY(size_min) = 2;
+       MY(size_max) = 2;
+       MY(tex_min) = 41;
+       MY(tex_max) = 41;
+       MY(type) = "spark";
+       MY(velocityjitter) = '256.0 256.0 256.0';
+}
+
+DEF(jumppad_activate);
+SUB(jumppad_activate) {
+       MY(lightcolor) = '2.0 2.0 2.0';
+       MY(lightradiusfade) = 2000;
+       MY(lightradius) = 200;
+}
+
+DEF(laser_muzzleflash);
+// glow and light
+SUB(laser_muzzleflash) {
+       MY(airfriction) = 10;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 512;
+       MY(alpha_fade) = 6280;
+       MY(color_min) = "0xcc0000";
+       MY(color_max) = "0xff0000";
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '3.0 0.1 0.1';
+       MY(lightradiusfade) = 2000;
+       MY(lightradius) = 200;
+       MY(sizeincrease) = -100;
+       MY(size_min) = 10;
+       MY(size_max) = 15;
+       MY(stretchfactor) = 2;
+       MY(tex_min) = 65;
+       MY(tex_max) = 65;
+       MY(type) = "smoke";
+}
+// electricity
+SUB(laser_muzzleflash) {
+       MY(airfriction) = 10;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 512;
+       MY(alpha_fade) = 6280;
+       MY(color_min) = "0xb44215";
+       MY(color_max) = "0xff0000";
+       MY(count) = 3;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = 4000;
+       MY(spin_max) = -4000;
+       MY(sizeincrease) = -100;
+       MY(size_min) = 5;
+       MY(size_max) = 7;
+       MY(stretchfactor) = 2.300000;
+       MY(tex_min) = 43;
+       MY(tex_max) = 43;
+       MY(type) = "spark";
+       MY(velocityjitter) = '150.0 150.0 150.0';
+       MY(velocitymultiplier) = 0.200000;
+}
+// fire
+SUB(laser_muzzleflash) {
+       MY(airfriction) = 12;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 512;
+       MY(alpha_fade) = 6280;
+       MY(color_min) = "0xff4200";
+       MY(color_max) = "0xff0000";
+       MY(count) = 6;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(sizeincrease) = -100;
+       MY(size_min) = 7;
+       MY(size_max) = 9;
+       MY(stretchfactor) = 2;
+       MY(tex_min) = 8;
+       MY(tex_max) = 15;
+       MY(type) = "spark";
+       MY(velocityjitter) = '100.0 100.0 100.0';
+       MY(velocitymultiplier) = 0.200000;
+}
+
+DEF(laser_impact);
+// decal
+SUB(laser_impact) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '8.0 0.4 0.4';
+       MY(lightradiusfade) = 500;
+       MY(lightradius) = 200;
+       MY(originjitter) = '14.0 14.0 14.0';
+       MY(size_min) = 24;
+       MY(size_max) = 24;
+       MY(tex_min) = 47;
+       MY(tex_max) = 47;
+       MY(type) = "decal";
+}
+// flare effect
+SUB(laser_impact) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0xFF2010";
+       MY(color_max) = "0xFF2010";
+       MY(countabsolute) = 1;
+       MY(size_min) = 24;
+       MY(size_max) = 24;
+       MY(tex_min) = 39;
+       MY(tex_max) = 39;
+       MY(type) = "static";
+}
+// sparks that rapidly expand and rapidly slow down to form an interesting spherical effect
+SUB(laser_impact) {
+       MY(airfriction) = 6;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0x800000";
+       MY(color_max) = "0xFF8020";
+       MY(count) = 128;
+       MY(liquidfriction) = 6;
+       MY(size_min) = 4;
+       MY(size_max) = 4;
+       MY(type) = "spark";
+       MY(velocityjitter) = '256.0 256.0 256.0';
+}
+SUB(laser_impact) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 256;
+       MY(color_min) = "0x800000";
+       MY(color_max) = "0xFF8020";
+       MY(count) = 4;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(sizeincrease) = 6;
+       MY(size_min) = 12;
+       MY(size_max) = 12;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '16.0 16.0 16.0';
+       MY(velocitymultiplier) = 0.010000;
+}
+
+DEF(shotgun_muzzleflash);
+SUB(shotgun_muzzleflash) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x202020";
+       MY(color_max) = "0x404040";
+       MY(count) = 1.500000;
+       MY(lightcolor) = '2.0 1.5 0.2';
+       MY(lightradiusfade) = 2000;
+       MY(lightradius) = 200;
+       MY(originjitter) = '1.5 1.5 1.5';
+       MY(sizeincrease) = 12;
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '6.0 6.0 6.0';
+       MY(velocitymultiplier) = 0.050000;
+}
+SUB(shotgun_muzzleflash) {
+       MY(airfriction) = 5;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0xffdb96";
+       MY(color_max) = "0xff5400";
+       MY(count) = 16;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 10;
+       MY(size_max) = 20;
+       MY(stretchfactor) = 2.500000;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "spark";
+       MY(velocityjitter) = '100.0 100.0 100.0';
+       MY(velocitymultiplier) = 0.500000;
+}
+
+// shotgun pellet impact
+DEF(shotgun_impact);
+// decal
+SUB(shotgun_impact) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(originjitter) = '10.0 10.0 10.0';
+       MY(size_min) = 5;
+       MY(size_max) = 8;
+       MY(tex_min) = 56;
+       MY(tex_max) = 59;
+       MY(type) = "decal";
+}
+// dust/smoke drifting away from the impact
+SUB(shotgun_impact) {
+       MY(airfriction) = 5;
+       MY(alpha_min) = 300;
+       MY(alpha_max) = 550;
+       MY(alpha_fade) = 756;
+       MY(color_min) = "0x473a37";
+       MY(color_max) = "0x0b0a07";
+       MY(count) = 1;
+       MY(notunderwater) = true;
+       MY(startangle_max) = 360;
+       MY(spin_min) = -50;
+       MY(spin_max) = 50;
+       MY(sizeincrease) = 25;
+       MY(size_min) = 10;
+       MY(size_max) = 20;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '150.0 150.0 150.0';
+       MY(velocitymultiplier) = 0.200000;
+}
+// dust/smoke staying at the impact
+SUB(shotgun_impact) {
+       MY(airfriction) = 5;
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 350;
+       MY(alpha_fade) = 500;
+       MY(bounce) = 6;
+       MY(color_min) = "0x201d1a";
+       MY(color_max) = "0x000000";
+       MY(count) = 0.200000;
+       MY(notunderwater) = true;
+       MY(startangle_max) = 360;
+       MY(spin_min) = -50;
+       MY(spin_max) = 50;
+       MY(sizeincrease) = 74;
+       MY(size_min) = 10;
+       MY(size_max) = 11;
+       MY(tex_min) = 36;
+       MY(tex_max) = 36;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '11.0 11.0 11.0';
+       MY(velocitymultiplier) = 0.030000;
+}
+// sparks
+SUB(shotgun_impact) {
+       MY(airfriction) = 1.100000;
+       MY(alpha_max) = 356;
+       MY(alpha_fade) = 268;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0xFDFFD9";
+       MY(color_max) = "0xFDFFD9";
+       MY(count) = 0.500000;
+       MY(gravity) = 1;
+       MY(notunderwater) = true;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 0.600000;
+       MY(size_max) = 0.600000;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '200.0 200.0 200.0';
+       MY(velocitymultiplier) = 0.200000;
+}
+
+DEF(uzi_muzzleflash);
+SUB(uzi_muzzleflash) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x202020";
+       MY(color_max) = "0x404040";
+       MY(count) = 1;
+       MY(gravity) = -0.100000;
+       MY(lightcolor) = '2.0 1.5 0.2';
+       MY(lightradiusfade) = 2000;
+       MY(lightradius) = 200;
+       MY(originjitter) = '1.5 1.5 1.5';
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_max) = 8;
+       MY(type) = "static";
+       MY(velocityjitter) = '1.0 1.0 1.0';
+       MY(velocitymultiplier) = 0.030000;
+}
+SUB(uzi_muzzleflash) {
+       MY(airfriction) = 12;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 6000;
+       MY(color_min) = "0xff9c00";
+       MY(color_max) = "0xffd200";
+       MY(count) = 3;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 0.300000;
+       MY(size_max) = 0.400000;
+       MY(stretchfactor) = 0.150000;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '555.0 555.0 555.0';
+       MY(velocitymultiplier) = 3;
+}
+
+DEF(machinegun_impact);
+// decal
+SUB(machinegun_impact) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '6.0 3.6 0.6';
+       MY(lightradiusfade) = 800;
+       MY(lightradius) = 80;
+       MY(originjitter) = '10.0 10.0 10.0';
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_min) = 56;
+       MY(tex_max) = 59;
+       MY(type) = "decal";
+}
+// dust/smoke drifting away from the impact
+SUB(machinegun_impact) {
+       MY(airfriction) = 5;
+       MY(alpha_min) = 300;
+       MY(alpha_max) = 550;
+       MY(alpha_fade) = 456;
+       MY(color_min) = "0x473a37";
+       MY(color_max) = "0x0b0a07";
+       MY(count) = 1.500000;
+       MY(notunderwater) = true;
+       MY(startangle_max) = 360;
+       MY(spin_min) = -50;
+       MY(spin_max) = 50;
+       MY(sizeincrease) = 15;
+       MY(size_min) = 10;
+       MY(size_max) = 20;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '150.0 150.0 150.0';
+       MY(velocitymultiplier) = 0.100000;
+}
+// dust/smoke staying at the impact
+SUB(machinegun_impact) {
+       MY(airfriction) = 5;
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 350;
+       MY(alpha_fade) = 500;
+       MY(bounce) = 6;
+       MY(color_min) = "0x201d1a";
+       MY(color_max) = "0x000000";
+       MY(count) = 0.500000;
+       MY(notunderwater) = true;
+       MY(startangle_max) = 360;
+       MY(spin_min) = -50;
+       MY(spin_max) = 50;
+       MY(sizeincrease) = 74;
+       MY(size_min) = 10;
+       MY(size_max) = 11;
+       MY(tex_min) = 36;
+       MY(tex_max) = 36;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '11.0 11.0 11.0';
+       MY(velocitymultiplier) = 0.030000;
+}
+// debris
+SUB(machinegun_impact) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 300;
+       MY(alpha_max) = 550;
+       MY(alpha_fade) = 256;
+       MY(bounce) = 1.700000;
+       MY(color_min) = "0x63493e";
+       MY(color_max) = "0xffffff";
+       MY(count) = 1;
+       MY(gravity) = 1.400000;
+       MY(notunderwater) = true;
+       MY(startangle_max) = 360;
+       MY(spin_min) = -500;
+       MY(spin_max) = 500;
+       MY(size_min) = 1;
+       MY(size_max) = 5;
+       MY(tex_min) = 66;
+       MY(tex_max) = 68;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '350.0 350.0 350.0';
+       MY(velocitymultiplier) = 0.200000;
+}
+// sparks
+SUB(machinegun_impact) {
+       MY(airfriction) = 2;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 168;
+       MY(bounce) = 1;
+       MY(color_min) = "0xFDFFD9";
+       MY(color_max) = "0xFDFFD9";
+       MY(count) = 1;
+       MY(gravity) = 1;
+       MY(notunderwater) = true;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 0.300000;
+       MY(size_max) = 0.300000;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '300.0 300.0 300.0';
+       MY(velocitymultiplier) = 0.200000;
+}
+
+DEF(grenadelauncher_muzzleflash);
+SUB(grenadelauncher_muzzleflash) {
+       MY(airfriction) = 12;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x202020";
+       MY(color_max) = "0x404040";
+       MY(count) = 1.500000;
+       MY(lightcolor) = '2.0 1.5 0.2';
+       MY(lightradiusfade) = 2000;
+       MY(lightradius) = 200;
+       MY(originjitter) = '1.5 1.5 1.5';
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '20.0 20.0 20.0';
+       MY(velocitymultiplier) = 0.030000;
+}
+SUB(grenadelauncher_muzzleflash) {
+       MY(airfriction) = 5;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0xffdb96";
+       MY(color_max) = "0xff5400";
+       MY(count) = 16;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 10;
+       MY(size_max) = 20;
+       MY(stretchfactor) = 2.500000;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "spark";
+       MY(velocityjitter) = '100.0 100.0 100.0';
+       MY(velocitymultiplier) = 0.500000;
+}
+
+// mortar trail
+DEF(TR_GRENADE);
+// smoke
+SUB(TR_GRENADE) {
+       MY(alpha_min) = 300;
+       MY(alpha_max) = 400;
+       MY(alpha_fade) = 780;
+       MY(bounce) = 1;
+       MY(color_min) = "0x101010";
+       MY(color_max) = "0x000000";
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(sizeincrease) = 10;
+       MY(size_min) = 3;
+       MY(size_max) = 2;
+       MY(tex_max) = 8;
+       MY(trailspacing) = 4;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '1.0 1.0 1.0';
+       MY(velocitymultiplier) = -0.020000;
+}
+// fire
+SUB(TR_GRENADE) {
+       MY(airfriction) = 8;
+       MY(alpha_min) = 100;
+       MY(alpha_max) = 144;
+       MY(alpha_fade) = 988;
+       MY(color_min) = "0xffdf72";
+       MY(color_max) = "0x811200";
+       MY(notunderwater) = true;
+       MY(sizeincrease) = -15;
+       MY(size_min) = 5;
+       MY(size_max) = 2;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(trailspacing) = 4;
+       MY(type) = "static";
+       MY(velocityjitter) = '32.0 32.0 32.0';
+       MY(velocitymultiplier) = -1;
+}
+// bubbles
+SUB(TR_GRENADE) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 256;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(trailspacing) = 16;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '16.0 16.0 16.0';
+}
+
+// hookbomb trail
+DEF(TR_KNIGHTSPIKE);
+// smoke
+SUB(TR_KNIGHTSPIKE) {
+       MY(alpha_min) = 300;
+       MY(alpha_max) = 400;
+       MY(alpha_fade) = 600;
+       MY(bounce) = 1;
+       MY(color_min) = "0x303030";
+       MY(color_max) = "0x000000";
+       MY(gravity) = -0.110000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(sizeincrease) = 11;
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_max) = 8;
+       MY(trailspacing) = 6;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '3.0 3.0 3.0';
+       MY(velocitymultiplier) = -0.020000;
+}
+// marker
+SUB(TR_KNIGHTSPIKE) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 720;
+       MY(color_min) = "0x666666";
+       MY(color_max) = "0x000000";
+       MY(sizeincrease) = -0.100000;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(trailspacing) = 2;
+       MY(type) = "alphastatic";
+}
+// bubbles
+SUB(TR_KNIGHTSPIKE) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 256;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(trailspacing) = 32;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '16.0 16.0 16.0';
+}
+
+DEF(grenade_explode);
+// decal
+SUB(grenade_explode) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '8.0 4.0 1.0';
+       MY(lightradiusfade) = 400;
+       MY(lightradius) = 250;
+       MY(originjitter) = '26.0 26.0 26.0';
+       MY(size_min) = 48;
+       MY(size_max) = 48;
+       MY(tex_min) = 8;
+       MY(tex_max) = 16;
+       MY(type) = "decal";
+}
+// fire effect which expands then slows
+SUB(grenade_explode) {
+       MY(airfriction) = 8;
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 228;
+       MY(alpha_fade) = 356;
+       MY(bounce) = 4.500000;
+       MY(color_min) = "0xe03f00";
+       MY(color_max) = "0x5e0000";
+       MY(count) = 40;
+       MY(liquidfriction) = 8;
+       MY(notunderwater) = true;
+       MY(originjitter) = '8.0 8.0 8.0';
+       MY(sizeincrease) = 20;
+       MY(size_min) = 16;
+       MY(size_max) = 26;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "static";
+       MY(velocityjitter) = '256.0 256.0 256.0';
+}
+// fire effect which make bright dot inside
+SUB(grenade_explode) {
+       MY(airfriction) = 8;
+       MY(alpha_min) = 228;
+       MY(alpha_max) = 328;
+       MY(alpha_fade) = 756;
+       MY(bounce) = 1;
+       MY(color_min) = "0xe03f00";
+       MY(color_max) = "0xffdf92";
+       MY(count) = 15;
+       MY(liquidfriction) = 8;
+       MY(notunderwater) = true;
+       MY(originjitter) = '8.0 8.0 8.0';
+       MY(sizeincrease) = 40;
+       MY(size_min) = 6;
+       MY(size_max) = 16;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "static";
+       MY(velocityjitter) = '256.0 256.0 256.0';
+}
+// smoke
+SUB(grenade_explode) {
+       MY(airfriction) = 5;
+       MY(alpha_min) = 300;
+       MY(alpha_max) = 550;
+       MY(alpha_fade) = 556;
+       MY(bounce) = 6;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x111111";
+       MY(count) = 10;
+       MY(notunderwater) = true;
+       MY(sizeincrease) = 34;
+       MY(size_min) = 20;
+       MY(size_max) = 40;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '256.0 256.0 256.0';
+}
+// underwater bubbles
+SUB(grenade_explode) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(count) = 32;
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 0.250000;
+       MY(originjitter) = '16.0 16.0 16.0';
+       MY(size_min) = 3;
+       MY(size_max) = 6;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '196.0 196.0 196.0';
+}
+// underwatershockwave
+SUB(grenade_explode) {
+       MY(alpha_min) = 40;
+       MY(alpha_max) = 40;
+       MY(alpha_fade) = 300;
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 1500;
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_min) = 33;
+       MY(tex_max) = 33;
+       MY(type) = "smoke";
+       MY(underwater) = true;
+       MY(velocitymultiplier) = 0.300000;
+}
+// bouncing sparks
+SUB(grenade_explode) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 644;
+       MY(alpha_max) = 956;
+       MY(alpha_fade) = 484;
+       MY(bounce) = 1.600000;
+       MY(color_min) = "0xffa35b";
+       MY(color_max) = "0xfff2be";
+       MY(count) = 16;
+       MY(gravity) = 1;
+       MY(liquidfriction) = 0.800000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '16.0 16.0 16.0';
+       MY(size_min) = 1;
+       MY(size_max) = 0.100000;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '424.0 424.0 624.0';
+       MY(velocityoffset) = '0.0 0.0 80.0';
+}
+// debris
+SUB(grenade_explode) {
+       MY(airfriction) = 0.500000;
+       MY(alpha_min) = 644;
+       MY(alpha_max) = 956;
+       MY(alpha_fade) = 684;
+       MY(bounce) = 1.600000;
+       MY(color_min) = "0x6a3d25";
+       MY(color_max) = "0xcac5b4";
+       MY(count) = 12;
+       MY(gravity) = 1.300000;
+       MY(notunderwater) = true;
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = -1000;
+       MY(spin_max) = 1000;
+       MY(size_min) = 2;
+       MY(size_max) = 6;
+       MY(tex_min) = 66;
+       MY(tex_max) = 68;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '324.0 324.0 524.0';
+}
+
+DEF(electro_muzzleflash);
+SUB(electro_muzzleflash) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x283880";
+       MY(color_max) = "0x283880";
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '1.5 3.0 6.0';
+       MY(lightradiusfade) = 2000;
+       MY(lightradius) = 200;
+       MY(originjitter) = '1.5 1.5 1.5';
+       MY(sizeincrease) = -10;
+       MY(size_min) = 15;
+       MY(size_max) = 15;
+       MY(tex_min) = 65;
+       MY(tex_max) = 65;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '6.0 6.0 6.0';
+       MY(velocitymultiplier) = 0.010000;
+}
+SUB(electro_muzzleflash) {
+       MY(airfriction) = 2;
+       MY(alpha_min) = 110;
+       MY(alpha_max) = 228;
+       MY(alpha_fade) = 2024;
+       MY(color_min) = "0xD9FDFF";
+       MY(color_max) = "0xD9FDFF";
+       MY(count) = 7;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 5;
+       MY(size_max) = 15;
+       MY(stretchfactor) = 1.500000;
+       MY(tex_min) = 8;
+       MY(tex_max) = 15;
+       MY(type) = "spark";
+       MY(velocityjitter) = '150.0 150.0 150.0';
+       MY(velocitymultiplier) = 0.500000;
+}
+SUB(electro_muzzleflash) {
+       MY(airfriction) = 8;
+       MY(alpha_min) = 110;
+       MY(alpha_max) = 228;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0xD9FDFF";
+       MY(color_max) = "0xD9FDFF";
+       MY(count) = 5;
+       MY(gravity) = 1.300000;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 7;
+       MY(size_max) = 6;
+       MY(stretchfactor) = 0.100000;
+       MY(tex_min) = 41;
+       MY(tex_max) = 41;
+       MY(type) = "spark";
+       MY(velocityjitter) = '350.0 350.0 350.0';
+       MY(velocitymultiplier) = 2.500000;
+}
+
+// electro trail
+DEF(TR_NEXUIZPLASMA);
+// glowing vapor trail
+SUB(TR_NEXUIZPLASMA) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 968;
+       MY(color_min) = "0x283880";
+       MY(color_max) = "0x283880";
+       MY(lightcolor) = '1.5 3.0 6.0';
+       MY(lightradius) = 90;
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 38;
+       MY(tex_max) = 38;
+       MY(trailspacing) = 2;
+       MY(type) = "static";
+       MY(velocitymultiplier) = -0.100000;
+}
+// bright sparks
+SUB(TR_NEXUIZPLASMA) {
+       MY(airfriction) = 12;
+       MY(alpha_min) = 444;
+       MY(alpha_max) = 512;
+       MY(alpha_fade) = 1866;
+       MY(bounce) = 1;
+       MY(color_min) = "0x629dff";
+       MY(color_max) = "0x0018ff";
+       MY(count) = 1.500000;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(sizeincrease) = -20;
+       MY(size_min) = 2;
+       MY(size_max) = 4;
+       MY(tex_min) = 42;
+       MY(tex_max) = 42;
+       MY(trailspacing) = 12;
+       MY(type) = "snow";
+       MY(velocityjitter) = '50.0 50.0 50.0';
+       MY(velocityoffset) = '0.0 0.0 15.0';
+}
+
+DEF(electro_impact);
+// decal
+SUB(electro_impact) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '3.1 4.4 10.0';
+       MY(lightradiusfade) = 250;
+       MY(lightradius) = 250;
+       MY(originjitter) = '17.0 17.0 17.0';
+       MY(size_min) = 32;
+       MY(size_max) = 32;
+       MY(tex_min) = 59;
+       MY(tex_max) = 59;
+       MY(type) = "decal";
+}
+// shockwave
+SUB(electro_impact) {
+       MY(alpha_min) = 40;
+       MY(alpha_max) = 40;
+       MY(alpha_fade) = 350;
+       MY(color_min) = "0x80C0FF";
+       MY(color_max) = "0x80C0FF";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 1000;
+       MY(size_min) = 32;
+       MY(size_max) = 32;
+       MY(tex_min) = 33;
+       MY(tex_max) = 33;
+       MY(type) = "smoke";
+       MY(velocitymultiplier) = 44;
+}
+// flare effect
+SUB(electro_impact) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x80C0FF";
+       MY(color_max) = "0x80C0FF";
+       MY(countabsolute) = 1;
+       MY(size_min) = 12;
+       MY(size_max) = 32;
+       MY(tex_min) = 38;
+       MY(tex_max) = 38;
+       MY(type) = "static";
+}
+// cloud of bouncing sparks
+SUB(electro_impact) {
+       MY(airfriction) = 6;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1024;
+       MY(bounce) = 2;
+       MY(color_min) = "0x629dff";
+       MY(color_max) = "0x0018ff";
+       MY(count) = 30;
+       MY(gravity) = -0.300000;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = -9999;
+       MY(spin_max) = 9999;
+       MY(sizeincrease) = -50;
+       MY(size_min) = 36;
+       MY(size_max) = 36;
+       MY(tex_min) = 42;
+       MY(tex_max) = 42;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '512.0 512.0 512.0';
+}
+// inner cloud of smoke
+SUB(electro_impact) {
+       MY(airfriction) = 30;
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x629dff";
+       MY(color_max) = "0x0018ff";
+       MY(count) = 30;
+       MY(originjitter) = '20.0 20.0 20.0';
+       MY(sizeincrease) = 50;
+       MY(size_min) = 20;
+       MY(size_max) = 24;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '320.0 320.0 320.0';
+}
+
+DEF(electro_ballexplode);
+// decal
+SUB(electro_ballexplode) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '3.1 4.4 10.0';
+       MY(lightradiusfade) = 250;
+       MY(lightradius) = 250;
+       MY(originjitter) = '17.0 17.0 17.0';
+       MY(size_min) = 32;
+       MY(size_max) = 32;
+       MY(tex_min) = 59;
+       MY(tex_max) = 59;
+       MY(type) = "decal";
+}
+// flare effect
+SUB(electro_ballexplode) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x80C0FF";
+       MY(color_max) = "0x80C0FF";
+       MY(countabsolute) = 1;
+       MY(size_min) = 32;
+       MY(size_max) = 32;
+       MY(tex_min) = 38;
+       MY(tex_max) = 38;
+       MY(type) = "static";
+}
+// cloud of bouncing sparks
+SUB(electro_ballexplode) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1024;
+       MY(bounce) = 2;
+       MY(color_min) = "0xFDFFD9";
+       MY(color_max) = "0xFDFFD9";
+       MY(count) = 64;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 1;
+       MY(size_max) = 2;
+       MY(stretchfactor) = 0.400000;
+       MY(tex_min) = 41;
+       MY(tex_max) = 41;
+       MY(type) = "spark";
+       MY(velocityjitter) = '512.0 512.0 512.0';
+}
+// inner cloud of smoke
+SUB(electro_ballexplode) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x202020";
+       MY(color_max) = "0x404040";
+       MY(count) = 8;
+       MY(originjitter) = '20.0 20.0 20.0';
+       MY(size_min) = 24;
+       MY(size_max) = 24;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '32.0 32.0 32.0';
+}
+
+DEF(electro_combo);
+// decal
+SUB(electro_combo) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '4.0 5.0 6.0';
+       MY(lightradiusfade) = 300;
+       MY(lightradius) = 400;
+       MY(originjitter) = '17.0 17.0 17.0';
+       MY(size_min) = 64;
+       MY(size_max) = 64;
+       MY(tex_min) = 59;
+       MY(tex_max) = 59;
+       MY(type) = "decal";
+}
+// flare effect
+SUB(electro_combo) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0x80C0FF";
+       MY(color_max) = "0x80C0FF";
+       MY(countabsolute) = 1;
+       MY(size_min) = 48;
+       MY(size_max) = 48;
+       MY(tex_min) = 38;
+       MY(tex_max) = 38;
+       MY(type) = "static";
+}
+// large sparks
+SUB(electro_combo) {
+       MY(airfriction) = 6;
+       MY(alpha_min) = 156;
+       MY(alpha_max) = 156;
+       MY(alpha_fade) = 156;
+       MY(bounce) = 2;
+       MY(color_min) = "0x2030FF";
+       MY(color_max) = "0x80C0FF";
+       MY(count) = 5;
+       MY(liquidfriction) = 16;
+       MY(sizeincrease) = 50;
+       MY(size_min) = 32;
+       MY(size_max) = 32;
+       MY(tex_max) = 7;
+       MY(type) = "static";
+       MY(velocityjitter) = '512.0 512.0 512.0';
+}
+SUB(electro_combo) {
+       MY(alpha_min) = 444;
+       MY(alpha_max) = 512;
+       MY(alpha_fade) = 700;
+       MY(bounce) = 1.600000;
+       MY(color_min) = "0xa9cacf";
+       MY(color_max) = "0x0054ff";
+       MY(count) = 32;
+       MY(gravity) = 0.300000;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 2;
+       MY(size_max) = 4;
+       MY(stretchfactor) = 2;
+       MY(tex_min) = 41;
+       MY(tex_max) = 41;
+       MY(type) = "spark";
+       MY(velocityjitter) = '312.0 312.0 312.0';
+       MY(velocitymultiplier) = 3;
+}
+// inner cloud of smoke
+SUB(electro_combo) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 256;
+       MY(color_min) = "0x202020";
+       MY(color_max) = "0x404040";
+       MY(count) = 0.125000;
+       MY(originjitter) = '20.0 20.0 20.0';
+       MY(size_min) = 24;
+       MY(size_max) = 24;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '32.0 32.0 32.0';
+}
+// shockwave
+SUB(electro_combo) {
+       MY(alpha_min) = 40;
+       MY(alpha_max) = 40;
+       MY(alpha_fade) = 100;
+       MY(color_min) = "0xa9cacf";
+       MY(color_max) = "0x0054ff";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 600;
+       MY(size_min) = 30;
+       MY(size_max) = 30;
+       MY(tex_min) = 33;
+       MY(tex_max) = 33;
+       MY(type) = "smoke";
+       MY(velocitymultiplier) = 0.300000;
+}
+
+DEF(crylink_muzzleflash);
+SUB(crylink_muzzleflash) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 2024;
+       MY(color_min) = "0xdd9cff";
+       MY(color_max) = "0xff0090";
+       MY(count) = 0.500000;
+       MY(lightcolor) = '1.6 0.2 2.0';
+       MY(lightradiusfade) = 2000;
+       MY(lightradius) = 200;
+       MY(size_min) = 15;
+       MY(size_max) = 20;
+       MY(tex_min) = 65;
+       MY(tex_max) = 65;
+       MY(type) = "smoke";
+       MY(velocitymultiplier) = 0.010000;
+}
+SUB(crylink_muzzleflash) {
+       MY(airfriction) = 12;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0xA080C0";
+       MY(color_max) = "0xA080C0";
+       MY(count) = 5;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 5;
+       MY(size_max) = 10;
+       MY(stretchfactor) = 1.500000;
+       MY(tex_min) = 35;
+       MY(tex_max) = 36;
+       MY(type) = "spark";
+       MY(velocityjitter) = '200.0 200.0 200.0';
+       MY(velocitymultiplier) = 0.300000;
+}
+
+DEF(crylink_impact);
+// decal
+SUB(crylink_impact) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(originjitter) = '12.0 12.0 12.0';
+       MY(size_min) = 24;
+       MY(size_max) = 24;
+       MY(tex_min) = 47;
+       MY(tex_max) = 47;
+       MY(type) = "decal";
+}
+// purple flare effect
+SUB(crylink_impact) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x504060";
+       MY(color_max) = "0x504060";
+       MY(countabsolute) = 1;
+       MY(size_min) = 24;
+       MY(size_max) = 24;
+       MY(tex_min) = 39;
+       MY(tex_max) = 39;
+       MY(type) = "static";
+}
+// purple sparks
+SUB(crylink_impact) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1024;
+       MY(bounce) = 2;
+       MY(color_min) = "0xA040C0";
+       MY(color_max) = "0xA040C0";
+       MY(count) = 40;
+       MY(size_min) = 6;
+       MY(size_max) = 6;
+       MY(tex_min) = 41;
+       MY(tex_max) = 41;
+       MY(type) = "spark";
+       MY(velocityjitter) = '512.0 512.0 512.0';
+}
+// purple splash
+SUB(crylink_impact) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0xE070FF";
+       MY(color_max) = "0xE070FF";
+       MY(count) = 1.500000;
+       MY(size_min) = 16;
+       MY(size_max) = 16;
+       MY(type) = "static";
+       MY(velocityjitter) = '32.0 32.0 32.0';
+}
+// purple splash
+SUB(crylink_impact) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0xE070FF";
+       MY(color_max) = "0xE070FF";
+       MY(count) = 3;
+       MY(size_min) = 16;
+       MY(size_max) = 16;
+       MY(type) = "static";
+       MY(velocityjitter) = '256.0 256.0 256.0';
+}
+
+DEF(nex_muzzleflash);
+SUB(nex_muzzleflash) {
+       MY(airfriction) = 9;
+       MY(alpha_min) = 328;
+       MY(alpha_max) = 328;
+       MY(alpha_fade) = 4000;
+       MY(color_min) = "0x202020";
+       MY(color_max) = "0x0072ff";
+       MY(count) = 12;
+       MY(lightcolor) = '2.0 2.5 3.0';
+       MY(lightradiusfade) = 200;
+       MY(lightradius) = 200;
+       MY(originjitter) = '4.0 4.0 4.0';
+       MY(sizeincrease) = -100;
+       MY(size_min) = 16;
+       MY(size_max) = 16;
+       MY(stretchfactor) = 2;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "spark";
+       MY(velocityjitter) = '180.0 180.0 180.0';
+       MY(velocitymultiplier) = 1.400000;
+}
+SUB(nex_muzzleflash) {
+       MY(airfriction) = 9;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0xD9FDFF";
+       MY(color_max) = "0xD9FDFF";
+       MY(count) = 50;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 41;
+       MY(tex_max) = 41;
+       MY(type) = "spark";
+       MY(velocityjitter) = '600.0 600.0 600.0';
+       MY(velocitymultiplier) = 1.500000;
+}
+
+// vortex beam
+DEF(nex_beam);
+SUB(nex_beam) {
+       MY(airfriction) = 5;
+       MY(alpha_min) = 64;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0x1680A0";
+       MY(color_max) = "0x1680A0";
+       MY(sizeincrease) = 2;
+       MY(size_min) = 4;
+       MY(size_max) = 4;
+       MY(tex_min) = 32;
+       MY(tex_max) = 32;
+       MY(trailspacing) = 64;
+       MY(type) = "static";
+}
+// drifting smoke
+SUB(nex_beam) {
+       MY(airfriction) = 9;
+       MY(alpha_min) = 32;
+       MY(alpha_max) = 64;
+       MY(alpha_fade) = 32;
+       MY(color_min) = "0x5080A0";
+       MY(color_max) = "0x5080A0";
+       MY(sizeincrease) = 8;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_max) = 8;
+       MY(trailspacing) = 12;
+       MY(type) = "static";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+}
+// bright core
+SUB(nex_beam) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1280;
+       MY(color_min) = "0x80CDFF";
+       MY(color_max) = "0x80CDFF";
+       MY(size_min) = 4;
+       MY(size_max) = 4;
+       MY(trailspacing) = 12;
+       MY(type) = "static";
+}
+// sparks
+SUB(nex_beam) {
+       MY(airfriction) = 5;
+       MY(alpha_min) = 64;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 80;
+       MY(color_min) = "0x1680A0";
+       MY(color_max) = "0x1680A0";
+       MY(gravity) = -0.010000;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 63;
+       MY(tex_max) = 63;
+       MY(trailspacing) = 16;
+       MY(type) = "snow";
+}
+
+DEF(nex_impact);
+// decal
+SUB(nex_impact) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '4.0 6.0 8.0';
+       MY(lightradiusfade) = 250;
+       MY(lightradius) = 200;
+       MY(originjitter) = '14.0 14.0 14.0';
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(size_min) = 24;
+       MY(size_max) = 24;
+       MY(tex_min) = 47;
+       MY(tex_max) = 47;
+       MY(type) = "decal";
+}
+// rotating something
+SUB(nex_impact) {
+       MY(alpha_min) = 55;
+       MY(alpha_max) = 55;
+       MY(alpha_fade) = 50;
+       MY(color_min) = "0x1680A0";
+       MY(color_max) = "0x1680A0";
+       MY(count) = 5;
+       MY(startangle_min) = 180;
+       MY(startangle_max) = -180;
+       MY(spin_min) = 500;
+       MY(spin_max) = -500;
+       MY(sizeincrease) = 20;
+       MY(size_min) = 25;
+       MY(size_max) = 28;
+       MY(tex_min) = 46;
+       MY(tex_max) = 46;
+       MY(type) = "smoke";
+}
+// shockwave
+SUB(nex_impact) {
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 50;
+       MY(alpha_fade) = 400;
+       MY(color_min) = "0x1680A0";
+       MY(color_max) = "0x1680A0";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 900;
+       MY(size_min) = 16;
+       MY(size_max) = 16;
+       MY(tex_min) = 33;
+       MY(tex_max) = 33;
+       MY(type) = "static";
+}
+// shockwave2
+SUB(nex_impact) {
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 50;
+       MY(alpha_fade) = 100;
+       MY(color_min) = "0x1680A0";
+       MY(color_max) = "0x1680A0";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 500;
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_min) = 65;
+       MY(tex_max) = 65;
+       MY(type) = "static";
+}
+// flare effect
+SUB(nex_impact) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 256;
+       MY(color_min) = "0x80C0FF";
+       MY(color_max) = "0x80C0FF";
+       MY(countabsolute) = 1;
+       MY(size_min) = 8;
+       MY(size_max) = 8;
+       MY(tex_min) = 37;
+       MY(tex_max) = 37;
+       MY(type) = "static";
+}
+// small sparks which glow brightly but live briefly
+SUB(nex_impact) {
+       MY(airfriction) = 9;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 512;
+       MY(bounce) = 2;
+       MY(color_min) = "0xD9FDFF";
+       MY(color_max) = "0xD9FDFF";
+       MY(count) = 64;
+       MY(size_min) = 4;
+       MY(size_max) = 4;
+       MY(stretchfactor) = 3;
+       MY(tex_min) = 41;
+       MY(tex_max) = 41;
+       MY(type) = "spark";
+       MY(velocityjitter) = '600.0 600.0 600.0';
+       MY(velocitymultiplier) = 0.500000;
+}
+// small sparks that live longer
+SUB(nex_impact) {
+       MY(airfriction) = 2;
+       MY(alpha_min) = 255;
+       MY(alpha_max) = 255;
+       MY(alpha_fade) = 112;
+       MY(bounce) = 1.600000;
+       MY(color_min) = "0xD9FDFF";
+       MY(color_max) = "0xD9FDFF";
+       MY(count) = 16;
+       MY(gravity) = 1;
+       MY(size_min) = 2;
+       MY(size_max) = 2;
+       MY(stretchfactor) = 0.700000;
+       MY(tex_min) = 41;
+       MY(tex_max) = 41;
+       MY(type) = "spark";
+       MY(velocityjitter) = '300.0 300.0 600.0';
+       MY(velocitymultiplier) = 2.500000;
+}
+
+DEF(hagar_muzzleflash);
+SUB(hagar_muzzleflash) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x202020";
+       MY(color_max) = "0x404040";
+       MY(count) = 2;
+       MY(lightcolor) = '2.0 1.5 0.2';
+       MY(lightradiusfade) = 2000;
+       MY(lightradius) = 200;
+       MY(originjitter) = '1.5 1.5 1.5';
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '6.0 6.0 6.0';
+       MY(velocitymultiplier) = 0.010000;
+}
+SUB(hagar_muzzleflash) {
+       MY(airfriction) = 12;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0xff8400";
+       MY(color_max) = "0xff4200";
+       MY(count) = 15;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = -400;
+       MY(spin_max) = 400;
+       MY(size_min) = 5;
+       MY(size_max) = 10;
+       MY(stretchfactor) = 2;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "spark";
+       MY(velocityjitter) = '200.0 200.0 200.0';
+       MY(velocitymultiplier) = 0.500000;
+}
+
+DEF(hagar_bounce);
+SUB(hagar_bounce) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 256;
+       MY(color_min) = "0x202020";
+       MY(color_max) = "0x404040";
+       MY(count) = 2;
+       MY(lightcolor) = '2.0 1.5 0.2';
+       MY(lightradiusfade) = 300;
+       MY(lightradius) = 60;
+       MY(originjitter) = '1.5 1.5 1.5';
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '6.0 6.0 6.0';
+       MY(velocitymultiplier) = 0.010000;
+}
+SUB(hagar_bounce) {
+       MY(airfriction) = 12;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 256;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0xFFFDD9";
+       MY(color_max) = "0xFFFDD9";
+       MY(count) = 15;
+       MY(gravity) = 1;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '600.0 600.0 600.0';
+       MY(velocitymultiplier) = 0.500000;
+}
+
+DEF(hagar_explode);
+// decal
+SUB(hagar_explode) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '8.0 4.0 1.0';
+       MY(lightradiusfade) = 400;
+       MY(lightradius) = 120;
+       MY(originjitter) = '14.0 14.0 14.0';
+       MY(size_min) = 28;
+       MY(size_max) = 38;
+       MY(tex_min) = 8;
+       MY(tex_max) = 16;
+       MY(type) = "decal";
+}
+// fire effect which make bright dot inside
+SUB(hagar_explode) {
+       MY(airfriction) = 8;
+       MY(alpha_min) = 80;
+       MY(alpha_max) = 200;
+       MY(alpha_fade) = 356;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0xffe955";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 3.500000;
+       MY(liquidfriction) = 8;
+       MY(notunderwater) = true;
+       MY(originjitter) = '8.0 8.0 8.0';
+       MY(sizeincrease) = 5;
+       MY(size_min) = 16;
+       MY(size_max) = 26;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '156.0 156.0 156.0';
+}
+// fire effect which expands then slows
+SUB(hagar_explode) {
+       MY(airfriction) = 12;
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 456;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 12;
+       MY(liquidfriction) = 8;
+       MY(notunderwater) = true;
+       MY(originjitter) = '8.0 8.0 8.0';
+       MY(sizeincrease) = 15;
+       MY(size_min) = 20;
+       MY(size_max) = 26;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "static";
+       MY(velocityjitter) = '286.0 286.0 286.0';
+}
+// smoke
+SUB(hagar_explode) {
+       MY(airfriction) = 5;
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 500;
+       MY(alpha_fade) = 600;
+       MY(bounce) = 2;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x111111";
+       MY(count) = 7;
+       MY(notunderwater) = true;
+       MY(sizeincrease) = 20;
+       MY(size_min) = 20;
+       MY(size_max) = 40;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '244.0 244.0 244.0';
+}
+// underwater bubbles
+SUB(hagar_explode) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(count) = 16;
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 0.250000;
+       MY(originjitter) = '16.0 16.0 16.0';
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '96.0 96.0 96.0';
+}
+// bouncing sparks
+SUB(hagar_explode) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 644;
+       MY(alpha_max) = 956;
+       MY(alpha_fade) = 684;
+       MY(bounce) = 1.600000;
+       MY(color_min) = "0xffa35b";
+       MY(color_max) = "0xfff2be";
+       MY(count) = 4;
+       MY(gravity) = 1;
+       MY(liquidfriction) = 0.800000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '16.0 16.0 16.0';
+       MY(size_min) = 1;
+       MY(size_max) = 0.100000;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '224.0 224.0 224.0';
+       MY(velocityoffset) = '0.0 0.0 80.0';
+}
+
+DEF(rocketlauncher_muzzleflash);
+SUB(rocketlauncher_muzzleflash) {
+       MY(airfriction) = 2;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 256;
+       MY(color_min) = "0x202020";
+       MY(color_max) = "0x404040";
+       MY(count) = 10;
+       MY(originjitter) = '1.5 1.5 1.5';
+       MY(sizeincrease) = 20;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '40.0 40.0 40.0';
+       MY(velocitymultiplier) = -0.130000;
+}
+SUB(rocketlauncher_muzzleflash) {
+       MY(airfriction) = 9;
+       MY(alpha_min) = 10;
+       MY(alpha_max) = 25;
+       MY(alpha_fade) = 20;
+       MY(color_min) = "0xFFFDD9";
+       MY(color_max) = "0xFFFDD9";
+       MY(count) = 6;
+       MY(originjitter) = '3.0 3.0 3.0';
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = -30;
+       MY(spin_max) = 30;
+       MY(sizeincrease) = 20;
+       MY(size_min) = 5;
+       MY(size_max) = 10;
+       MY(tex_min) = 35;
+       MY(tex_max) = 36;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '100.0 100.0 100.0';
+       MY(velocitymultiplier) = 0.300000;
+}
+
+// rocket trail
+DEF(TR_ROCKET);
+// smoke
+SUB(TR_ROCKET) {
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 300;
+       MY(alpha_fade) = 200;
+       MY(bounce) = 1;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x666666";
+       MY(lightcolor) = '6.0 3.0 1.0';
+       MY(lightradius) = 150;
+       MY(notunderwater) = true;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = -30;
+       MY(spin_max) = 30;
+       MY(sizeincrease) = 11;
+       MY(size_min) = 3;
+       MY(size_max) = 4;
+       MY(tex_max) = 8;
+       MY(trailspacing) = 10;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '3.0 3.0 3.0';
+       MY(velocitymultiplier) = -0.020000;
+}
+// fire
+SUB(TR_ROCKET) {
+       MY(airfriction) = 8;
+       MY(alpha_min) = 100;
+       MY(alpha_max) = 144;
+       MY(alpha_fade) = 588;
+       MY(color_min) = "0xffdf72";
+       MY(color_max) = "0x811200";
+       MY(sizeincrease) = -30;
+       MY(size_min) = 7;
+       MY(size_max) = 7;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(trailspacing) = 4;
+       MY(type) = "static";
+       MY(velocityjitter) = '32.0 32.0 32.0';
+       MY(velocitymultiplier) = -1.500000;
+}
+// bubbles
+SUB(TR_ROCKET) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 256;
+       MY(bounce) = 1.500000;
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 1;
+       MY(size_max) = 2;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(trailspacing) = 16;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '16.0 16.0 16.0';
+       MY(velocitymultiplier) = -0.310000;
+}
+// sparks
+SUB(TR_ROCKET) {
+       MY(airfriction) = 5;
+       MY(alpha_min) = 444;
+       MY(alpha_max) = 512;
+       MY(alpha_fade) = 1866;
+       MY(bounce) = 1;
+       MY(color_min) = "0xFFFDD9";
+       MY(color_max) = "0xFFFDD9";
+       MY(notunderwater) = true;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 0.500000;
+       MY(size_max) = 0.500000;
+       MY(stretchfactor) = 0.300000;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(trailspacing) = 20;
+       MY(type) = "spark";
+       MY(velocityjitter) = '100.0 100.0 100.0';
+       MY(velocitymultiplier) = -0.310000;
+}
+
+// rocket explosion (bigger than mortar and hagar)
+DEF(rocket_explode);
+SUB(rocket_explode) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '8.0 4.0 1.0';
+       MY(lightradiusfade) = 750;
+       MY(lightradius) = 400;
+       MY(originjitter) = '23.0 23.0 23.0';
+       MY(size_min) = 72;
+       MY(size_max) = 72;
+       MY(tex_min) = 8;
+       MY(tex_max) = 16;
+       MY(type) = "decal";
+}
+// fire effect
+SUB(rocket_explode) {
+       MY(airfriction) = 8;
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 32;
+       MY(liquidfriction) = 8;
+       MY(notunderwater) = true;
+       MY(originjitter) = '8.0 8.0 8.0';
+       MY(sizeincrease) = 45;
+       MY(size_min) = 33;
+       MY(size_max) = 44;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "static";
+       MY(velocityjitter) = '512.0 512.0 512.0';
+}
+// fire effect 2
+SUB(rocket_explode) {
+       MY(airfriction) = 19;
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 612;
+       MY(bounce) = 2.500000;
+       MY(color_min) = "0xea691b";
+       MY(color_max) = "0xeed05a";
+       MY(count) = 14;
+       MY(liquidfriction) = 19;
+       MY(notunderwater) = true;
+       MY(originjitter) = '8.0 8.0 8.0';
+       MY(sizeincrease) = 55;
+       MY(size_min) = 33;
+       MY(size_max) = 44;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '912.0 912.0 912.0';
+}
+// smoke
+SUB(rocket_explode) {
+       MY(airfriction) = 5;
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 450;
+       MY(alpha_fade) = 456;
+       MY(bounce) = 2;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x111111";
+       MY(count) = 32;
+       MY(notunderwater) = true;
+       MY(sizeincrease) = 44;
+       MY(size_min) = 20;
+       MY(size_max) = 40;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '444.0 444.0 444.0';
+}
+// underwater bubbles
+SUB(rocket_explode) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(count) = 32;
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 0.250000;
+       MY(originjitter) = '16.0 16.0 16.0';
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '144.0 144.0 144.0';
+}
+// underwatershockwave
+SUB(rocket_explode) {
+       MY(alpha_min) = 40;
+       MY(alpha_max) = 40;
+       MY(alpha_fade) = 300;
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 1900;
+       MY(size_min) = 30;
+       MY(size_max) = 30;
+       MY(tex_min) = 33;
+       MY(tex_max) = 33;
+       MY(type) = "smoke";
+       MY(underwater) = true;
+       MY(velocitymultiplier) = 0.300000;
+}
+// bouncing sparks
+SUB(rocket_explode) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 644;
+       MY(alpha_max) = 956;
+       MY(alpha_fade) = 484;
+       MY(bounce) = 1.600000;
+       MY(color_min) = "0xffa35b";
+       MY(color_max) = "0xfff2be";
+       MY(count) = 16;
+       MY(gravity) = 1;
+       MY(liquidfriction) = 0.800000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '16.0 16.0 16.0';
+       MY(size_min) = 1;
+       MY(size_max) = 0.100000;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '424.0 424.0 624.0';
+       MY(velocityoffset) = '0.0 0.0 80.0';
+}
+// debris
+SUB(rocket_explode) {
+       MY(airfriction) = 0.500000;
+       MY(alpha_min) = 644;
+       MY(alpha_max) = 956;
+       MY(alpha_fade) = 684;
+       MY(bounce) = 1.600000;
+       MY(color_min) = "0x6a3d25";
+       MY(color_max) = "0xcac5b4";
+       MY(count) = 12;
+       MY(gravity) = 1.300000;
+       MY(notunderwater) = true;
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = -1000;
+       MY(spin_max) = 1000;
+       MY(size_min) = 2;
+       MY(size_max) = 6;
+       MY(tex_min) = 66;
+       MY(tex_max) = 68;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '324.0 324.0 524.0';
+}
+
+DEF(grapple_muzzleflash);
+SUB(grapple_muzzleflash) {
+       MY(lightcolor) = '1.0 0.0 0.0';
+       MY(lightradiusfade) = 800;
+       MY(lightradius) = 160;
+}
+
+DEF(grapple_impact);
+SUB(grapple_impact) {
+       MY(lightcolor) = '1.0 0.0 0.0';
+       MY(lightradiusfade) = 800;
+       MY(lightradius) = 160;
+}
+
+DEF(nex242_misc_laser_beam);
+SUB(nex242_misc_laser_beam) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0xff0000";
+       MY(color_max) = "0xff0000";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 1;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 200;
+       MY(tex_max) = 200;
+       MY(type) = "beam";
+}
+
+DEF(nex242_misc_laser_beam_end);
+SUB(nex242_misc_laser_beam_end) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 768;
+       MY(bounce) = -1;
+       MY(color_min) = "0x8f4333";
+       MY(color_max) = "0xfff31b";
+       MY(count) = 0.500000;
+       MY(gravity) = 1;
+       MY(size_min) = 0.400000;
+       MY(size_max) = 0.400000;
+       MY(type) = "spark";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocitymultiplier) = 100;
+}
+
+DEF(nex242_misc_laser_beam_fast);
+SUB(nex242_misc_laser_beam_fast) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 640;
+       MY(color_min) = "0xff0000";
+       MY(color_max) = "0xff0000";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 0.100000;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 200;
+       MY(tex_max) = 200;
+       MY(type) = "beam";
+}
+
+DEF(nex242_misc_laser_beam_fast_end);
+SUB(nex242_misc_laser_beam_fast_end) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 768;
+       MY(bounce) = -1;
+       MY(color_min) = "0x8f4333";
+       MY(color_max) = "0xfff31b";
+       MY(count) = 0.500000;
+       MY(gravity) = 1;
+       MY(size_min) = 0.400000;
+       MY(size_max) = 0.400000;
+       MY(type) = "spark";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocitymultiplier) = 100;
+}
+
+DEF(nex242_misc_laser_green_beam);
+SUB(nex242_misc_laser_green_beam) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0x00ff00";
+       MY(color_max) = "0x00ff00";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 1;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 200;
+       MY(tex_max) = 200;
+       MY(type) = "beam";
+}
+
+DEF(nex242_misc_laser_green_beam_end);
+SUB(nex242_misc_laser_green_beam_end) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 768;
+       MY(bounce) = -1;
+       MY(color_min) = "0x8f4333";
+       MY(color_max) = "0xfff31b";
+       MY(count) = 0.500000;
+       MY(gravity) = 1;
+       MY(size_min) = 0.400000;
+       MY(size_max) = 0.400000;
+       MY(type) = "spark";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocitymultiplier) = 100;
+}
+
+DEF(nex242_misc_laser_blue_beam);
+SUB(nex242_misc_laser_blue_beam) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0x0000ff";
+       MY(color_max) = "0x0000ff";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 1;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 200;
+       MY(tex_max) = 200;
+       MY(type) = "beam";
+}
+
+DEF(nex242_misc_laser_blue_beam_end);
+SUB(nex242_misc_laser_blue_beam_end) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 768;
+       MY(bounce) = -1;
+       MY(color_min) = "0x8f4333";
+       MY(color_max) = "0xfff31b";
+       MY(count) = 0.500000;
+       MY(gravity) = 1;
+       MY(size_min) = 0.400000;
+       MY(size_max) = 0.400000;
+       MY(type) = "spark";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocitymultiplier) = 100;
+}
+
+DEF(nex242_misc_laser_yellow_beam);
+SUB(nex242_misc_laser_yellow_beam) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0xffff00";
+       MY(color_max) = "0xffff00";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 1;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 200;
+       MY(tex_max) = 200;
+       MY(type) = "beam";
+}
+
+DEF(nex242_misc_laser_yellow_beam_end);
+SUB(nex242_misc_laser_yellow_beam_end) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 768;
+       MY(bounce) = -1;
+       MY(color_min) = "0x8f4333";
+       MY(color_max) = "0xfff31b";
+       MY(count) = 0.500000;
+       MY(gravity) = 1;
+       MY(size_min) = 0.400000;
+       MY(size_max) = 0.400000;
+       MY(type) = "spark";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocitymultiplier) = 100;
+}
+
+DEF(nex242_misc_laser_cyan_beam);
+SUB(nex242_misc_laser_cyan_beam) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0x00ffff";
+       MY(color_max) = "0x00ffff";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 1;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 200;
+       MY(tex_max) = 200;
+       MY(type) = "beam";
+}
+
+DEF(nex242_misc_laser_cyan_beam_end);
+SUB(nex242_misc_laser_cyan_beam_end) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 768;
+       MY(bounce) = -1;
+       MY(color_min) = "0x8f4333";
+       MY(color_max) = "0xfff31b";
+       MY(count) = 0.500000;
+       MY(gravity) = 1;
+       MY(size_min) = 0.400000;
+       MY(size_max) = 0.400000;
+       MY(type) = "spark";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocitymultiplier) = 100;
+}
+
+DEF(nex242_misc_laser_magenta_beam);
+SUB(nex242_misc_laser_magenta_beam) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0xff00ff";
+       MY(color_max) = "0xff00ff";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 1;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 200;
+       MY(tex_max) = 200;
+       MY(type) = "beam";
+}
+
+DEF(nex242_misc_laser_magenta_beam_end);
+SUB(nex242_misc_laser_magenta_beam_end) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 768;
+       MY(bounce) = -1;
+       MY(color_min) = "0x8f4333";
+       MY(color_max) = "0xfff31b";
+       MY(count) = 0.500000;
+       MY(gravity) = 1;
+       MY(size_min) = 0.400000;
+       MY(size_max) = 0.400000;
+       MY(type) = "spark";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocitymultiplier) = 100;
+}
+
+DEF(nex242_misc_laser_white_beam);
+SUB(nex242_misc_laser_white_beam) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0xffffff";
+       MY(color_max) = "0xffffff";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 1;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 200;
+       MY(tex_max) = 200;
+       MY(type) = "beam";
+}
+
+DEF(nex242_misc_laser_white_beam_end);
+SUB(nex242_misc_laser_white_beam_end) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 768;
+       MY(bounce) = -1;
+       MY(color_min) = "0x8f4333";
+       MY(color_max) = "0xfff31b";
+       MY(count) = 0.500000;
+       MY(gravity) = 1;
+       MY(size_min) = 0.400000;
+       MY(size_max) = 0.400000;
+       MY(type) = "spark";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocitymultiplier) = 100;
+}
+
+DEF(nex242_misc_laser_black_beam);
+SUB(nex242_misc_laser_black_beam) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x000000";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 1;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 200;
+       MY(tex_max) = 200;
+       MY(type) = "beam";
+}
+
+DEF(nex242_misc_laser_black_beam_end);
+SUB(nex242_misc_laser_black_beam_end) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 768;
+       MY(bounce) = -1;
+       MY(color_min) = "0x8f4333";
+       MY(color_max) = "0xfff31b";
+       MY(count) = 0.500000;
+       MY(gravity) = 1;
+       MY(size_min) = 0.400000;
+       MY(size_max) = 0.400000;
+       MY(type) = "spark";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocitymultiplier) = 100;
+}
+
+DEF(nex242_misc_laser_orange_beam);
+SUB(nex242_misc_laser_orange_beam) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0xff6600";
+       MY(color_max) = "0xff6600";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 1;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 200;
+       MY(tex_max) = 200;
+       MY(type) = "beam";
+}
+
+DEF(nex242_misc_laser_orange_beam_end);
+SUB(nex242_misc_laser_orange_beam_end) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 768;
+       MY(bounce) = -1;
+       MY(color_min) = "0x8f4333";
+       MY(color_max) = "0xfff31b";
+       MY(count) = 0.500000;
+       MY(gravity) = 1;
+       MY(size_min) = 0.400000;
+       MY(size_max) = 0.400000;
+       MY(type) = "spark";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocitymultiplier) = 100;
+}
+
+// bigger crylink impact effect
+DEF(crylink_impactbig);
+// decal
+SUB(crylink_impactbig) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(originjitter) = '12.0 12.0 12.0';
+       MY(size_min) = 24;
+       MY(size_max) = 24;
+       MY(tex_min) = 47;
+       MY(tex_max) = 47;
+       MY(type) = "decal";
+}
+// purple flare effect
+SUB(crylink_impactbig) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x504060";
+       MY(color_max) = "0x504060";
+       MY(countabsolute) = 1;
+       MY(size_min) = 24;
+       MY(size_max) = 24;
+       MY(tex_min) = 39;
+       MY(tex_max) = 39;
+       MY(type) = "static";
+}
+// purple sparks
+SUB(crylink_impactbig) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1024;
+       MY(bounce) = 2;
+       MY(color_min) = "0xA040C0";
+       MY(color_max) = "0xA040C0";
+       MY(count) = 40;
+       MY(size_min) = 6;
+       MY(size_max) = 6;
+       MY(tex_min) = 41;
+       MY(tex_max) = 41;
+       MY(type) = "spark";
+       MY(velocityjitter) = '512.0 512.0 512.0';
+}
+// purple splash
+SUB(crylink_impactbig) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0xE070FF";
+       MY(color_max) = "0xE070FF";
+       MY(count) = 1.500000;
+       MY(size_min) = 16;
+       MY(size_max) = 16;
+       MY(type) = "static";
+       MY(velocityjitter) = '32.0 32.0 32.0';
+}
+// purple splash
+SUB(crylink_impactbig) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0xE070FF";
+       MY(color_max) = "0xE070FF";
+       MY(count) = 3;
+       MY(size_min) = 16;
+       MY(size_max) = 16;
+       MY(type) = "static";
+       MY(velocityjitter) = '256.0 256.0 256.0';
+}
+
+#include "effectinfo_gentle.inc"
+
+DEF(laser_deadly);
+// decal
+SUB(laser_deadly) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(originjitter) = '6.0 6.0 6.0';
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_min) = 56;
+       MY(tex_max) = 59;
+       MY(type) = "decal";
+}
+// dust/smoke drifting away from the impact
+SUB(laser_deadly) {
+       MY(airfriction) = 7;
+       MY(alpha_max) = 64;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0xFFFFFF";
+       MY(color_max) = "0xFFFFFF";
+       MY(count) = 0.025000;
+       MY(liquidfriction) = 16;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(sizeincrease) = 2;
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '15.0 15.0 15.0';
+       MY(velocitymultiplier) = 20;
+}
+// sparks
+SUB(laser_deadly) {
+       MY(airfriction) = 5;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 768;
+       MY(bounce) = 1;
+       MY(color_min) = "0xFDFFD9";
+       MY(color_max) = "0xFDFFD9";
+       MY(count) = 0.025000;
+       MY(gravity) = 1;
+       MY(notunderwater) = true;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 0.600000;
+       MY(size_max) = 0.600000;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '100.0 100.0 100.0';
+       MY(velocitymultiplier) = 100;
+}
+
+DEF(torch_small);
+// fire
+SUB(torch_small) {
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 8;
+       MY(gravity) = -0.500000;
+       MY(originjitter) = '5.0 5.0 5.0';
+       MY(sizeincrease) = -1;
+       MY(size_min) = 1;
+       MY(size_max) = 11;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '1.0 1.0 50.0';
+}
+// smoke
+SUB(torch_small) {
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 200;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x111111";
+       MY(count) = 4;
+       MY(gravity) = -0.300000;
+       MY(originjitter) = '3.0 3.0 3.0';
+       MY(sizeincrease) = 5;
+       MY(size_min) = 5;
+       MY(size_max) = 10;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '11.0 11.0 50.0';
+}
+
+DEF(fountain01);
+SUB(fountain01) {
+       MY(alpha_max) = 100;
+       MY(alpha_fade) = 100;
+       MY(bounce) = 1;
+       MY(color_min) = "0x7cbaff";
+       MY(color_max) = "0xcfd1ff";
+       MY(count) = 16;
+       MY(gravity) = 0.600000;
+       MY(originjitter) = '5.0 5.0 5.0';
+       MY(sizeincrease) = 20;
+       MY(size_min) = 10;
+       MY(size_max) = 15;
+       MY(tex_max) = 8;
+       MY(type) = "snow";
+       MY(velocityjitter) = '81.0 81.0 150.0';
+       MY(velocitymultiplier) = 2;
+}
+
+DEF(hookbomb_explode);
+// decal
+SUB(hookbomb_explode) {
+       MY(airfriction) = 10;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 200;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x807aff";
+       MY(color_max) = "0x4463d5";
+       MY(count) = 25;
+       MY(originjitter) = '10.0 10.0 10.0';
+       MY(sizeincrease) = -160;
+       MY(size_min) = 150;
+       MY(size_max) = 200;
+       MY(tex_min) = 38;
+       MY(tex_max) = 38;
+       MY(type) = "static";
+       MY(velocityjitter) = '550.0 550.0 550.0';
+}
+// decal in the air
+SUB(hookbomb_explode) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 265;
+       MY(alpha_fade) = 100;
+       MY(color_min) = "0x807aff";
+       MY(color_max) = "0x4463d5";
+       MY(countabsolute) = 3;
+       MY(originoffset) = '0.0 0.0 6.0';
+       MY(sizeincrease) = -60;
+       MY(size_min) = 160;
+       MY(size_max) = 200;
+       MY(tex_min) = 38;
+       MY(tex_max) = 38;
+       MY(type) = "static";
+}
+// decal on the ground
+SUB(hookbomb_explode) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(originjitter) = '6.0 6.0 6.0';
+       MY(size_min) = 80;
+       MY(size_max) = 100;
+       MY(tex_min) = 39;
+       MY(tex_max) = 39;
+       MY(type) = "decal";
+}
+// some sparks
+SUB(hookbomb_explode) {
+       MY(airfriction) = 2;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 456;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x807aff";
+       MY(color_max) = "0x4463d5";
+       MY(count) = 30;
+       MY(gravity) = 1;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(sizeincrease) = -60;
+       MY(size_min) = 20;
+       MY(size_max) = 30;
+       MY(tex_min) = 38;
+       MY(tex_max) = 38;
+       MY(type) = "spark";
+       MY(velocityjitter) = '1900.0 1900.0 1300.0';
+       MY(velocitymultiplier) = 0.500000;
+}
+
+DEF(EF_MGTURRETTRAIL);
+// smoke
+SUB(EF_MGTURRETTRAIL) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 196;
+       MY(alpha_fade) = 768;
+       MY(color_min) = "0xd0d0a0";
+       MY(color_max) = "0xffffff";
+       MY(gravity) = -0.010000;
+       MY(notunderwater) = true;
+       MY(sizeincrease) = -8;
+       MY(size_min) = 5;
+       MY(size_max) = 4;
+       MY(tex_max) = 8;
+       MY(trailspacing) = 10;
+       MY(type) = "smoke";
+}
+// bubbles
+SUB(EF_MGTURRETTRAIL) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 256;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(trailspacing) = 32;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '16.0 16.0 16.0';
+}
+
+DEF(fire_big);
+// fire
+SUB(fire_big) {
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 356;
+       MY(alpha_fade) = 512;
+       MY(bounce) = 2;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 26;
+       MY(gravity) = -0.500000;
+       MY(originjitter) = '33.0 33.0 33.0';
+       MY(sizeincrease) = -3;
+       MY(size_min) = 11;
+       MY(size_max) = 31;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '22.0 22.0 50.0';
+}
+// smoke
+SUB(fire_big) {
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 200;
+       MY(bounce) = 2;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x111111";
+       MY(count) = 11;
+       MY(gravity) = -0.300000;
+       MY(originjitter) = '44.0 44.0 44.0';
+       MY(sizeincrease) = 11;
+       MY(size_min) = 22;
+       MY(size_max) = 33;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '11.0 11.0 50.0';
+}
+
+#define flare(name, colormin, colormax) \
+       DEF(name##_flare); \
+       SUB(name##_flare) /* smoke */ { \
+               MY(alpha_min) = 200; \
+               MY(alpha_max) = 256; \
+               MY(alpha_fade) = 160; \
+               MY(bounce) = 1; \
+               MY(color_min) = colormin; \
+               MY(color_max) = colormax; \
+               MY(count) = 10.500000; \
+               MY(gravity) = -0.240000; \
+               MY(originjitter) = '2.0 2.0 0.0'; \
+               MY(sizeincrease) = 11; \
+               MY(size_min) = 1; \
+               MY(size_max) = 11; \
+               MY(tex_max) = 8; \
+               MY(type) = "alphastatic"; \
+               MY(velocityjitter) = '15.0 15.0 30.0'; \
+       }
+
+flare(red,     "0xff0000", "0xdc7171")
+flare(blue, "0x0000ff", "0x7194dc")
+#undef flare
+
+DEF(smoke_ring);
+// smoke
+SUB(smoke_ring) {
+       MY(airfriction) = 3;
+       MY(alpha_min) = 100;
+       MY(alpha_max) = 156;
+       MY(alpha_fade) = 200;
+       MY(bounce) = 1.100000;
+       MY(color_min) = "0x111111";
+       MY(color_max) = "0x979797";
+       MY(count) = 45;
+       MY(gravity) = 0.100000;
+       MY(notunderwater) = true;
+       MY(sizeincrease) = 21;
+       MY(size_min) = 1;
+       MY(size_max) = 11;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '190.0 190.0 50.0';
+}
+
+DEF(smoke_large);
+// smoke
+SUB(smoke_large) {
+       MY(airfriction) = 7;
+       MY(alpha_min) = 140;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 190;
+       MY(bounce) = 1.100000;
+       MY(color_min) = "0x9e895f";
+       MY(color_max) = "0xffd39b";
+       MY(count) = 25;
+       MY(gravity) = -0.150000;
+       MY(notunderwater) = true;
+       MY(sizeincrease) = 21;
+       MY(size_min) = 11;
+       MY(size_max) = 21;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '390.0 390.0 390.0';
+}
+
+DEF(sparks);
+SUB(sparks) {
+       MY(airfriction) = 3;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 256;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0xFFFDD9";
+       MY(color_max) = "0xFFFDD9";
+       MY(count) = 15;
+       MY(gravity) = 1;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 1;
+       MY(size_max) = 3;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '300.0 300.0 200.0';
+       MY(velocitymultiplier) = 1.500000;
+}
+
+DEF(electricity_sparks);
+SUB(electricity_sparks) {
+       MY(airfriction) = 3;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 556;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x807aff";
+       MY(color_max) = "0x4463d5";
+       MY(count) = 35;
+       MY(gravity) = 1;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 1;
+       MY(size_max) = 3;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '300.0 300.0 300.0';
+       MY(velocitymultiplier) = 0.500000;
+}
+
+DEF(steam);
+SUB(steam) {
+       MY(airfriction) = 5;
+       MY(alpha_min) = 140;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 190;
+       MY(bounce) = 1.100000;
+       MY(color_min) = "0xfffbdf";
+       MY(color_max) = "0xffffff";
+       MY(count) = 1;
+       MY(gravity) = -0.250000;
+       MY(notunderwater) = true;
+       MY(sizeincrease) = 7;
+       MY(size_min) = 1;
+       MY(size_max) = 3;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '19.0 19.0 19.0';
+       MY(velocitymultiplier) = 14;
+}
+
+DEF(smoking);
+SUB(smoking) {
+       MY(airfriction) = -1;
+       MY(alpha_min) = 100;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 100;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x292929";
+       MY(color_max) = "0x000000";
+       MY(count) = 10;
+       MY(gravity) = -0.100000;
+       MY(originjitter) = '10.0 10.0 10.0';
+       MY(sizeincrease) = 5;
+       MY(size_min) = 10;
+       MY(size_max) = 40;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '5.0 5.0 20.0';
+}
+
+// golden dust (create it once per second to cover large area in small yellow particles)
+DEF(goldendust);
+SUB(goldendust) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 70;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0xff9600";
+       MY(color_max) = "0xffefb8";
+       MY(count) = 25;
+       MY(originjitter) = '500.0 500.0 500.0';
+       MY(sizeincrease) = -0.300000;
+       MY(size_min) = 2;
+       MY(size_max) = 3;
+       MY(tex_min) = 38;
+       MY(tex_max) = 38;
+       MY(type) = "snow";
+       MY(velocityjitter) = '0.1 0.1 0.1';
+}
+
+DEF(healing_fx);
+SUB(healing_fx) {
+       MY(airfriction) = -0.500000;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 170;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0xff0000";
+       MY(color_max) = "0xff0000";
+       MY(count) = 25;
+       MY(gravity) = -0.100000;
+       MY(originjitter) = '5.0 5.0 100.0';
+       MY(sizeincrease) = -0.050000;
+       MY(size_min) = 1;
+       MY(size_max) = 3;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '50.0 50.0 0.0';
+}
+
+DEF(armorrepair_fx);
+SUB(armorrepair_fx) {
+       MY(airfriction) = -0.500000;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 170;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x00ff00";
+       MY(color_max) = "0x00ff00";
+       MY(count) = 25;
+       MY(gravity) = -0.100000;
+       MY(originjitter) = '5.0 5.0 50.0';
+       MY(sizeincrease) = -0.050000;
+       MY(size_min) = 1;
+       MY(size_max) = 3;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '50.0 50.0 0.0';
+}
+
+DEF(ammoregen_fx);
+SUB(ammoregen_fx) {
+       MY(airfriction) = -0.500000;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 170;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x0000ff";
+       MY(color_max) = "0x0000ff";
+       MY(count) = 25;
+       MY(gravity) = -0.100000;
+       MY(originjitter) = '5.0 5.0 50.0';
+       MY(sizeincrease) = -0.050000;
+       MY(size_min) = 1;
+       MY(size_max) = 3;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '50.0 50.0 0.0';
+}
+
+// red-yellow flame like fx
+DEF(rage);
+SUB(rage) {
+       MY(airfriction) = 2;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 190;
+       MY(color_min) = "0xff0000";
+       MY(color_max) = "0xff7800";
+       MY(count) = 2.500000;
+       MY(gravity) = -0.060000;
+       MY(originjitter) = '5.0 5.0 5.0';
+       MY(sizeincrease) = 10;
+       MY(size_min) = 1;
+       MY(size_max) = 3;
+       MY(tex_min) = 35;
+       MY(tex_max) = 36;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '25.0 25.0 25.0';
+}
+
+// pieces of glass or ice falling on the floor
+DEF(iceorglass);
+SUB(iceorglass) {
+       MY(airfriction) = 3;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(bounce) = 2;
+       MY(color_min) = "0xffffff";
+       MY(color_max) = "0xb2d3e6";
+       MY(count) = 15;
+       MY(gravity) = 1.300000;
+       MY(originjitter) = '30.0 30.0 30.0';
+       MY(size_min) = 3;
+       MY(size_max) = 7;
+       MY(tex_min) = 44;
+       MY(tex_max) = 44;
+       MY(time_min) = 1;
+       MY(time_max) = 3;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '100.0 100.0 100.0';
+}
+
+// cover small area in poison gas, spawn it once per second
+DEF(poisonfield);
+SUB(poisonfield) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 50;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x00ff00";
+       MY(color_max) = "0x7db843";
+       MY(count) = 15;
+       MY(gravity) = -0.010000;
+       MY(originjitter) = '333.0 333.0 50.0';
+       MY(sizeincrease) = 30;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '5.0 5.0 5.0';
+}
+
+// cover small area in icy mist, spawn it once per second
+DEF(icefield);
+SUB(icefield) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 50;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x008aff";
+       MY(color_max) = "0x75e7ff";
+       MY(count) = 10;
+       MY(gravity) = -0.010000;
+       MY(originjitter) = '333.0 333.0 0.0';
+       MY(sizeincrease) = 10;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '5.0 5.0 30.0';
+}
+SUB(icefield) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 50;
+       MY(color_min) = "0x008aff";
+       MY(color_max) = "0x75e7ff";
+       MY(count) = 5;
+       MY(gravity) = -0.001000;
+       MY(originjitter) = '333.0 333.0 0.0';
+       MY(sizeincrease) = 10;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+}
+
+// cover very small area in flames, spawn it 3 times per second (or more often to get better looking fire at cost of fps hit )
+DEF(firefield);
+// flames that go up
+SUB(firefield) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 200;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 100;
+       MY(gravity) = -0.060000;
+       MY(originjitter) = '180.0 180.0 0.0';
+       MY(sizeincrease) = 20;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '5.0 5.0 30.0';
+}
+// flames that stay on the ground
+SUB(firefield) {
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 200;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 50;
+       MY(originjitter) = '180.0 180.0 0.0';
+       MY(sizeincrease) = 40;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+}
+// smoke
+SUB(firefield) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 70;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x111111";
+       MY(count) = 20;
+       MY(gravity) = -0.020000;
+       MY(originjitter) = '180.0 180.0 0.0';
+       MY(sizeincrease) = 7;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+}
+
+// flamethrower, spawn it as fast as you can  20 times per second or more, it needs direction
+DEF(flamethrower);
+// fast fire
+SUB(flamethrower) {
+       MY(airfriction) = 1.200000;
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 250;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 3;
+       MY(gravity) = -0.060000;
+       MY(sizeincrease) = 20;
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '40.0 40.0 11.0';
+       MY(velocitymultiplier) = 30;
+}
+// slow fire
+SUB(flamethrower) {
+       MY(airfriction) = 1.200000;
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 200;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 2.500000;
+       MY(gravity) = -0.060000;
+       MY(sizeincrease) = 20;
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '40.0 40.0 40.0';
+       MY(velocitymultiplier) = 20;
+}
+// very slow and small fire
+SUB(flamethrower) {
+       MY(airfriction) = 0.300000;
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 200;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 1.500000;
+       MY(gravity) = -0.060000;
+       MY(sizeincrease) = 10;
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '30.0 30.0 30.0';
+       MY(velocitymultiplier) = 10;
+}
+// decreasing fire
+SUB(flamethrower) {
+       MY(airfriction) = 0.300000;
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 200;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 2;
+       MY(gravity) = -0.060000;
+       MY(sizeincrease) = -10;
+       MY(size_min) = 20;
+       MY(size_max) = 30;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '10.0 10.0 10.0';
+       MY(velocitymultiplier) = 15;
+}
+// smoke
+SUB(flamethrower) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 90;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x111111";
+       MY(count) = 0.500000;
+       MY(originjitter) = '10.0 10.0 10.0';
+       MY(sizeincrease) = 7;
+       MY(size_min) = 5;
+       MY(size_max) = 15;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocitymultiplier) = 20;
+       MY(velocityoffset) = '0.0 0.0 10.0';
+}
+
+// port-o-launch trail
+DEF(TR_WIZSPIKE);
+// glowing vapor trail
+SUB(TR_WIZSPIKE) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 968;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x404040";
+       MY(lightcolor) = '1.5 3.0 6.0';
+       MY(lightradius) = 90;
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(trailspacing) = 4;
+       MY(type) = "static";
+       MY(velocitymultiplier) = -0.100000;
+}
+// bright sparks
+SUB(TR_WIZSPIKE) {
+       MY(airfriction) = 12;
+       MY(alpha_min) = 444;
+       MY(alpha_max) = 512;
+       MY(alpha_fade) = 1866;
+       MY(bounce) = 1;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x404040";
+       MY(count) = 1.500000;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(sizeincrease) = -20;
+       MY(size_min) = 2;
+       MY(size_max) = 4;
+       MY(tex_min) = 42;
+       MY(tex_max) = 42;
+       MY(trailspacing) = 12;
+       MY(type) = "snow";
+       MY(velocityjitter) = '50.0 50.0 50.0';
+       MY(velocityoffset) = '0.0 0.0 15.0';
+}
+
+// TAG trail
+DEF(TR_VORESPIKE);
+// glowing vapor trail
+SUB(TR_VORESPIKE) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 968;
+       MY(color_min) = "0x804000";
+       MY(color_max) = "0x804000";
+       MY(lightcolor) = '1.5 3.0 6.0';
+       MY(lightradius) = 90;
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(trailspacing) = 4;
+       MY(type) = "static";
+       MY(velocitymultiplier) = -0.100000;
+}
+// bright sparks
+SUB(TR_VORESPIKE) {
+       MY(airfriction) = 12;
+       MY(alpha_min) = 444;
+       MY(alpha_max) = 512;
+       MY(alpha_fade) = 1866;
+       MY(bounce) = 1;
+       MY(color_min) = "0xff8000";
+       MY(color_max) = "0xff8000";
+       MY(count) = 1.500000;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(sizeincrease) = -20;
+       MY(size_min) = 2;
+       MY(size_max) = 4;
+       MY(tex_min) = 42;
+       MY(tex_max) = 42;
+       MY(trailspacing) = 12;
+       MY(type) = "snow";
+       MY(velocityjitter) = '50.0 50.0 50.0';
+       MY(velocityoffset) = '0.0 0.0 15.0';
+}
+
+DEF(flac_explode);
+SUB(flac_explode) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '8.0 4.0 1.0';
+       MY(lightradiusfade) = 400;
+       MY(lightradius) = 150;
+       MY(originjitter) = '40.0 40.0 40.0';
+       MY(size_min) = 18;
+       MY(size_max) = 28;
+       MY(tex_min) = 8;
+       MY(tex_max) = 16;
+       MY(type) = "decal";
+}
+// fire effect which make bright dot inside
+SUB(flac_explode) {
+       MY(airfriction) = 8;
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 456;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0xffe955";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 3;
+       MY(liquidfriction) = 8;
+       MY(notunderwater) = true;
+       MY(originjitter) = '8.0 8.0 8.0';
+       MY(sizeincrease) = 5;
+       MY(size_min) = 6;
+       MY(size_max) = 16;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '156.0 156.0 156.0';
+}
+// fire effect which expands then slows
+SUB(flac_explode) {
+       MY(airfriction) = 12;
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 456;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 6;
+       MY(liquidfriction) = 8;
+       MY(notunderwater) = true;
+       MY(originjitter) = '8.0 8.0 8.0';
+       MY(sizeincrease) = 15;
+       MY(size_min) = 10;
+       MY(size_max) = 16;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "static";
+       MY(velocityjitter) = '256.0 256.0 256.0';
+}
+// smoke
+SUB(flac_explode) {
+       MY(airfriction) = 5;
+       MY(alpha_min) = 500;
+       MY(alpha_max) = 600;
+       MY(alpha_fade) = 556;
+       MY(bounce) = 2;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x111111";
+       MY(count) = 5;
+       MY(notunderwater) = true;
+       MY(sizeincrease) = 20;
+       MY(size_min) = 10;
+       MY(size_max) = 20;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '244.0 244.0 244.0';
+}
+// underwater bubbles
+SUB(flac_explode) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(count) = 8;
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 0.250000;
+       MY(originjitter) = '16.0 16.0 16.0';
+       MY(size_min) = 1;
+       MY(size_max) = 2;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '96.0 96.0 96.0';
+}
+// bouncing sparks
+SUB(flac_explode) {
+       MY(airfriction) = 0.200000;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 384;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x903010";
+       MY(color_max) = "0xFFD030";
+       MY(count) = 4;
+       MY(gravity) = 1;
+       MY(liquidfriction) = 0.800000;
+       MY(notunderwater) = true;
+       MY(size_min) = 2;
+       MY(size_max) = 2;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '256.0 256.0 256.0';
+       MY(velocityoffset) = '0.0 0.0 80.0';
+}
+
+// bullet trail (somewhat like a tracer)
+DEF(tr_bullet);
+SUB(tr_bullet) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 2560;
+       MY(color_min) = "0xff8960";
+       MY(color_max) = "0xff8533";
+       MY(size_min) = 4;
+       MY(size_max) = 4;
+       MY(stretchfactor) = 0.200000;
+       MY(tex_min) = 70;
+       MY(tex_max) = 70;
+       MY(trailspacing) = 750;
+       MY(type) = "spark";
+       MY(velocitymultiplier) = 3;
+}
+
+// smoke emitter for small pipes
+DEF(smoking_smallemitter);
+SUB(smoking_smallemitter) {
+       MY(airfriction) = -1;
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 100;
+       MY(color_min) = "0x292929";
+       MY(color_max) = "0x000000";
+       MY(count) = 10;
+       MY(gravity) = -0.100000;
+       MY(originjitter) = '10.0 10.0 10.0';
+       MY(sizeincrease) = 20;
+       MY(size_min) = 6;
+       MY(size_max) = 15;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '5.0 5.0 20.0';
+}
+
+// crylink trail
+DEF(TR_CRYLINKPLASMA);
+// plasma smoke
+SUB(TR_CRYLINKPLASMA) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0x5522aa";
+       MY(color_max) = "0x6622ff";
+       MY(sizeincrease) = 8;
+       MY(size_min) = 2;
+       MY(size_max) = 2;
+       MY(tex_min) = 32;
+       MY(tex_max) = 32;
+       MY(trailspacing) = 128;
+       MY(type) = "static";
+       MY(velocityjitter) = '8.0 8.0 8.0';
+       MY(velocitymultiplier) = -0.010000;
+}
+// crylink main trail
+SUB(TR_CRYLINKPLASMA) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 2600;
+       MY(color_min) = "0x5522aa";
+       MY(color_max) = "0x6622ff";
+       MY(sizeincrease) = 15;
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 3;
+       MY(tex_max) = 3;
+       MY(trailspacing) = 16;
+       MY(type) = "static";
+       MY(velocityjitter) = '2.0 2.0 2.0';
+       MY(velocitymultiplier) = 0.010000;
+}
+
+DEF(cherryblossom);
+SUB(cherryblossom) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 32;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0xb123ff";
+       MY(color_max) = "0xb183ff";
+       MY(count) = 1.500000;
+       MY(gravity) = 0.050000;
+       MY(liquidfriction) = 1;
+       MY(originjitter) = '16.0 16.0 16.0';
+       MY(size_min) = 1.500000;
+       MY(size_max) = 2;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "static";
+       MY(velocityjitter) = '32.0 32.0 0.0';
+}
+
+DEF(alien_blood);
+SUB(alien_blood) {
+       MY(airfriction) = 0.400000;
+       MY(alpha_min) = 1560;
+       MY(alpha_max) = 2560;
+       MY(alpha_fade) = 7000;
+       MY(blend) = "invmod";
+       MY(bounce) = -1;
+       MY(color_min) = "0xDC9BCD";
+       MY(color_max) = "0xDC9BCD";
+       MY(count) = 0.400000;
+       MY(sizeincrease) = 20;
+       MY(size_min) = 5;
+       MY(size_max) = 11;
+       MY(staincolor_min) = "0xDC9BCD";
+       MY(staincolor_max) = "0xDC9BCD";
+       MY(stainsize_min) = 1;
+       MY(stainsize_max) = 2;
+       MY(staintex_min) = 16;
+       MY(staintex_max) = 24;
+       MY(stretchfactor) = 25;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(type) = "spark";
+       MY(velocityjitter) = '99.0 99.0 55.0';
+}
+// blood mist
+SUB(alien_blood) {
+       MY(alpha_min) = 3000;
+       MY(alpha_max) = 5560;
+       MY(alpha_fade) = 12000;
+       MY(blend) = "invmod";
+       MY(color_min) = "0xDC9BCD";
+       MY(color_max) = "0xDC9BCD";
+       MY(countabsolute) = 1;
+       MY(originjitter) = '11.0 11.0 11.0';
+       MY(sizeincrease) = 20;
+       MY(size_min) = 25;
+       MY(size_max) = 30;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(type) = "smoke";
+}
+
+DEF(robot_blood);
+SUB(robot_blood) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = -1;
+       MY(color_min) = "0xff3000";
+       MY(color_max) = "0xff7373";
+       MY(count) = 0.167000;
+       MY(gravity) = 1;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 1;
+       MY(size_max) = 2;
+       MY(tex_min) = 70;
+       MY(tex_max) = 70;
+       MY(type) = "spark";
+       MY(velocityjitter) = '264.0 264.0 264.0';
+       MY(velocityoffset) = '0.0 0.0 100.0';
+}
+// shockwave
+SUB(robot_blood) {
+       MY(alpha_max) = 90;
+       MY(alpha_fade) = 1000;
+       MY(color_min) = "0xff8400";
+       MY(color_max) = "0xffbb72";
+       MY(countabsolute) = 1;
+       MY(originjitter) = '11.0 11.0 11.0';
+       MY(sizeincrease) = 800;
+       MY(size_min) = 2;
+       MY(size_max) = 2;
+       MY(tex_min) = 74;
+       MY(tex_max) = 74;
+       MY(type) = "smoke";
+}
+// electo sparks
+SUB(robot_blood) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 5120;
+       MY(color_min) = "0xff3000";
+       MY(color_max) = "0xff8585";
+       MY(count) = 0.100000;
+       MY(originjitter) = '41.0 41.0 21.0';
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = 4000;
+       MY(spin_max) = -4000;
+       MY(size_min) = 20;
+       MY(size_max) = 40;
+       MY(tex_min) = 71;
+       MY(tex_max) = 73;
+       MY(type) = "smoke";
+}
+
+DEF(alien_TR_BLOOD);
+SUB(alien_TR_BLOOD) {
+       MY(airfriction) = -2;
+       MY(alpha_min) = 384;
+       MY(alpha_max) = 984;
+       MY(alpha_fade) = 1492;
+       MY(blend) = "invmod";
+       MY(bounce) = -1;
+       MY(color_min) = "0xC080B0";
+       MY(color_max) = "0xC080B0";
+       MY(gravity) = 0.400000;
+       MY(liquidfriction) = 1;
+       MY(sizeincrease) = -5;
+       MY(size_min) = 4;
+       MY(size_max) = 19;
+       MY(staincolor_min) = "0xC080B0";
+       MY(staincolor_max) = "0xC080B0";
+       MY(stainsize_min) = 1;
+       MY(stainsize_max) = 2;
+       MY(staintex_min) = 16;
+       MY(staintex_max) = 24;
+       MY(stretchfactor) = 7;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(trailspacing) = 20;
+       MY(type) = "spark";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocitymultiplier) = -0.100000;
+}
+
+// splash around gib
+SUB(alien_TR_BLOOD) {
+       MY(alpha_min) = 684;
+       MY(alpha_max) = 684;
+       MY(alpha_fade) = 7492;
+       MY(color_min) = "0xA8FFFF";
+       MY(color_max) = "0xA8FFFF";
+       MY(sizeincrease) = 500;
+       MY(size_min) = 4;
+       MY(size_max) = 6;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(trailspacing) = 42;
+       MY(type) = "blood";
+}
+
+DEF(robot_TR_BLOOD);
+SUB(robot_TR_BLOOD) {
+       MY(airfriction) = -2;
+       MY(alpha_min) = 384;
+       MY(alpha_max) = 984;
+       MY(alpha_fade) = 1892;
+       MY(blend) = "invmod";
+       MY(bounce) = -1;
+       MY(color_min) = "0xC0D890";
+       MY(color_max) = "0xC0D890";
+       MY(gravity) = 0.400000;
+       MY(liquidfriction) = 1;
+       MY(sizeincrease) = -6;
+       MY(size_min) = 4;
+       MY(size_max) = 13;
+       MY(staincolor_min) = "0x808080";
+       MY(staincolor_max) = "0x808080";
+       MY(stainsize_min) = 1;
+       MY(stainsize_max) = 3;
+       MY(staintex_min) = 16;
+       MY(staintex_max) = 24;
+       MY(stretchfactor) = 6;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(trailspacing) = 16;
+       MY(type) = "spark";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocitymultiplier) = -0.300000;
+}
+// fire
+SUB(robot_TR_BLOOD) {
+       MY(airfriction) = 4;
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 900;
+       MY(color_min) = "0x902010";
+       MY(color_max) = "0xff3600";
+       MY(gravity) = -1;
+       MY(liquidfriction) = 4;
+       MY(notunderwater) = true;
+       MY(sizeincrease) = 10;
+       MY(size_min) = 5;
+       MY(size_max) = 20;
+       MY(stretchfactor) = 5;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(trailspacing) = 16;
+       MY(type) = "spark";
+       MY(velocityjitter) = '44.0 44.0 44.0';
+}
+// arcs
+SUB(robot_TR_BLOOD) {
+       MY(alpha_min) = 1128;
+       MY(alpha_max) = 1256;
+       MY(alpha_fade) = 44900;
+       MY(color_min) = "0xff3000";
+       MY(color_max) = "0xff8585";
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = 4000;
+       MY(spin_max) = -4000;
+       MY(size_min) = 25;
+       MY(size_max) = 30;
+       MY(tex_min) = 71;
+       MY(tex_max) = 73;
+       MY(trailspacing) = 128;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '44.0 44.0 44.0';
+}
+
+DEF(alien_TR_SLIGHTBLOOD);
+SUB(alien_TR_SLIGHTBLOOD) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 384;
+       MY(alpha_max) = 384;
+       MY(alpha_fade) = 192;
+       MY(bounce) = -1;
+       MY(color_min) = "0xC080B0";
+       MY(color_max) = "0xC080B0";
+       MY(liquidfriction) = 4;
+       MY(size_min) = 80;
+       MY(size_max) = 80;
+       MY(staincolor_min) = "0x808080";
+       MY(staincolor_max) = "0x808080";
+       MY(staintex_min) = 16;
+       MY(staintex_max) = 24;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(trailspacing) = 64;
+       MY(type) = "blood";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocitymultiplier) = 0.500000;
+}
+
+DEF(robot_TR_SLIGHTBLOOD);
+SUB(robot_TR_SLIGHTBLOOD) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 384;
+       MY(alpha_max) = 384;
+       MY(alpha_fade) = 192;
+       MY(bounce) = -1;
+       MY(color_min) = "0xC0D890";
+       MY(color_max) = "0xC0D890";
+       MY(liquidfriction) = 4;
+       MY(size_min) = 8;
+       MY(size_max) = 8;
+       MY(staincolor_min) = "0x808080";
+       MY(staincolor_max) = "0x808080";
+       MY(staintex_min) = 16;
+       MY(staintex_max) = 24;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(trailspacing) = 64;
+       MY(type) = "blood";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocitymultiplier) = 0.500000;
+}
+
+DEF(item_pickup);
+// flare particle and light
+SUB(item_pickup) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 64;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0x63F2EA";
+       MY(color_max) = "0xB0C5C4";
+       MY(countabsolute) = 1;
+       MY(size_min) = 8;
+       MY(size_max) = 16;
+       MY(type) = "static";
+}
+// cloud of particles which expand rapidly and then slow to form a ball
+SUB(item_pickup) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1280;
+       MY(color_min) = "0x63F2EA";
+       MY(color_max) = "0xB0C5C4";
+       MY(count) = 32;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 41;
+       MY(tex_max) = 41;
+       MY(type) = "spark";
+       MY(velocityjitter) = '256.0 256.0 256.0';
+}
+
+DEF(bloodshower);
+SUB(bloodshower) {
+       MY(alpha_min) = 156;
+       MY(alpha_max) = 656;
+       MY(alpha_fade) = 1664;
+       MY(blend) = "invmod";
+       MY(bounce) = -1;
+       MY(color_min) = "0xA8FFFF";
+       MY(color_max) = "0xA8FFFFF";
+       MY(count) = 125;
+       MY(gravity) = 1;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 8;
+       MY(size_max) = 28;
+       MY(staincolor_min) = "0x808080";
+       MY(staincolor_max) = "0x808080";
+       MY(stainsize_min) = 1;
+       MY(stainsize_max) = 2;
+       MY(staintex_min) = 16;
+       MY(staintex_max) = 24;
+       MY(stretchfactor) = 3;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(type) = "spark";
+       MY(velocityjitter) = '764.0 764.0 764.0';
+}
+// center blood
+SUB(bloodshower) {
+       MY(alpha_min) = 156;
+       MY(alpha_max) = 656;
+       MY(alpha_fade) = 1664;
+       MY(blend) = "invmod";
+       MY(color_min) = "0xA8FFFF";
+       MY(color_max) = "0xA8FFFFF";
+       MY(countabsolute) = 0.100000;
+       MY(originjitter) = '50.0 50.0 50.0';
+       MY(sizeincrease) = 300;
+       MY(size_min) = 1;
+       MY(size_max) = 28;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(type) = "smoke";
+}
+
+DEF(alien_bloodshower);
+SUB(alien_bloodshower) {
+       MY(alpha_min) = 156;
+       MY(alpha_max) = 656;
+       MY(alpha_fade) = 1664;
+       MY(blend) = "invmod";
+       MY(bounce) = -1;
+       MY(color_min) = "0xC080B0";
+       MY(color_max) = "0xC080B0";
+       MY(count) = 125;
+       MY(gravity) = 1;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 8;
+       MY(size_max) = 28;
+       MY(staincolor_min) = "0xC080B0";
+       MY(staincolor_max) = "0xC080B0";
+       MY(stainsize_min) = 1;
+       MY(stainsize_max) = 2;
+       MY(staintex_min) = 16;
+       MY(staintex_max) = 24;
+       MY(stretchfactor) = 3;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(type) = "spark";
+       MY(velocityjitter) = '764.0 764.0 764.0';
+}
+// center blood
+SUB(alien_bloodshower) {
+       MY(alpha_min) = 156;
+       MY(alpha_max) = 656;
+       MY(alpha_fade) = 1664;
+       MY(blend) = "invmod";
+       MY(color_min) = "0xA8FFFF";
+       MY(color_max) = "0xA8FFFFF";
+       MY(countabsolute) = 0.100000;
+       MY(originjitter) = '50.0 50.0 50.0';
+       MY(sizeincrease) = 300;
+       MY(size_min) = 1;
+       MY(size_max) = 28;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(type) = "smoke";
+}
+
+DEF(robot_bloodshower);
+SUB(robot_bloodshower) {
+       MY(alpha_min) = 156;
+       MY(alpha_max) = 656;
+       MY(alpha_fade) = 1664;
+       MY(blend) = "invmod";
+       MY(bounce) = -1;
+       MY(color_min) = "0xC0D890";
+       MY(color_max) = "0xC0D890";
+       MY(count) = 100;
+       MY(gravity) = 1;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 8;
+       MY(size_max) = 28;
+       MY(staincolor_min) = "0xC0D890";
+       MY(staincolor_max) = "0xC0D890";
+       MY(stainsize_min) = 1;
+       MY(stainsize_max) = 2;
+       MY(staintex_min) = 16;
+       MY(staintex_max) = 24;
+       MY(stretchfactor) = 3;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(type) = "spark";
+       MY(velocityjitter) = '764.0 764.0 764.0';
+}
+// arc
+SUB(robot_bloodshower) {
+       MY(alpha_min) = 1128;
+       MY(alpha_max) = 1256;
+       MY(alpha_fade) = 4200;
+       MY(color_min) = "0xff3000";
+       MY(color_max) = "0xff8585";
+       MY(count) = 2.500000;
+       MY(originjitter) = '150.0 150.0 150.0';
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = 99;
+       MY(spin_max) = -99;
+       MY(size_min) = 25;
+       MY(size_max) = 40;
+       MY(tex_min) = 71;
+       MY(tex_max) = 73;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '44.0 44.0 44.0';
+}
+// shockwave
+SUB(robot_bloodshower) {
+       MY(alpha_min) = 11;
+       MY(alpha_max) = 125;
+       MY(alpha_fade) = 990;
+       MY(color_min) = "0xff3000";
+       MY(color_max) = "0xff8585";
+       MY(count) = 2.500000;
+       MY(sizeincrease) = 3000;
+       MY(size_min) = 5;
+       MY(size_max) = 50;
+       MY(tex_min) = 74;
+       MY(tex_max) = 74;
+       MY(type) = "smoke";
+}
+
+#define ground_quake(name, colormin, colormax) \
+       DEF(name##_ground_quake); \
+       SUB(name##_ground_quake) /* smoke */ { \
+               MY(airfriction) = 3; \
+               MY(alpha_min) = 100; \
+               MY(alpha_max) = 126; \
+               MY(alpha_fade) = 200; \
+               MY(bounce) = 1.100000; \
+               MY(color_min) = "0x111111"; \
+               MY(color_max) = "0xbbbbbb"; \
+               MY(count) = 90; \
+               MY(gravity) = 0.500000; \
+               MY(notunderwater) = true; \
+               MY(sizeincrease) = 100; \
+               MY(size_min) = 20; \
+               MY(size_max) = 50; \
+               MY(tex_max) = 8; \
+               MY(time_min) = 5; \
+               MY(time_max) = 10; \
+               MY(type) = "smoke"; \
+               MY(velocityjitter) = '190.0 190.0 50.0'; \
+       } \
+       SUB(name##_ground_quake) { \
+               MY(airfriction) = 4; \
+               MY(alpha_min) = 100; \
+               MY(alpha_max) = 126; \
+               MY(alpha_fade) = 200; \
+               MY(bounce) = 1.200000; \
+               MY(color_min) = "0x111111"; \
+               MY(color_max) = "0x979797"; \
+               MY(count) = 40; \
+               MY(gravity) = 0.200000; \
+               MY(notunderwater) = true; \
+               MY(sizeincrease) = 60; \
+               MY(size_min) = 10; \
+               MY(size_max) = 30; \
+               MY(tex_max) = 8; \
+               MY(time_min) = 10; \
+               MY(time_max) = 15; \
+               MY(type) = "smoke"; \
+               MY(velocityjitter) = '190.0 190.0 50.0'; \
+       } \
+       SUB(name##_ground_quake) { \
+               MY(alpha_min) = 200; \
+               MY(alpha_max) = 356; \
+               MY(alpha_fade) = 512; \
+               MY(bounce) = 6; \
+               MY(color_min) = colormin; \
+               MY(color_max) = colormax; \
+               MY(count) = 16; \
+               MY(gravity) = -0.500000; \
+               MY(originjitter) = '33.0 33.0 33.0'; \
+               MY(sizeincrease) = 5; \
+               MY(size_min) = 4; \
+               MY(size_max) = 20; \
+               MY(tex_min) = 48; \
+               MY(tex_max) = 55; \
+               MY(time_min) = 15; \
+               MY(time_max) = 25; \
+               MY(type) = "smoke"; \
+               MY(velocityjitter) = '22.0 22.0 50.0'; \
+       } \
+       SUB(name##_ground_quake) /* smoke */ { \
+               MY(alpha_min) = 200; \
+               MY(alpha_max) = 256; \
+               MY(alpha_fade) = 200; \
+               MY(bounce) = 2; \
+               MY(color_min) = "0x000000"; \
+               MY(color_max) = "0xffffff"; \
+               MY(count) = 11; \
+               MY(gravity) = -0.300000; \
+               MY(originjitter) = '44.0 44.0 44.0'; \
+               MY(sizeincrease) = 11; \
+               MY(size_min) = 22; \
+               MY(size_max) = 33; \
+               MY(tex_max) = 8; \
+               MY(time_min) = 25; \
+               MY(time_max) = 35; \
+               MY(type) = "alphastatic"; \
+               MY(velocityjitter) = '11.0 11.0 50.0'; \
+       } \
+       /**/
+
+ground_quake(red,      "0x9E6A64", "0x91302D")
+ground_quake(blue,     "0x64679E", "0x2D4C91")
+#undef ground_quake
+
+#include "effectinfo_gentle_morphed.inc"
+
+// Team / hit vaporizer effects
+#define TE_TEI_G3(name, colormin1, colormax1, colormin2, colormax2) \
+       DEF(TE_TEI_G3##name); \
+       SUB(TE_TEI_G3##name) { \
+               MY(alpha_min) = 128; \
+               MY(alpha_max) = 128; \
+               MY(alpha_fade) = 256; \
+               MY(color_min) = colormin1; \
+               MY(color_max) = colormax1; \
+               MY(countabsolute) = 1; \
+               MY(size_min) = 4; \
+               MY(size_max) = 4; \
+               MY(tex_min) = 200; \
+               MY(tex_max) = 200; \
+               MY(type) = "beam"; \
+       } \
+       SUB(TE_TEI_G3##name) { \
+               MY(airfriction) = -4; \
+               MY(alpha_min) = 256; \
+               MY(alpha_max) = 256; \
+               MY(alpha_fade) = 512; \
+               MY(color_min) = colormin2; \
+               MY(color_max) = colormax2; \
+               MY(sizeincrease) = 3; \
+               MY(size_min) = 0.300000; \
+               MY(size_max) = 0.300000; \
+               MY(tex_min) = 46; \
+               MY(tex_max) = 46; \
+               MY(trailspacing) = 8; \
+               MY(type) = "smoke"; \
+               MY(velocityjitter) = '3.0 3.0 3.0'; \
+       } \
+       DEF(TE_TEI_G3##name##_HIT); \
+       SUB(TE_TEI_G3##name##_HIT) { \
+               MY(alpha_min) = 128; \
+               MY(alpha_max) = 128; \
+               MY(alpha_fade) = 256; \
+               MY(color_min) = colormin1; \
+               MY(color_max) = colormax1; \
+               MY(countabsolute) = 1; \
+               MY(size_min) = 8; \
+               MY(size_max) = 8; \
+               MY(tex_min) = 200; \
+               MY(tex_max) = 200; \
+               MY(type) = "beam"; \
+       } \
+       SUB(TE_TEI_G3##name##_HIT) /* rings */ { \
+               MY(airfriction) = -4; \
+               MY(alpha_min) = 256; \
+               MY(alpha_max) = 256; \
+               MY(alpha_fade) = 512; \
+               MY(color_min) = "0xFFFFFF"; \
+               MY(color_max) = colormax1; \
+               MY(sizeincrease) = -2; \
+               MY(size_min) = 2; \
+               MY(size_max) = 2; \
+               MY(trailspacing) = 20; \
+               MY(type) = "smoke"; \
+               MY(velocityjitter) = '2.0 2.0 2.0'; \
+       } \
+       SUB(TE_TEI_G3##name##_HIT) { \
+               MY(airfriction) = -4; \
+               MY(alpha_min) = 256; \
+               MY(alpha_max) = 256; \
+               MY(alpha_fade) = 512; \
+               MY(color_min) = colormin1; \
+               MY(color_max) = colormax1; \
+               MY(sizeincrease) = -6; \
+               MY(size_min) = 10; \
+               MY(size_max) = 10; \
+               MY(trailspacing) = 40; \
+               MY(type) = "smoke"; \
+       } \
+       /**/
+TE_TEI_G3(RED, "0xFF0000", "0xFF0011", "0x200000", "0x400000")
+TE_TEI_G3(BLUE, "0x0000FF", "0x1100FF", "0x000020", "0x000040")
+TE_TEI_G3(YELLOW, "0xffff00", "0xffff11", "0x202000", "0x404000")
+TE_TEI_G3(PINK, "0xFF00FF", "0xFF11FF", "0x200020", "0x400040")
+#undef TE_TEI_G3
+
+#include "effectinfo_gentle_particlegibs.inc"
+
+#include "effectinfo_onslaught.inc"
+
+DEF(firemine);
+SUB(firemine) {
+       MY(airfriction) = 1.200000;
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 250;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 0.500000;
+       MY(gravity) = -0.060000;
+       MY(sizeincrease) = 5;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(trailspacing) = 2;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '10.0 10.0 2.0';
+}
+// slowfire
+SUB(firemine) {
+       MY(airfriction) = 1.200000;
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 200;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 0.500000;
+       MY(gravity) = -0.060000;
+       MY(sizeincrease) = 5;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(trailspacing) = 2;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '10.0 10.0 10.0';
+}
+// very slow and small fire
+SUB(firemine) {
+       MY(airfriction) = 0.300000;
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 200;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 0.500000;
+       MY(gravity) = -0.060000;
+       MY(sizeincrease) = 2;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(trailspacing) = 4;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '8.0 8.0 8.0';
+}
+// decreasing fire
+SUB(firemine) {
+       MY(airfriction) = 0.300000;
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 200;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 0.500000;
+       MY(gravity) = -0.060000;
+       MY(sizeincrease) = -3;
+       MY(size_min) = 5;
+       MY(size_max) = 7;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(trailspacing) = 4;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '3.0 3.0 3.0';
+}
+// smoke
+SUB(firemine) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 90;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x111111";
+       MY(count) = 0.500000;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(sizeincrease) = 1;
+       MY(size_min) = 1;
+       MY(size_max) = 4;
+       MY(tex_max) = 8;
+       MY(trailspacing) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityoffset) = '0.0 0.0 3.0';
+}
+// fastfire
+SUB(firemine) {
+       MY(airfriction) = 1.200000;
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1600;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 0.500000;
+       MY(size_min) = 12;
+       MY(size_max) = 12;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(trailspacing) = 1;
+       MY(type) = "smoke";
+}
+// light only
+SUB(firemine) {
+       MY(lightcolor) = '2.7 2.7 0.6';
+       MY(lightradiusfade) = 50000;
+       MY(lightradius) = 50;
+       MY(trailspacing) = 16;
+}
+
+DEF(fireball);
+SUB(fireball) {
+       MY(airfriction) = 1.200000;
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 250;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 0.500000;
+       MY(gravity) = -0.060000;
+       MY(sizeincrease) = 20;
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(trailspacing) = 2;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '40.0 40.0 11.0';
+}
+// slow fire
+SUB(fireball) {
+       MY(airfriction) = 1.200000;
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 200;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 0.500000;
+       MY(gravity) = -0.060000;
+       MY(sizeincrease) = 20;
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(trailspacing) = 2;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '40.0 40.0 40.0';
+}
+// very slow and small fire
+SUB(fireball) {
+       MY(airfriction) = 0.300000;
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 200;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 0.500000;
+       MY(gravity) = -0.060000;
+       MY(sizeincrease) = 10;
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(trailspacing) = 4;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '30.0 30.0 30.0';
+}
+// decreasing fire
+SUB(fireball) {
+       MY(airfriction) = 0.300000;
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 200;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 0.500000;
+       MY(gravity) = -0.060000;
+       MY(sizeincrease) = -10;
+       MY(size_min) = 20;
+       MY(size_max) = 30;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(trailspacing) = 4;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '10.0 10.0 10.0';
+}
+// smoke
+SUB(fireball) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 90;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x111111";
+       MY(count) = 0.500000;
+       MY(originjitter) = '10.0 10.0 10.0';
+       MY(sizeincrease) = 7;
+       MY(size_min) = 5;
+       MY(size_max) = 15;
+       MY(tex_max) = 8;
+       MY(trailspacing) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityoffset) = '0.0 0.0 10.0';
+}
+// fast fire
+SUB(fireball) {
+       MY(airfriction) = 1.200000;
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1600;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 0.500000;
+       MY(size_min) = 48;
+       MY(size_max) = 48;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(trailspacing) = 1;
+       MY(type) = "smoke";
+}
+// light only
+SUB(fireball) {
+       MY(lightcolor) = '2.7 2.7 0.6';
+       MY(lightradiusfade) = 3000;
+       MY(lightradius) = 300;
+       MY(trailspacing) = 16;
+}
+
+DEF(fireball_laser);
+SUB(fireball_laser) {
+       MY(alpha_min) = 192;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 2560;
+       MY(color_min) = "0x800000";
+       MY(color_max) = "0xFF8020";
+       MY(count) = 10;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(stretchfactor) = 0.700000;
+       MY(type) = "spark";
+       MY(velocityjitter) = '1.0 1.0 1.0';
+       MY(velocitymultiplier) = 10;
+}
+
+// rocket explosion (bigger than mortar and hagar)
+DEF(fireball_explode);
+// decal
+SUB(fireball_explode) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '4.0 2.0 0.5';
+       MY(lightradiusfade) = 500;
+       MY(lightradius) = 500;
+       MY(originjitter) = '56.0 56.0 56.0';
+       MY(size_min) = 72;
+       MY(size_max) = 72;
+       MY(tex_min) = 8;
+       MY(tex_max) = 16;
+       MY(type) = "decal";
+}
+// flare effect
+SUB(fireball_explode) {
+       MY(alpha_min) = 192;
+       MY(alpha_max) = 192;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x404040";
+       MY(countabsolute) = 1;
+       MY(size_min) = 72;
+       MY(size_max) = 72;
+       MY(tex_min) = 35;
+       MY(tex_max) = 37;
+       MY(type) = "static";
+}
+// fire effect
+SUB(fireball_explode) {
+       MY(airfriction) = 4;
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 256;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x902010";
+       MY(color_max) = "0xFFD080";
+       MY(count) = 128;
+       MY(liquidfriction) = 4;
+       MY(notunderwater) = true;
+       MY(originjitter) = '8.0 8.0 8.0';
+       MY(size_min) = 16;
+       MY(size_max) = 16;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "static";
+       MY(velocityjitter) = '512.0 512.0 512.0';
+}
+// underwater bubbles
+SUB(fireball_explode) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(count) = 32;
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 0.250000;
+       MY(originjitter) = '16.0 16.0 16.0';
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '144.0 144.0 144.0';
+}
+// bouncing sparks
+SUB(fireball_explode) {
+       MY(airfriction) = 0.200000;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 384;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x903010";
+       MY(color_max) = "0xFFD030";
+       MY(count) = 64;
+       MY(gravity) = 1;
+       MY(liquidfriction) = 0.800000;
+       MY(notunderwater) = true;
+       MY(size_min) = 2;
+       MY(size_max) = 2;
+       MY(type) = "spark";
+       MY(velocityjitter) = '384.0 384.0 384.0';
+       MY(velocityoffset) = '0.0 0.0 80.0';
+}
+
+DEF(fireball_muzzleflash);
+SUB(fireball_muzzleflash) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x202020";
+       MY(color_max) = "0x404040";
+       MY(count) = 2;
+       MY(lightcolor) = '2.0 1.5 0.2';
+       MY(lightradiusfade) = 2000;
+       MY(lightradius) = 200;
+       MY(originjitter) = '1.5 1.5 1.5';
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '6.0 6.0 6.0';
+       MY(velocitymultiplier) = 0.010000;
+}
+SUB(fireball_muzzleflash) {
+       MY(airfriction) = 12;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0xFFFDD9";
+       MY(color_max) = "0xFFFDD9";
+       MY(count) = 15;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '300.0 300.0 300.0';
+       MY(velocitymultiplier) = 0.500000;
+}
+
+DEF(fireball_preattack_muzzleflash);
+SUB(fireball_preattack_muzzleflash) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x202020";
+       MY(color_max) = "0x404040";
+       MY(count) = 2;
+       MY(lightcolor) = '2.0 1.5 0.2';
+       MY(lightradiusfade) = 2000;
+       MY(lightradius) = 200;
+       MY(originjitter) = '1.5 1.5 1.5';
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '6.0 6.0 6.0';
+       MY(velocitymultiplier) = 0.010000;
+}
+SUB(fireball_preattack_muzzleflash) {
+       MY(airfriction) = 12;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0xFFFDD9";
+       MY(color_max) = "0xFFFDD9";
+       MY(count) = 15;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '300.0 300.0 300.0';
+       MY(velocitymultiplier) = 0.500000;
+}
+
+DEF(fireball_bfgdamage);
+SUB(fireball_bfgdamage) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x202020";
+       MY(color_max) = "0x404040";
+       MY(count) = 2;
+       MY(lightcolor) = '2.0 1.5 0.2';
+       MY(lightradiusfade) = 2000;
+       MY(lightradius) = 200;
+       MY(originjitter) = '1.5 1.5 1.5';
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '6.0 6.0 6.0';
+       MY(velocitymultiplier) = 0.010000;
+}
+SUB(fireball_bfgdamage) {
+       MY(airfriction) = 12;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0xFFFDD9";
+       MY(color_max) = "0xFFFDD9";
+       MY(count) = 15;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '300.0 300.0 300.0';
+       MY(velocitymultiplier) = 0.500000;
+}
+
+DEF(EF_FLAME);
+// fire
+SUB(EF_FLAME) {
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 356;
+       MY(alpha_fade) = 512;
+       MY(bounce) = 2;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 100;
+       MY(gravity) = -0.500000;
+       MY(originjitter) = '12.0 12.0 34.0';
+       MY(originoffset) = '0.0 0.0 10.0';
+       MY(sizeincrease) = -1;
+       MY(size_min) = 5;
+       MY(size_max) = 21;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '22.0 22.0 50.0';
+}
+// smoke
+SUB(EF_FLAME) {
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 200;
+       MY(bounce) = 2;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x111111";
+       MY(count) = 50;
+       MY(gravity) = -0.300000;
+       MY(originjitter) = '12.0 12.0 34.0';
+       MY(originoffset) = '0.0 0.0 10.0';
+       MY(sizeincrease) = 6;
+       MY(size_min) = 11;
+       MY(size_max) = 15;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '11.0 11.0 50.0';
+}
+SUB(EF_FLAME) {
+       MY(count) = 0.500000;
+       MY(lightcolor) = '0.9 0.9 0.2';
+       MY(lightradiusfade) = 10000;
+       MY(lightradius) = 200;
+}
+
+// rifle bullet trail (somewhat like a tracer)
+DEF(tr_rifle);
+SUB(tr_rifle) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 2560;
+       MY(color_min) = "0x800000";
+       MY(color_max) = "0xFF8020";
+       MY(size_min) = 1.500000;
+       MY(size_max) = 1.500000;
+       MY(stretchfactor) = 1;
+       MY(trailspacing) = 128;
+       MY(type) = "spark";
+       MY(velocitymultiplier) = 0.700000;
+}
+SUB(tr_rifle) {
+       MY(airfriction) = -4;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 256;
+       MY(color_min) = "0x202020";
+       MY(color_max) = "0x404040";
+       MY(notunderwater) = true;
+       MY(sizeincrease) = 0.400000;
+       MY(size_min) = 4;
+       MY(size_max) = 4;
+       MY(tex_max) = 8;
+       MY(trailspacing) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '4.0 4.0 4.0';
+}
+SUB(tr_rifle) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 128;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 2;
+       MY(size_max) = 2;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(trailspacing) = 32;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '16.0 16.0 16.0';
+}
+
+// rocket guiding start
+DEF(rocket_guide);
+// underwater bubbles
+SUB(rocket_guide) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(count) = 2;
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 0.250000;
+       MY(originjitter) = '8.0 8.0 8.0';
+       MY(size_min) = 1.500000;
+       MY(size_max) = 1.500000;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '48.0 48.0 48.0';
+       MY(velocitymultiplier) = -0.100000;
+}
+// bouncing sparks
+SUB(rocket_guide) {
+       MY(airfriction) = 0.200000;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 984;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x903010";
+       MY(color_max) = "0xFFD030";
+       MY(count) = 8;
+       MY(gravity) = 1;
+       MY(liquidfriction) = 0.800000;
+       MY(notunderwater) = true;
+       MY(size_min) = 0.300000;
+       MY(size_max) = 0.700000;
+       MY(stretchfactor) = 0.400000;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '156.0 156.0 156.0';
+       MY(velocitymultiplier) = -0.300000;
+       MY(velocityoffset) = '0.0 0.0 80.0';
+}
+SUB(rocket_guide) {
+       MY(alpha_min) = 100;
+       MY(alpha_max) = 100;
+       MY(alpha_fade) = 500;
+       MY(color_min) = "0x903010";
+       MY(color_max) = "0xFFD030";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 300;
+       MY(size_min) = 10;
+       MY(size_max) = 10;
+       MY(tex_min) = 65;
+       MY(tex_max) = 65;
+       MY(type) = "smoke";
+}
+
+// gauntlet laser
+DEF(laser_gauntlet);
+SUB(laser_gauntlet) {
+       MY(airfriction) = 10;
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 512;
+       MY(alpha_fade) = 6280;
+       MY(color_min) = "0xb44215";
+       MY(color_max) = "0x880000";
+       MY(count) = 3;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = 4000;
+       MY(spin_max) = -4000;
+       MY(sizeincrease) = -100;
+       MY(size_min) = 7;
+       MY(size_max) = 10;
+       MY(stretchfactor) = 2.300000;
+       MY(tex_min) = 43;
+       MY(tex_max) = 43;
+       MY(type) = "spark";
+       MY(velocityjitter) = '150.0 150.0 150.0';
+       MY(velocitymultiplier) = 0.200000;
+}
+SUB(laser_gauntlet) {
+       MY(airfriction) = 12;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 512;
+       MY(alpha_fade) = 6280;
+       MY(color_min) = "0xff4200";
+       MY(color_max) = "0xff0000";
+       MY(count) = 6;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(sizeincrease) = -100;
+       MY(size_min) = 7;
+       MY(size_max) = 9;
+       MY(stretchfactor) = 2;
+       MY(tex_min) = 8;
+       MY(tex_max) = 15;
+       MY(type) = "spark";
+       MY(velocityjitter) = '100.0 100.0 100.0';
+       MY(velocitymultiplier) = 0.200000;
+}
+
+DEF(laser_gauntletmuzzleflash);
+// glow and light
+SUB(laser_gauntletmuzzleflash) {
+       MY(airfriction) = 10;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 512;
+       MY(alpha_fade) = 6280;
+       MY(color_min) = "0x220000";
+       MY(color_max) = "0x880000";
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '3.0 0.1 0.1';
+       MY(lightradiusfade) = 500;
+       MY(lightradius) = 150;
+       MY(sizeincrease) = -100;
+       MY(size_min) = 10;
+       MY(size_max) = 15;
+       MY(stretchfactor) = 2;
+       MY(tex_min) = 65;
+       MY(tex_max) = 65;
+       MY(type) = "smoke";
+}
+// electricity
+SUB(laser_gauntletmuzzleflash) {
+       MY(airfriction) = 10;
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 512;
+       MY(alpha_fade) = 6280;
+       MY(color_min) = "0xb44215";
+       MY(color_max) = "0x880000";
+       MY(count) = 3;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = 4000;
+       MY(spin_max) = -4000;
+       MY(sizeincrease) = -100;
+       MY(size_min) = 7;
+       MY(size_max) = 10;
+       MY(stretchfactor) = 2.300000;
+       MY(tex_min) = 43;
+       MY(tex_max) = 43;
+       MY(type) = "spark";
+       MY(velocityjitter) = '150.0 150.0 150.0';
+       MY(velocitymultiplier) = 0.200000;
+}
+// fire
+SUB(laser_gauntletmuzzleflash) {
+       MY(airfriction) = 12;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 512;
+       MY(alpha_fade) = 6280;
+       MY(color_min) = "0xff4200";
+       MY(color_max) = "0xff0000";
+       MY(count) = 6;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(sizeincrease) = -100;
+       MY(size_min) = 7;
+       MY(size_max) = 9;
+       MY(stretchfactor) = 2;
+       MY(tex_min) = 8;
+       MY(tex_max) = 15;
+       MY(type) = "spark";
+       MY(velocityjitter) = '100.0 100.0 100.0';
+       MY(velocitymultiplier) = 0.200000;
+}
+
+// torch flame, spawn it as fast as you can  20 times per second or more, supports direction but not required
+DEF(torchflame);
+// fast fire
+SUB(torchflame) {
+       MY(airfriction) = 1.200000;
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 250;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 3;
+       MY(gravity) = -0.060000;
+       MY(sizeincrease) = 20;
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '40.0 40.0 11.0';
+       MY(velocitymultiplier) = 30;
+}
+// slow fire
+SUB(torchflame) {
+       MY(airfriction) = 1.200000;
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 200;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 2.500000;
+       MY(gravity) = -0.060000;
+       MY(sizeincrease) = 20;
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '40.0 40.0 40.0';
+       MY(velocitymultiplier) = 20;
+}
+// very slow and small fire
+SUB(torchflame) {
+       MY(airfriction) = 0.300000;
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 200;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 1.500000;
+       MY(gravity) = -0.060000;
+       MY(sizeincrease) = 10;
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '30.0 30.0 30.0';
+       MY(velocitymultiplier) = 10;
+}
+// decreasing fire
+SUB(torchflame) {
+       MY(airfriction) = 0.300000;
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 200;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 2;
+       MY(gravity) = -0.060000;
+       MY(sizeincrease) = -10;
+       MY(size_min) = 20;
+       MY(size_max) = 30;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '10.0 10.0 10.0';
+       MY(velocitymultiplier) = 15;
+}
+// smoke
+SUB(torchflame) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 90;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x111111";
+       MY(count) = 0.500000;
+       MY(originjitter) = '10.0 10.0 10.0';
+       MY(sizeincrease) = 7;
+       MY(size_min) = 5;
+       MY(size_max) = 15;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocitymultiplier) = 20;
+       MY(velocityoffset) = '0.0 0.0 10.0';
+}
+
+#include "effectinfo_gentle_happy.inc"
+
+DEF(electro_lightning);
+SUB(electro_lightning) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '3.1 4.4 10.0';
+       MY(lightradiusfade) = 500;
+       MY(lightradius) = 50;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(size_min) = 16;
+       MY(size_max) = 16;
+       MY(tex_min) = 59;
+       MY(tex_max) = 59;
+       MY(type) = "decal";
+}
+SUB(electro_lightning) {
+       MY(alpha_min) = 100;
+       MY(alpha_max) = 206;
+       MY(alpha_fade) = 1724;
+       MY(color_min) = "0x2030FF";
+       MY(color_max) = "0x80C0FF";
+       MY(count) = 300;
+       MY(originjitter) = '1.5 1.5 1.5';
+       MY(sizeincrease) = 10;
+       MY(size_min) = 6;
+       MY(size_max) = 6;
+       MY(tex_min) = 65;
+       MY(tex_max) = 65;
+       MY(type) = "spark";
+       MY(velocityjitter) = '6.0 6.0 6.0';
+       MY(velocitymultiplier) = 2000;
+}
+SUB(electro_lightning) {
+       MY(airfriction) = 2;
+       MY(alpha_min) = 110;
+       MY(alpha_max) = 170;
+       MY(alpha_fade) = 1500;
+       MY(color_min) = "0xDDFDFF";
+       MY(color_max) = "0xFDFDFF";
+       MY(count) = 30;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 2;
+       MY(size_max) = 5;
+       MY(stretchfactor) = 1.500000;
+       MY(tex_min) = 8;
+       MY(tex_max) = 15;
+       MY(type) = "spark";
+       MY(velocityjitter) = '150.0 150.0 150.0';
+       MY(velocitymultiplier) = 0.500000;
+}
+SUB(electro_lightning) {
+       MY(airfriction) = 8;
+       MY(alpha_min) = 110;
+       MY(alpha_max) = 170;
+       MY(alpha_fade) = 1500;
+       MY(color_min) = "0xFDFDFF";
+       MY(color_max) = "0xF9FDFF";
+       MY(count) = 50;
+       MY(gravity) = 1.300000;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 2;
+       MY(size_max) = 3;
+       MY(stretchfactor) = 0.100000;
+       MY(tex_min) = 41;
+       MY(tex_max) = 41;
+       MY(type) = "spark";
+       MY(velocityjitter) = '350.0 350.0 350.0';
+       MY(velocitymultiplier) = 2.500000;
+}
+
+DEF(gauntlet_lightning);
+SUB(gauntlet_lightning) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0x280000";
+       MY(color_max) = "0x280000";
+       MY(count) = 300;
+       MY(originjitter) = '1.5 1.5 1.5';
+       MY(sizeincrease) = 15;
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 65;
+       MY(tex_max) = 65;
+       MY(type) = "spark";
+       MY(velocityjitter) = '6.0 6.0 6.0';
+       MY(velocitymultiplier) = 2000;
+}
+SUB(gauntlet_lightning) {
+       MY(airfriction) = 2;
+       MY(alpha_min) = 110;
+       MY(alpha_max) = 228;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0xDD0000";
+       MY(color_max) = "0xFD0000";
+       MY(count) = 30;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 2;
+       MY(size_max) = 5;
+       MY(stretchfactor) = 1.500000;
+       MY(tex_min) = 8;
+       MY(tex_max) = 15;
+       MY(type) = "spark";
+       MY(velocityjitter) = '150.0 150.0 150.0';
+       MY(velocitymultiplier) = 0.500000;
+}
+SUB(gauntlet_lightning) {
+       MY(airfriction) = 8;
+       MY(alpha_min) = 110;
+       MY(alpha_max) = 228;
+       MY(alpha_fade) = 600;
+       MY(color_min) = "0xFD0000";
+       MY(color_max) = "0xF90000";
+       MY(count) = 50;
+       MY(gravity) = 1.300000;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 2;
+       MY(size_max) = 3;
+       MY(stretchfactor) = 0.100000;
+       MY(tex_min) = 41;
+       MY(tex_max) = 41;
+       MY(type) = "spark";
+       MY(velocityjitter) = '350.0 350.0 350.0';
+       MY(velocitymultiplier) = 2.500000;
+}
+
+DEF(crylink_joinexplode);
+// decal
+SUB(crylink_joinexplode) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(originjitter) = '12.0 12.0 12.0';
+       MY(size_min) = 24;
+       MY(size_max) = 24;
+       MY(tex_min) = 47;
+       MY(tex_max) = 47;
+       MY(type) = "decal";
+}
+// purple flare effect
+SUB(crylink_joinexplode) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x504060";
+       MY(color_max) = "0x504060";
+       MY(countabsolute) = 1;
+       MY(size_min) = 24;
+       MY(size_max) = 24;
+       MY(tex_min) = 39;
+       MY(tex_max) = 39;
+       MY(type) = "static";
+}
+// purple sparks
+SUB(crylink_joinexplode) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1024;
+       MY(bounce) = 2;
+       MY(color_min) = "0xA040C0";
+       MY(color_max) = "0xA040C0";
+       MY(count) = 40;
+       MY(size_min) = 6;
+       MY(size_max) = 6;
+       MY(tex_min) = 41;
+       MY(tex_max) = 41;
+       MY(type) = "spark";
+       MY(velocityjitter) = '512.0 512.0 512.0';
+}
+// purple splash
+SUB(crylink_joinexplode) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0xE070FF";
+       MY(color_max) = "0xE070FF";
+       MY(count) = 1.500000;
+       MY(size_min) = 16;
+       MY(size_max) = 16;
+       MY(type) = "static";
+       MY(velocityjitter) = '32.0 32.0 32.0';
+}
+// purple splash
+SUB(crylink_joinexplode) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0xE070FF";
+       MY(color_max) = "0xE070FF";
+       MY(count) = 3;
+       MY(size_min) = 16;
+       MY(size_max) = 16;
+       MY(type) = "static";
+       MY(velocityjitter) = '256.0 256.0 256.0';
+}
+
+// sparks for keepaway ball touch
+DEF(kaball_sparks);
+SUB(kaball_sparks) {
+       MY(airfriction) = 3;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 556;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0xa9cacf";
+       MY(color_max) = "0x0054ff";
+       MY(count) = 35;
+       MY(gravity) = 1;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 1;
+       MY(size_max) = 3;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '300.0 300.0 300.0';
+       MY(velocitymultiplier) = 0.500000;
+}
+
+// weak rifle bullet trail (somewhat like a tracer)
+DEF(tr_rifle_weak);
+SUB(tr_rifle_weak) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 2560;
+       MY(color_min) = "0x800000";
+       MY(color_max) = "0xFF8020";
+       MY(size_min) = 1.500000;
+       MY(size_max) = 1.500000;
+       MY(stretchfactor) = 1;
+       MY(trailspacing) = 128;
+       MY(type) = "spark";
+       MY(velocitymultiplier) = 0.700000;
+}
+SUB(tr_rifle_weak) {
+       MY(airfriction) = -4;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 256;
+       MY(color_min) = "0x202020";
+       MY(color_max) = "0x404040";
+       MY(notunderwater) = true;
+       MY(sizeincrease) = 0.400000;
+       MY(size_min) = 4;
+       MY(size_max) = 4;
+       MY(tex_max) = 8;
+       MY(trailspacing) = 48;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '4.0 4.0 4.0';
+}
+SUB(tr_rifle_weak) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 128;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 2;
+       MY(size_max) = 2;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(trailspacing) = 192;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '16.0 16.0 16.0';
+}
+
+// red smoke emiter
+DEF(red_smoke);
+SUB(red_smoke) {
+       MY(airfriction) = -1;
+       MY(alpha_min) = 32;
+       MY(alpha_max) = 64;
+       MY(alpha_fade) = 32;
+       MY(color_min) = "0xff8866";
+       MY(color_max) = "0x331100";
+       MY(count) = 2;
+       MY(gravity) = -0.007000;
+       MY(startangle_max) = 360;
+       MY(spin_min) = -30;
+       MY(spin_max) = 30;
+       MY(size_min) = 60;
+       MY(size_max) = 120;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocitymultiplier) = 5;
+}
+
+// pipe smoke emiter
+DEF(pipe_smoke);
+SUB(pipe_smoke) {
+       MY(airfriction) = -1;
+       MY(alpha_min) = 32;
+       MY(alpha_max) = 64;
+       MY(alpha_fade) = 48;
+       MY(color_min) = "0x999999";
+       MY(color_max) = "0x555555";
+       MY(count) = 2;
+       MY(gravity) = -0.015000;
+       MY(startangle_max) = 360;
+       MY(spin_min) = -180;
+       MY(spin_max) = 180;
+       MY(sizeincrease) = 35;
+       MY(size_min) = 5;
+       MY(size_max) = 10;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '0.0 0.0 5.0';
+       MY(velocitymultiplier) = 15;
+}
+
+// seeker missile trail
+DEF(TR_SEEKER);
+SUB(TR_SEEKER) {
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 300;
+       MY(alpha_fade) = 200;
+       MY(bounce) = 1;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x666666";
+       MY(lightcolor) = '6.0 3.0 1.0';
+       MY(lightradius) = 100;
+       MY(notunderwater) = true;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = -30;
+       MY(spin_max) = 30;
+       MY(sizeincrease) = 11;
+       MY(size_min) = 2;
+       MY(size_max) = 2;
+       MY(tex_max) = 8;
+       MY(trailspacing) = 10;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '3.0 3.0 3.0';
+       MY(velocitymultiplier) = -0.020000;
+}
+// fire
+SUB(TR_SEEKER) {
+       MY(airfriction) = 8;
+       MY(alpha_min) = 100;
+       MY(alpha_max) = 144;
+       MY(alpha_fade) = 588;
+       MY(color_min) = "0xffdf72";
+       MY(color_max) = "0x811200";
+       MY(sizeincrease) = -30;
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(trailspacing) = 4;
+       MY(type) = "static";
+       MY(velocityjitter) = '32.0 32.0 32.0';
+       MY(velocitymultiplier) = -1.500000;
+}
+// bubbles
+SUB(TR_SEEKER) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 256;
+       MY(bounce) = 1.500000;
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 1;
+       MY(size_max) = 2;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(trailspacing) = 16;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '16.0 16.0 16.0';
+       MY(velocitymultiplier) = -0.310000;
+}
+// sparks
+SUB(TR_SEEKER) {
+       MY(airfriction) = 5;
+       MY(alpha_min) = 444;
+       MY(alpha_max) = 512;
+       MY(alpha_fade) = 1866;
+       MY(bounce) = 1;
+       MY(color_min) = "0xFFFDD9";
+       MY(color_max) = "0xFFFDD9";
+       MY(notunderwater) = true;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 0.500000;
+       MY(size_max) = 0.500000;
+       MY(stretchfactor) = 0.300000;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(trailspacing) = 20;
+       MY(type) = "spark";
+       MY(velocityjitter) = '100.0 100.0 100.0';
+       MY(velocitymultiplier) = -0.310000;
+}
+
+#include "effectinfo_vehicles.inc"
+
+// generic explosion size:big (biggest explosion ever)
+DEF(explosion_big);
+// decal
+SUB(explosion_big) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '8.0 4.0 0.0';
+       MY(lightradiusfade) = 1750;
+       MY(lightradius) = 600;
+       MY(originjitter) = '23.0 23.0 23.0';
+       MY(size_min) = 172;
+       MY(size_max) = 172;
+       MY(tex_min) = 8;
+       MY(tex_max) = 16;
+       MY(type) = "decal";
+}
+// shockwave
+SUB(explosion_big) {
+       MY(alpha_min) = 56;
+       MY(alpha_max) = 56;
+       MY(alpha_fade) = 330;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 4400;
+       MY(size_min) = 72;
+       MY(size_max) = 72;
+       MY(tex_min) = 33;
+       MY(tex_max) = 33;
+       MY(type) = "static";
+}
+// fire effect
+SUB(explosion_big) {
+       MY(airfriction) = 8;
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 712;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 64;
+       MY(liquidfriction) = 8;
+       MY(notunderwater) = true;
+       MY(originjitter) = '80.0 80.0 80.0';
+       MY(sizeincrease) = 45;
+       MY(size_min) = 133;
+       MY(size_max) = 144;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "static";
+       MY(velocityjitter) = '2512.0 2512.0 2512.0';
+}
+// fire rays
+SUB(explosion_big) {
+       MY(airfriction) = -5;
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 800;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 64;
+       MY(liquidfriction) = 8;
+       MY(notunderwater) = true;
+       MY(originjitter) = '40.0 40.0 40.0';
+       MY(sizeincrease) = 45;
+       MY(size_min) = 133;
+       MY(size_max) = 144;
+       MY(stretchfactor) = 10;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "spark";
+       MY(velocityjitter) = '512.0 512.0 512.0';
+}
+// smoke
+SUB(explosion_big) {
+       MY(airfriction) = 8;
+       MY(alpha_min) = 300;
+       MY(alpha_max) = 650;
+       MY(alpha_fade) = 456;
+       MY(color_min) = "0x4F4B46";
+       MY(color_max) = "0x000000";
+       MY(count) = 32;
+       MY(notunderwater) = true;
+       MY(sizeincrease) = 244;
+       MY(size_min) = 50;
+       MY(size_max) = 100;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '3444.0 3444.0 3444.0';
+}
+// bouncing sparks
+SUB(explosion_big) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 644;
+       MY(alpha_max) = 956;
+       MY(alpha_fade) = 1284;
+       MY(color_min) = "0xffa35b";
+       MY(color_max) = "0xfff2be";
+       MY(count) = 34;
+       MY(gravity) = 1;
+       MY(liquidfriction) = 0.800000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '160.0 160.0 160.0';
+       MY(size_min) = 3;
+       MY(size_max) = 4;
+       MY(stretchfactor) = 0.700000;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '924.0 924.0 924.0';
+       MY(velocityoffset) = '0.0 0.0 370.0';
+}
+// debris
+SUB(explosion_big) {
+       MY(airfriction) = 0.500000;
+       MY(alpha_min) = 444;
+       MY(alpha_max) = 1356;
+       MY(alpha_fade) = 1184;
+       MY(color_min) = "0xFFFFFF";
+       MY(color_max) = "0xcac5b4";
+       MY(count) = 16;
+       MY(gravity) = 2.300000;
+       MY(notunderwater) = true;
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = -1000;
+       MY(spin_max) = 1000;
+       MY(sizeincrease) = -5;
+       MY(size_min) = 10;
+       MY(size_max) = 16;
+       MY(tex_min) = 66;
+       MY(tex_max) = 68;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '1800.0 1800.0 1800.0';
+       MY(velocityoffset) = '0.0 0.0 970.0';
+}
+// underwater bubbles
+SUB(explosion_big) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(count) = 32;
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 0.250000;
+       MY(originjitter) = '160.0 160.0 160.0';
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '444.0 444.0 444.0';
+}
+// underwatershockwave
+SUB(explosion_big) {
+       MY(alpha_min) = 40;
+       MY(alpha_max) = 40;
+       MY(alpha_fade) = 300;
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 2900;
+       MY(size_min) = 30;
+       MY(size_max) = 30;
+       MY(tex_min) = 33;
+       MY(tex_max) = 33;
+       MY(type) = "smoke";
+       MY(underwater) = true;
+       MY(velocitymultiplier) = 0.300000;
+}
+
+// generic explosion size:medium (it leaves rising smoke for a longer time)
+DEF(explosion_medium);
+// shockwave
+SUB(explosion_medium) {
+       MY(alpha_min) = 56;
+       MY(alpha_max) = 56;
+       MY(alpha_fade) = 330;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 2400;
+       MY(size_min) = 72;
+       MY(size_max) = 72;
+       MY(tex_min) = 33;
+       MY(tex_max) = 33;
+       MY(type) = "static";
+}
+// fire effect
+SUB(explosion_medium) {
+       MY(airfriction) = 8;
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 712;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 32;
+       MY(liquidfriction) = 8;
+       MY(notunderwater) = true;
+       MY(originjitter) = '30.0 30.0 30.0';
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = -500;
+       MY(spin_max) = 500;
+       MY(sizeincrease) = 45;
+       MY(size_min) = 133;
+       MY(size_max) = 144;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "static";
+       MY(velocityjitter) = '1512.0 1512.0 1512.0';
+}
+// fire effect 2
+SUB(explosion_medium) {
+       MY(airfriction) = 8;
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 612;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 32;
+       MY(gravity) = -2;
+       MY(liquidfriction) = 8;
+       MY(notunderwater) = true;
+       MY(originjitter) = '30.0 30.0 30.0';
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = -150;
+       MY(spin_max) = 150;
+       MY(sizeincrease) = 40;
+       MY(size_min) = 73;
+       MY(size_max) = 94;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "static";
+       MY(velocityjitter) = '1512.0 1512.0 1512.0';
+}
+// fire rays
+SUB(explosion_medium) {
+       MY(airfriction) = -3;
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 800;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 14;
+       MY(liquidfriction) = 8;
+       MY(notunderwater) = true;
+       MY(originjitter) = '40.0 40.0 40.0';
+       MY(sizeincrease) = 40;
+       MY(size_min) = 43;
+       MY(size_max) = 74;
+       MY(stretchfactor) = 8;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "spark";
+       MY(velocityjitter) = '512.0 512.0 512.0';
+}
+// smoke
+SUB(explosion_medium) {
+       MY(airfriction) = 3;
+       MY(alpha_min) = 300;
+       MY(alpha_max) = 650;
+       MY(alpha_fade) = 756;
+       MY(color_min) = "0x4F4B46";
+       MY(color_max) = "0x000000";
+       MY(count) = 5;
+       MY(notunderwater) = true;
+       MY(originjitter) = '100.0 100.0 100.0';
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = -20;
+       MY(spin_max) = 20;
+       MY(sizeincrease) = -30;
+       MY(size_min) = 250;
+       MY(size_max) = 300;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '200.0 200.0 200.0';
+}
+// smoke 2
+SUB(explosion_medium) {
+       MY(airfriction) = 3;
+       MY(alpha_min) = 300;
+       MY(alpha_max) = 650;
+       MY(alpha_fade) = 256;
+       MY(color_min) = "0x4F4B46";
+       MY(color_max) = "0x000000";
+       MY(count) = 10;
+       MY(gravity) = -0.300000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '100.0 100.0 100.0';
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = -20;
+       MY(spin_max) = 20;
+       MY(sizeincrease) = 50;
+       MY(size_min) = 50;
+       MY(size_max) = 100;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '500.0 500.0 500.0';
+       MY(velocityoffset) = '0.0 0.0 200.0';
+}
+// smoke rays
+SUB(explosion_medium) {
+       MY(alpha_min) = 140;
+       MY(alpha_max) = 255;
+       MY(alpha_fade) = 350;
+       MY(color_min) = "0x4F4B46";
+       MY(color_max) = "0x000000";
+       MY(count) = 13;
+       MY(notunderwater) = true;
+       MY(originjitter) = '40.0 40.0 40.0';
+       MY(sizeincrease) = 100;
+       MY(size_min) = 150;
+       MY(size_max) = 200;
+       MY(stretchfactor) = 50;
+       MY(tex_max) = 8;
+       MY(type) = "spark";
+       MY(velocityjitter) = '250.0 250.0 250.0';
+}
+// bouncing sparks
+SUB(explosion_medium) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 644;
+       MY(alpha_max) = 956;
+       MY(alpha_fade) = 984;
+       MY(color_min) = "0xffa35b";
+       MY(color_max) = "0xfff2be";
+       MY(count) = 14;
+       MY(gravity) = 1;
+       MY(liquidfriction) = 0.800000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '100.0 100.0 100.0';
+       MY(size_min) = 2;
+       MY(size_max) = 3;
+       MY(stretchfactor) = 0.700000;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '624.0 624.0 624.0';
+       MY(velocityoffset) = '0.0 0.0 370.0';
+}
+// underwater bubbles
+SUB(explosion_medium) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(count) = 32;
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 0.250000;
+       MY(originjitter) = '160.0 160.0 160.0';
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '444.0 444.0 444.0';
+}
+// underwatershockwave
+SUB(explosion_medium) {
+       MY(alpha_min) = 40;
+       MY(alpha_max) = 40;
+       MY(alpha_fade) = 300;
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 2900;
+       MY(size_min) = 30;
+       MY(size_max) = 30;
+       MY(tex_min) = 33;
+       MY(tex_max) = 33;
+       MY(type) = "smoke";
+       MY(underwater) = true;
+       MY(velocitymultiplier) = 0.300000;
+}
+
+// generic explosion size:small (its fire only, made to support other explosions)
+DEF(explosion_small);
+// shockwave
+SUB(explosion_small) {
+       MY(alpha_min) = 56;
+       MY(alpha_max) = 56;
+       MY(alpha_fade) = 330;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 2400;
+       MY(size_min) = 22;
+       MY(size_max) = 22;
+       MY(tex_min) = 33;
+       MY(tex_max) = 33;
+       MY(type) = "static";
+}
+// fire effect
+SUB(explosion_small) {
+       MY(airfriction) = 5;
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1212;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 16;
+       MY(liquidfriction) = 8;
+       MY(notunderwater) = true;
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = -500;
+       MY(spin_max) = 500;
+       MY(sizeincrease) = 45;
+       MY(size_min) = 1;
+       MY(size_max) = 44;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "static";
+       MY(velocityjitter) = '512.0 512.0 512.0';
+}
+// fire effect 2
+SUB(explosion_small) {
+       MY(airfriction) = 8;
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 812;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 16;
+       MY(liquidfriction) = 8;
+       MY(notunderwater) = true;
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = -150;
+       MY(spin_max) = 150;
+       MY(sizeincrease) = 40;
+       MY(size_min) = 73;
+       MY(size_max) = 94;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "static";
+       MY(velocityjitter) = '912.0 912.0 912.0';
+}
+// fire rays
+SUB(explosion_small) {
+       MY(airfriction) = -3;
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 1300;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 14;
+       MY(liquidfriction) = 8;
+       MY(notunderwater) = true;
+       MY(originjitter) = '40.0 40.0 40.0';
+       MY(sizeincrease) = 30;
+       MY(size_min) = 13;
+       MY(size_max) = 54;
+       MY(stretchfactor) = 8;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "spark";
+       MY(velocityjitter) = '512.0 512.0 512.0';
+}
+// underwater bubbles
+SUB(explosion_small) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(count) = 32;
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 0.250000;
+       MY(originjitter) = '160.0 160.0 160.0';
+       MY(size_min) = 1;
+       MY(size_max) = 3;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '144.0 144.0 144.0';
+}
+// underwatershockwave
+SUB(explosion_small) {
+       MY(alpha_min) = 40;
+       MY(alpha_max) = 40;
+       MY(alpha_fade) = 300;
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 1200;
+       MY(size_min) = 30;
+       MY(size_max) = 30;
+       MY(tex_min) = 33;
+       MY(tex_max) = 33;
+       MY(type) = "smoke";
+       MY(underwater) = true;
+}
+
+// big smoke ( for spamming on damaged stuff )
+DEF(smoke_big);
+SUB(smoke_big) {
+       MY(airfriction) = 4;
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 750;
+       MY(alpha_fade) = 200;
+       MY(color_min) = "0x4F4B46";
+       MY(color_max) = "0x000000";
+       MY(count) = 3;
+       MY(gravity) = -0.500000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '55.0 55.0 55.0';
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = -20;
+       MY(spin_max) = 20;
+       MY(sizeincrease) = 15;
+       MY(size_min) = 30;
+       MY(size_max) = 60;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '140.0 140.0 200.0';
+       MY(velocityoffset) = '0.0 0.0 200.0';
+}
+
+// small smoke ( more precise than big one, for spamming on damaged parts like raptors spinner )
+DEF(smoke_small);
+SUB(smoke_small) {
+       MY(airfriction) = 4;
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 750;
+       MY(alpha_fade) = 200;
+       MY(color_min) = "0x4F4B46";
+       MY(color_max) = "0x000000";
+       MY(count) = 3;
+       MY(gravity) = -0.500000;
+       MY(notunderwater) = true;
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = -20;
+       MY(spin_max) = 20;
+       MY(sizeincrease) = -10;
+       MY(size_min) = 60;
+       MY(size_max) = 100;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '40.0 40.0 400.0';
+       MY(velocityoffset) = '0.0 0.0 200.0';
+}
+
+// metal impact effect
+DEF(impact_metal);
+SUB(impact_metal) {
+       MY(alpha_min) = 25;
+       MY(alpha_max) = 64;
+       MY(alpha_fade) = 50;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x886666";
+       MY(count) = 1;
+       MY(gravity) = -0.010000;
+       MY(originjitter) = '20.0 20.0 5.0';
+       MY(sizeincrease) = 10;
+       MY(size_min) = 3;
+       MY(size_max) = 6;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+}
+// sparks
+SUB(impact_metal) {
+       MY(airfriction) = 2;
+       MY(alpha_min) = 255;
+       MY(alpha_max) = 255;
+       MY(alpha_fade) = 112;
+       MY(bounce) = 1.800000;
+       MY(color_min) = "0xFFCC22";
+       MY(color_max) = "0xFF4422";
+       MY(count) = 2;
+       MY(gravity) = 1;
+       MY(size_min) = 2;
+       MY(size_max) = 2;
+       MY(stretchfactor) = 0.500000;
+       MY(tex_min) = 41;
+       MY(tex_max) = 41;
+       MY(type) = "spark";
+       MY(velocityjitter) = '200.0 200.0 300.0';
+       MY(velocitymultiplier) = 2;
+}
+
+// stone impact effect
+DEF(impact_stone);
+SUB(impact_stone) {
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 75;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0xcc9966";
+       MY(count) = 1;
+       MY(gravity) = -0.010000;
+       MY(originjitter) = '20.0 20.0 5.0';
+       MY(sizeincrease) = 15;
+       MY(size_min) = 3;
+       MY(size_max) = 6;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+}
+// debris
+SUB(impact_stone) {
+       MY(airfriction) = 0.500000;
+       MY(alpha_min) = 450;
+       MY(alpha_max) = 750;
+       MY(alpha_fade) = 300;
+       MY(bounce) = 1.200000;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x886644";
+       MY(count) = 1;
+       MY(gravity) = 1.300000;
+       MY(notunderwater) = true;
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = -1000;
+       MY(spin_max) = 1000;
+       MY(size_min) = 1;
+       MY(size_max) = 2;
+       MY(tex_min) = 66;
+       MY(tex_max) = 68;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '124.0 124.0 324.0';
+}
+
+// wood impact effect
+DEF(impact_wood);
+SUB(impact_wood) {
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 75;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0xcc9966";
+       MY(count) = 1;
+       MY(gravity) = -0.010000;
+       MY(originjitter) = '20.0 20.0 5.0';
+       MY(sizeincrease) = 10;
+       MY(size_min) = 3;
+       MY(size_max) = 6;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+}
+// sparks
+SUB(impact_wood) {
+       MY(airfriction) = 2;
+       MY(alpha_min) = 255;
+       MY(alpha_max) = 255;
+       MY(alpha_fade) = 75;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x221100";
+       MY(color_max) = "0x221100";
+       MY(count) = 2;
+       MY(gravity) = 1;
+       MY(size_min) = 1;
+       MY(size_max) = 8;
+       MY(tex_min) = 41;
+       MY(tex_max) = 41;
+       MY(type) = "spark";
+       MY(velocityjitter) = '180.0 180.0 260.0';
+       MY(velocitymultiplier) = 2;
+}
+
+// flesh impact effect
+DEF(impact_flesh);
+SUB(impact_flesh) {
+       MY(alpha_min) = 100;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 400;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x420000";
+       MY(count) = 0.500000;
+       MY(originjitter) = '11.0 11.0 11.0';
+       MY(size_min) = 8;
+       MY(size_max) = 12;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+}
+// blood splash
+SUB(impact_flesh) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = -1;
+       MY(color_min) = "0xA8FFFF";
+       MY(color_max) = "0xA8FFFFF";
+       MY(count) = 0.300000;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 2;
+       MY(size_max) = 6;
+       MY(staincolor_min) = "0x808080";
+       MY(staincolor_max) = "0x808080";
+       MY(staintex_min) = 16;
+       MY(staintex_max) = 24;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(type) = "blood";
+       MY(velocityjitter) = '96.0 96.0 96.0';
+       MY(velocitymultiplier) = 5;
+}
+
+// hagar trail
+DEF(tr_hagar);
+// smoke
+SUB(tr_hagar) {
+       MY(alpha_min) = 300;
+       MY(alpha_max) = 400;
+       MY(alpha_fade) = 780;
+       MY(bounce) = 1;
+       MY(color_min) = "0x101010";
+       MY(color_max) = "0x000000";
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(sizeincrease) = 10;
+       MY(size_min) = 3;
+       MY(size_max) = 2;
+       MY(tex_max) = 8;
+       MY(trailspacing) = 4;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '1.0 1.0 1.0';
+       MY(velocitymultiplier) = -0.020000;
+}
+// fire
+SUB(tr_hagar) {
+       MY(airfriction) = 8;
+       MY(alpha_min) = 100;
+       MY(alpha_max) = 144;
+       MY(alpha_fade) = 988;
+       MY(color_min) = "0xffdf72";
+       MY(color_max) = "0x811200";
+       MY(notunderwater) = true;
+       MY(sizeincrease) = -15;
+       MY(size_min) = 5;
+       MY(size_max) = 2;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(trailspacing) = 4;
+       MY(type) = "static";
+       MY(velocityjitter) = '32.0 32.0 32.0';
+       MY(velocitymultiplier) = -1;
+}
+// bubbles
+SUB(tr_hagar) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 256;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(trailspacing) = 16;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '16.0 16.0 16.0';
+}
+
+// laser damage effect
+DEF(damage_laser);
+SUB(damage_laser) {
+       MY(airfriction) = -0.350000;
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 16;
+       MY(alpha_fade) = 128;
+       MY(color_min) = "0x880000";
+       MY(color_max) = "0xff4400";
+       MY(count) = 3;
+       MY(notunderwater) = true;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(startangle_max) = 180;
+       MY(spin_min) = -30;
+       MY(spin_max) = 30;
+       MY(sizeincrease) = 8;
+       MY(size_min) = 2;
+       MY(size_max) = 4;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '0.4 0.4 0.6';
+}
+
+// shotgun damage effect, normal blood
+DEF(damage_shotgun);
+SUB(damage_shotgun) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = -1;
+       MY(color_min) = "0xA8FFFF";
+       MY(color_max) = "0xA8FFFFF";
+       MY(count) = 0.600000;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 2;
+       MY(size_max) = 4;
+       MY(staincolor_min) = "0x808080";
+       MY(staincolor_max) = "0x808080";
+       MY(staintex_min) = 16;
+       MY(staintex_max) = 24;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(type) = "blood";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocitymultiplier) = 5;
+}
+// blood mist
+SUB(damage_shotgun) {
+       MY(alpha_min) = 100;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 400;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x420000";
+       MY(count) = 1;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 8;
+       MY(size_max) = 16;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+}
+
+// shotgun damage effect, alien blood
+DEF(damage_shotgun_alien);
+SUB(damage_shotgun_alien) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = -1;
+       MY(color_min) = "0xDC9BCD";
+       MY(color_max) = "0xDC9BCD";
+       MY(count) = 0.600000;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 2;
+       MY(size_max) = 4;
+       MY(staincolor_min) = "0x808080";
+       MY(staincolor_max) = "0x808080";
+       MY(staintex_min) = 16;
+       MY(staintex_max) = 24;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(type) = "blood";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocitymultiplier) = 5;
+}
+// blood mist
+SUB(damage_shotgun_alien) {
+       MY(alpha_min) = 100;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 400;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x204010";
+       MY(count) = 1;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 8;
+       MY(size_max) = 16;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+}
+
+// shotgun damage effect, robot blood
+DEF(damage_shotgun_robot);
+SUB(damage_shotgun_robot) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = -1;
+       MY(color_min) = "0xC0D890";
+       MY(color_max) = "0xC0D890";
+       MY(count) = 0.600000;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 2;
+       MY(size_max) = 4;
+       MY(staincolor_min) = "0x808080";
+       MY(staincolor_max) = "0x808080";
+       MY(staintex_min) = 16;
+       MY(staintex_max) = 24;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(type) = "blood";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocitymultiplier) = 5;
+}
+// blood mist
+SUB(damage_shotgun_robot) {
+       MY(alpha_min) = 100;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 400;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x301860";
+       MY(count) = 1;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 8;
+       MY(size_max) = 16;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+}
+
+// machinegun damage effect, normal blood
+DEF(damage_uzi);
+SUB(damage_uzi) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = -1;
+       MY(color_min) = "0xA8FFFF";
+       MY(color_max) = "0xA8FFFFF";
+       MY(count) = 0.300000;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 2;
+       MY(size_max) = 4;
+       MY(staincolor_min) = "0x808080";
+       MY(staincolor_max) = "0x808080";
+       MY(staintex_min) = 16;
+       MY(staintex_max) = 24;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(type) = "blood";
+       MY(velocityjitter) = '32.0 32.0 32.0';
+       MY(velocitymultiplier) = 5;
+}
+// blood mist
+SUB(damage_uzi) {
+       MY(alpha_min) = 100;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 400;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x420000";
+       MY(count) = 1;
+       MY(size_min) = 6;
+       MY(size_max) = 12;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+}
+
+// machinegun damage effect, alien blood
+DEF(damage_uzi_alien);
+SUB(damage_uzi_alien) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = -1;
+       MY(color_min) = "0xDC9BCD";
+       MY(color_max) = "0xDC9BCD";
+       MY(count) = 0.300000;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 2;
+       MY(size_max) = 4;
+       MY(staincolor_min) = "0x808080";
+       MY(staincolor_max) = "0x808080";
+       MY(staintex_min) = 16;
+       MY(staintex_max) = 24;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(type) = "blood";
+       MY(velocityjitter) = '32.0 32.0 32.0';
+       MY(velocitymultiplier) = 5;
+}
+// blood mist
+SUB(damage_uzi_alien) {
+       MY(alpha_min) = 100;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 400;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x204010";
+       MY(count) = 1;
+       MY(size_min) = 6;
+       MY(size_max) = 12;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+}
+
+// machinegun damage effect, robot blood
+DEF(damage_uzi_robot);
+SUB(damage_uzi_robot) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = -1;
+       MY(color_min) = "0xC0D890";
+       MY(color_max) = "0xC0D890";
+       MY(count) = 0.300000;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 2;
+       MY(size_max) = 4;
+       MY(staincolor_min) = "0x808080";
+       MY(staincolor_max) = "0x808080";
+       MY(staintex_min) = 16;
+       MY(staintex_max) = 24;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(type) = "blood";
+       MY(velocityjitter) = '32.0 32.0 32.0';
+       MY(velocitymultiplier) = 5;
+}
+// blood mist
+SUB(damage_uzi_robot) {
+       MY(alpha_min) = 100;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 400;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x301860";
+       MY(count) = 1;
+       MY(size_min) = 6;
+       MY(size_max) = 12;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+}
+
+// minelayer damage effect
+DEF(damage_minelayer);
+SUB(damage_minelayer) {
+       MY(alpha_min) = 512;
+       MY(alpha_max) = 64;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 3;
+       MY(gravity) = -0.500000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(sizeincrease) = -15;
+       MY(size_min) = 4;
+       MY(size_max) = 8;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '22.0 22.0 50.0';
+}
+// smoke
+SUB(damage_minelayer) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 32;
+       MY(alpha_fade) = 128;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x111111";
+       MY(count) = 2;
+       MY(gravity) = -0.300000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '4.0 4.0 4.0';
+       MY(sizeincrease) = 5;
+       MY(size_min) = 4;
+       MY(size_max) = 8;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '11.0 11.0 50.0';
+}
+
+// mortar damage effect
+DEF(damage_grenadelauncher);
+SUB(damage_grenadelauncher) {
+       MY(alpha_min) = 512;
+       MY(alpha_max) = 64;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 3;
+       MY(gravity) = -0.500000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(sizeincrease) = -15;
+       MY(size_min) = 4;
+       MY(size_max) = 8;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '22.0 22.0 50.0';
+}
+// smoke
+SUB(damage_grenadelauncher) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 32;
+       MY(alpha_fade) = 128;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x111111";
+       MY(count) = 2;
+       MY(gravity) = -0.300000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '4.0 4.0 4.0';
+       MY(sizeincrease) = 5;
+       MY(size_min) = 4;
+       MY(size_max) = 8;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '11.0 11.0 50.0';
+}
+
+// electro damage effect
+DEF(damage_electro);
+SUB(damage_electro) {
+       MY(airfriction) = -0.500000;
+       MY(alpha_min) = 48;
+       MY(alpha_max) = 8;
+       MY(alpha_fade) = 48;
+       MY(color_min) = "0x66ffff";
+       MY(color_max) = "0x2288ff";
+       MY(count) = 2;
+       MY(gravity) = -0.000100;
+       MY(liquidfriction) = 0.800000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '3.0 3.0 3.0';
+       MY(startangle_min) = 180;
+       MY(startangle_max) = 360;
+       MY(spin_min) = -30;
+       MY(spin_max) = 30;
+       MY(sizeincrease) = -14;
+       MY(size_min) = 6;
+       MY(size_max) = 10;
+       MY(tex_min) = 47;
+       MY(tex_max) = 47;
+       MY(type) = "static";
+       MY(velocityjitter) = '8.0 8.0 16.0';
+}
+// plasma smoke
+SUB(damage_electro) {
+       MY(airfriction) = -0.350000;
+       MY(alpha_min) = 64;
+       MY(alpha_max) = 16;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0x2244ff";
+       MY(color_max) = "0x002266";
+       MY(count) = 4;
+       MY(notunderwater) = true;
+       MY(originjitter) = '4.0 4.0 4.0';
+       MY(startangle_max) = 180;
+       MY(spin_min) = -30;
+       MY(spin_max) = 30;
+       MY(sizeincrease) = 10;
+       MY(size_min) = 4;
+       MY(size_max) = 8;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '0.4 0.4 0.6';
+}
+// bouncing sparks
+SUB(damage_electro) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 768;
+       MY(alpha_max) = 64;
+       MY(alpha_fade) = 256;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x003090";
+       MY(color_max) = "0x00CCFF";
+       MY(count) = 0.500000;
+       MY(gravity) = 0.200000;
+       MY(liquidfriction) = 0.800000;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 66;
+       MY(tex_max) = 68;
+       MY(type) = "spark";
+       MY(velocityjitter) = '32.0 32.0 32.0';
+}
+
+// crylink damage effect
+DEF(damage_crylink);
+SUB(damage_crylink) {
+       MY(airfriction) = -0.500000;
+       MY(alpha_min) = 48;
+       MY(alpha_max) = 16;
+       MY(alpha_fade) = 48;
+       MY(color_min) = "0xff44ff";
+       MY(color_max) = "0x9966ff";
+       MY(count) = 2;
+       MY(gravity) = -0.000100;
+       MY(liquidfriction) = 0.800000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '3.0 3.0 3.0';
+       MY(startangle_min) = 180;
+       MY(startangle_max) = 360;
+       MY(spin_min) = -30;
+       MY(spin_max) = 30;
+       MY(sizeincrease) = -8;
+       MY(size_min) = 0.500000;
+       MY(size_max) = 1;
+       MY(tex_min) = 38;
+       MY(tex_max) = 38;
+       MY(type) = "static";
+       MY(velocityjitter) = '10.0 10.0 20.0';
+}
+// plasma smoke
+SUB(damage_crylink) {
+       MY(airfriction) = -0.350000;
+       MY(alpha_min) = 64;
+       MY(alpha_max) = 16;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0x8844ff";
+       MY(color_max) = "0x662244";
+       MY(count) = 4;
+       MY(gravity) = 0.001000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '4.0 4.0 4.0';
+       MY(startangle_max) = 180;
+       MY(spin_min) = -30;
+       MY(spin_max) = 30;
+       MY(sizeincrease) = 6;
+       MY(size_min) = 5;
+       MY(size_max) = 10;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '0.4 0.4 0.6';
+}
+// floating sparks
+SUB(damage_crylink) {
+       MY(airfriction) = 0.200000;
+       MY(alpha_min) = 192;
+       MY(alpha_max) = 192;
+       MY(alpha_fade) = 128;
+       MY(color_min) = "0x903090";
+       MY(color_max) = "0xFFD0FF";
+       MY(count) = 0.300000;
+       MY(liquidfriction) = 0.800000;
+       MY(sizeincrease) = -5;
+       MY(size_min) = 0.500000;
+       MY(size_max) = 0.500000;
+       MY(type) = "spark";
+       MY(velocityjitter) = '12.0 12.0 12.0';
+}
+
+// hlac damage effect
+DEF(damage_hlac);
+SUB(damage_hlac) {
+       MY(airfriction) = -0.350000;
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 16;
+       MY(alpha_fade) = 128;
+       MY(color_min) = "0x880000";
+       MY(color_max) = "0xff4400";
+       MY(count) = 3;
+       MY(notunderwater) = true;
+       MY(originjitter) = '4.0 4.0 4.0';
+       MY(startangle_max) = 180;
+       MY(spin_min) = -30;
+       MY(spin_max) = 30;
+       MY(sizeincrease) = 10;
+       MY(size_min) = 2;
+       MY(size_max) = 4;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '0.4 0.4 0.6';
+}
+
+// vortex damage effect
+DEF(damage_nex);
+SUB(damage_nex) {
+       MY(airfriction) = -0.500000;
+       MY(alpha_min) = 64;
+       MY(alpha_max) = 8;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0xffffff";
+       MY(color_max) = "0x88ffff";
+       MY(count) = 1;
+       MY(gravity) = -0.000100;
+       MY(liquidfriction) = 0.600000;
+       MY(originjitter) = '4.0 4.0 4.0';
+       MY(startangle_min) = 180;
+       MY(startangle_max) = 360;
+       MY(spin_min) = -30;
+       MY(spin_max) = 30;
+       MY(sizeincrease) = -14;
+       MY(size_min) = 5;
+       MY(size_max) = 10;
+       MY(tex_min) = 47;
+       MY(tex_max) = 47;
+       MY(type) = "static";
+       MY(velocityjitter) = '8.0 8.0 16.0';
+}
+// plasma smoke
+SUB(damage_nex) {
+       MY(airfriction) = -0.350000;
+       MY(alpha_min) = 64;
+       MY(alpha_max) = 16;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0x6688ff";
+       MY(color_max) = "0x226688";
+       MY(count) = 2;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(startangle_max) = 180;
+       MY(spin_min) = -30;
+       MY(spin_max) = 30;
+       MY(sizeincrease) = 8;
+       MY(size_min) = 4;
+       MY(size_max) = 8;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '0.5 0.5 0.8';
+}
+// bouncing sparks
+SUB(damage_nex) {
+       MY(airfriction) = 2;
+       MY(alpha_min) = 255;
+       MY(alpha_max) = 255;
+       MY(alpha_fade) = 112;
+       MY(bounce) = 1.600000;
+       MY(color_min) = "0xD9FDFF";
+       MY(color_max) = "0xD9FDFF";
+       MY(count) = 0.200000;
+       MY(gravity) = 1;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(stretchfactor) = 0.700000;
+       MY(tex_min) = 41;
+       MY(tex_max) = 41;
+       MY(type) = "spark";
+       MY(velocityjitter) = '100.0 100.0 300.0';
+       MY(velocitymultiplier) = 3;
+}
+
+// vaporizer damage effect
+DEF(damage_minstanex);
+SUB(damage_minstanex) {
+       MY(airfriction) = -0.500000;
+       MY(alpha_min) = 64;
+       MY(alpha_max) = 8;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0xffffff";
+       MY(color_max) = "0x88ffff";
+       MY(count) = 2;
+       MY(gravity) = -0.000100;
+       MY(liquidfriction) = 0.600000;
+       MY(originjitter) = '4.0 4.0 4.0';
+       MY(startangle_min) = 180;
+       MY(startangle_max) = 360;
+       MY(spin_min) = -30;
+       MY(spin_max) = 30;
+       MY(sizeincrease) = -14;
+       MY(size_min) = 5;
+       MY(size_max) = 10;
+       MY(tex_min) = 47;
+       MY(tex_max) = 47;
+       MY(type) = "static";
+       MY(velocityjitter) = '8.0 8.0 16.0';
+}
+// plasma smoke
+SUB(damage_minstanex) {
+       MY(airfriction) = -0.350000;
+       MY(alpha_min) = 64;
+       MY(alpha_max) = 16;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0x6688ff";
+       MY(color_max) = "0x226688";
+       MY(count) = 4;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(startangle_max) = 180;
+       MY(spin_min) = -30;
+       MY(spin_max) = 30;
+       MY(sizeincrease) = 8;
+       MY(size_min) = 4;
+       MY(size_max) = 8;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '0.5 0.5 0.8';
+}
+// bouncing sparks
+SUB(damage_minstanex) {
+       MY(airfriction) = 2;
+       MY(alpha_min) = 255;
+       MY(alpha_max) = 255;
+       MY(alpha_fade) = 112;
+       MY(bounce) = 1.600000;
+       MY(color_min) = "0xD9FDFF";
+       MY(color_max) = "0xD9FDFF";
+       MY(count) = 0.200000;
+       MY(gravity) = 1;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(stretchfactor) = 0.700000;
+       MY(tex_min) = 41;
+       MY(tex_max) = 41;
+       MY(type) = "spark";
+       MY(velocityjitter) = '100.0 100.0 300.0';
+       MY(velocitymultiplier) = 3;
+}
+
+// rifle damage effect, normal blood
+DEF(damage_rifle);
+SUB(damage_rifle) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = -1;
+       MY(color_min) = "0xA8FFFF";
+       MY(color_max) = "0xA8FFFFF";
+       MY(count) = 0.300000;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 2;
+       MY(size_max) = 4;
+       MY(staincolor_min) = "0x808080";
+       MY(staincolor_max) = "0x808080";
+       MY(staintex_min) = 16;
+       MY(staintex_max) = 24;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(type) = "blood";
+       MY(velocityjitter) = '32.0 32.0 32.0';
+       MY(velocitymultiplier) = 5;
+}
+// blood mist
+SUB(damage_rifle) {
+       MY(alpha_min) = 100;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 400;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x420000";
+       MY(count) = 1;
+       MY(size_min) = 6;
+       MY(size_max) = 12;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+}
+
+// rifle damage effect, alien blood
+DEF(damage_rifle_alien);
+SUB(damage_rifle_alien) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = -1;
+       MY(color_min) = "0xDC9BCD";
+       MY(color_max) = "0xDC9BCD";
+       MY(count) = 0.300000;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 2;
+       MY(size_max) = 4;
+       MY(staincolor_min) = "0x808080";
+       MY(staincolor_max) = "0x808080";
+       MY(staintex_min) = 16;
+       MY(staintex_max) = 24;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(type) = "blood";
+       MY(velocityjitter) = '32.0 32.0 32.0';
+       MY(velocitymultiplier) = 5;
+}
+// blood mist
+SUB(damage_rifle_alien) {
+       MY(alpha_min) = 100;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 400;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x204010";
+       MY(count) = 1;
+       MY(size_min) = 6;
+       MY(size_max) = 12;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+}
+
+// rifle damage effect, robot blood
+DEF(damage_rifle_robot);
+SUB(damage_rifle_robot) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = -1;
+       MY(color_min) = "0xC0D890";
+       MY(color_max) = "0xC0D890";
+       MY(count) = 0.300000;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 2;
+       MY(size_max) = 4;
+       MY(staincolor_min) = "0x808080";
+       MY(staincolor_max) = "0x808080";
+       MY(staintex_min) = 16;
+       MY(staintex_max) = 24;
+       MY(tex_min) = 24;
+       MY(tex_max) = 32;
+       MY(type) = "blood";
+       MY(velocityjitter) = '32.0 32.0 32.0';
+       MY(velocitymultiplier) = 5;
+}
+// blood mist
+SUB(damage_rifle_robot) {
+       MY(alpha_min) = 100;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 400;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x301860";
+       MY(count) = 1;
+       MY(size_min) = 6;
+       MY(size_max) = 12;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+}
+
+// seeker damage effect
+DEF(damage_seeker);
+SUB(damage_seeker) {
+       MY(alpha_min) = 512;
+       MY(alpha_max) = 32;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0x8f0c00";
+       MY(color_max) = "0xff2200";
+       MY(count) = 3;
+       MY(gravity) = -0.300000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(sizeincrease) = -10;
+       MY(size_min) = 4;
+       MY(size_max) = 8;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '22.0 22.0 50.0';
+}
+// smoke
+SUB(damage_seeker) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 32;
+       MY(alpha_fade) = 128;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x111111";
+       MY(count) = 2;
+       MY(gravity) = -0.300000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '4.0 4.0 4.0';
+       MY(sizeincrease) = 10;
+       MY(size_min) = 2;
+       MY(size_max) = 4;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '11.0 11.0 50.0';
+}
+
+// hagar damage effect
+DEF(damage_hagar);
+SUB(damage_hagar) {
+       MY(alpha_min) = 512;
+       MY(alpha_max) = 32;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0x8f0c00";
+       MY(color_max) = "0xff3a00";
+       MY(count) = 3;
+       MY(gravity) = -0.300000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(sizeincrease) = -10;
+       MY(size_min) = 4;
+       MY(size_max) = 8;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '22.0 22.0 50.0';
+}
+// smoke
+SUB(damage_hagar) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 32;
+       MY(alpha_fade) = 128;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x111111";
+       MY(count) = 2;
+       MY(gravity) = -0.300000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '4.0 4.0 4.0';
+       MY(sizeincrease) = 10;
+       MY(size_min) = 2;
+       MY(size_max) = 4;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '11.0 11.0 50.0';
+}
+
+// fireball damage effect
+DEF(damage_fireball);
+SUB(damage_fireball) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 16;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
+       MY(count) = 4;
+       MY(gravity) = -0.500000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '8.0 8.0 8.0';
+       MY(sizeincrease) = -10;
+       MY(size_min) = 5;
+       MY(size_max) = 10;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '22.0 22.0 50.0';
+}
+// smoke
+SUB(damage_fireball) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 32;
+       MY(alpha_fade) = 128;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x111111";
+       MY(count) = 4;
+       MY(gravity) = -0.300000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '6.0 6.0 6.0';
+       MY(sizeincrease) = 10;
+       MY(size_min) = 4;
+       MY(size_max) = 8;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '11.0 11.0 50.0';
+}
+
+// rocketlauncher damage effect
+DEF(damage_rocketlauncher);
+SUB(damage_rocketlauncher) {
+       MY(alpha_min) = 512;
+       MY(alpha_max) = 64;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0x8f0c00";
+       MY(color_max) = "0xff2a00";
+       MY(count) = 3;
+       MY(gravity) = -0.700000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '4.0 4.0 4.0';
+       MY(sizeincrease) = -10;
+       MY(size_min) = 5;
+       MY(size_max) = 10;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '22.0 22.0 30.0';
+}
+// smoke
+SUB(damage_rocketlauncher) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 32;
+       MY(alpha_fade) = 128;
+       MY(color_min) = "0x000000";
+       MY(color_max) = "0x111111";
+       MY(count) = 3;
+       MY(gravity) = -0.300000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '4.0 4.0 4.0';
+       MY(sizeincrease) = 10;
+       MY(size_min) = 4;
+       MY(size_max) = 8;
+       MY(tex_max) = 8;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '11.0 11.0 50.0';
+}
+
+// fireflies
+DEF(fireflies);
+SUB(fireflies) {
+       MY(airfriction) = 5;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 70;
+       MY(bounce) = -1;
+       MY(color_min) = "0xff9600";
+       MY(color_max) = "0xffefb8";
+       MY(count) = 1;
+       MY(originjitter) = '32.0 32.0 32.0';
+       MY(originoffset) = '8.0 8.0 8.0';
+       MY(sizeincrease) = -0.300000;
+       MY(size_min) = 2;
+       MY(size_max) = 3;
+       MY(tex_min) = 38;
+       MY(tex_max) = 38;
+       MY(time_min) = 1;
+       MY(time_max) = 2;
+       MY(type) = "static";
+       MY(velocityjitter) = '64.0 64.0 64.0';
+       MY(velocityoffset) = '2.0 2.0 2.0';
+}
+
+DEF(healray_muzzleflash);
+SUB(healray_muzzleflash) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x283880";
+       MY(color_max) = "0x283880";
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '1.5 3.0 6.0';
+       MY(lightradiusfade) = 2000;
+       MY(lightradius) = 200;
+       MY(originjitter) = '1.5 1.5 1.5';
+       MY(sizeincrease) = -10;
+       MY(size_min) = 20;
+       MY(size_max) = 20;
+       MY(tex_min) = 65;
+       MY(tex_max) = 65;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '6.0 6.0 6.0';
+       MY(velocitymultiplier) = 0.010000;
+}
+SUB(healray_muzzleflash) {
+       MY(airfriction) = 5;
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 150;
+       MY(alpha_fade) = 1924;
+       MY(color_min) = "0xD9FDFF";
+       MY(color_max) = "0x00f0ff";
+       MY(count) = 22;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(sizeincrease) = 3;
+       MY(size_min) = 1;
+       MY(size_max) = 15;
+       MY(stretchfactor) = 3.900000;
+       MY(tex_min) = 71;
+       MY(tex_max) = 73;
+       MY(type) = "spark";
+       MY(velocityjitter) = '150.0 150.0 150.0';
+       MY(velocitymultiplier) = 0.400000;
+}
+SUB(healray_muzzleflash) {
+       MY(alpha_min) = 110;
+       MY(alpha_max) = 228;
+       MY(alpha_fade) = 4024;
+       MY(color_min) = "0xD9FDFF";
+       MY(color_max) = "0x00f0ff";
+       MY(count) = 4;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(stretchfactor) = 0.200000;
+       MY(tex_min) = 70;
+       MY(tex_max) = 70;
+       MY(type) = "spark";
+       MY(velocityjitter) = '650.0 650.0 650.0';
+       MY(velocitymultiplier) = 1.100000;
+}
+
+DEF(healray_impact);
+SUB(healray_impact) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(color_min) = "0xd800ff";
+       MY(color_max) = "0xd800ff";
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '0.0 4.4 0.0';
+       MY(lightradiusfade) = 450;
+       MY(lightradius) = 125;
+       MY(originjitter) = '17.0 17.0 17.0';
+       MY(size_min) = 32;
+       MY(size_max) = 32;
+       MY(tex_min) = 59;
+       MY(tex_max) = 59;
+       MY(type) = "decal";
+}
+// shockwave
+SUB(healray_impact) {
+       MY(alpha_min) = 40;
+       MY(alpha_max) = 40;
+       MY(alpha_fade) = 350;
+       MY(color_min) = "0x00ff00";
+       MY(color_max) = "0x84c52f";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 1400;
+       MY(size_min) = 32;
+       MY(size_max) = 32;
+       MY(tex_min) = 33;
+       MY(tex_max) = 33;
+       MY(type) = "smoke";
+       MY(velocitymultiplier) = 44;
+}
+// cloud of bouncing sparks
+SUB(healray_impact) {
+       MY(airfriction) = 6;
+       MY(alpha_min) = 156;
+       MY(alpha_max) = 300;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0x00ff00";
+       MY(color_max) = "0x84c52f";
+       MY(count) = 30;
+       MY(gravity) = 2;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 1;
+       MY(size_max) = 2;
+       MY(tex_min) = 70;
+       MY(tex_max) = 70;
+       MY(type) = "spark";
+       MY(velocityjitter) = '1112.0 1112.0 1112.0';
+}
+// inner cloud of smoke
+SUB(healray_impact) {
+       MY(airfriction) = 3;
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 456;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x00ff00";
+       MY(color_max) = "0x84c52f";
+       MY(count) = 15;
+       MY(gravity) = -2;
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = -90;
+       MY(spin_max) = 90;
+       MY(size_min) = 2;
+       MY(size_max) = 3;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '120.0 120.0 420.0';
+}
+
+DEF(bigplasma_muzzleflash);
+SUB(bigplasma_muzzleflash) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 812;
+       MY(color_min) = "0x283880";
+       MY(color_max) = "0x283880";
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '1.5 3.0 6.0';
+       MY(lightradiusfade) = 2000;
+       MY(lightradius) = 200;
+       MY(originjitter) = '1.5 1.5 1.5';
+       MY(sizeincrease) = -10;
+       MY(size_min) = 50;
+       MY(size_max) = 50;
+       MY(tex_min) = 65;
+       MY(tex_max) = 65;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '6.0 6.0 6.0';
+       MY(velocitymultiplier) = 0.010000;
+}
+SUB(bigplasma_muzzleflash) {
+       MY(alpha_min) = 56;
+       MY(alpha_max) = 56;
+       MY(alpha_fade) = 1112;
+       MY(color_min) = "0x00f0ff";
+       MY(color_max) = "0x00f0ff";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 300;
+       MY(size_min) = 20;
+       MY(size_max) = 20;
+       MY(tex_min) = 74;
+       MY(tex_max) = 74;
+       MY(type) = "smoke";
+}
+SUB(bigplasma_muzzleflash) {
+       MY(airfriction) = 5;
+       MY(alpha_min) = 50;
+       MY(alpha_max) = 150;
+       MY(alpha_fade) = 1924;
+       MY(color_min) = "0xD9FDFF";
+       MY(color_max) = "0x00f0ff";
+       MY(count) = 14;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(sizeincrease) = 135;
+       MY(size_min) = 5;
+       MY(size_max) = 10;
+       MY(stretchfactor) = 1.900000;
+       MY(tex_min) = 51;
+       MY(tex_max) = 55;
+       MY(type) = "spark";
+       MY(velocityjitter) = '350.0 350.0 350.0';
+       MY(velocitymultiplier) = 0.400000;
+}
+SUB(bigplasma_muzzleflash) {
+       MY(alpha_min) = 110;
+       MY(alpha_max) = 228;
+       MY(alpha_fade) = 4024;
+       MY(color_min) = "0xD9FDFF";
+       MY(color_max) = "0x00f0ff";
+       MY(count) = 4;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 20;
+       MY(size_max) = 20;
+       MY(stretchfactor) = 0.200000;
+       MY(tex_min) = 70;
+       MY(tex_max) = 70;
+       MY(type) = "spark";
+       MY(velocityjitter) = '650.0 650.0 650.0';
+       MY(velocitymultiplier) = 1.100000;
+}
+
+DEF(bigplasma_impact);
+SUB(bigplasma_impact) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '3.1 4.4 10.0';
+       MY(lightradiusfade) = 450;
+       MY(lightradius) = 125;
+       MY(originjitter) = '17.0 17.0 17.0';
+       MY(size_min) = 32;
+       MY(size_max) = 32;
+       MY(tex_min) = 59;
+       MY(tex_max) = 59;
+       MY(type) = "decal";
+}
+// shockwave
+SUB(bigplasma_impact) {
+       MY(alpha_min) = 40;
+       MY(alpha_max) = 40;
+       MY(alpha_fade) = 350;
+       MY(color_min) = "0x80C0FF";
+       MY(color_max) = "0x80C0FF";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 1400;
+       MY(size_min) = 32;
+       MY(size_max) = 32;
+       MY(tex_min) = 33;
+       MY(tex_max) = 33;
+       MY(type) = "smoke";
+       MY(velocitymultiplier) = 44;
+}
+// cloud of bouncing sparks
+SUB(bigplasma_impact) {
+       MY(airfriction) = 6;
+       MY(alpha_min) = 156;
+       MY(alpha_max) = 300;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0x629dff";
+       MY(color_max) = "0x0018ff";
+       MY(count) = 30;
+       MY(gravity) = 2;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(size_min) = 1;
+       MY(size_max) = 2;
+       MY(tex_min) = 70;
+       MY(tex_max) = 70;
+       MY(type) = "spark";
+       MY(velocityjitter) = '1512.0 1512.0 1512.0';
+}
+// inner cloud of smoke
+SUB(bigplasma_impact) {
+       MY(airfriction) = 30;
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 456;
+       MY(alpha_fade) = 1512;
+       MY(color_min) = "0x629dff";
+       MY(color_max) = "0x0018ff";
+       MY(count) = 15;
+       MY(originjitter) = '20.0 20.0 20.0';
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = -9;
+       MY(spin_max) = 9;
+       MY(sizeincrease) = 555;
+       MY(size_min) = 20;
+       MY(size_max) = 24;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '320.0 320.0 320.0';
+}
+// smoke
+SUB(bigplasma_impact) {
+       MY(airfriction) = 0.040000;
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 328;
+       MY(alpha_fade) = 390;
+       MY(blend) = "alpha";
+       MY(color_min) = "0x222222";
+       MY(color_max) = "0x000000";
+       MY(count) = 16;
+       MY(gravity) = 0.400000;
+       MY(originjitter) = '80.0 80.0 10.0';
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = 2;
+       MY(spin_max) = -2;
+       MY(sizeincrease) = 30;
+       MY(size_min) = 60;
+       MY(size_max) = 30;
+       MY(tex_max) = 7;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '100.0 100.0 200.0';
+       MY(velocityoffset) = '0.0 0.0 180.0';
+}
+// smoke in the middle
+SUB(bigplasma_impact) {
+       MY(airfriction) = 0.040000;
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 328;
+       MY(alpha_fade) = 310;
+       MY(color_min) = "0x222222";
+       MY(color_max) = "0x000000";
+       MY(count) = 10;
+       MY(gravity) = -0.200000;
+       MY(originjitter) = '80.0 80.0 80.0';
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = 20;
+       MY(spin_max) = -20;
+       MY(sizeincrease) = -10;
+       MY(size_min) = 60;
+       MY(size_max) = 70;
+       MY(tex_max) = 7;
+       MY(type) = "alphastatic";
+       MY(velocityjitter) = '10.0 10.0 10.0';
+}
+
+#include "effectinfo_ctf.inc"
+
+// spawn_point -- team idle spawn point effect
+#define spawn_point(name, color) \
+       DEF(spawn_point_##name); \
+       SUB(spawn_point_##name) { \
+               MY(airfriction) = 0.200000; \
+               MY(alpha_min) = 64; \
+               MY(alpha_max) = 128; \
+               MY(alpha_fade) = 128; \
+               MY(color_min) = color; \
+               MY(color_max) = color; \
+               MY(count) = 37.500000; \
+               MY(gravity) = -0.100000; \
+               MY(liquidfriction) = 0.800000; \
+               MY(originjitter) = '16.0 16.0 64.0'; \
+               MY(size_min) = 1; \
+               MY(size_max) = 2; \
+               MY(type) = "static"; \
+               MY(velocityjitter) = '32.0 32.0 0.0'; \
+       }
+
+spawn_point(red,               "0xFF0F0F")
+spawn_point(blue,              "0x0F0FFF")
+spawn_point(yellow,    "0xFFFF0F")
+spawn_point(pink,              "0xFF0FFF")
+spawn_point(neutral,   "0xFFFFFF")
+#undef spawn_point
+
+// spawn_event -- team spawning effect
+#define spawn_event(name, color) \
+       DEF(spawn_event_##name); \
+       SUB(spawn_event_##name) { \
+               MY(airfriction) = 2; \
+               MY(alpha_max) = 256; \
+               MY(alpha_fade) = 256; \
+               MY(bounce) = 1; \
+               MY(color_min) = color; \
+               MY(color_max) = color; \
+               MY(count) = 100; \
+               MY(originjitter) = '1.0 1.0 1.0'; \
+               MY(size_min) = 1; \
+               MY(size_max) = 1; \
+               MY(stretchfactor) = 0.600000; \
+               MY(tex_min) = 64; \
+               MY(tex_max) = 64; \
+               MY(type) = "spark"; \
+               MY(velocityjitter) = '500.0 500.0 500.0'; \
+               MY(velocitymultiplier) = 0.100000; \
+       } \
+       SUB(spawn_event_##name) { \
+               MY(alpha_min) = 190; \
+               MY(alpha_max) = 190; \
+               MY(alpha_fade) = 180; \
+               MY(color_min) = color; \
+               MY(color_max) = color; \
+               MY(countabsolute) = 1; \
+               MY(sizeincrease) = -80; \
+               MY(size_min) = 100; \
+               MY(size_max) = 100; \
+               MY(tex_min) = 65; \
+               MY(tex_max) = 65; \
+               MY(type) = "smoke"; \
+       } \
+       /**/
+
+spawn_event(red,               "0xFF0F0F")
+spawn_event(blue,              "0x0F0FFF")
+spawn_event(yellow,    "0xFFFF0F")
+spawn_event(pink,              "0xFF0FFF")
+spawn_event(neutral,   "0xFFFFFF")
+#undef spawn_event
+
+#include "effectinfo_nades.inc"
+
+DEF(shockwave_attack);
+// electricity
+SUB(shockwave_attack) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 4096;
+       MY(alpha_max) = 4096;
+       MY(alpha_fade) = 20000;
+       MY(color_min) = "0xb44215";
+       MY(color_max) = "0xff0000";
+       MY(count) = 1;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = 4000;
+       MY(spin_max) = -4000;
+       MY(sizeincrease) = 1.500000;
+       MY(size_min) = 5;
+       MY(size_max) = 7;
+       MY(stretchfactor) = 2.300000;
+       MY(tex_min) = 43;
+       MY(tex_max) = 43;
+       MY(type) = "spark";
+       MY(velocityjitter) = '10.0 10.0 10.0';
+       MY(velocitymultiplier) = 10;
+}
+// fire
+SUB(shockwave_attack) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 4096;
+       MY(alpha_max) = 4096;
+       MY(alpha_fade) = 20000;
+       MY(color_min) = "0xff4200";
+       MY(color_max) = "0xff0000";
+       MY(count) = 1;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(sizeincrease) = 1.500000;
+       MY(size_min) = 7;
+       MY(size_max) = 9;
+       MY(stretchfactor) = 2;
+       MY(tex_min) = 8;
+       MY(tex_max) = 15;
+       MY(type) = "spark";
+       MY(velocityjitter) = '10.0 10.0 10.0';
+       MY(velocitymultiplier) = 10;
+}
+
+DEF(arc_lightning);
+// impact decal
+SUB(arc_lightning) {
+       MY(alpha_min) = 32;
+       MY(alpha_max) = 32;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '3.1 4.4 10.0';
+       MY(lightradiusfade) = 200;
+       MY(lightradius) = 50;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(size_min) = 16;
+       MY(size_max) = 16;
+       MY(tex_min) = 16;
+       MY(tex_max) = 32;
+       MY(type) = "decal";
+}
+// impact sparks
+SUB(arc_lightning) {
+       MY(airfriction) = 110;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0xDDFDFF";
+       MY(color_max) = "0xFDFDFF";
+       MY(count) = 100;
+       MY(originjitter) = '20.0 20.0 20.0';
+       MY(startangle_max) = 360;
+       MY(spin_min) = -36000;
+       MY(spin_max) = 36000;
+       MY(sizeincrease) = -5;
+       MY(size_max) = 5;
+       MY(stretchfactor) = 1;
+       MY(tex_min) = 71;
+       MY(tex_max) = 74;
+       MY(type) = "static";
+       MY(velocityjitter) = '250.0 250.0 250.0';
+       MY(velocitymultiplier) = 100;
+}
+// impact sparks (underwater)
+SUB(arc_lightning) {
+       MY(airfriction) = 5;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0xDDFDFF";
+       MY(color_max) = "0xFDFDFF";
+       MY(count) = 100;
+       MY(liquidfriction) = 5;
+       MY(orientation) = "spark";
+       MY(originjitter) = '20.0 20.0 20.0';
+       MY(startangle_max) = 360;
+       MY(spin_min) = -36000;
+       MY(spin_max) = 36000;
+       MY(sizeincrease) = -5;
+       MY(size_max) = 5;
+       MY(stretchfactor) = 1;
+       MY(tex_min) = 71;
+       MY(tex_max) = 74;
+       MY(type) = "static";
+       MY(underwater) = true;
+       MY(velocityjitter) = '250.0 250.0 250.0';
+       MY(velocitymultiplier) = 20;
+}
+
+DEF(arc_beam);
+// sparks on beam
+SUB(arc_beam) {
+       MY(airfriction) = -10;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 16384;
+       MY(color_min) = "0xfafad2";
+       MY(color_max) = "0xffffff";
+       MY(originjitter) = '3.0 3.0 3.0';
+       MY(relativeoriginoffset) = '10.0 0.0 0.0';
+       MY(startangle_max) = 360;
+       MY(spin_min) = 360;
+       MY(spin_max) = 1000;
+       MY(stretchfactor) = 1;
+       MY(tex_min) = 71;
+       MY(tex_max) = 74;
+       MY(time_min) = 0.050000;
+       MY(time_max) = 0.050000;
+       MY(trailspacing) = 10;
+       MY(type) = "spark";
+       MY(velocityjitter) = '100.0 100.0 100.0';
+       MY(velocitymultiplier) = 200;
+}
+// sparks on beam (underwater)
+SUB(arc_beam) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 16384;
+       MY(color_min) = "0xfafad2";
+       MY(color_max) = "0xffffff";
+       MY(liquidfriction) = -10;
+       MY(originjitter) = '30.0 30.0 30.0';
+       MY(relativeoriginoffset) = '10.0 0.0 0.0';
+       MY(startangle_max) = 360;
+       MY(spin_min) = 360;
+       MY(spin_max) = 1000;
+       MY(stretchfactor) = 1;
+       MY(tex_min) = 71;
+       MY(tex_max) = 74;
+       MY(time_min) = 0.001000;
+       MY(time_max) = 0.001000;
+       MY(trailspacing) = 10;
+       MY(type) = "spark";
+       MY(underwater) = true;
+       MY(velocityjitter) = '100.0 100.0 100.0';
+       MY(velocitymultiplier) = 200;
+}
+
+DEF(arc_beam_heal);
+// bubble this...
+SUB(arc_beam_heal) {
+       MY(airfriction) = -20;
+       MY(alpha_min) = 2048;
+       MY(alpha_max) = 2048;
+       MY(alpha_fade) = 256;
+       MY(color_min) = "0x20FF20";
+       MY(color_max) = "0x40FF40";
+       MY(relativeoriginoffset) = '5.0 0.0 0.0';
+       MY(relativevelocityoffset) = '100.0 0.0 0.0';
+       MY(sizeincrease) = 20;
+       MY(size_min) = 0.100000;
+       MY(size_max) = 0.100000;
+       MY(tex_min) = 74;
+       MY(tex_max) = 74;
+       MY(trailspacing) = 1500;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '3.0 3.0 3.0';
+       MY(velocitymultiplier) = 200;
+}
+
+DEF(arc_beam_healimpact);
+// healing "aura"
+SUB(arc_beam_healimpact) {
+       MY(alpha_min) = 40;
+       MY(alpha_max) = 40;
+       MY(alpha_fade) = 350;
+       MY(color_min) = "0x00ff00";
+       MY(color_max) = "0x84c52f";
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '0.0 4.4 0.0';
+       MY(lightradiusfade) = 150;
+       MY(lightradius) = 20;
+       MY(sizeincrease) = -1000;
+       MY(size_min) = 32;
+       MY(size_max) = 32;
+       MY(tex_min) = 33;
+       MY(tex_max) = 33;
+       MY(type) = "smoke";
+       MY(velocitymultiplier) = 44;
+}
+// rising "smoke"
+SUB(arc_beam_healimpact) {
+       MY(airfriction) = 3;
+       MY(alpha_min) = 200;
+       MY(alpha_max) = 456;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x00ff00";
+       MY(color_max) = "0x84c52f";
+       MY(count) = 15;
+       MY(gravity) = -2;
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = -90;
+       MY(spin_max) = 90;
+       MY(size_min) = 0.500000;
+       MY(size_max) = 1;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '120.0 120.0 420.0';
+}
+
+DEF(arc_smoke);
+// arc heat smoke  (notunderwater)
+SUB(arc_smoke) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 32;
+       MY(alpha_max) = 64;
+       MY(alpha_fade) = 48;
+       MY(color_min) = "0x4c453f";
+       MY(color_max) = "0x2a241f";
+       MY(count) = 2;
+       MY(gravity) = -0.125000;
+       MY(notunderwater) = true;
+       MY(startangle_max) = 360;
+       MY(spin_min) = -180;
+       MY(spin_max) = 180;
+       MY(sizeincrease) = 10;
+       MY(size_min) = 5;
+       MY(size_max) = 10;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '0.0 0.0 16.0';
+}
+// arc heat bubbles  (underwater)
+SUB(arc_smoke) {
+       MY(alpha_min) = 170;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(count) = 2;
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 0.250000;
+       MY(originjitter) = '6.0 6.0 6.0';
+       MY(size_min) = 0.100000;
+       MY(size_max) = 1;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '16.0 16.0 16.0';
+}
+
+DEF(arc_overheat);
+// arc overheat electric bolts
+SUB(arc_overheat) {
+       MY(airfriction) = 5;
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 292;
+       MY(color_min) = "0xffffff";
+       MY(color_max) = "0x9271fb";
+       MY(count) = 24;
+       MY(gravity) = -0.400000;
+       MY(liquidfriction) = 10;
+       MY(originjitter) = '10.0 10.0 10.0';
+       MY(sizeincrease) = -24;
+       MY(size_min) = 6;
+       MY(size_max) = 12;
+       MY(tex_min) = 43;
+       MY(tex_max) = 43;
+       MY(type) = "spark";
+       MY(velocityjitter) = '256.0 256.0 256.0';
+}
+
+DEF(arc_overheat_fire);
+// arc overheat bouncing sparks
+SUB(arc_overheat_fire) {
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 640;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x4444ff";
+       MY(color_max) = "0xeeeeff";
+       MY(count) = 1;
+       MY(gravity) = 1;
+       MY(liquidfriction) = 5;
+       MY(originjitter) = '6.0 6.0 6.0';
+       MY(size_min) = 0.400000;
+       MY(size_max) = 1;
+       MY(type) = "spark";
+       MY(velocityjitter) = '92.0 92.0 92.0';
+       MY(velocitymultiplier) = 80;
+       MY(velocityoffset) = '0.0 0.0 80.0';
+}
+
+#include "effectinfo_buffs.inc"
+
+#include "effectinfo_instagib.inc"
diff --git a/qcsrc/common/effects/effectinfo.qc b/qcsrc/common/effects/effectinfo.qc
new file mode 100644 (file)
index 0000000..e27d2c9
--- /dev/null
@@ -0,0 +1,310 @@
+#define EFFECTINFO_PARSER(on) \
+    on(airfriction,                                 MY(airfriction) \
+    ,{ ASSERT(n == 1 && "airfriction");             MY(airfriction) = stof(argv(1)); \
+    }, sprintf(" %s",                               ftos(MY(airfriction)) \
+    )) \
+    on(alpha,                                       MY(alpha_min) ||                    MY(alpha_max) ||                MY(alpha_fade) \
+    ,{ ASSERT(n == 3 && "alpha");                   MY(alpha_min) = stof(argv(1));      MY(alpha_max) = stof(argv(2));  MY(alpha_fade) = stof(argv(3)); \
+    }, sprintf(" %s %s %s",                         ftos(MY(alpha_min)),                ftos(MY(alpha_max)),            ftos(MY(alpha_fade)) \
+    )) \
+    on(blend,                                       MY(blend) \
+    ,{ ASSERT(n == 1 && "blend");                   MY(blend) = argv(1); \
+    }, sprintf(" %s",                               (MY(blend)) \
+    )) \
+    on(bounce,                                      MY(bounce) \
+    ,{ ASSERT(n == 1 && "bounce");                  MY(bounce) = stof(argv(1)); \
+    }, sprintf(" %s",                               ftos(MY(bounce)) \
+    )) \
+    on(color,                                       MY(color_min) ||                    MY(color_max) \
+    ,{ ASSERT(n == 2 && "color");                   MY(color_min) = argv(1);            MY(color_max) = argv(2); \
+    }, sprintf(" %s %s",                            (MY(color_min)),                    (MY(color_max)) \
+    )) \
+    on(countabsolute,                               MY(countabsolute) \
+    ,{ ASSERT(n == 1 && "countabsolute");           MY(countabsolute) = stof(argv(1)); \
+    }, sprintf(" %s",                               ftos(MY(countabsolute)) \
+    )) \
+    on(count,                                       MY(count) \
+    ,{ ASSERT(n == 1 && "count");                   MY(count) = stof(argv(1)); \
+    }, sprintf(" %s",                               ftos(MY(count)) \
+    )) \
+    on(gravity,                                     MY(gravity) \
+    ,{ ASSERT(n == 1 && "gravity");                 MY(gravity) = stof(argv(1)); \
+    }, sprintf(" %s",                               ftos(MY(gravity)) \
+    )) \
+    on(lightcolor,                                  MY(lightcolor) \
+    ,{ ASSERT(n == 3 && "lightcolor");              MY(lightcolor) = vec3(stof(argv(1)), stof(argv(2)), stof(argv(3))); \
+    }, sprintf(" %v",                               (MY(lightcolor)) \
+    )) \
+    on(lightradiusfade,                             MY(lightradiusfade) \
+    ,{ ASSERT(n == 1 && "lightradiusfade");         MY(lightradiusfade) = stof(argv(1)); \
+    }, sprintf(" %s",                               ftos(MY(lightradiusfade)) \
+    )) \
+    on(lightradius,                                 MY(lightradius) \
+    ,{ ASSERT(n == 1 && "lightradius");             MY(lightradius) = stof(argv(1)); \
+    }, sprintf(" %s",                               ftos(MY(lightradius)) \
+    )) \
+    on(lighttime,                                   MY(lighttime) \
+    ,{ ASSERT(n == 1 && "lighttime");               MY(lighttime) = stof(argv(1)); \
+    }, sprintf(" %s",                               ftos(MY(lighttime)) \
+    )) \
+    on(liquidfriction,                              MY(liquidfriction) \
+    ,{ ASSERT(n == 1 && "liquidfriction");          MY(liquidfriction) = stof(argv(1)); \
+    }, sprintf(" %s",                               ftos(MY(liquidfriction)) \
+    )) \
+    on(notunderwater,                               MY(notunderwater) \
+    ,{ ASSERT(n == 0 && "notunderwater");           MY(notunderwater) = true; \
+    }, "" \
+    ) \
+    on(orientation,                                 MY(orientation) \
+    ,{ ASSERT(n == 1 && "orientation");             MY(orientation) = argv(1); \
+    }, sprintf(" %s",                               (MY(orientation)) \
+    )) \
+    on(originjitter,                                MY(originjitter) \
+    ,{ ASSERT(n == 3 && "originjitter");            MY(originjitter) = vec3(stof(argv(1)), stof(argv(2)), stof(argv(3))); \
+    }, sprintf(" %v",                               (MY(originjitter)) \
+    )) \
+    on(originoffset,                                MY(originoffset) \
+    ,{ ASSERT(n == 3 && "originoffset");            MY(originoffset) = vec3(stof(argv(1)), stof(argv(2)), stof(argv(3))); \
+    }, sprintf(" %v",                               (MY(originoffset)) \
+    )) \
+    on(relativeoriginoffset,                        MY(relativeoriginoffset) \
+    ,{ ASSERT(n == 3 && "relativeoriginoffset");    MY(relativeoriginoffset) = vec3(stof(argv(1)), stof(argv(2)), stof(argv(3))); \
+    }, sprintf(" %v",                               (MY(relativeoriginoffset)) \
+    )) \
+    on(relativevelocityoffset,                      MY(relativevelocityoffset) \
+    ,{ ASSERT(n == 3 && "relativevelocityoffset");  MY(relativevelocityoffset) = vec3(stof(argv(1)), stof(argv(2)), stof(argv(3))); \
+    }, sprintf(" %v",                               (MY(relativevelocityoffset)) \
+    )) \
+    on(rotate,                                      MY(startangle_min) ||               MY(startangle_max) ||               MY(spin_min) ||                 MY(spin_max) \
+    ,{ ASSERT(n == 4 && "rotate");                  MY(startangle_min) = stof(argv(1)); MY(startangle_max) = stof(argv(2)); MY(spin_min) = stof(argv(3));   MY(spin_max) = stof(argv(4)); \
+    }, sprintf(" %s %s %s %s",                      ftos(MY(startangle_min)),           ftos(MY(startangle_max)),           ftos(MY(spin_min)),             ftos(MY(spin_max)) \
+    )) \
+    on(sizeincrease,                                MY(sizeincrease) \
+    ,{ ASSERT(n == 1 && "sizeincrease");            MY(sizeincrease) = stof(argv(1)); \
+    }, sprintf(" %s",                               ftos(MY(sizeincrease)) \
+    )) \
+    on(size,                                        MY(size_min) ||                     MY(size_max) \
+    ,{ ASSERT(n == 2 && "size");                    MY(size_min) = stof(argv(1));       MY(size_max) = stof(argv(2)); \
+    }, sprintf(" %s %s",                            ftos(MY(size_min)),                 ftos(MY(size_max)) \
+    )) \
+    on(staincolor,                                  MY(staincolor_min) ||               MY(staincolor_max) \
+    ,{ ASSERT(n == 2 && "staincolor");              MY(staincolor_min) = argv(1);       MY(staincolor_max) = argv(2); \
+    }, sprintf(" %s %s",                            (MY(staincolor_min)),               (MY(staincolor_max)) \
+    )) \
+    on(stainsize,                                   MY(stainsize_min) ||                MY(stainsize_max) \
+    ,{ ASSERT(n == 2 && "stainsize");               MY(stainsize_min) = stof(argv(1));  MY(stainsize_max) = stof(argv(2)); \
+    }, sprintf(" %s %s",                            ftos(MY(stainsize_min)),            ftos(MY(stainsize_max)) \
+    )) \
+    on(staintex,                                    MY(staintex_min) ||                 MY(staintex_max) \
+    ,{ ASSERT(n == 2 && "staintex");                MY(staintex_min) = stof(argv(1));   MY(staintex_max) = stof(argv(2)); \
+    }, sprintf(" %s %s",                            ftos(MY(staintex_min)),             ftos(MY(staintex_max)) \
+    )) \
+    on(stretchfactor,                               MY(stretchfactor) \
+    ,{ ASSERT(n == 1 && "stretchfactor");           MY(stretchfactor) = stof(argv(1)); \
+    }, sprintf(" %s",                               ftos(MY(stretchfactor)) \
+    )) \
+    on(tex,                                         MY(tex_min) ||                      MY(tex_max) \
+    ,{ ASSERT(n == 2 && "tex");                     MY(tex_min) = stof(argv(1));        MY(tex_max) = stof(argv(2)); \
+    }, sprintf(" %s %s",                            ftos(MY(tex_min)),                  ftos(MY(tex_max)) \
+    )) \
+    on(time,                                        MY(time_min) ||                     MY(time_max) \
+    ,{ ASSERT(n == 2 && "time");                    MY(time_min) = stof(argv(1));       MY(time_max) = stof(argv(2)); \
+    }, sprintf(" %s %s",                            ftos(MY(time_min)),                 ftos(MY(time_max)) \
+    )) \
+    on(trailspacing,                                MY(trailspacing) \
+    ,{ ASSERT(n == 1 && "trailspacing");            MY(trailspacing) = stof(argv(1)); \
+    }, sprintf(" %s",                               ftos(MY(trailspacing)) \
+    )) \
+    on(type,                                        MY(type) \
+    ,{ ASSERT(n == 1 && "type");                    MY(type) = argv(1); \
+    }, sprintf(" %s",                               (MY(type)) \
+    )) \
+    on(underwater,                                  MY(underwater) \
+    ,{ ASSERT(n == 0 && "underwater");              MY(underwater) = true; \
+    }, "" \
+    ) \
+    on(velocityjitter,                              MY(velocityjitter) \
+    ,{ ASSERT(n == 3 && "velocityjitter");          MY(velocityjitter) = vec3(stof(argv(1)), stof(argv(2)), stof(argv(3))); \
+    }, sprintf(" %v",                               (MY(velocityjitter)) \
+    )) \
+    on(velocitymultiplier,                          MY(velocitymultiplier) \
+    ,{ ASSERT(n == 1 && "velocitymultiplier");      MY(velocitymultiplier) = stof(argv(1)); \
+    }, sprintf(" %s",                               ftos(MY(velocitymultiplier)) \
+    )) \
+    on(velocityoffset,                              MY(velocityoffset) \
+    ,{ ASSERT(n == 3 && "velocityoffset");          MY(velocityoffset) = vec3(stof(argv(1)), stof(argv(2)), stof(argv(3))); \
+    }, sprintf(" %v",                               (MY(velocityoffset)) \
+    )) \
+    /**/
+
+CLASS(EffectInfo, Object)
+    ATTRIB(EffectInfo, effectinfo_name, string, string_null)
+    CONSTRUCTOR(EffectInfo, string s) {
+        CONSTRUCT(EffectInfo);
+        this.effectinfo_name = s;
+    }
+
+    #define FIELDS(MY) \
+    MY(airfriction, float, 0) \
+    MY(alpha_min, float, 0) \
+    MY(alpha_max, float, 0) \
+    MY(alpha_fade, float, 0) \
+    MY(blend, string, string_null) \
+    MY(bounce, float, 0) \
+    MY(color_min, string, string_null) \
+    MY(color_max, string, string_null) \
+    MY(countabsolute, float, 0) \
+    MY(count, float, 0) \
+    MY(gravity, float, 0) \
+    MY(lightcolor, vector, '0 0 0') \
+    MY(lightradiusfade, float, 0) \
+    MY(lightradius, float, 0) \
+    MY(lighttime, float, 0) \
+    MY(liquidfriction, float, 0) \
+    MY(notunderwater, bool, false) \
+    MY(orientation, string, string_null) \
+    MY(originjitter, vector, '0 0 0') \
+    MY(originoffset, vector, '0 0 0') \
+    MY(relativeoriginoffset, vector, '0 0 0') \
+    MY(relativevelocityoffset, vector, '0 0 0') \
+    MY(startangle_min, float, 0) \
+    MY(startangle_max, float, 0) \
+    MY(spin_min, float, 0) \
+    MY(spin_max, float, 0) \
+    MY(sizeincrease, float, 0) \
+    MY(size_min, float, 0) \
+    MY(size_max, float, 0) \
+    MY(staincolor_min, string, string_null) \
+    MY(staincolor_max, string, string_null) \
+    MY(stainsize_min, float, 0) \
+    MY(stainsize_max, float, 0) \
+    MY(staintex_min, float, 0) \
+    MY(staintex_max, float, 0) \
+    MY(stretchfactor, float, 0) \
+    MY(tex_min, float, 0) \
+    MY(tex_max, float, 0) \
+    MY(time_min, float, 0) \
+    MY(time_max, float, 0) \
+    MY(trailspacing, float, 0) \
+    MY(type, string, string_null) \
+    MY(underwater, bool, false) \
+    MY(velocityjitter, vector, '0 0 0') \
+    MY(velocitymultiplier, float, 0) \
+    MY(velocityoffset, vector, '0 0 0') \
+    /**/
+
+    #define MY(f, type, val) ATTRIB(EffectInfo, effectinfo_##f, type, val)
+    FIELDS(MY)
+    #undef MY
+
+    METHOD(EffectInfo, describe, string(EffectInfo this)) {
+        string s = sprintf("SUB(%s) {\n", this.effectinfo_name);
+        #define str_bool(it) (it ? "true" : "false")
+        #define str_float(it) ftos(it)
+        #define str_vector(it) vtos(it)
+        #define str_string(it) strcat("\"", it, "\"")
+        #define p(f, type, default) if (this.effectinfo_##f) { s = strcat(s, "\t", "MY("#f") = ", str_##type(this.effectinfo_##f), ";\n"); }
+        FIELDS(p)
+        #undef p
+        #undef MY
+        return strcat(s, "}\n");
+    }
+
+    METHOD(EffectInfo, dump, string(EffectInfo this)) {
+        string s = sprintf("effect %s\n", this.effectinfo_name);
+        #define MY(f) this.effectinfo_##f
+        #define p(k, isset, parse, unparse) if (isset) { s = strcat(s, "\t", #k, unparse, "\n"); }
+        EFFECTINFO_PARSER(p)
+        #undef p
+        #undef MY
+        return s;
+    }
+
+    #undef FIELDS
+ENDCLASS(EffectInfo)
+
+CLASS(EffectInfoGroup, Object)
+    ATTRIBARRAY(EffectInfoGroup, children, EffectInfo, 16)
+    ATTRIB(EffectInfoGroup, children_count, int, 0)
+ENDCLASS(EffectInfoGroup)
+
+void effectinfo_read()
+{
+    int fh = fopen("effectinfo.txt", FILE_READ);
+    EffectInfo info = NULL;
+    for (string line; (line = fgets(fh)); ) {
+        int n = tokenize_console(line);
+        if (n == 0) continue;
+        n--;
+        string k = argv(0);
+        if (k == "effect") {
+            ASSERT(n == 1);
+            info = NEW(EffectInfo, argv(1));
+            continue;
+        }
+        ASSERT(info != NULL);
+        switch (k) {
+            #define MY(f) info.effectinfo_##f
+            #define p(k, isset, parse, unparse) case #k: parse break;
+            EFFECTINFO_PARSER(p)
+            #undef p
+            #undef MY
+            default:
+                LOG_WARNINGF("Unknown property '%s'\n", k);
+                break;
+        }
+    }
+    fclose(fh);
+}
+
+void effectinfo_dump(int fh, bool alsoprint)
+{
+    #define WRITE(s) do { \
+        fputs(fh, s); \
+        if (alsoprint) LOG_INFO(s); \
+    } while (0)
+    WRITE("// ********************************************** //\n");
+    WRITE("// ** WARNING - DO NOT MANUALLY EDIT THIS FILE ** //\n");
+    WRITE("// **                                          ** //\n");
+    WRITE("// **  This file is automatically generated by ** //\n");
+    WRITE("// **  code with the command 'dumpeffectinfo'. ** //\n");
+    WRITE("// **                                          ** //\n");
+    WRITE("// **  If you modify an effect, please         ** //\n");
+    WRITE("// **  regenerate this file with that command. ** //\n");
+    WRITE("// **                                          ** //\n");
+    WRITE("// ********************************************** //\n");
+    WRITE("\n");
+
+    for (EffectInfo it = NULL; (it = findfloat(it, instanceOfEffectInfo, true)); ) {
+        if (it.classname == "vtbl") continue;
+        string s = it.dump(it);
+        WRITE(s);
+    }
+    #undef WRITE
+}
+
+
+void RegisterEffectInfo();
+const int MAX_EFFECTINFOS = 512;
+entity EFFECTINFOS[MAX_EFFECTINFOS], EFFECTINFOS_first, EFFECTINFOS_last;
+int EFFECTINFOS_COUNT;
+
+#define EFFECTINFO(name) \
+    [[accumulate]] void effectinfo_##name(EffectInfoGroup parent, EffectInfo this) { } \
+    REGISTER(RegisterEffectInfo, EFFECTINFO, EFFECTINFOS, EFFECTINFOS_COUNT, name, m_id, NEW(EffectInfoGroup)) { \
+        effectinfo_##name(this, NULL); \
+    }
+REGISTER_REGISTRY(RegisterEffectInfo)
+
+
+#define REGISTER_EFFECTINFO(id) var void effectinfo_##id(EffectInfoGroup parent)
+
+#define MY(f) this.effectinfo_##f
+#define DEF(name) EFFECTINFO(name)
+#define SUB(name) \
+    [[accumulate]] void effectinfo_##name(EffectInfoGroup parent, EffectInfo this) { parent = EFFECTINFO_##name; parent.children[parent.children_count++] = this = NEW(EffectInfo, #name); } \
+    [[accumulate]] void effectinfo_##name(EffectInfoGroup parent, EffectInfo this)
+#include "effectinfo.inc"
+#undef MY
+#undef DEF
+#undef SUB
diff --git a/qcsrc/common/effects/effectinfo_buffs.inc b/qcsrc/common/effects/effectinfo_buffs.inc
new file mode 100644 (file)
index 0000000..8ac9041
--- /dev/null
@@ -0,0 +1,305 @@
+DEF(relic_resistance);
+SUB(relic_resistance) {
+    MY(airfriction) = 0.200000;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 256;
+    MY(color_min) = "0x00ff80";
+    MY(color_max) = "0x00ff80";
+    MY(count) = 20;
+    MY(gravity) = -0.100000;
+    MY(liquidfriction) = 0.800000;
+    MY(originjitter) = '8.0 8.0 32.0';
+    MY(size_min) = 1.500000;
+    MY(size_max) = 1.500000;
+    MY(type) = "static";
+    MY(velocityjitter) = '64.0 64.0 32.0';
+}
+
+DEF(relic_regeneration);
+SUB(relic_regeneration) {
+    MY(airfriction) = 0.200000;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 256;
+    MY(color_min) = "0x00ffff";
+    MY(color_max) = "0x00ffff";
+    MY(count) = 1;
+    MY(gravity) = -0.100000;
+    MY(liquidfriction) = 0.800000;
+    MY(originjitter) = '8.0 8.0 32.0';
+    MY(size_min) = 1.500000;
+    MY(size_max) = 1.500000;
+    MY(type) = "static";
+    MY(velocityjitter) = '64.0 64.0 32.0';
+}
+
+DEF(relic_vampire);
+SUB(relic_vampire) {
+    MY(airfriction) = 0.200000;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 256;
+    MY(color_min) = "0xff00ff";
+    MY(color_max) = "0xff00ff";
+    MY(count) = 20;
+    MY(gravity) = -0.100000;
+    MY(liquidfriction) = 0.800000;
+    MY(originjitter) = '8.0 8.0 32.0';
+    MY(size_min) = 1.500000;
+    MY(size_max) = 1.500000;
+    MY(type) = "static";
+    MY(velocityjitter) = '64.0 64.0 32.0';
+}
+
+DEF(relic_ammo);
+SUB(relic_ammo) {
+    MY(airfriction) = 0.200000;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 256;
+    MY(color_min) = "0x80ff00";
+    MY(color_max) = "0x80ff00";
+    MY(count) = 1;
+    MY(gravity) = -0.100000;
+    MY(liquidfriction) = 0.800000;
+    MY(originjitter) = '8.0 8.0 32.0';
+    MY(size_min) = 1.500000;
+    MY(size_max) = 1.500000;
+    MY(type) = "static";
+    MY(velocityjitter) = '64.0 64.0 32.0';
+}
+
+DEF(relic_damage);
+SUB(relic_damage) {
+    MY(airfriction) = 0.200000;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 256;
+    MY(color_min) = "0xff0000";
+    MY(color_max) = "0xff0000";
+    MY(count) = 20;
+    MY(gravity) = -0.100000;
+    MY(liquidfriction) = 0.800000;
+    MY(originjitter) = '8.0 8.0 32.0';
+    MY(size_min) = 1.500000;
+    MY(size_max) = 1.500000;
+    MY(type) = "static";
+    MY(velocityjitter) = '64.0 64.0 32.0';
+}
+
+DEF(relic_ssplashdamage);
+SUB(relic_ssplashdamage) {
+    MY(airfriction) = 0.200000;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 256;
+    MY(color_min) = "0xff8000";
+    MY(color_max) = "0xff8000";
+    MY(count) = 20;
+    MY(gravity) = -0.100000;
+    MY(liquidfriction) = 0.800000;
+    MY(originjitter) = '8.0 8.0 32.0';
+    MY(size_min) = 1.500000;
+    MY(size_max) = 1.500000;
+    MY(type) = "static";
+    MY(velocityjitter) = '64.0 64.0 32.0';
+}
+
+DEF(relic_firingspeed);
+SUB(relic_firingspeed) {
+    MY(airfriction) = 0.200000;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 256;
+    MY(color_min) = "0xffff00";
+    MY(color_max) = "0xffff00";
+    MY(count) = 20;
+    MY(gravity) = -0.100000;
+    MY(liquidfriction) = 0.800000;
+    MY(originjitter) = '8.0 8.0 32.0';
+    MY(size_min) = 1.500000;
+    MY(size_max) = 1.500000;
+    MY(type) = "static";
+    MY(velocityjitter) = '64.0 64.0 32.0';
+}
+
+DEF(relic_disability);
+SUB(relic_disability) {
+    MY(airfriction) = 0.200000;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 256;
+    MY(color_min) = "0x0000ff";
+    MY(color_max) = "0x0000ff";
+    MY(count) = 20;
+    MY(gravity) = -0.100000;
+    MY(liquidfriction) = 0.800000;
+    MY(originjitter) = '8.0 8.0 32.0';
+    MY(size_min) = 1.500000;
+    MY(size_max) = 1.500000;
+    MY(type) = "static";
+    MY(velocityjitter) = '64.0 64.0 32.0';
+}
+
+DEF(relic_disability_curse);
+SUB(relic_disability_curse) {
+    MY(airfriction) = 0.200000;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 256;
+    MY(color_min) = "0x000080";
+    MY(color_max) = "0x000080";
+    MY(count) = 1;
+    MY(gravity) = -0.100000;
+    MY(liquidfriction) = 0.800000;
+    MY(originjitter) = '8.0 8.0 32.0';
+    MY(size_min) = 1.500000;
+    MY(size_max) = 1.500000;
+    MY(type) = "static";
+    MY(velocityjitter) = '64.0 64.0 32.0';
+}
+
+DEF(relic_teamboost);
+SUB(relic_teamboost) {
+    MY(airfriction) = 0.200000;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 256;
+    MY(color_min) = "0xffffff";
+    MY(color_max) = "0xffffff";
+    MY(count) = 20;
+    MY(gravity) = -0.100000;
+    MY(liquidfriction) = 0.800000;
+    MY(originjitter) = '8.0 8.0 32.0';
+    MY(size_min) = 1.500000;
+    MY(size_max) = 1.500000;
+    MY(type) = "static";
+    MY(velocityjitter) = '64.0 64.0 32.0';
+}
+
+DEF(relic_teamboost_boost);
+SUB(relic_teamboost_boost) {
+    MY(airfriction) = 0.200000;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 256;
+    MY(color_min) = "0x808080";
+    MY(color_max) = "0x808080";
+    MY(count) = 1;
+    MY(gravity) = -0.100000;
+    MY(liquidfriction) = 0.800000;
+    MY(originjitter) = '8.0 8.0 32.0';
+    MY(size_min) = 1.500000;
+    MY(size_max) = 1.500000;
+    MY(type) = "static";
+    MY(velocityjitter) = '64.0 64.0 32.0';
+}
+
+DEF(relic_speed);
+SUB(relic_speed) {
+    MY(airfriction) = 0.200000;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 256;
+    MY(color_min) = "0x80ffff";
+    MY(color_max) = "0x80ffff";
+    MY(count) = 1;
+    MY(gravity) = -0.100000;
+    MY(liquidfriction) = 0.800000;
+    MY(originjitter) = '8.0 8.0 32.0';
+    MY(size_min) = 1.500000;
+    MY(size_max) = 1.500000;
+    MY(type) = "static";
+    MY(velocityjitter) = '64.0 64.0 32.0';
+}
+
+DEF(relic_jump);
+SUB(relic_jump) {
+    MY(airfriction) = 0.200000;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 256;
+    MY(color_min) = "0xffff80";
+    MY(color_max) = "0xffff80";
+    MY(count) = 20;
+    MY(gravity) = -0.100000;
+    MY(liquidfriction) = 0.800000;
+    MY(originjitter) = '8.0 8.0 32.0';
+    MY(size_min) = 1.500000;
+    MY(size_max) = 1.500000;
+    MY(type) = "static";
+    MY(velocityjitter) = '64.0 64.0 32.0';
+}
+
+DEF(relic_flight);
+SUB(relic_flight) {
+    MY(airfriction) = 0.200000;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 256;
+    MY(color_min) = "0x8080ff";
+    MY(color_max) = "0x8080ff";
+    MY(count) = 1;
+    MY(gravity) = -0.100000;
+    MY(liquidfriction) = 0.800000;
+    MY(originjitter) = '8.0 8.0 32.0';
+    MY(size_min) = 1.500000;
+    MY(size_max) = 1.500000;
+    MY(type) = "static";
+    MY(velocityjitter) = '64.0 64.0 32.0';
+}
+
+DEF(relic_radioactive);
+SUB(relic_radioactive) {
+    MY(airfriction) = 0.200000;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 256;
+    MY(color_min) = "0x00ff00";
+    MY(color_max) = "0x00ff00";
+    MY(count) = 20;
+    MY(gravity) = -0.100000;
+    MY(liquidfriction) = 0.800000;
+    MY(originjitter) = '8.0 8.0 32.0';
+    MY(size_min) = 1.500000;
+    MY(size_max) = 1.500000;
+    MY(type) = "static";
+    MY(velocityjitter) = '64.0 64.0 32.0';
+}
+
+DEF(relic_resurrection);
+SUB(relic_resurrection) {
+    MY(airfriction) = 0.200000;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 256;
+    MY(color_min) = "0xff0080";
+    MY(color_max) = "0xff0080";
+    MY(count) = 20;
+    MY(gravity) = -0.100000;
+    MY(liquidfriction) = 0.800000;
+    MY(originjitter) = '8.0 8.0 32.0';
+    MY(size_min) = 1.500000;
+    MY(size_max) = 1.500000;
+    MY(type) = "static";
+    MY(velocityjitter) = '64.0 64.0 32.0';
+}
+
+DEF(relic_vengeance);
+SUB(relic_vengeance) {
+    MY(airfriction) = 0.200000;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 256;
+    MY(color_min) = "0xff8080";
+    MY(color_max) = "0xff8080";
+    MY(count) = 20;
+    MY(gravity) = -0.100000;
+    MY(liquidfriction) = 0.800000;
+    MY(originjitter) = '8.0 8.0 32.0';
+    MY(size_min) = 1.500000;
+    MY(size_max) = 1.500000;
+    MY(type) = "static";
+    MY(velocityjitter) = '64.0 64.0 32.0';
+}
diff --git a/qcsrc/common/effects/effectinfo_ctf.inc b/qcsrc/common/effects/effectinfo_ctf.inc
new file mode 100644 (file)
index 0000000..5794ad4
--- /dev/null
@@ -0,0 +1,123 @@
+// flag_touch -- effects for touching the flag
+#define flag_touch(name, colormin, colormax) \
+    DEF(name##flag_touch); \
+    SUB(name##flag_touch) { \
+        MY(airfriction) = 3; \
+        MY(alpha_max) = 256; \
+        MY(alpha_fade) = 556; \
+        MY(bounce) = 1.500000; \
+        MY(color_min) = colormin; \
+        MY(color_max) = colormax; \
+        MY(count) = 35; \
+        MY(gravity) = 1; \
+        MY(originjitter) = '1.0 1.0 1.0'; \
+        MY(size_min) = 1; \
+        MY(size_max) = 3; \
+        MY(tex_min) = 40; \
+        MY(tex_max) = 40; \
+        MY(type) = "spark"; \
+        MY(velocityjitter) = '300.0 300.0 300.0'; \
+        MY(velocitymultiplier) = 0.500000; \
+    }
+
+flag_touch(red,     "0xFF0000", "0x970000")
+flag_touch(blue,    "0x0000FF", "0x000097")
+flag_touch(yellow,  "0xFFFF0F", "0xFFFF0F")
+flag_touch(pink,    "0xFF0FFF", "0xFF0FFF")
+flag_touch(neutral, "0xFFFFFF", "0xFFFFFF")
+#undef flag_touch
+
+#define pass(name, colormin, colormax) \
+    DEF(name##_pass); \
+    SUB(name##_pass) { \
+        MY(airfriction) = 5; \
+        MY(alpha_min) = 64; \
+        MY(alpha_max) = 128; \
+        MY(alpha_fade) = 64; \
+        MY(color_min) = colormin; \
+        MY(color_max) = colormax; \
+        MY(sizeincrease) = 2; \
+        MY(size_min) = 2; \
+        MY(size_max) = 2; \
+        MY(tex_min) = 32; \
+        MY(tex_max) = 32; \
+        MY(trailspacing) = 64; \
+        MY(type) = "static"; \
+    } \
+    SUB(name##_pass) { \
+        MY(airfriction) = 9; \
+        MY(alpha_min) = 32; \
+        MY(alpha_max) = 64; \
+        MY(alpha_fade) = 32; \
+        MY(color_min) = colormin; \
+        MY(color_max) = colormax; \
+        MY(sizeincrease) = 8; \
+        MY(size_min) = 1; \
+        MY(size_max) = 1; \
+        MY(tex_max) = 8; \
+        MY(trailspacing) = 12; \
+        MY(type) = "static"; \
+        MY(velocityjitter) = '64.0 64.0 64.0'; \
+    } \
+    SUB(name##_pass) { \
+        MY(alpha_min) = 256; \
+        MY(alpha_max) = 256; \
+        MY(alpha_fade) = 1280; \
+        MY(color_min) = colormin; \
+        MY(color_max) = colormax; \
+        MY(size_min) = 4; \
+        MY(size_max) = 4; \
+        MY(trailspacing) = 12; \
+        MY(type) = "static"; \
+    } \
+    /**/
+
+pass(red,       "0xFF0000", "0x970000")
+pass(blue,      "0x0000FF", "0x000097")
+pass(yellow,    "0xFFFF0F", "0xFFFF0F")
+pass(pink,      "0xFFFFFF", "0xFFFFFF")
+pass(neutral,   "0xFFFFFF", "0xFFFFFF")
+#undef pass
+
+// cap -- team capture effect
+#define cap(name, colormin, colormax) \
+    DEF(name##_cap); \
+    SUB(name##_cap) { \
+        MY(airfriction) = 2; \
+        MY(alpha_max) = 256; \
+        MY(alpha_fade) = 100; \
+        MY(bounce) = 1.500000; \
+        MY(color_min) = colormin; \
+        MY(color_max) = colormax; \
+        MY(count) = 500; \
+        MY(originjitter) = '1.0 1.0 1.0'; \
+        MY(size_min) = 1; \
+        MY(size_max) = 1; \
+        MY(stretchfactor) = 0.600000; \
+        MY(tex_min) = 64; \
+        MY(tex_max) = 64; \
+        MY(type) = "spark"; \
+        MY(velocityjitter) = '1000.0 1000.0 1500.0'; \
+        MY(velocitymultiplier) = 0.500000; \
+    } \
+    SUB(name##_cap) { \
+        MY(alpha_min) = 190; \
+        MY(alpha_max) = 190; \
+        MY(alpha_fade) = 180; \
+        MY(color_min) = colormin; \
+        MY(color_max) = colormax; \
+        MY(countabsolute) = 1; \
+        MY(sizeincrease) = -80; \
+        MY(size_min) = 150; \
+        MY(size_max) = 150; \
+        MY(tex_min) = 65; \
+        MY(tex_max) = 65; \
+        MY(type) = "smoke"; \
+    } \
+    /**/
+
+cap(red,    "0xFF0000", "0x970000")
+cap(blue,   "0x0000FF", "0x000097")
+cap(yellow, "0xFFFF0F", "0xFFFF0F")
+cap(pink,   "0xFF0FFF", "0xFF0FFF")
+#undef cap
diff --git a/qcsrc/common/effects/effectinfo_gentle.inc b/qcsrc/common/effects/effectinfo_gentle.inc
new file mode 100644 (file)
index 0000000..aef1664
--- /dev/null
@@ -0,0 +1,121 @@
+// cl_gentle impact effect indicating damage
+// NOTE: maintained by div0, make your own new effect instead of changing this one without asking!
+DEF(damage_hit);
+SUB(damage_hit) {
+    MY(airfriction) = 5;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 128;
+    MY(alpha_fade) = 192;
+    MY(bounce) = 1.500000;
+    MY(color_min) = "0x00FFFF";
+    MY(color_max) = "0xFF00FF";
+    MY(count) = 0.500000;
+    MY(gravity) = -0.400000;
+    MY(liquidfriction) = 10;
+    MY(sizeincrease) = -24;
+    MY(size_min) = 16;
+    MY(size_max) = 16;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "alphastatic";
+    MY(velocityjitter) = '256.0 256.0 256.0';
+}
+SUB(damage_hit) {
+    MY(airfriction) = 5;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 128;
+    MY(alpha_fade) = 192;
+    MY(bounce) = 1.500000;
+    MY(color_min) = "0xFF00FF";
+    MY(color_max) = "0xFFFF00";
+    MY(count) = 0.500000;
+    MY(gravity) = -0.400000;
+    MY(liquidfriction) = 10;
+    MY(sizeincrease) = -24;
+    MY(size_min) = 16;
+    MY(size_max) = 16;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "alphastatic";
+    MY(velocityjitter) = '256.0 256.0 256.0';
+}
+SUB(damage_hit) {
+    MY(airfriction) = 5;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 128;
+    MY(alpha_fade) = 192;
+    MY(bounce) = 1.500000;
+    MY(color_min) = "0xFFFF00";
+    MY(color_max) = "0x00FFFF";
+    MY(count) = 0.500000;
+    MY(gravity) = -0.400000;
+    MY(liquidfriction) = 10;
+    MY(sizeincrease) = -24;
+    MY(size_min) = 16;
+    MY(size_max) = 16;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "alphastatic";
+    MY(velocityjitter) = '256.0 256.0 256.0';
+}
+
+// effect for removing player model
+DEF(damage_dissolve);
+// large sparks
+SUB(damage_dissolve) {
+    MY(airfriction) = 3;
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 128;
+    MY(bounce) = 1.500000;
+    MY(color_min) = "0x00FFFF";
+    MY(color_max) = "0xFF00FF";
+    MY(count) = 15;
+    MY(gravity) = -0.400000;
+    MY(liquidfriction) = 6;
+    MY(sizeincrease) = -16;
+    MY(size_min) = 32;
+    MY(size_max) = 32;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "alphastatic";
+    MY(velocityjitter) = '512.0 512.0 512.0';
+}
+SUB(damage_dissolve) {
+    MY(airfriction) = 3;
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 128;
+    MY(bounce) = 1.500000;
+    MY(color_min) = "0xFF00FF";
+    MY(color_max) = "0xFFFF00";
+    MY(count) = 15;
+    MY(gravity) = -0.400000;
+    MY(liquidfriction) = 6;
+    MY(sizeincrease) = -16;
+    MY(size_min) = 32;
+    MY(size_max) = 32;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "alphastatic";
+    MY(velocityjitter) = '512.0 512.0 512.0';
+}
+SUB(damage_dissolve) {
+    MY(airfriction) = 3;
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 128;
+    MY(bounce) = 1.500000;
+    MY(color_min) = "0xFFFF00";
+    MY(color_max) = "0x00FFFF";
+    MY(count) = 15;
+    MY(gravity) = -0.400000;
+    MY(liquidfriction) = 6;
+    MY(sizeincrease) = -16;
+    MY(size_min) = 32;
+    MY(size_max) = 32;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "alphastatic";
+    MY(velocityjitter) = '512.0 512.0 512.0';
+}
diff --git a/qcsrc/common/effects/effectinfo_gentle_happy.inc b/qcsrc/common/effects/effectinfo_gentle_happy.inc
new file mode 100644 (file)
index 0000000..4afbe00
--- /dev/null
@@ -0,0 +1,119 @@
+// happy death fx for cl_gentle
+DEF(happy_damage_dissolve);
+SUB(happy_damage_dissolve) {
+    MY(airfriction) = 3;
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 228;
+    MY(bounce) = 1.500000;
+    MY(color_min) = "0x00FFFF";
+    MY(color_max) = "0xFF00FF";
+    MY(count) = 15;
+    MY(gravity) = -0.400000;
+    MY(liquidfriction) = 6;
+    MY(sizeincrease) = -10;
+    MY(size_min) = 32;
+    MY(size_max) = 32;
+    MY(tex_min) = 69;
+    MY(tex_max) = 69;
+    MY(type) = "alphastatic";
+    MY(velocityjitter) = '312.0 312.0 312.0';
+}
+SUB(happy_damage_dissolve) {
+    MY(airfriction) = 3;
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 228;
+    MY(bounce) = 1.500000;
+    MY(color_min) = "0xFF00FF";
+    MY(color_max) = "0xFFFF00";
+    MY(count) = 15;
+    MY(gravity) = -0.400000;
+    MY(liquidfriction) = 6;
+    MY(sizeincrease) = -10;
+    MY(size_min) = 32;
+    MY(size_max) = 32;
+    MY(tex_min) = 69;
+    MY(tex_max) = 69;
+    MY(type) = "alphastatic";
+    MY(velocityjitter) = '312.0 312.0 312.0';
+}
+SUB(happy_damage_dissolve) {
+    MY(airfriction) = 3;
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 228;
+    MY(bounce) = 1.500000;
+    MY(color_min) = "0xFFFF00";
+    MY(color_max) = "0x00FFFF";
+    MY(count) = 15;
+    MY(gravity) = -0.400000;
+    MY(liquidfriction) = 6;
+    MY(sizeincrease) = -10;
+    MY(size_min) = 32;
+    MY(size_max) = 32;
+    MY(tex_min) = 69;
+    MY(tex_max) = 69;
+    MY(type) = "alphastatic";
+    MY(velocityjitter) = '312.0 312.0 312.0';
+}
+
+// happy damage fx for cl_gentle
+DEF(happy_damage_hit);
+SUB(happy_damage_hit) {
+    MY(airfriction) = 5;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 128;
+    MY(alpha_fade) = 192;
+    MY(bounce) = 1.500000;
+    MY(color_min) = "0x00FFFF";
+    MY(color_max) = "0xFF00FF";
+    MY(count) = 0.100000;
+    MY(gravity) = -0.400000;
+    MY(liquidfriction) = 10;
+    MY(sizeincrease) = -28;
+    MY(size_min) = 26;
+    MY(size_max) = 26;
+    MY(tex_min) = 69;
+    MY(tex_max) = 69;
+    MY(type) = "alphastatic";
+    MY(velocityjitter) = '156.0 156.0 156.0';
+}
+SUB(happy_damage_hit) {
+    MY(airfriction) = 5;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 128;
+    MY(alpha_fade) = 192;
+    MY(bounce) = 1.500000;
+    MY(color_min) = "0xFF00FF";
+    MY(color_max) = "0xFFFF00";
+    MY(count) = 0.100000;
+    MY(gravity) = -0.400000;
+    MY(liquidfriction) = 10;
+    MY(sizeincrease) = -28;
+    MY(size_min) = 26;
+    MY(size_max) = 26;
+    MY(tex_min) = 69;
+    MY(tex_max) = 69;
+    MY(type) = "alphastatic";
+    MY(velocityjitter) = '156.0 156.0 156.0';
+}
+SUB(happy_damage_hit) {
+    MY(airfriction) = 5;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 128;
+    MY(alpha_fade) = 192;
+    MY(bounce) = 1.500000;
+    MY(color_min) = "0xFFFF00";
+    MY(color_max) = "0x00FFFF";
+    MY(count) = 0.100000;
+    MY(gravity) = -0.400000;
+    MY(liquidfriction) = 10;
+    MY(sizeincrease) = -28;
+    MY(size_min) = 26;
+    MY(size_max) = 26;
+    MY(tex_min) = 69;
+    MY(tex_max) = 69;
+    MY(type) = "alphastatic";
+    MY(velocityjitter) = '156.0 156.0 156.0';
+}
diff --git a/qcsrc/common/effects/effectinfo_gentle_morphed.inc b/qcsrc/common/effects/effectinfo_gentle_morphed.inc
new file mode 100644 (file)
index 0000000..c334912
--- /dev/null
@@ -0,0 +1,121 @@
+// cl_gentle impact effect indicating damage
+DEF(morphed_damage_hit);
+SUB(morphed_damage_hit) {
+    MY(airfriction) = 5;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 128;
+    MY(alpha_fade) = 292;
+    MY(color_min) = "0xffffff";
+    MY(color_max) = "0x9271fb";
+    MY(count) = 0.500000;
+    MY(gravity) = -0.400000;
+    MY(liquidfriction) = 10;
+    MY(sizeincrease) = -24;
+    MY(size_min) = 14;
+    MY(size_max) = 24;
+    MY(tex_min) = 43;
+    MY(tex_max) = 43;
+    MY(type) = "spark";
+    MY(velocityjitter) = '356.0 356.0 456.0';
+}
+SUB(morphed_damage_hit) {
+    MY(airfriction) = 5;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 128;
+    MY(alpha_fade) = 292;
+    MY(color_min) = "0xffffff";
+    MY(color_max) = "0x9271fb";
+    MY(count) = 0.500000;
+    MY(liquidfriction) = 10;
+    MY(originjitter) = '10.0 10.0 10.0';
+    MY(sizeincrease) = -24;
+    MY(size_min) = 24;
+    MY(size_max) = 24;
+    MY(tex_max) = 8;
+    MY(type) = "smoke";
+}
+
+// effect for removing player model
+DEF(morphed_damage_dissolve);
+SUB(morphed_damage_dissolve) {
+    MY(airfriction) = 8;
+    MY(alpha_min) = 456;
+    MY(alpha_max) = 456;
+    MY(alpha_fade) = 1828;
+    MY(color_min) = "0xffffff";
+    MY(color_max) = "0x9271fb";
+    MY(count) = 10;
+    MY(gravity) = -1.900000;
+    MY(liquidfriction) = 6;
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(spin_min) = -399;
+    MY(spin_max) = -99;
+    MY(sizeincrease) = -16;
+    MY(size_min) = 40;
+    MY(size_max) = 40;
+    MY(tex_min) = 43;
+    MY(tex_max) = 43;
+    MY(type) = "smoke";
+    MY(velocityjitter) = '256.0 256.0 512.0';
+}
+SUB(morphed_damage_dissolve) {
+    MY(airfriction) = 9;
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 628;
+    MY(color_min) = "0x7bdbff";
+    MY(color_max) = "0xbed2ff";
+    MY(count) = 2.500000;
+    MY(gravity) = -0.800000;
+    MY(liquidfriction) = 6;
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(sizeincrease) = -16;
+    MY(size_min) = 40;
+    MY(size_max) = 40;
+    MY(tex_min) = 43;
+    MY(tex_max) = 43;
+    MY(type) = "smoke";
+    MY(velocityjitter) = '256.0 256.0 512.0';
+}
+SUB(morphed_damage_dissolve) {
+    MY(airfriction) = 3;
+    MY(alpha_min) = 156;
+    MY(alpha_max) = 156;
+    MY(alpha_fade) = 128;
+    MY(color_min) = "0xffffff";
+    MY(color_max) = "0x9271fb";
+    MY(count) = 5;
+    MY(liquidfriction) = 6;
+    MY(originjitter) = '22.0 22.0 76.0';
+    MY(sizeincrease) = -16;
+    MY(size_min) = 44;
+    MY(size_max) = 44;
+    MY(tex_min) = 65;
+    MY(tex_max) = 65;
+    MY(type) = "smoke";
+}
+SUB(morphed_damage_dissolve) {
+    MY(airfriction) = 3;
+    MY(alpha_min) = 56;
+    MY(alpha_max) = 56;
+    MY(alpha_fade) = 128;
+    MY(bounce) = 1.500000;
+    MY(color_min) = "0xffffff";
+    MY(color_max) = "0x9271fb";
+    MY(count) = 15;
+    MY(gravity) = 1;
+    MY(liquidfriction) = 6;
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(spin_min) = 999;
+    MY(spin_max) = -999;
+    MY(sizeincrease) = -16;
+    MY(size_min) = 32;
+    MY(size_max) = 32;
+    MY(tex_min) = 46;
+    MY(tex_max) = 46;
+    MY(type) = "smoke";
+    MY(velocityjitter) = '400.0 400.0 0.0';
+}
diff --git a/qcsrc/common/effects/effectinfo_gentle_particlegibs.inc b/qcsrc/common/effects/effectinfo_gentle_particlegibs.inc
new file mode 100644 (file)
index 0000000..f01c175
--- /dev/null
@@ -0,0 +1,199 @@
+// cl_gentle impact effect indicating damage
+DEF(particlegibs_damage_hit);
+// core decal
+SUB(particlegibs_damage_hit) {
+    MY(airfriction) = 3;
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 428;
+    MY(bounce) = -1;
+    MY(color_min) = "0xA8FFFF";
+    MY(color_max) = "0xA8FFFFF";
+    MY(count) = 0.500000;
+    MY(gravity) = 1;
+    MY(liquidfriction) = 6;
+    MY(size_min) = 5;
+    MY(size_max) = 10;
+    MY(staincolor_min) = "0x808080";
+    MY(staincolor_max) = "0x808080";
+    MY(staintex_min) = 16;
+    MY(staintex_max) = 24;
+    MY(tex_max) = 8;
+    MY(type) = "blood";
+    MY(velocityjitter) = '156.0 156.0 212.0';
+}
+// front blood
+SUB(particlegibs_damage_hit) {
+    MY(airfriction) = 1;
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 328;
+    MY(bounce) = -1;
+    MY(color_min) = "0xA8FFFF";
+    MY(color_max) = "0xA8FFFFF";
+    MY(count) = 0.100000;
+    MY(gravity) = 0.500000;
+    MY(liquidfriction) = 3;
+    MY(sizeincrease) = -15;
+    MY(size_min) = 10;
+    MY(size_max) = 20;
+    MY(staincolor_min) = "0x808080";
+    MY(staincolor_max) = "0x808080";
+    MY(staintex_min) = 16;
+    MY(staintex_max) = 24;
+    MY(tex_min) = 24;
+    MY(tex_max) = 32;
+    MY(type) = "blood";
+    MY(velocityjitter) = '6.0 6.0 30.0';
+    MY(velocitymultiplier) = -1;
+}
+// back blood
+SUB(particlegibs_damage_hit) {
+    MY(airfriction) = 1;
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 328;
+    MY(bounce) = -1;
+    MY(color_min) = "0xA8FFFF";
+    MY(color_max) = "0xA8FFFFF";
+    MY(count) = 0.100000;
+    MY(gravity) = 1;
+    MY(liquidfriction) = 3;
+    MY(originjitter) = '3.0 3.0 3.0';
+    MY(sizeincrease) = 10;
+    MY(size_min) = 5;
+    MY(size_max) = 15;
+    MY(staincolor_min) = "0x808080";
+    MY(staincolor_max) = "0x808080";
+    MY(staintex_min) = 16;
+    MY(staintex_max) = 24;
+    MY(tex_min) = 24;
+    MY(tex_max) = 32;
+    MY(type) = "blood";
+    MY(velocityjitter) = '26.0 26.0 112.0';
+    MY(velocitymultiplier) = 2;
+}
+
+// effect for removing player model
+DEF(particlegibs_damage_dissolve);
+// small core blood no decals
+SUB(particlegibs_damage_dissolve) {
+    MY(airfriction) = 3;
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 328;
+    MY(color_min) = "0x00ffff";
+    MY(color_max) = "0x82ffff";
+    MY(count) = 32;
+    MY(gravity) = 1;
+    MY(liquidfriction) = 6;
+    MY(originjitter) = '10.0 10.0 25.0';
+    MY(size_min) = 15;
+    MY(size_max) = 20;
+    MY(staincolor_min) = "0x808080";
+    MY(staincolor_max) = "0x808080";
+    MY(staintex_min) = 16;
+    MY(staintex_max) = 24;
+    MY(tex_max) = 8;
+    MY(type) = "blood";
+    MY(velocityjitter) = '256.0 256.0 312.0';
+}
+// core decal
+SUB(particlegibs_damage_dissolve) {
+    MY(airfriction) = 2;
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 528;
+    MY(bounce) = -1;
+    MY(color_min) = "0xA8FFFF";
+    MY(color_max) = "0xA8FFFFF";
+    MY(count) = 12;
+    MY(gravity) = 2;
+    MY(liquidfriction) = 6;
+    MY(originjitter) = '10.0 10.0 25.0';
+    MY(size_min) = 20;
+    MY(size_max) = 40;
+    MY(staincolor_min) = "0x808080";
+    MY(staincolor_max) = "0x808080";
+    MY(staintex_min) = 16;
+    MY(staintex_max) = 24;
+    MY(tex_max) = 8;
+    MY(type) = "blood";
+    MY(velocityjitter) = '356.0 356.0 412.0';
+}
+// front blood
+SUB(particlegibs_damage_dissolve) {
+    MY(airfriction) = 1;
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 328;
+    MY(bounce) = -1;
+    MY(color_min) = "0xA8FFFF";
+    MY(color_max) = "0xA8FFFFF";
+    MY(count) = 32;
+    MY(gravity) = 0.500000;
+    MY(liquidfriction) = 3;
+    MY(originjitter) = '5.0 5.0 10.0';
+    MY(sizeincrease) = -15;
+    MY(size_min) = 10;
+    MY(size_max) = 20;
+    MY(staincolor_min) = "0x808080";
+    MY(staincolor_max) = "0x808080";
+    MY(staintex_min) = 16;
+    MY(staintex_max) = 24;
+    MY(tex_min) = 24;
+    MY(tex_max) = 32;
+    MY(type) = "blood";
+    MY(velocityjitter) = '56.0 56.0 212.0';
+    MY(velocitymultiplier) = -0.300000;
+}
+// back blood
+SUB(particlegibs_damage_dissolve) {
+    MY(airfriction) = 1;
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 328;
+    MY(bounce) = -1;
+    MY(color_min) = "0xA8FFFF";
+    MY(color_max) = "0xA8FFFFF";
+    MY(count) = 32;
+    MY(gravity) = 1;
+    MY(liquidfriction) = 3;
+    MY(originjitter) = '5.0 5.0 10.0';
+    MY(sizeincrease) = 10;
+    MY(size_min) = 5;
+    MY(size_max) = 15;
+    MY(staincolor_min) = "0x808080";
+    MY(staincolor_max) = "0x808080";
+    MY(staintex_min) = 16;
+    MY(staintex_max) = 24;
+    MY(tex_min) = 24;
+    MY(tex_max) = 32;
+    MY(type) = "blood";
+    MY(velocityjitter) = '56.0 56.0 212.0';
+    MY(velocitymultiplier) = 0.500000;
+}
+// small bits
+SUB(particlegibs_damage_dissolve) {
+    MY(airfriction) = 1.500000;
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 328;
+    MY(color_min) = "0xA8FFFF";
+    MY(color_max) = "0xA8FFFFF";
+    MY(count) = 75;
+    MY(gravity) = 1;
+    MY(liquidfriction) = 3;
+    MY(originjitter) = '10.0 10.0 25.0';
+    MY(sizeincrease) = 10;
+    MY(size_min) = 1;
+    MY(size_max) = 1;
+    MY(staincolor_min) = "0x808080";
+    MY(staincolor_max) = "0x808080";
+    MY(staintex_min) = 16;
+    MY(staintex_max) = 24;
+    MY(tex_min) = 24;
+    MY(tex_max) = 32;
+    MY(type) = "blood";
+    MY(velocityjitter) = '656.0 656.0 912.0';
+}
diff --git a/qcsrc/common/effects/effectinfo_instagib.inc b/qcsrc/common/effects/effectinfo_instagib.inc
new file mode 100644 (file)
index 0000000..044f252
--- /dev/null
@@ -0,0 +1,46 @@
+#define rocketminsta_laser(name, color) \
+    DEF(rocketminsta_laser_##name); \
+    SUB(rocketminsta_laser_##name) { \
+        MY(alpha_min) = 256; \
+        MY(alpha_max) = 256; \
+        MY(alpha_fade) = 968; \
+        MY(color_min) = color; \
+        MY(color_max) = color; \
+        MY(lightcolor) = '1.5 3.0 6.0'; \
+        MY(lightradius) = 90; \
+        MY(size_min) = 3; \
+        MY(size_max) = 3; \
+        MY(tex_min) = 38; \
+        MY(tex_max) = 38; \
+        MY(trailspacing) = 2; \
+        MY(type) = "static"; \
+        MY(velocitymultiplier) = -0.100000; \
+    } \
+    SUB(rocketminsta_laser_##name) /* bright sparks */ { \
+        MY(airfriction) = 12; \
+        MY(alpha_min) = 444; \
+        MY(alpha_max) = 512; \
+        MY(alpha_fade) = 1866; \
+        MY(bounce) = 1; \
+        MY(color_min) = color; \
+        MY(color_max) = color; \
+        MY(count) = 1.500000; \
+        MY(originjitter) = '1.0 1.0 1.0'; \
+        MY(sizeincrease) = -20; \
+        MY(size_min) = 2; \
+        MY(size_max) = 4; \
+        MY(tex_min) = 42; \
+        MY(tex_max) = 42; \
+        MY(trailspacing) = 12; \
+        MY(type) = "snow"; \
+        MY(velocityjitter) = '50.0 50.0 50.0'; \
+        MY(velocityoffset) = '0.0 0.0 15.0'; \
+    } \
+    /**/
+
+rocketminsta_laser(red,     "0xFF0F0F")
+rocketminsta_laser(blue,    "0x0F0FFF")
+rocketminsta_laser(yellow,  "0xFFFF0F")
+rocketminsta_laser(pink,    "0xFF0FFF")
+rocketminsta_laser(neutral, "0xFFFFFF")
+#undef rocketminsta_laser
diff --git a/qcsrc/common/effects/effectinfo_nades.inc b/qcsrc/common/effects/effectinfo_nades.inc
new file mode 100644 (file)
index 0000000..9c65557
--- /dev/null
@@ -0,0 +1,316 @@
+#define nade(name, colormin1, colormax1, colormin2, colormax2) \
+    DEF(nade_##name); \
+    SUB(nade_##name) { \
+        MY(alpha_min) = 100; \
+        MY(alpha_max) = 100; \
+        MY(alpha_fade) = 250; \
+        MY(color_min) = colormin1; \
+        MY(color_max) = colormax1; \
+        MY(sizeincrease) = -1; \
+        MY(size_min) = 3; \
+        MY(size_max) = 3; \
+        MY(tex_min) = 65; \
+        MY(tex_max) = 65; \
+        MY(trailspacing) = 1; \
+        MY(type) = "smoke"; \
+    } \
+    SUB(nade_##name) /* fire */ { \
+        MY(alpha_min) = 30; \
+        MY(alpha_max) = 30; \
+        MY(alpha_fade) = 150; \
+        MY(color_min) = colormin2; \
+        MY(color_max) = colormax2; \
+        MY(notunderwater) = true; \
+        MY(sizeincrease) = -10; \
+        MY(size_min) = 15; \
+        MY(size_max) = 25; \
+        MY(tex_min) = 65; \
+        MY(tex_max) = 65; \
+        MY(trailspacing) = 8; \
+        MY(type) = "smoke"; \
+    } \
+    SUB(nade_##name) /* bubbles */ { \
+        MY(alpha_min) = 256; \
+        MY(alpha_max) = 256; \
+        MY(alpha_fade) = 256; \
+        MY(bounce) = 1.500000; \
+        MY(color_min) = colormin1; \
+        MY(color_max) = colormax1; \
+        MY(gravity) = -0.125000; \
+        MY(liquidfriction) = 4; \
+        MY(size_min) = 1; \
+        MY(size_max) = 1; \
+        MY(tex_min) = 62; \
+        MY(tex_max) = 62; \
+        MY(trailspacing) = 16; \
+        MY(type) = "bubble"; \
+        MY(underwater) = true; \
+        MY(velocityjitter) = '16.0 16.0 16.0'; \
+    } \
+    /**/
+
+nade(blue,      "0x006cff", "0x0600ff", "0x0600ff", "0x9794ff")
+nade(red,       "0xff0000", "0xff3c00", "0xff0000", "0xffa2a2")
+nade(yellow,    "0xFFFF0F", "0xFFFF0F", "0xFFFF0F", "0xFFFF0F")
+nade(pink,      "0xFF0FFF", "0xFF0FFF", "0xFF0FFF", "0xFF0FFF")
+nade(neutral,   "0xFFFFFF", "0xFFFFFF", "0xFFFFFF", "0xFFFFFF")
+#undef nade
+
+#define nade_burn(name, colormin1, colormax1, colormin2, colormax2) \
+    DEF(nade_##name##_burn); \
+    SUB(nade_##name##_burn) { \
+        MY(alpha_min) = 100; \
+        MY(alpha_max) = 100; \
+        MY(alpha_fade) = 250; \
+        MY(color_min) = colormin1; \
+        MY(color_max) = colormax1; \
+        MY(sizeincrease) = -1; \
+        MY(size_min) = 5; \
+        MY(size_max) = 5; \
+        MY(tex_min) = 65; \
+        MY(tex_max) = 65; \
+        MY(trailspacing) = 1; \
+        MY(type) = "smoke"; \
+    } \
+    SUB(nade_##name##_burn) /* fire */ { \
+        MY(alpha_min) = 200; \
+        MY(alpha_max) = 200; \
+        MY(alpha_fade) = 1000; \
+        MY(color_min) = colormin2; \
+        MY(color_max) = colormax2; \
+        MY(notunderwater) = true; \
+        MY(sizeincrease) = -30; \
+        MY(size_min) = 45; \
+        MY(size_max) = 25; \
+        MY(tex_min) = 65; \
+        MY(tex_max) = 65; \
+        MY(trailspacing) = 64; \
+        MY(type) = "smoke"; \
+    } \
+    SUB(nade_##name##_burn) /* bubbles */ { \
+        MY(alpha_min) = 256; \
+        MY(alpha_max) = 256; \
+        MY(alpha_fade) = 256; \
+        MY(bounce) = 1.500000; \
+        MY(color_min) = colormin1; \
+        MY(color_max) = colormax1; \
+        MY(gravity) = -0.125000; \
+        MY(liquidfriction) = 4; \
+        MY(size_min) = 1; \
+        MY(size_max) = 1; \
+        MY(tex_min) = 62; \
+        MY(tex_max) = 62; \
+        MY(trailspacing) = 16; \
+        MY(type) = "bubble"; \
+        MY(underwater) = true; \
+        MY(velocityjitter) = '16.0 16.0 16.0'; \
+    } \
+    SUB(nade_##name##_burn) { \
+        MY(alpha_min) = 300; \
+        MY(alpha_max) = 900; \
+        MY(alpha_fade) = 1500; \
+        MY(color_min) = colormin1; \
+        MY(color_max) = colormax1; \
+        MY(originjitter) = '2.0 2.0 2.0'; \
+        MY(startangle_min) = -180; \
+        MY(startangle_max) = 180; \
+        MY(spin_min) = 20; \
+        MY(spin_max) = -20; \
+        MY(sizeincrease) = -40; \
+        MY(size_min) = 15; \
+        MY(size_max) = 25; \
+        MY(tex_min) = 71; \
+        MY(tex_max) = 73; \
+        MY(trailspacing) = 16; \
+        MY(type) = "smoke"; \
+        MY(velocityjitter) = '10.0 10.0 10.0'; \
+    } \
+    /**/
+
+nade_burn(red,      "0xff0000", "0xff3c00", "0xff0000", "0xffa2a2")
+nade_burn(blue,     "0x006cff", "0x0600ff", "0x0600ff", "0x9794ff")
+nade_burn(yellow,   "0xFFFF0F", "0xFFFF0F", "0xFFFF0F", "0xFFFF0F")
+nade_burn(pink,     "0xFF0FFF", "0xFF0FFF", "0xFF0FFF", "0xFF0FFF")
+nade_burn(neutral,  "0xFFFFFF", "0xFFFFFF", "0xFFFFFF", "0xFFFFFF")
+#undef nade_burn
+
+#define nade_explode(name, colorlight, colormin1, colormax1, colormin2, colormax2, colormin3, colormax3) \
+    DEF(nade_##name##_explode); \
+    SUB(nade_##name##_explode) { \
+        MY(alpha_min) = 256; \
+        MY(alpha_max) = 256; \
+        MY(countabsolute) = 1; \
+        MY(lightcolor) = colorlight; \
+        MY(lightradiusfade) = 1500; \
+        MY(lightradius) = 300; \
+        MY(originjitter) = '26.0 26.0 26.0'; \
+        MY(size_min) = 88; \
+        MY(size_max) = 88; \
+        MY(tex_min) = 8; \
+        MY(tex_max) = 16; \
+        MY(type) = "decal"; \
+    } \
+    SUB(nade_##name##_explode) /* shockwave */ { \
+        MY(alpha_min) = 80; \
+        MY(alpha_max) = 80; \
+        MY(alpha_fade) = 650; \
+        MY(color_min) = colormin1; \
+        MY(color_max) = colormax1; \
+        MY(countabsolute) = 1; \
+        MY(sizeincrease) = 1800; \
+        MY(size_min) = 32; \
+        MY(size_max) = 32; \
+        MY(tex_min) = 33; \
+        MY(tex_max) = 33; \
+        MY(type) = "smoke"; \
+        MY(velocitymultiplier) = 44; \
+    } \
+    SUB(nade_##name##_explode) /* fire */ { \
+        MY(airfriction) = 30; \
+        MY(alpha_min) = 400; \
+        MY(alpha_max) = 656; \
+        MY(alpha_fade) = 2000; \
+        MY(color_min) = colormin2; \
+        MY(color_max) = colormax2; \
+        MY(count) = 16; \
+        MY(notunderwater) = true; \
+        MY(originjitter) = '50.0 50.0 50.0'; \
+        MY(startangle_min) = -180; \
+        MY(startangle_max) = 180; \
+        MY(spin_min) = -9; \
+        MY(spin_max) = 9; \
+        MY(sizeincrease) = 555; \
+        MY(size_min) = 20; \
+        MY(size_max) = 24; \
+        MY(tex_min) = 48; \
+        MY(tex_max) = 55; \
+        MY(type) = "smoke"; \
+        MY(velocityjitter) = '320.0 320.0 320.0'; \
+    } \
+    SUB(nade_##name##_explode) /* fire stretched */ { \
+        MY(airfriction) = -9; \
+        MY(alpha_min) = 1500; \
+        MY(alpha_max) = 3000; \
+        MY(alpha_fade) = 13000; \
+        MY(color_min) = colormin2; \
+        MY(color_max) = colormax2; \
+        MY(count) = 8; \
+        MY(sizeincrease) = 40; \
+        MY(size_min) = 60; \
+        MY(size_max) = 90; \
+        MY(stretchfactor) = 80; \
+        MY(tex_min) = 48; \
+        MY(tex_max) = 55; \
+        MY(type) = "spark"; \
+        MY(velocityjitter) = '30.0 30.0 30.0'; \
+    } \
+    SUB(nade_##name##_explode) /* smoke */ { \
+        MY(airfriction) = 0.040000; \
+        MY(alpha_min) = 128; \
+        MY(alpha_max) = 328; \
+        MY(alpha_fade) = 390; \
+        MY(blend) = "alpha"; \
+        MY(color_min) = "0x222222"; \
+        MY(color_max) = "0x000000"; \
+        MY(count) = 32; \
+        MY(gravity) = 0.400000; \
+        MY(originjitter) = '50.0 50.0 10.0'; \
+        MY(startangle_min) = -180; \
+        MY(startangle_max) = 180; \
+        MY(spin_min) = 2; \
+        MY(spin_max) = -2; \
+        MY(sizeincrease) = 50; \
+        MY(size_min) = 60; \
+        MY(size_max) = 30; \
+        MY(tex_max) = 7; \
+        MY(type) = "smoke"; \
+        MY(velocityjitter) = '200.0 200.0 200.0'; \
+        MY(velocityoffset) = '0.0 0.0 180.0'; \
+    } \
+    SUB(nade_##name##_explode) /* underwater bubbles */ { \
+        MY(alpha_min) = 128; \
+        MY(alpha_max) = 256; \
+        MY(alpha_fade) = 64; \
+        MY(bounce) = 1.500000; \
+        MY(color_min) = "0x404040"; \
+        MY(color_max) = "0x808080"; \
+        MY(count) = 32; \
+        MY(gravity) = -0.125000; \
+        MY(liquidfriction) = 0.250000; \
+        MY(originjitter) = '16.0 16.0 16.0'; \
+        MY(size_min) = 3; \
+        MY(size_max) = 6; \
+        MY(tex_min) = 62; \
+        MY(tex_max) = 62; \
+        MY(type) = "bubble"; \
+        MY(underwater) = true; \
+        MY(velocityjitter) = '196.0 196.0 196.0'; \
+    } \
+    SUB(nade_##name##_explode) /* bouncing sparks */ { \
+        MY(airfriction) = 1; \
+        MY(alpha_min) = 644; \
+        MY(alpha_max) = 956; \
+        MY(alpha_fade) = 484; \
+        MY(bounce) = 1.600000; \
+        MY(color_min) = colormin3; \
+        MY(color_max) = colormax3; \
+        MY(count) = 8; \
+        MY(gravity) = 1; \
+        MY(liquidfriction) = 0.800000; \
+        MY(notunderwater) = true; \
+        MY(originjitter) = '16.0 16.0 16.0'; \
+        MY(size_min) = 1; \
+        MY(size_max) = 2; \
+        MY(tex_min) = 40; \
+        MY(tex_max) = 40; \
+        MY(type) = "spark"; \
+        MY(velocityjitter) = '424.0 424.0 624.0'; \
+        MY(velocityoffset) = '0.0 0.0 80.0'; \
+    } \
+    SUB(nade_##name##_explode) /* notbouncing sparks */ { \
+        MY(airfriction) = 0.700000; \
+        MY(alpha_min) = 644; \
+        MY(alpha_max) = 956; \
+        MY(alpha_fade) = 684; \
+        MY(color_min) = colormin3; \
+        MY(color_max) = colormax3; \
+        MY(count) = 16; \
+        MY(gravity) = 0.500000; \
+        MY(liquidfriction) = 0.800000; \
+        MY(originjitter) = '16.0 16.0 16.0'; \
+        MY(size_min) = 1; \
+        MY(size_max) = 2; \
+        MY(tex_min) = 40; \
+        MY(tex_max) = 40; \
+        MY(type) = "spark"; \
+        MY(velocityjitter) = '424.0 424.0 624.0'; \
+        MY(velocityoffset) = '0.0 0.0 80.0'; \
+    } \
+    SUB(nade_##name##_explode) /* debris */ { \
+        MY(alpha_min) = 644; \
+        MY(alpha_max) = 956; \
+        MY(alpha_fade) = 2500; \
+        MY(color_min) = colormin3; \
+        MY(color_max) = colormax3; \
+        MY(count) = 8; \
+        MY(notunderwater) = true; \
+        MY(originjitter) = '64.0 64.0 64.0'; \
+        MY(startangle_min) = -180; \
+        MY(startangle_max) = 180; \
+        MY(spin_min) = -100; \
+        MY(spin_max) = 100; \
+        MY(size_min) = 20; \
+        MY(size_max) = 40; \
+        MY(tex_min) = 71; \
+        MY(tex_max) = 73; \
+        MY(type) = "smoke"; \
+        MY(velocityjitter) = '324.0 324.0 324.0'; \
+    } \
+    /**/
+
+nade_explode(blue,      '20.0 20.0 100.0', "0x80C0FF", "0x80C0FF", "0x629dff", "0x0018ff", "0x006cff", "0x0600ff")
+nade_explode(red,       '100.0 20.0 20.0', "0xff0000", "0xffa2a2", "0xff0000", "0xff4200", "0xff0000", "0xffa2a2")
+nade_explode(yellow,    '100.0 20.0 20.0', "0xff0000", "0xffa2a2", "0xFFFF0F", "0xFFFF0F", "0xff0000", "0xffa2a2")
+nade_explode(pink,      '100.0 20.0 20.0', "0xff0000", "0xffa2a2", "0xFF0FFF", "0xFF0FFF", "0xff0000", "0xffa2a2")
+nade_explode(neutral,   '100.0 20.0 20.0', "0xff0000", "0xffa2a2", "0xFFFFFF", "0xFFFFFF", "0xff0000", "0xffa2a2")
+#undef nade_explode
diff --git a/qcsrc/common/effects/effectinfo_onslaught.inc b/qcsrc/common/effects/effectinfo_onslaught.inc
new file mode 100644 (file)
index 0000000..af330c7
--- /dev/null
@@ -0,0 +1,123 @@
+DEF(onslaught_generator_gib_explode);
+// fire effect which expands then slows
+SUB(onslaught_generator_gib_explode) {
+    MY(airfriction) = 5;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 356;
+    MY(bounce) = 1.500000;
+    MY(color_min) = "0x8f0d00";
+    MY(color_max) = "0xff5a00";
+    MY(count) = 17;
+    MY(liquidfriction) = 8;
+    MY(notunderwater) = true;
+    MY(originjitter) = '8.0 8.0 8.0';
+    MY(sizeincrease) = 45;
+    MY(size_min) = 20;
+    MY(size_max) = 26;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "static";
+    MY(velocityjitter) = '286.0 286.0 286.0';
+}
+// smoke
+SUB(onslaught_generator_gib_explode) {
+    MY(airfriction) = 5;
+    MY(alpha_min) = 200;
+    MY(alpha_max) = 500;
+    MY(alpha_fade) = 600;
+    MY(bounce) = 2;
+    MY(color_min) = "0x000000";
+    MY(color_max) = "0x111111";
+    MY(count) = 6;
+    MY(gravity) = -0.300000;
+    MY(notunderwater) = true;
+    MY(sizeincrease) = 90;
+    MY(size_min) = 1;
+    MY(size_max) = 10;
+    MY(tex_max) = 8;
+    MY(type) = "alphastatic";
+    MY(velocityjitter) = '244.0 244.0 244.0';
+}
+// underwater bubbles
+SUB(onslaught_generator_gib_explode) {
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 64;
+    MY(bounce) = 1.500000;
+    MY(color_min) = "0x404040";
+    MY(color_max) = "0x808080";
+    MY(count) = 16;
+    MY(gravity) = -0.125000;
+    MY(liquidfriction) = 0.250000;
+    MY(originjitter) = '16.0 16.0 16.0';
+    MY(size_min) = 3;
+    MY(size_max) = 3;
+    MY(tex_min) = 62;
+    MY(tex_max) = 62;
+    MY(type) = "bubble";
+    MY(underwater) = true;
+    MY(velocityjitter) = '96.0 96.0 96.0';
+}
+
+DEF(onslaught_generator_gib_flame);
+// fire effect which expands then slows
+SUB(onslaught_generator_gib_flame) {
+    MY(airfriction) = 5;
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 356;
+    MY(color_min) = "0x8f0d00";
+    MY(color_max) = "0xff5a00";
+    MY(count) = 15;
+    MY(gravity) = -0.500000;
+    MY(liquidfriction) = 8;
+    MY(notunderwater) = true;
+    MY(originjitter) = '3.0 3.0 3.0';
+    MY(sizeincrease) = 25;
+    MY(size_min) = 5;
+    MY(size_max) = 10;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "static";
+    MY(velocityjitter) = '86.0 86.0 86.0';
+}
+// smoke
+SUB(onslaught_generator_gib_flame) {
+    MY(airfriction) = 5;
+    MY(alpha_min) = 200;
+    MY(alpha_max) = 500;
+    MY(alpha_fade) = 600;
+    MY(bounce) = 2;
+    MY(color_min) = "0x000000";
+    MY(color_max) = "0x111111";
+    MY(count) = 1;
+    MY(gravity) = -0.800000;
+    MY(notunderwater) = true;
+    MY(sizeincrease) = 30;
+    MY(size_min) = 10;
+    MY(size_max) = 20;
+    MY(tex_max) = 8;
+    MY(type) = "alphastatic";
+    MY(velocityjitter) = '44.0 44.0 44.0';
+}
+// underwater bubbles
+SUB(onslaught_generator_gib_flame) {
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 64;
+    MY(bounce) = 1.500000;
+    MY(color_min) = "0x404040";
+    MY(color_max) = "0x808080";
+    MY(count) = 16;
+    MY(gravity) = -0.125000;
+    MY(liquidfriction) = 0.250000;
+    MY(originjitter) = '16.0 16.0 16.0';
+    MY(size_min) = 3;
+    MY(size_max) = 3;
+    MY(tex_min) = 62;
+    MY(tex_max) = 62;
+    MY(type) = "bubble";
+    MY(underwater) = true;
+    MY(velocityjitter) = '96.0 96.0 96.0';
+}
diff --git a/qcsrc/common/effects/effectinfo_vehicles.inc b/qcsrc/common/effects/effectinfo_vehicles.inc
new file mode 100644 (file)
index 0000000..31fed7f
--- /dev/null
@@ -0,0 +1,1166 @@
+DEF(spiderbot_minigun_trail);
+SUB(spiderbot_minigun_trail) {
+    MY(airfriction) = 1;
+    MY(alpha_min) = 20;
+    MY(alpha_max) = 50;
+    MY(alpha_fade) = 100;
+    MY(color_min) = "0xd0d0a0";
+    MY(color_max) = "0xffffff";
+    MY(gravity) = -0.030000;
+    MY(notunderwater) = true;
+    MY(sizeincrease) = 2;
+    MY(size_min) = 1;
+    MY(size_max) = 2;
+    MY(tex_max) = 8;
+    MY(trailspacing) = 10;
+    MY(type) = "smoke";
+    MY(velocityjitter) = '5.0 5.0 5.0';
+}
+
+DEF(spiderbot_minigun_muzzleflash);
+SUB(spiderbot_minigun_muzzleflash) {
+    MY(airfriction) = 10;
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 512;
+    MY(alpha_fade) = 6280;
+    MY(color_min) = "0xff9c00";
+    MY(color_max) = "0xff8400";
+    MY(count) = 3;
+    MY(originjitter) = '2.0 2.0 2.0';
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(spin_min) = 4000;
+    MY(spin_max) = -4000;
+    MY(sizeincrease) = -100;
+    MY(size_min) = 10;
+    MY(size_max) = 15;
+    MY(stretchfactor) = 1.300000;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "spark";
+    MY(velocityjitter) = '150.0 150.0 150.0';
+    MY(velocitymultiplier) = 0.350000;
+}
+// fire
+SUB(spiderbot_minigun_muzzleflash) {
+    MY(airfriction) = 12;
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 512;
+    MY(alpha_fade) = 6280;
+    MY(color_min) = "0xff9c00";
+    MY(color_max) = "0xff8400";
+    MY(count) = 6;
+    MY(originjitter) = '2.0 2.0 2.0';
+    MY(sizeincrease) = -10;
+    MY(size_min) = 5;
+    MY(size_max) = 7;
+    MY(stretchfactor) = 0.800000;
+    MY(tex_min) = 8;
+    MY(tex_max) = 15;
+    MY(type) = "spark";
+    MY(velocityjitter) = '200.0 200.0 200.0';
+    MY(velocitymultiplier) = 0.200000;
+}
+SUB(spiderbot_minigun_muzzleflash) {
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 512;
+    MY(alpha_fade) = 6680;
+    MY(color_min) = "0xff9c00";
+    MY(color_max) = "0xff8400";
+    MY(countabsolute) = 2;
+    MY(lightcolor) = '3.0 3.0 0.0';
+    MY(lightradiusfade) = 8000;
+    MY(lightradius) = 120;
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(spin_min) = 4000;
+    MY(spin_max) = -4000;
+    MY(sizeincrease) = -100;
+    MY(size_min) = 32;
+    MY(size_max) = 32;
+    MY(stretchfactor) = 0.100000;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "static";
+}
+
+DEF(spiderbot_minigun_impact);
+SUB(spiderbot_minigun_impact) {
+    MY(alpha_min) = 50;
+    MY(alpha_max) = 100;
+    MY(alpha_fade) = 1680;
+    MY(color_min) = "0xff9c00";
+    MY(color_max) = "0xf6ff00";
+    MY(countabsolute) = 1;
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(spin_min) = 4000;
+    MY(spin_max) = -4000;
+    MY(sizeincrease) = -100;
+    MY(size_min) = 52;
+    MY(size_max) = 52;
+    MY(stretchfactor) = 0.100000;
+    MY(tex_min) = 65;
+    MY(tex_max) = 65;
+    MY(type) = "static";
+}
+// fire
+SUB(spiderbot_minigun_impact) {
+    MY(airfriction) = 6;
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 512;
+    MY(alpha_fade) = 6280;
+    MY(color_min) = "0xff9c00";
+    MY(color_max) = "0xff8400";
+    MY(count) = 7;
+    MY(originjitter) = '2.0 2.0 2.0';
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(spin_min) = 4000;
+    MY(spin_max) = -4000;
+    MY(sizeincrease) = 100;
+    MY(size_min) = 9;
+    MY(size_max) = 15;
+    MY(stretchfactor) = 3;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "spark";
+    MY(velocityjitter) = '250.0 250.0 150.0';
+    MY(velocitymultiplier) = 0.200000;
+}
+// smoke
+SUB(spiderbot_minigun_impact) {
+    MY(airfriction) = 10;
+    MY(alpha_min) = 50;
+    MY(alpha_max) = 50;
+    MY(alpha_fade) = 190;
+    MY(color_min) = "0xd0d0a0";
+    MY(color_max) = "0xffffff";
+    MY(count) = 6;
+    MY(gravity) = 1.300000;
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(sizeincrease) = 80;
+    MY(size_min) = 10;
+    MY(size_max) = 20;
+    MY(tex_max) = 8;
+    MY(type) = "smoke";
+    MY(velocityjitter) = '100.0 100.0 250.0';
+    MY(velocitymultiplier) = 0.490000;
+}
+// smoke 2
+SUB(spiderbot_minigun_impact) {
+    MY(airfriction) = 6;
+    MY(alpha_min) = 25;
+    MY(alpha_max) = 51;
+    MY(alpha_fade) = 128;
+    MY(color_min) = "0xd0d0a0";
+    MY(color_max) = "0xffffff";
+    MY(count) = 7;
+    MY(originjitter) = '2.0 2.0 2.0';
+    MY(sizeincrease) = 100;
+    MY(size_min) = 15;
+    MY(size_max) = 19;
+    MY(stretchfactor) = 7.600000;
+    MY(tex_max) = 8;
+    MY(type) = "spark";
+    MY(velocityjitter) = '250.0 250.0 150.0';
+    MY(velocitymultiplier) = 0.200000;
+}
+// debris
+SUB(spiderbot_minigun_impact) {
+    MY(airfriction) = 0.400000;
+    MY(alpha_min) = 644;
+    MY(alpha_max) = 756;
+    MY(alpha_fade) = 1484;
+    MY(color_min) = "0x99977D";
+    MY(color_max) = "0xFFFFFF";
+    MY(count) = 3;
+    MY(gravity) = 1.100000;
+    MY(notunderwater) = true;
+    MY(originjitter) = '16.0 16.0 16.0';
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(spin_min) = -1000;
+    MY(spin_max) = 1000;
+    MY(sizeincrease) = -10;
+    MY(size_min) = 6;
+    MY(size_max) = 8;
+    MY(tex_min) = 66;
+    MY(tex_max) = 68;
+    MY(type) = "alphastatic";
+    MY(velocityjitter) = '124.0 124.0 224.0';
+    MY(velocitymultiplier) = 0.150000;
+}
+// decal
+SUB(spiderbot_minigun_impact) {
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 256;
+    MY(countabsolute) = 1;
+    MY(originjitter) = '16.0 16.0 16.0';
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(size_min) = 20;
+    MY(size_max) = 25;
+    MY(tex_min) = 56;
+    MY(tex_max) = 59;
+    MY(type) = "decal";
+}
+
+DEF(spiderbot_rocket_explode);
+SUB(spiderbot_rocket_explode) {
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 256;
+    MY(countabsolute) = 1;
+    MY(lightcolor) = '8.0 4.0 0.0';
+    MY(lightradiusfade) = 1750;
+    MY(lightradius) = 300;
+    MY(originjitter) = '23.0 23.0 23.0';
+    MY(size_min) = 72;
+    MY(size_max) = 72;
+    MY(tex_min) = 8;
+    MY(tex_max) = 16;
+    MY(type) = "decal";
+}
+// shockwave
+SUB(spiderbot_rocket_explode) {
+    MY(alpha_min) = 56;
+    MY(alpha_max) = 56;
+    MY(alpha_fade) = 230;
+    MY(color_min) = "0x8f0d00";
+    MY(color_max) = "0xff5a00";
+    MY(countabsolute) = 1;
+    MY(sizeincrease) = 2400;
+    MY(size_min) = 22;
+    MY(size_max) = 22;
+    MY(tex_min) = 33;
+    MY(tex_max) = 33;
+    MY(type) = "static";
+}
+// glow
+SUB(spiderbot_rocket_explode) {
+    MY(alpha_min) = 156;
+    MY(alpha_max) = 156;
+    MY(alpha_fade) = 830;
+    MY(color_min) = "0x8f0d00";
+    MY(color_max) = "0xff5a00";
+    MY(countabsolute) = 1;
+    MY(sizeincrease) = 240;
+    MY(size_min) = 120;
+    MY(size_max) = 120;
+    MY(tex_min) = 64;
+    MY(tex_max) = 64;
+    MY(type) = "static";
+}
+// fire effect
+SUB(spiderbot_rocket_explode) {
+    MY(airfriction) = 8;
+    MY(alpha_min) = 200;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 812;
+    MY(color_min) = "0x8f0d00";
+    MY(color_max) = "0xff5a00";
+    MY(count) = 32;
+    MY(liquidfriction) = 8;
+    MY(notunderwater) = true;
+    MY(originjitter) = '100.0 100.0 100.0';
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(spin_min) = -50;
+    MY(spin_max) = 50;
+    MY(sizeincrease) = 495;
+    MY(size_min) = 12;
+    MY(size_max) = 21;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "static";
+    MY(velocityjitter) = '512.0 512.0 512.0';
+}
+// fire effect 2
+SUB(spiderbot_rocket_explode) {
+    MY(airfriction) = -2;
+    MY(alpha_min) = 200;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 912;
+    MY(color_min) = "0x8f0d00";
+    MY(color_max) = "0xff5a00";
+    MY(count) = 16;
+    MY(liquidfriction) = 8;
+    MY(notunderwater) = true;
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(spin_min) = -150;
+    MY(spin_max) = 150;
+    MY(sizeincrease) = 120;
+    MY(size_min) = 3;
+    MY(size_max) = 3;
+    MY(stretchfactor) = 10;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "spark";
+    MY(velocityjitter) = '412.0 412.0 412.0';
+}
+// fire rays
+SUB(spiderbot_rocket_explode) {
+    MY(airfriction) = -3;
+    MY(alpha_min) = 200;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 1600;
+    MY(color_min) = "0x8f0d00";
+    MY(color_max) = "0xff5a00";
+    MY(count) = 10;
+    MY(liquidfriction) = 8;
+    MY(notunderwater) = true;
+    MY(originjitter) = '40.0 40.0 40.0';
+    MY(sizeincrease) = 120;
+    MY(size_min) = 13;
+    MY(size_max) = 54;
+    MY(stretchfactor) = 10;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "spark";
+    MY(velocityjitter) = '712.0 712.0 712.0';
+}
+// smoke
+SUB(spiderbot_rocket_explode) {
+    MY(airfriction) = 3;
+    MY(alpha_min) = 300;
+    MY(alpha_max) = 650;
+    MY(alpha_fade) = 756;
+    MY(color_min) = "0x4F4B46";
+    MY(color_max) = "0x000000";
+    MY(count) = 10;
+    MY(notunderwater) = true;
+    MY(originjitter) = '100.0 100.0 100.0';
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(spin_min) = -20;
+    MY(spin_max) = 20;
+    MY(sizeincrease) = 280;
+    MY(size_min) = 10;
+    MY(size_max) = 15;
+    MY(tex_max) = 8;
+    MY(type) = "alphastatic";
+    MY(velocityjitter) = '200.0 200.0 200.0';
+}
+// smoke2
+SUB(spiderbot_rocket_explode) {
+    MY(airfriction) = 2;
+    MY(alpha_min) = 300;
+    MY(alpha_max) = 650;
+    MY(alpha_fade) = 556;
+    MY(color_min) = "0x4F4B46";
+    MY(color_max) = "0x000000";
+    MY(count) = 3;
+    MY(gravity) = -0.500000;
+    MY(notunderwater) = true;
+    MY(originjitter) = '10.0 10.0 10.0';
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(spin_min) = -20;
+    MY(spin_max) = 20;
+    MY(sizeincrease) = 30;
+    MY(size_min) = 100;
+    MY(size_max) = 150;
+    MY(tex_max) = 8;
+    MY(type) = "alphastatic";
+    MY(velocityjitter) = '200.0 200.0 200.0';
+}
+// underwater bubbles
+SUB(spiderbot_rocket_explode) {
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 64;
+    MY(bounce) = 1.500000;
+    MY(color_min) = "0x404040";
+    MY(color_max) = "0x808080";
+    MY(count) = 32;
+    MY(gravity) = -0.125000;
+    MY(liquidfriction) = 0.250000;
+    MY(originjitter) = '160.0 160.0 160.0';
+    MY(size_min) = 1;
+    MY(size_max) = 3;
+    MY(tex_min) = 62;
+    MY(tex_max) = 62;
+    MY(type) = "bubble";
+    MY(underwater) = true;
+    MY(velocityjitter) = '144.0 144.0 144.0';
+}
+// underwatershockwave
+SUB(spiderbot_rocket_explode) {
+    MY(alpha_min) = 40;
+    MY(alpha_max) = 40;
+    MY(alpha_fade) = 300;
+    MY(countabsolute) = 1;
+    MY(sizeincrease) = 1200;
+    MY(size_min) = 30;
+    MY(size_max) = 30;
+    MY(tex_min) = 33;
+    MY(tex_max) = 33;
+    MY(type) = "smoke";
+    MY(underwater) = true;
+}
+
+DEF(spiderbot_rocket_thrust);
+SUB(spiderbot_rocket_thrust) {
+    MY(alpha_min) = 200;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 1600;
+    MY(color_min) = "0x8f0d00";
+    MY(color_max) = "0xff5a00";
+    MY(count) = 3;
+    MY(notunderwater) = true;
+    MY(sizeincrease) = -40;
+    MY(size_min) = 5;
+    MY(size_max) = 10;
+    MY(stretchfactor) = 0.900000;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "spark";
+    MY(velocityjitter) = '20.0 20.0 20.0';
+    MY(velocitymultiplier) = -1.400000;
+}
+SUB(spiderbot_rocket_thrust) {
+    MY(alpha_min) = 200;
+    MY(alpha_max) = 200;
+    MY(alpha_fade) = 9000;
+    MY(color_min) = "0x8f0d00";
+    MY(color_max) = "0xff5a00";
+    MY(count) = 4;
+    MY(notunderwater) = true;
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(spin_min) = -500;
+    MY(spin_max) = 500;
+    MY(sizeincrease) = -3000;
+    MY(size_min) = 25;
+    MY(size_max) = 25;
+    MY(stretchfactor) = 1;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "static";
+    MY(velocityjitter) = '60.0 60.0 60.0';
+    MY(velocitymultiplier) = -1.400000;
+}
+
+DEF(spiderbot_rocket_launch);
+// long lasting smoke
+SUB(spiderbot_rocket_launch) {
+    MY(airfriction) = 0.300000;
+    MY(alpha_min) = 100;
+    MY(alpha_max) = 156;
+    MY(alpha_fade) = 60;
+    MY(color_min) = "0xFFFFFF";
+    MY(color_max) = "0xD9C4B0";
+    MY(count) = 8;
+    MY(gravity) = -0.010000;
+    MY(notunderwater) = true;
+    MY(sizeincrease) = 20;
+    MY(size_min) = 30;
+    MY(size_max) = 30;
+    MY(tex_max) = 8;
+    MY(type) = "smoke";
+    MY(velocityjitter) = '60.0 60.0 60.0';
+    MY(velocitymultiplier) = -0.100000;
+}
+// fast smoke
+SUB(spiderbot_rocket_launch) {
+    MY(airfriction) = 0.300000;
+    MY(alpha_min) = 100;
+    MY(alpha_max) = 156;
+    MY(alpha_fade) = 260;
+    MY(color_min) = "0xFFFFFF";
+    MY(color_max) = "0xD9C4B0";
+    MY(count) = 14;
+    MY(gravity) = -0.300000;
+    MY(notunderwater) = true;
+    MY(sizeincrease) = 20;
+    MY(size_min) = 30;
+    MY(size_max) = 30;
+    MY(tex_max) = 8;
+    MY(type) = "smoke";
+    MY(velocityjitter) = '160.0 160.0 60.0';
+}
+// fire
+SUB(spiderbot_rocket_launch) {
+    MY(airfriction) = 0.300000;
+    MY(alpha_min) = 200;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 1960;
+    MY(color_min) = "0x8f0d00";
+    MY(color_max) = "0xff5a00";
+    MY(count) = 14;
+    MY(notunderwater) = true;
+    MY(sizeincrease) = 40;
+    MY(size_min) = 30;
+    MY(size_max) = 30;
+    MY(stretchfactor) = 3;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "spark";
+    MY(velocityjitter) = '60.0 60.0 60.0';
+    MY(velocitymultiplier) = 0.500000;
+}
+// sparks
+SUB(spiderbot_rocket_launch) {
+    MY(alpha_min) = 200;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 1000;
+    MY(color_min) = "0xFFFFFF";
+    MY(color_max) = "0xD9C4B0";
+    MY(count) = 10;
+    MY(notunderwater) = true;
+    MY(size_min) = 1;
+    MY(size_max) = 4;
+    MY(tex_min) = 40;
+    MY(tex_max) = 40;
+    MY(type) = "spark";
+    MY(velocityjitter) = '160.0 160.0 160.0';
+    MY(velocitymultiplier) = -0.500000;
+}
+
+DEF(wakizashi_gun_impact);
+SUB(wakizashi_gun_impact) {
+    MY(airfriction) = 4;
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 512;
+    MY(alpha_fade) = 1180;
+    MY(color_min) = "0xff0000";
+    MY(color_max) = "0xc03535";
+    MY(count) = 15;
+    MY(gravity) = 3;
+    MY(originjitter) = '40.0 40.0 10.0';
+    MY(size_min) = 4;
+    MY(size_max) = 7;
+    MY(stretchfactor) = 0.900000;
+    MY(tex_min) = 41;
+    MY(tex_max) = 41;
+    MY(type) = "spark";
+    MY(velocityjitter) = '350.0 350.0 550.0';
+    MY(velocityoffset) = '0.0 0.0 700.0';
+}
+SUB(wakizashi_gun_impact) {
+    MY(airfriction) = 4;
+    MY(alpha_min) = 50;
+    MY(alpha_max) = 90;
+    MY(alpha_fade) = 150;
+    MY(color_min) = "0xd0d0a0";
+    MY(color_max) = "0xc03535";
+    MY(count) = 24;
+    MY(originjitter) = '40.0 40.0 10.0';
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(sizeincrease) = 80;
+    MY(size_min) = 10;
+    MY(size_max) = 20;
+    MY(tex_max) = 8;
+    MY(type) = "smoke";
+    MY(velocityjitter) = '250.0 250.0 450.0';
+    MY(velocityoffset) = '0.0 0.0 600.0';
+}
+SUB(wakizashi_gun_impact) {
+    MY(alpha_min) = 250;
+    MY(alpha_max) = 300;
+    MY(alpha_fade) = 680;
+    MY(color_min) = "0xff0000";
+    MY(color_max) = "0xc03535";
+    MY(countabsolute) = 1;
+    MY(sizeincrease) = -180;
+    MY(size_min) = 82;
+    MY(size_max) = 82;
+    MY(tex_min) = 65;
+    MY(tex_max) = 65;
+    MY(type) = "smoke";
+}
+SUB(wakizashi_gun_impact) {
+    MY(alpha_min) = 50;
+    MY(alpha_max) = 100;
+    MY(alpha_fade) = 620;
+    MY(color_min) = "0xff0000";
+    MY(color_max) = "0xc03535";
+    MY(countabsolute) = 1;
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(spin_min) = 400;
+    MY(spin_max) = -400;
+    MY(sizeincrease) = 900;
+    MY(size_min) = 40;
+    MY(size_max) = 40;
+    MY(tex_min) = 33;
+    MY(tex_max) = 33;
+    MY(type) = "smoke";
+}
+SUB(wakizashi_gun_impact) {
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 256;
+    MY(countabsolute) = 1;
+    MY(originjitter) = '16.0 16.0 16.0';
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(size_min) = 14;
+    MY(size_max) = 14;
+    MY(tex_min) = 59;
+    MY(tex_max) = 59;
+    MY(type) = "decal";
+}
+
+DEF(wakizashi_gun_muzzleflash);
+SUB(wakizashi_gun_muzzleflash) {
+    MY(airfriction) = 12;
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 512;
+    MY(alpha_fade) = 6280;
+    MY(color_min) = "0xff0000";
+    MY(color_max) = "0xc03535";
+    MY(count) = 16;
+    MY(originjitter) = '2.0 2.0 2.0';
+    MY(sizeincrease) = -10;
+    MY(size_min) = 5;
+    MY(size_max) = 7;
+    MY(stretchfactor) = 0.700000;
+    MY(tex_min) = 8;
+    MY(tex_max) = 15;
+    MY(type) = "spark";
+    MY(velocityjitter) = '200.0 200.0 200.0';
+    MY(velocitymultiplier) = 0.200000;
+}
+
+DEF(wakizashi_rocket_explode);
+SUB(wakizashi_rocket_explode) {
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 256;
+    MY(countabsolute) = 1;
+    MY(lightcolor) = '8.0 4.0 0.0';
+    MY(lightradiusfade) = 1750;
+    MY(lightradius) = 300;
+    MY(originjitter) = '23.0 23.0 23.0';
+    MY(size_min) = 72;
+    MY(size_max) = 72;
+    MY(tex_min) = 8;
+    MY(tex_max) = 16;
+    MY(type) = "decal";
+}
+// shockwave
+SUB(wakizashi_rocket_explode) {
+    MY(alpha_min) = 56;
+    MY(alpha_max) = 56;
+    MY(alpha_fade) = 230;
+    MY(color_min) = "0x8f0d00";
+    MY(color_max) = "0xff5a00";
+    MY(countabsolute) = 1;
+    MY(sizeincrease) = 2400;
+    MY(size_min) = 22;
+    MY(size_max) = 22;
+    MY(tex_min) = 33;
+    MY(tex_max) = 33;
+    MY(type) = "static";
+}
+// glow
+SUB(wakizashi_rocket_explode) {
+    MY(alpha_min) = 156;
+    MY(alpha_max) = 156;
+    MY(alpha_fade) = 830;
+    MY(color_min) = "0x8f0d00";
+    MY(color_max) = "0xff5a00";
+    MY(countabsolute) = 1;
+    MY(sizeincrease) = 240;
+    MY(size_min) = 120;
+    MY(size_max) = 120;
+    MY(tex_min) = 64;
+    MY(tex_max) = 64;
+    MY(type) = "static";
+}
+// fire effect
+SUB(wakizashi_rocket_explode) {
+    MY(airfriction) = 2;
+    MY(alpha_min) = 200;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 512;
+    MY(color_min) = "0xFFAE00";
+    MY(color_max) = "0xff5a00";
+    MY(count) = 64;
+    MY(liquidfriction) = 8;
+    MY(notunderwater) = true;
+    MY(originjitter) = '10.0 10.0 10.0';
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(spin_min) = -50;
+    MY(spin_max) = 50;
+    MY(sizeincrease) = 195;
+    MY(size_min) = 12;
+    MY(size_max) = 21;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "static";
+    MY(velocityjitter) = '512.0 512.0 512.0';
+}
+// fire rays
+SUB(wakizashi_rocket_explode) {
+    MY(airfriction) = -3;
+    MY(alpha_min) = 200;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 1600;
+    MY(color_min) = "0xFFEA00";
+    MY(color_max) = "0xff5a00";
+    MY(count) = 10;
+    MY(liquidfriction) = 8;
+    MY(notunderwater) = true;
+    MY(originjitter) = '40.0 40.0 40.0';
+    MY(sizeincrease) = 120;
+    MY(size_min) = 43;
+    MY(size_max) = 54;
+    MY(stretchfactor) = 10;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "spark";
+    MY(velocityjitter) = '512.0 512.0 512.0';
+}
+// smoke
+SUB(wakizashi_rocket_explode) {
+    MY(airfriction) = 3;
+    MY(alpha_min) = 300;
+    MY(alpha_max) = 450;
+    MY(alpha_fade) = 556;
+    MY(color_min) = "0x4F4B46";
+    MY(color_max) = "0x000000";
+    MY(count) = 32;
+    MY(notunderwater) = true;
+    MY(originjitter) = '100.0 100.0 100.0';
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(spin_min) = -20;
+    MY(spin_max) = 20;
+    MY(sizeincrease) = 230;
+    MY(size_min) = 10;
+    MY(size_max) = 15;
+    MY(tex_max) = 8;
+    MY(type) = "alphastatic";
+    MY(velocityjitter) = '200.0 200.0 200.0';
+}
+// bouncing sparks
+SUB(wakizashi_rocket_explode) {
+    MY(airfriction) = 1;
+    MY(alpha_min) = 644;
+    MY(alpha_max) = 956;
+    MY(alpha_fade) = 884;
+    MY(color_min) = "0xffa35b";
+    MY(color_max) = "0xfff2be";
+    MY(count) = 14;
+    MY(gravity) = 1;
+    MY(liquidfriction) = 0.800000;
+    MY(notunderwater) = true;
+    MY(originjitter) = '60.0 60.0 60.0';
+    MY(size_min) = 1;
+    MY(size_max) = 2;
+    MY(tex_min) = 40;
+    MY(tex_max) = 40;
+    MY(type) = "spark";
+    MY(velocityjitter) = '524.0 524.0 524.0';
+    MY(velocityoffset) = '0.0 0.0 170.0';
+}
+// underwater bubbles
+SUB(wakizashi_rocket_explode) {
+    MY(alpha_min) = 128;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 64;
+    MY(bounce) = 1.500000;
+    MY(color_min) = "0x404040";
+    MY(color_max) = "0x808080";
+    MY(count) = 32;
+    MY(gravity) = -0.125000;
+    MY(liquidfriction) = 0.250000;
+    MY(originjitter) = '160.0 160.0 160.0';
+    MY(size_min) = 1;
+    MY(size_max) = 3;
+    MY(tex_min) = 62;
+    MY(tex_max) = 62;
+    MY(type) = "bubble";
+    MY(underwater) = true;
+    MY(velocityjitter) = '144.0 144.0 144.0';
+}
+// underwatershockwave
+SUB(wakizashi_rocket_explode) {
+    MY(alpha_min) = 40;
+    MY(alpha_max) = 40;
+    MY(alpha_fade) = 300;
+    MY(countabsolute) = 1;
+    MY(sizeincrease) = 1200;
+    MY(size_min) = 30;
+    MY(size_max) = 30;
+    MY(tex_min) = 33;
+    MY(tex_max) = 33;
+    MY(type) = "smoke";
+    MY(underwater) = true;
+}
+
+DEF(wakizashi_rocket_thrust);
+SUB(wakizashi_rocket_thrust) {
+    MY(alpha_min) = 200;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 1600;
+    MY(color_min) = "0x00FFDD";
+    MY(color_max) = "0x6200FF";
+    MY(countabsolute) = 3;
+    MY(notunderwater) = true;
+    MY(sizeincrease) = -2;
+    MY(size_min) = 14;
+    MY(size_max) = 19;
+    MY(stretchfactor) = 1;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "spark";
+    MY(velocityjitter) = '60.0 60.0 60.0';
+    MY(velocitymultiplier) = -1.100000;
+}
+SUB(wakizashi_rocket_thrust) {
+    MY(alpha_min) = 200;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 1900;
+    MY(color_min) = "0xFFFF33";
+    MY(color_max) = "0xFFEE00";
+    MY(countabsolute) = 2;
+    MY(notunderwater) = true;
+    MY(sizeincrease) = -2;
+    MY(size_min) = 5;
+    MY(size_max) = 10;
+    MY(stretchfactor) = 3;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "spark";
+    MY(velocityjitter) = '60.0 60.0 60.0';
+    MY(velocitymultiplier) = -0.300000;
+}
+
+DEF(wakizashi_rocket_launch);
+// long lasting smoke
+SUB(wakizashi_rocket_launch) {
+    MY(airfriction) = 0.300000;
+    MY(alpha_min) = 100;
+    MY(alpha_max) = 156;
+    MY(alpha_fade) = 60;
+    MY(color_min) = "0xFFFFFF";
+    MY(color_max) = "0xD9C4B0";
+    MY(count) = 8;
+    MY(notunderwater) = true;
+    MY(sizeincrease) = 20;
+    MY(size_min) = 3;
+    MY(size_max) = 30;
+    MY(tex_max) = 8;
+    MY(type) = "smoke";
+    MY(velocityjitter) = '160.0 160.0 60.0';
+    MY(velocitymultiplier) = -0.100000;
+}
+// fast smoke
+SUB(wakizashi_rocket_launch) {
+    MY(airfriction) = 0.300000;
+    MY(alpha_min) = 100;
+    MY(alpha_max) = 156;
+    MY(alpha_fade) = 260;
+    MY(color_min) = "0xFFFFFF";
+    MY(color_max) = "0xD9C4B0";
+    MY(count) = 14;
+    MY(notunderwater) = true;
+    MY(sizeincrease) = 20;
+    MY(size_min) = 30;
+    MY(size_max) = 30;
+    MY(tex_max) = 8;
+    MY(type) = "smoke";
+    MY(velocityjitter) = '160.0 160.0 60.0';
+    MY(velocitymultiplier) = 0.400000;
+}
+//sparks
+SUB(wakizashi_rocket_launch) {
+    MY(alpha_min) = 200;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 1000;
+    MY(color_min) = "0xFFFFFF";
+    MY(color_max) = "0xD9C4B0";
+    MY(count) = 10;
+    MY(notunderwater) = true;
+    MY(size_min) = 1;
+    MY(size_max) = 4;
+    MY(tex_min) = 40;
+    MY(tex_max) = 40;
+    MY(type) = "spark";
+    MY(velocityjitter) = '60.0 60.0 60.0';
+    MY(velocitymultiplier) = -1.500000;
+}
+
+DEF(wakizashi_booster_smoke);
+SUB(wakizashi_booster_smoke) {
+    MY(airfriction) = 2;
+    MY(alpha_min) = 200;
+    MY(alpha_max) = 750;
+    MY(alpha_fade) = 200;
+    MY(color_min) = "0xA69A80";
+    MY(color_max) = "0xB3B39F";
+    MY(count) = 3;
+    MY(gravity) = -0.100000;
+    MY(notunderwater) = true;
+    MY(originjitter) = '60.0 60.0 60.0';
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(spin_min) = -20;
+    MY(spin_max) = 20;
+    MY(sizeincrease) = 10;
+    MY(size_min) = 60;
+    MY(size_max) = 100;
+    MY(tex_max) = 8;
+    MY(type) = "alphastatic";
+    MY(velocityjitter) = '40.0 40.0 40.0';
+}
+
+DEF(raptor_cannon_impact);
+// decal
+SUB(raptor_cannon_impact) {
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 256;
+    MY(countabsolute) = 1;
+    MY(originjitter) = '16.0 16.0 16.0';
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(size_min) = 24;
+    MY(size_max) = 24;
+    MY(tex_min) = 47;
+    MY(tex_max) = 47;
+    MY(type) = "decal";
+}
+// spark
+SUB(raptor_cannon_impact) {
+    MY(airfriction) = 0.200000;
+    MY(alpha_min) = 644;
+    MY(alpha_max) = 956;
+    MY(alpha_fade) = 784;
+    MY(color_min) = "0xD400FF";
+    MY(color_max) = "0x571863";
+    MY(count) = 6;
+    MY(gravity) = 1;
+    MY(notunderwater) = true;
+    MY(originjitter) = '16.0 16.0 16.0';
+    MY(size_min) = 1;
+    MY(size_max) = 1;
+    MY(tex_min) = 40;
+    MY(tex_max) = 40;
+    MY(type) = "spark";
+    MY(velocityjitter) = '124.0 124.0 524.0';
+    MY(velocityoffset) = '0.0 0.0 150.0';
+}
+// smoke
+SUB(raptor_cannon_impact) {
+    MY(airfriction) = 2;
+    MY(alpha_min) = 428;
+    MY(alpha_max) = 428;
+    MY(alpha_fade) = 600;
+    MY(color_min) = "0x646364";
+    MY(color_max) = "0x151515";
+    MY(count) = 4;
+    MY(gravity) = 0.700000;
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(size_min) = 50;
+    MY(size_max) = 50;
+    MY(tex_max) = 7;
+    MY(type) = "alphastatic";
+    MY(velocityjitter) = '200.0 200.0 300.0';
+    MY(velocityoffset) = '0.0 0.0 340.0';
+}
+// fire
+SUB(raptor_cannon_impact) {
+    MY(airfriction) = 8;
+    MY(alpha_min) = 200;
+    MY(alpha_max) = 256;
+    MY(alpha_fade) = 812;
+    MY(bounce) = 1.500000;
+    MY(color_min) = "0xD400FF";
+    MY(color_max) = "0x571863";
+    MY(count) = 10;
+    MY(liquidfriction) = 8;
+    MY(notunderwater) = true;
+    MY(originjitter) = '8.0 8.0 8.0';
+    MY(sizeincrease) = 25;
+    MY(size_min) = 33;
+    MY(size_max) = 44;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "static";
+    MY(velocityjitter) = '312.0 312.0 312.0';
+}
+
+DEF(raptor_cannon_muzzleflash);
+SUB(raptor_cannon_muzzleflash) {
+    MY(airfriction) = 12;
+    MY(alpha_min) = 1256;
+    MY(alpha_max) = 1512;
+    MY(alpha_fade) = 56280;
+    MY(color_min) = "0xD400FF";
+    MY(color_max) = "0x571863";
+    MY(count) = 16;
+    MY(originjitter) = '2.0 2.0 2.0';
+    MY(sizeincrease) = -10;
+    MY(size_min) = 10;
+    MY(size_max) = 17;
+    MY(stretchfactor) = 0.600000;
+    MY(tex_min) = 8;
+    MY(tex_max) = 15;
+    MY(type) = "spark";
+    MY(velocityjitter) = '200.0 200.0 200.0';
+    MY(velocitymultiplier) = 0.200000;
+}
+SUB(raptor_cannon_muzzleflash) {
+    MY(alpha_min) = 6056;
+    MY(alpha_max) = 20112;
+    MY(alpha_fade) = 406280;
+    MY(color_min) = "0xD400FF";
+    MY(color_max) = "0x571863";
+    MY(countabsolute) = 1;
+    MY(lightcolor) = '3.0 0.0 6.0';
+    MY(lightradiusfade) = 6000;
+    MY(lightradius) = 150;
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(spin_min) = 4000;
+    MY(spin_max) = -4000;
+    MY(sizeincrease) = -100;
+    MY(size_min) = 32;
+    MY(size_max) = 32;
+    MY(stretchfactor) = 0.100000;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "static";
+}
+
+DEF(raptor_bomb_impact);
+// decal
+SUB(raptor_bomb_impact) {
+    MY(alpha_min) = 256;
+    MY(alpha_max) = 256;
+    MY(countabsolute) = 1;
+    MY(originjitter) = '16.0 16.0 16.0';
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(size_min) = 84;
+    MY(size_max) = 84;
+    MY(tex_min) = 8;
+    MY(tex_max) = 16;
+    MY(type) = "decal";
+}
+// spark vertical
+SUB(raptor_bomb_impact) {
+    MY(alpha_min) = 300;
+    MY(alpha_max) = 300;
+    MY(alpha_fade) = 600;
+    MY(color_min) = "0xff9c00";
+    MY(color_max) = "0xff3c00";
+    MY(count) = 3;
+    MY(originjitter) = '10.0 10.0 10.0';
+    MY(sizeincrease) = 50;
+    MY(size_min) = 20;
+    MY(size_max) = 40;
+    MY(stretchfactor) = 210;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "spark";
+    MY(velocityjitter) = '40.0 40.0 120.0';
+}
+// fire
+SUB(raptor_bomb_impact) {
+    MY(airfriction) = 2;
+    MY(alpha_min) = 300;
+    MY(alpha_max) = 300;
+    MY(alpha_fade) = 500;
+    MY(color_min) = "0xff9c00";
+    MY(color_max) = "0xff3c00";
+    MY(count) = 4;
+    MY(originjitter) = '10.0 10.0 10.0';
+    MY(sizeincrease) = 230;
+    MY(size_min) = 30;
+    MY(size_max) = 120;
+    MY(tex_min) = 48;
+    MY(tex_max) = 55;
+    MY(type) = "static";
+    MY(velocityjitter) = '950.0 950.0 0.0';
+}
+// smoke
+SUB(raptor_bomb_impact) {
+    MY(alpha_min) = 428;
+    MY(alpha_max) = 428;
+    MY(alpha_fade) = 600;
+    MY(blend) = "alpha";
+    MY(color_min) = "0x646364";
+    MY(color_max) = "0x151515";
+    MY(count) = 4;
+    MY(originjitter) = '30.0 30.0 10.0';
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(size_min) = 120;
+    MY(size_max) = 180;
+    MY(stretchfactor) = 10;
+    MY(tex_max) = 7;
+    MY(type) = "spark";
+    MY(velocityjitter) = '200.0 200.0 280.0';
+    MY(velocityoffset) = '0.0 0.0 280.0';
+}
+// smoke 2
+SUB(raptor_bomb_impact) {
+    MY(airfriction) = 0.600000;
+    MY(alpha_min) = 328;
+    MY(alpha_max) = 328;
+    MY(alpha_fade) = 350;
+    MY(blend) = "alpha";
+    MY(color_min) = "0x646364";
+    MY(color_max) = "0x151515";
+    MY(count) = 4;
+    MY(gravity) = 2;
+    MY(originjitter) = '30.0 30.0 10.0';
+    MY(startangle_min) = -180;
+    MY(startangle_max) = 180;
+    MY(sizeincrease) = 60;
+    MY(size_min) = 40;
+    MY(size_max) = 100;
+    MY(tex_max) = 7;
+    MY(type) = "spark";
+    MY(velocityjitter) = '200.0 200.0 300.0';
+    MY(velocityoffset) = '0.0 0.0 580.0';
+}
+// sparks
+SUB(raptor_bomb_impact) {
+    MY(airfriction) = 0.300000;
+    MY(alpha_min) = 644;
+    MY(alpha_max) = 956;
+    MY(alpha_fade) = 984;
+    MY(color_min) = "0xffa35b";
+    MY(color_max) = "0xfff2be";
+    MY(count) = 5;
+    MY(gravity) = 1;
+    MY(notunderwater) = true;
+    MY(originjitter) = '16.0 16.0 16.0';
+    MY(size_min) = 3;
+    MY(size_max) = 5;
+    MY(stretchfactor) = 2;
+    MY(tex_min) = 40;
+    MY(tex_max) = 40;
+    MY(type) = "spark";
+    MY(velocityjitter) = '174.0 174.0 924.0';
+    MY(velocityoffset) = '0.0 0.0 350.0';
+}
+
+DEF(raptor_bomb_spread);
+SUB(raptor_bomb_spread) {
+    MY(airfriction) = 1;
+    MY(alpha_min) = 644;
+    MY(alpha_max) = 956;
+    MY(alpha_fade) = 1284;
+    MY(color_min) = "0xffa35b";
+    MY(color_max) = "0xfff2be";
+    MY(count) = 34;
+    MY(gravity) = 1;
+    MY(liquidfriction) = 0.800000;
+    MY(notunderwater) = true;
+    MY(originjitter) = '110.0 110.0 110.0';
+    MY(size_min) = 1;
+    MY(size_max) = 2;
+    MY(tex_min) = 40;
+    MY(tex_max) = 40;
+    MY(type) = "spark";
+    MY(velocityjitter) = '324.0 324.0 324.0';
+}
index f74dd4aa2ed49a252583d4a9a4fc42c5471819ac..3d186e38945ea267fe4fac3456aa1f3c690eb6de 100644 (file)
@@ -59,4 +59,6 @@ noref bool autocvar_prvm_backtraceforwarnings;
     cvar_set("prvm_backtraceforwarnings", ftos(war)); \
 } while (0)
 
+#define ASSERT(expr) do { if (!(expr)) LOG_FATAL("assertion failed: " #expr "\n"); } while (0)
+
 #endif
index 4eceb36b98584c25035c9447ac24e40266c83934..5d7af0cd2b85bfe76f5c1b9be8f1e827dae15b99 100644 (file)
@@ -83,6 +83,7 @@
 #include "../common/campaign_file.qc"
 #include "../common/campaign_setup.qc"
 #include "../common/effects/effects.qc"
+#include "../common/effects/effectinfo.qc"
 #include "../common/mapinfo.qc"
 #include "../common/monsters/spawn.qc"
 #include "../common/monsters/sv_monsters.qc"