effectinfo: Split into separate files
authorTimePath <andrew.hardaker1995@gmail.com>
Sat, 26 Sep 2015 10:00:56 +0000 (20:00 +1000)
committerTimePath <andrew.hardaker1995@gmail.com>
Sat, 26 Sep 2015 10:00:56 +0000 (20:00 +1000)
qcsrc/common/effects/effectinfo.inc
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]

index 411658615b9769fb45b3afad8bade08168bd2f1c..adac07b77619cdc57af2c9b19e4a559d4f6f3cb0 100644 (file)
@@ -3465,129 +3465,7 @@ SUB(crylink_impactbig) {
        MY(velocityjitter) = '256.0 256.0 256.0';
 }
 
-// Zero-violence effects
-
-// 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';
-}
+#include "effectinfo_gentle.inc"
 
 DEF(laser_deadly);
 // decal
@@ -5155,127 +5033,7 @@ ground_quake(red,       "0x9E6A64", "0x91302D")
 ground_quake(blue,     "0x64679E", "0x2D4C91")
 #undef ground_quake
 
-// 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';
-}
+#include "effectinfo_gentle_morphed.inc"
 
 // Team / hit vaporizer effects
 #define TE_TEI_G3(name, colormin1, colormax1, colormin2, colormax2) \
@@ -5357,455 +5115,135 @@ TE_TEI_G3(YELLOW, "0xffff00", "0xffff11", "0x202000", "0x404000")
 TE_TEI_G3(PINK, "0xFF00FF", "0xFF11FF", "0x200020", "0x400040")
 #undef TE_TEI_G3
 
-// cl_gentle impact effect indicating damage
-DEF(particlegibs_damage_hit);
-// core decal
-SUB(particlegibs_damage_hit) {
-       MY(airfriction) = 3;
-       MY(alpha_min) = 256;
+#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) = 428;
-       MY(bounce) = -1;
-       MY(color_min) = "0xA8FFFF";
-       MY(color_max) = "0xA8FFFFF";
+       MY(alpha_fade) = 250;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x8f0d00";
+       MY(color_max) = "0xff5a00";
        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';
+       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';
 }
-// front blood
-SUB(particlegibs_damage_hit) {
-       MY(airfriction) = 1;
-       MY(alpha_min) = 256;
+// slowfire
+SUB(firemine) {
+       MY(airfriction) = 1.200000;
+       MY(alpha_min) = 50;
        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;
+       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';
 }
-// 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;
+// very slow and small fire
+SUB(firemine) {
+       MY(airfriction) = 0.300000;
+       MY(alpha_min) = 50;
        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(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(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';
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(trailspacing) = 4;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '8.0 8.0 8.0';
 }
-
-DEF(onslaught_generator_gib_explode);
-// fire effect which expands then slows
-SUB(onslaught_generator_gib_explode) {
-       MY(airfriction) = 5;
-       MY(alpha_min) = 128;
+// decreasing fire
+SUB(firemine) {
+       MY(airfriction) = 0.300000;
+       MY(alpha_min) = 50;
        MY(alpha_max) = 256;
-       MY(alpha_fade) = 356;
+       MY(alpha_fade) = 200;
        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(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(type) = "static";
-       MY(velocityjitter) = '286.0 286.0 286.0';
+       MY(trailspacing) = 4;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '3.0 3.0 3.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;
+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) = 6;
-       MY(gravity) = -0.300000;
-       MY(notunderwater) = true;
-       MY(sizeincrease) = 90;
+       MY(count) = 0.500000;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(sizeincrease) = 1;
        MY(size_min) = 1;
-       MY(size_max) = 10;
+       MY(size_max) = 4;
        MY(tex_max) = 8;
+       MY(trailspacing) = 8;
        MY(type) = "alphastatic";
-       MY(velocityjitter) = '244.0 244.0 244.0';
+       MY(velocityoffset) = '0.0 0.0 3.0';
 }
-// underwater bubbles
-SUB(onslaught_generator_gib_explode) {
-       MY(alpha_min) = 128;
+// fastfire
+SUB(firemine) {
+       MY(airfriction) = 1.200000;
+       MY(alpha_min) = 50;
        MY(alpha_max) = 256;
-       MY(alpha_fade) = 64;
+       MY(alpha_fade) = 1600;
        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(count) = 0.500000;
+       MY(size_min) = 12;
+       MY(size_max) = 12;
        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';
+       MY(trailspacing) = 1;
+       MY(type) = "smoke";
 }
-// 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';
+// light only
+SUB(firemine) {
+       MY(lightcolor) = '2.7 2.7 0.6';
+       MY(lightradiusfade) = 50000;
+       MY(lightradius) = 50;
+       MY(trailspacing) = 16;
 }
 
-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) {
+DEF(fireball);
+SUB(fireball) {
        MY(airfriction) = 1.200000;
        MY(alpha_min) = 50;
        MY(alpha_max) = 256;
@@ -6508,125 +5946,7 @@ SUB(torchflame) {
        MY(velocityoffset) = '0.0 0.0 10.0';
 }
 
-// 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';
-}
+#include "effectinfo_gentle_happy.inc"
 
 DEF(electro_lightning);
 SUB(electro_lightning) {
@@ -6981,1214 +6301,49 @@ SUB(TR_SEEKER) {
        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;
-}
-
-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';
+       MY(velocitymultiplier) = -1.500000;
 }
-// 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';
+// 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(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;
+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) = '16.0 16.0 16.0';
-       MY(size_min) = 3;
-       MY(size_max) = 5;
-       MY(stretchfactor) = 2;
+       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) = '174.0 174.0 924.0';
-       MY(velocityoffset) = '0.0 0.0 350.0';
+       MY(velocityjitter) = '100.0 100.0 100.0';
+       MY(velocitymultiplier) = -0.310000;
 }
 
-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';
-}
+#include "effectinfo_vehicles.inc"
 
 // generic explosion size:big (biggest explosion ever)
 DEF(explosion_big);
@@ -10190,129 +8345,7 @@ SUB(bigplasma_impact) {
        MY(velocityjitter) = '10.0 10.0 10.0';
 }
 
-// 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
+#include "effectinfo_ctf.inc"
 
 // spawn_point -- team idle spawn point effect
 #define spawn_point(name, color) \
@@ -10362,345 +8395,30 @@ spawn_point(neutral,  "0xFFFFFF")
                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
-
-#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'; \
-    } \
+       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"; \
+       } \
        /**/
 
-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
+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
@@ -11010,355 +8728,6 @@ SUB(arc_overheat_fire) {
        MY(velocityoffset) = '0.0 0.0 80.0';
 }
 
-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';
-}
-
-#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'; \
-       } \
-       /**/
+#include "effectinfo_buffs.inc"
 
-rocketminsta_laser(red,        "0xFF0F0F")
-rocketminsta_laser(blue,       "0x0F0FFF")
-rocketminsta_laser(yellow,     "0xFFFF0F")
-rocketminsta_laser(pink,       "0xFF0FFF")
-rocketminsta_laser(neutral, "0xFFFFFF")
-#undef rocketminsta_laser
+#include "effectinfo_instagib.inc"
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';
+}