]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Compress effectinfo with macros
authorTimePath <andrew.hardaker1995@gmail.com>
Sat, 26 Sep 2015 07:44:02 +0000 (17:44 +1000)
committerTimePath <andrew.hardaker1995@gmail.com>
Sat, 26 Sep 2015 07:44:02 +0000 (17:44 +1000)
qcsrc/common/effects/effectinfo.inc

index e4abcebe8d14eb6986ed5c8b406f0c0462d98d65..21be302585f9c0436318ff4945bc587d87cc3f1d 100644 (file)
@@ -5041,416 +5041,203 @@ SUB(morphed_damage_dissolve) {
        MY(velocityjitter) = '400.0 400.0 0.0';
 }
 
-DEF(TE_TEI_G3RED);
-SUB(TE_TEI_G3RED) {
-       MY(alpha_min) = 128;
-       MY(alpha_max) = 128;
-       MY(alpha_fade) = 256;
-       MY(color_min) = "0xFF0000";
-       MY(color_max) = "0xFF0000";
-       MY(countabsolute) = 1;
-       MY(size_min) = 4;
-       MY(size_max) = 4;
-       MY(tex_min) = 200;
-       MY(tex_max) = 200;
-       MY(type) = "beam";
-}
-SUB(TE_TEI_G3RED) {
-       MY(airfriction) = -4;
-       MY(alpha_min) = 256;
-       MY(alpha_max) = 256;
-       MY(alpha_fade) = 512;
-       MY(color_min) = "0x200000";
-       MY(color_max) = "0x400000";
-       MY(sizeincrease) = 3;
-       MY(size_min) = 0.300000;
-       MY(size_max) = 0.300000;
-       MY(tex_min) = 46;
-       MY(tex_max) = 46;
-       MY(trailspacing) = 8;
-       MY(type) = "smoke";
-       MY(velocityjitter) = '3.0 3.0 3.0';
-}
+#define TE_TEI_G3(name, colormin1, colormax1, colormin2, colormax2) \
+       DEF(TE_TEI_G3##name); \
+       SUB(TE_TEI_G3##name) { \
+               MY(alpha_min) = 128; \
+               MY(alpha_max) = 128; \
+               MY(alpha_fade) = 256; \
+               MY(color_min) = colormin1; \
+               MY(color_max) = colormax1; \
+               MY(countabsolute) = 1; \
+               MY(size_min) = 4; \
+               MY(size_max) = 4; \
+               MY(tex_min) = 200; \
+               MY(tex_max) = 200; \
+               MY(type) = "beam"; \
+       } \
+       SUB(TE_TEI_G3##name) { \
+               MY(airfriction) = -4; \
+               MY(alpha_min) = 256; \
+               MY(alpha_max) = 256; \
+               MY(alpha_fade) = 512; \
+               MY(color_min) = colormin2; \
+               MY(color_max) = colormax2; \
+               MY(sizeincrease) = 3; \
+               MY(size_min) = 0.300000; \
+               MY(size_max) = 0.300000; \
+               MY(tex_min) = 46; \
+               MY(tex_max) = 46; \
+               MY(trailspacing) = 8; \
+               MY(type) = "smoke"; \
+               MY(velocityjitter) = '3.0 3.0 3.0'; \
+       } \
+       DEF(TE_TEI_G3##name##_HIT); \
+       SUB(TE_TEI_G3##name##_HIT) { \
+               MY(alpha_min) = 128; \
+               MY(alpha_max) = 128; \
+               MY(alpha_fade) = 256; \
+               MY(color_min) = colormin1; \
+               MY(color_max) = colormax1; \
+               MY(countabsolute) = 1; \
+               MY(size_min) = 8; \
+               MY(size_max) = 8; \
+               MY(tex_min) = 200; \
+               MY(tex_max) = 200; \
+               MY(type) = "beam"; \
+       } \
+       SUB(TE_TEI_G3##name##_HIT) { \
+               MY(airfriction) = -4; \
+               MY(alpha_min) = 256; \
+               MY(alpha_max) = 256; \
+               MY(alpha_fade) = 512; \
+               MY(color_min) = "0xFFFFFF"; \
+               MY(color_max) = colormax1; \
+               MY(sizeincrease) = -2; \
+               MY(size_min) = 2; \
+               MY(size_max) = 2; \
+               MY(trailspacing) = 20; \
+               MY(type) = "smoke"; \
+               MY(velocityjitter) = '2.0 2.0 2.0'; \
+       } \
+       SUB(TE_TEI_G3##name##_HIT) { \
+               MY(airfriction) = -4; \
+               MY(alpha_min) = 256; \
+               MY(alpha_max) = 256; \
+               MY(alpha_fade) = 512; \
+               MY(color_min) = colormin1; \
+               MY(color_max) = colormax1; \
+               MY(sizeincrease) = -6; \
+               MY(size_min) = 10; \
+               MY(size_max) = 10; \
+               MY(trailspacing) = 40; \
+               MY(type) = "smoke"; \
+       } \
+       /**/
+TE_TEI_G3(RED, "0xFF0000", "0xFF0011", "0x200000", "0x400000")
+TE_TEI_G3(BLUE, "0x0000FF", "0x1100FF", "0x000020", "0x000040")
+TE_TEI_G3(YELLOW, "0xffff00", "0xffff11", "0x202000", "0x404000")
+TE_TEI_G3(PINK, "0xFF00FF", "0xFF11FF", "0x200020", "0x400040")
+#undef TE_TEI_G3
 
-DEF(TE_TEI_G3RED_HIT);
-SUB(TE_TEI_G3RED_HIT) {
-       MY(alpha_min) = 128;
-       MY(alpha_max) = 128;
-       MY(alpha_fade) = 256;
-       MY(color_min) = "0xFF0000";
-       MY(color_max) = "0xFF0000";
-       MY(countabsolute) = 1;
-       MY(size_min) = 8;
-       MY(size_max) = 8;
-       MY(tex_min) = 200;
-       MY(tex_max) = 200;
-       MY(type) = "beam";
-}
-SUB(TE_TEI_G3RED_HIT) {
-       MY(airfriction) = -4;
+DEF(particlegibs_damage_hit);
+SUB(particlegibs_damage_hit) {
+       MY(airfriction) = 3;
        MY(alpha_min) = 256;
        MY(alpha_max) = 256;
-       MY(alpha_fade) = 512;
-       MY(color_min) = "0xFFFFFF";
-       MY(color_max) = "0xFF0011";
-       MY(sizeincrease) = -2;
-       MY(size_min) = 2;
-       MY(size_max) = 2;
-       MY(trailspacing) = 20;
-       MY(type) = "smoke";
-       MY(velocityjitter) = '2.0 2.0 2.0';
+       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';
 }
-SUB(TE_TEI_G3RED_HIT) {
-       MY(airfriction) = -4;
+SUB(particlegibs_damage_hit) {
+       MY(airfriction) = 1;
        MY(alpha_min) = 256;
        MY(alpha_max) = 256;
-       MY(alpha_fade) = 512;
-       MY(color_min) = "0xFF0000";
-       MY(color_max) = "0xFF0011";
-       MY(sizeincrease) = -6;
+       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) = 10;
-       MY(trailspacing) = 40;
-       MY(type) = "smoke";
-}
-
-DEF(TE_TEI_G3BLUE);
-SUB(TE_TEI_G3BLUE) {
-       MY(alpha_min) = 128;
-       MY(alpha_max) = 128;
-       MY(alpha_fade) = 256;
-       MY(color_min) = "0x0000FF";
-       MY(color_max) = "0x1100FF";
-       MY(countabsolute) = 1;
-       MY(size_min) = 4;
-       MY(size_max) = 4;
-       MY(tex_min) = 200;
-       MY(tex_max) = 200;
-       MY(type) = "beam";
+       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;
 }
-SUB(TE_TEI_G3BLUE) {
-       MY(airfriction) = -4;
+SUB(particlegibs_damage_hit) {
+       MY(airfriction) = 1;
        MY(alpha_min) = 256;
        MY(alpha_max) = 256;
-       MY(alpha_fade) = 512;
-       MY(color_min) = "0x000020";
-       MY(color_max) = "0x000040";
-       MY(sizeincrease) = 3;
-       MY(size_min) = 0.300000;
-       MY(size_max) = 0.300000;
-       MY(tex_min) = 46;
-       MY(tex_max) = 46;
-       MY(trailspacing) = 8;
-       MY(type) = "smoke";
-       MY(velocityjitter) = '3.0 3.0 3.0';
+       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;
 }
 
-DEF(TE_TEI_G3BLUE_HIT);
-SUB(TE_TEI_G3BLUE_HIT) {
-       MY(alpha_min) = 128;
-       MY(alpha_max) = 128;
-       MY(alpha_fade) = 256;
-       MY(color_min) = "0x0000FF";
-       MY(color_max) = "0x1100FF";
-       MY(countabsolute) = 1;
-       MY(size_min) = 8;
-       MY(size_max) = 8;
-       MY(tex_min) = 200;
-       MY(tex_max) = 200;
-       MY(type) = "beam";
-}
-SUB(TE_TEI_G3BLUE_HIT) {
-       MY(airfriction) = -4;
+DEF(particlegibs_damage_dissolve);
+SUB(particlegibs_damage_dissolve) {
+       MY(airfriction) = 3;
        MY(alpha_min) = 256;
        MY(alpha_max) = 256;
-       MY(alpha_fade) = 512;
-       MY(color_min) = "0xFFFFFF";
-       MY(color_max) = "0x100FF";
-       MY(sizeincrease) = -2;
-       MY(size_min) = 2;
-       MY(size_max) = 2;
-       MY(trailspacing) = 20;
-       MY(type) = "smoke";
-       MY(velocityjitter) = '2.0 2.0 2.0';
+       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';
 }
-SUB(TE_TEI_G3BLUE_HIT) {
-       MY(airfriction) = -4;
+SUB(particlegibs_damage_dissolve) {
+       MY(airfriction) = 2;
        MY(alpha_min) = 256;
        MY(alpha_max) = 256;
-       MY(alpha_fade) = 512;
-       MY(color_min) = "0x0000FF";
-       MY(color_max) = "0x1100FF";
-       MY(sizeincrease) = -6;
-       MY(size_min) = 10;
-       MY(size_max) = 10;
-       MY(trailspacing) = 40;
-       MY(type) = "smoke";
-}
-
-DEF(TE_TEI_G3YELLOW);
-SUB(TE_TEI_G3YELLOW) {
-       MY(alpha_min) = 128;
-       MY(alpha_max) = 128;
-       MY(alpha_fade) = 256;
-       MY(color_min) = "0xffff00";
-       MY(color_max) = "0xffff11";
-       MY(countabsolute) = 1;
-       MY(size_min) = 4;
-       MY(size_max) = 4;
-       MY(tex_min) = 200;
-       MY(tex_max) = 200;
-       MY(type) = "beam";
+       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';
 }
-SUB(TE_TEI_G3YELLOW) {
-       MY(airfriction) = -4;
-       MY(alpha_min) = 256;
-       MY(alpha_max) = 256;
-       MY(alpha_fade) = 512;
-       MY(color_min) = "0x202000";
-       MY(color_max) = "0x404000";
-       MY(sizeincrease) = 3;
-       MY(size_min) = 0.300000;
-       MY(size_max) = 0.300000;
-       MY(tex_min) = 46;
-       MY(tex_max) = 46;
-       MY(trailspacing) = 8;
-       MY(type) = "smoke";
-       MY(velocityjitter) = '3.0 3.0 3.0';
-}
-
-DEF(TE_TEI_G3YELLOW_HIT);
-SUB(TE_TEI_G3YELLOW_HIT) {
-       MY(alpha_min) = 128;
-       MY(alpha_max) = 128;
-       MY(alpha_fade) = 256;
-       MY(color_min) = "0xffff00";
-       MY(color_max) = "0xffff11";
-       MY(countabsolute) = 1;
-       MY(size_min) = 8;
-       MY(size_max) = 8;
-       MY(tex_min) = 200;
-       MY(tex_max) = 200;
-       MY(type) = "beam";
-}
-SUB(TE_TEI_G3YELLOW_HIT) {
-       MY(airfriction) = -4;
-       MY(alpha_min) = 256;
-       MY(alpha_max) = 256;
-       MY(alpha_fade) = 512;
-       MY(color_min) = "0xFFFFFF";
-       MY(color_max) = "0xffff10";
-       MY(sizeincrease) = -2;
-       MY(size_min) = 2;
-       MY(size_max) = 2;
-       MY(trailspacing) = 20;
-       MY(type) = "smoke";
-       MY(velocityjitter) = '2.0 2.0 2.0';
-}
-SUB(TE_TEI_G3YELLOW_HIT) {
-       MY(airfriction) = -4;
-       MY(alpha_min) = 256;
-       MY(alpha_max) = 256;
-       MY(alpha_fade) = 512;
-       MY(color_min) = "0xffff00";
-       MY(color_max) = "0xffff11";
-       MY(sizeincrease) = -6;
-       MY(size_min) = 10;
-       MY(size_max) = 10;
-       MY(trailspacing) = 40;
-       MY(type) = "smoke";
-}
-
-DEF(TE_TEI_G3PINK);
-SUB(TE_TEI_G3PINK) {
-       MY(alpha_min) = 128;
-       MY(alpha_max) = 128;
-       MY(alpha_fade) = 256;
-       MY(color_min) = "0xFF00FF";
-       MY(color_max) = "0xFF11FF";
-       MY(countabsolute) = 1;
-       MY(size_min) = 4;
-       MY(size_max) = 4;
-       MY(tex_min) = 200;
-       MY(tex_max) = 200;
-       MY(type) = "beam";
-}
-SUB(TE_TEI_G3PINK) {
-       MY(airfriction) = -4;
-       MY(alpha_min) = 256;
-       MY(alpha_max) = 256;
-       MY(alpha_fade) = 512;
-       MY(color_min) = "0x200020";
-       MY(color_max) = "0x400040";
-       MY(sizeincrease) = 3;
-       MY(size_min) = 0.300000;
-       MY(size_max) = 0.300000;
-       MY(tex_min) = 46;
-       MY(tex_max) = 46;
-       MY(trailspacing) = 8;
-       MY(type) = "smoke";
-       MY(velocityjitter) = '3.0 3.0 3.0';
-}
-
-DEF(TE_TEI_G3PINK_HIT);
-SUB(TE_TEI_G3PINK_HIT) {
-       MY(alpha_min) = 128;
-       MY(alpha_max) = 128;
-       MY(alpha_fade) = 256;
-       MY(color_min) = "0xFF00FF";
-       MY(color_max) = "0xFF11FF";
-       MY(countabsolute) = 1;
-       MY(size_min) = 8;
-       MY(size_max) = 8;
-       MY(tex_min) = 200;
-       MY(tex_max) = 200;
-       MY(type) = "beam";
-}
-SUB(TE_TEI_G3PINK_HIT) {
-       MY(airfriction) = -4;
-       MY(alpha_min) = 256;
-       MY(alpha_max) = 256;
-       MY(alpha_fade) = 512;
-       MY(color_min) = "0xFFFFFF";
-       MY(color_max) = "0xFF10FF";
-       MY(sizeincrease) = -2;
-       MY(size_min) = 2;
-       MY(size_max) = 2;
-       MY(trailspacing) = 20;
-       MY(type) = "smoke";
-       MY(velocityjitter) = '2.0 2.0 2.0';
-}
-SUB(TE_TEI_G3PINK_HIT) {
-       MY(airfriction) = -4;
-       MY(alpha_min) = 256;
-       MY(alpha_max) = 256;
-       MY(alpha_fade) = 512;
-       MY(color_min) = "0xFF00FF";
-       MY(color_max) = "0xFF11FF";
-       MY(sizeincrease) = -6;
-       MY(size_min) = 10;
-       MY(size_max) = 10;
-       MY(trailspacing) = 40;
-       MY(type) = "smoke";
-}
-
-DEF(particlegibs_damage_hit);
-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';
-}
-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;
-}
-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;
-}
-
-DEF(particlegibs_damage_dissolve);
-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';
-}
-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';
-}
-SUB(particlegibs_damage_dissolve) {
-       MY(airfriction) = 1;
+SUB(particlegibs_damage_dissolve) {
+       MY(airfriction) = 1;
        MY(alpha_min) = 256;
        MY(alpha_max) = 256;
        MY(alpha_fade) = 328;
@@ -10207,1176 +9994,264 @@ nade(pink,          "0xFF0FFF", "0xFF0FFF", "0xFF0FFF", "0xFF0FFF")
 nade(neutral,  "0xFFFFFF", "0xFFFFFF", "0xFFFFFF", "0xFFFFFF")
 #undef nade
 
-DEF(nade_red_burn);
-SUB(nade_red_burn) {
-       MY(alpha_min) = 100;
-       MY(alpha_max) = 100;
-       MY(alpha_fade) = 250;
-       MY(color_min) = "0xff0000";
-       MY(color_max) = "0xff3c00";
-       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_red_burn) {
-       MY(alpha_min) = 200;
-       MY(alpha_max) = 200;
-       MY(alpha_fade) = 1000;
-       MY(color_min) = "0xff0000";
-       MY(color_max) = "0xffa2a2";
-       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_red_burn) {
-       MY(alpha_min) = 256;
-       MY(alpha_max) = 256;
-       MY(alpha_fade) = 256;
-       MY(bounce) = 1.500000;
-       MY(color_min) = "0xff0000";
-       MY(color_max) = "0xff3c00";
-       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_red_burn) {
-       MY(alpha_min) = 300;
-       MY(alpha_max) = 900;
-       MY(alpha_fade) = 1500;
-       MY(color_min) = "0xff0000";
-       MY(color_max) = "0xff3c00";
-       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';
-}
+#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) { \
+               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) { \
+               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'; \
+       } \
+       /**/
 
-DEF(nade_blue_burn);
-SUB(nade_blue_burn) {
-       MY(alpha_min) = 100;
-       MY(alpha_max) = 100;
-       MY(alpha_fade) = 250;
-       MY(color_min) = "0x006cff";
-       MY(color_max) = "0x0600ff";
-       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_blue_burn) {
-       MY(alpha_min) = 200;
-       MY(alpha_max) = 200;
-       MY(alpha_fade) = 1000;
-       MY(color_min) = "0x0600ff";
-       MY(color_max) = "0x9794ff";
-       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_blue_burn) {
-       MY(alpha_min) = 256;
-       MY(alpha_max) = 256;
-       MY(alpha_fade) = 256;
-       MY(bounce) = 1.500000;
-       MY(color_min) = "0x006cff";
-       MY(color_max) = "0x0600ff";
-       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_blue_burn) {
-       MY(color_min) = "0x006cff";
-       MY(color_max) = "0x0600ff";
-       MY(sizeincrease) = -30;
-       MY(size_min) = 25;
-       MY(size_max) = 25;
-       MY(tex_min) = 33;
-       MY(tex_max) = 33;
-       MY(trailspacing) = 16;
-       MY(type) = "smoke";
-}
+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
 
-DEF(nade_yellow_burn);
-SUB(nade_yellow_burn) {
-       MY(alpha_min) = 100;
-       MY(alpha_max) = 100;
-       MY(alpha_fade) = 250;
-       MY(color_min) = "0xFFFF0F";
-       MY(color_max) = "0xFFFF0F";
-       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_yellow_burn) {
-       MY(alpha_min) = 200;
-       MY(alpha_max) = 200;
-       MY(alpha_fade) = 1000;
-       MY(color_min) = "0xFFFF0F";
-       MY(color_max) = "0xFFFF0F";
-       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_yellow_burn) {
-       MY(alpha_min) = 256;
-       MY(alpha_max) = 256;
-       MY(alpha_fade) = 256;
-       MY(bounce) = 1.500000;
-       MY(color_min) = "0xFFFF0F";
-       MY(color_max) = "0xFFFF0F";
-       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_yellow_burn) {
-       MY(color_min) = "0xFFFF0F";
-       MY(color_max) = "0xFFFF0F";
-       MY(sizeincrease) = -30;
-       MY(size_min) = 25;
-       MY(size_max) = 25;
-       MY(tex_min) = 33;
-       MY(tex_max) = 33;
-       MY(trailspacing) = 16;
-       MY(type) = "smoke";
-}
+#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) { \
+               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) { \
+               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) { \
+               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) { \
+               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) { \
+               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) { \
+               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) { \
+               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) { \
+       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'; \
+    } \
+       /**/
 
-DEF(nade_pink_burn);
-SUB(nade_pink_burn) {
-       MY(alpha_min) = 100;
-       MY(alpha_max) = 100;
-       MY(alpha_fade) = 250;
-       MY(color_min) = "0xFF0FFF";
-       MY(color_max) = "0xFF0FFF";
-       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_pink_burn) {
-       MY(alpha_min) = 200;
-       MY(alpha_max) = 200;
-       MY(alpha_fade) = 1000;
-       MY(color_min) = "0xFF0FFF";
-       MY(color_max) = "0xFF0FFF";
-       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_pink_burn) {
-       MY(alpha_min) = 256;
-       MY(alpha_max) = 256;
-       MY(alpha_fade) = 256;
-       MY(bounce) = 1.500000;
-       MY(color_min) = "0xFF0FFF";
-       MY(color_max) = "0xFF0FFF";
-       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_pink_burn) {
-       MY(color_min) = "0xFF0FFF";
-       MY(color_max) = "0xFF0FFF";
-       MY(sizeincrease) = -30;
-       MY(size_min) = 25;
-       MY(size_max) = 25;
-       MY(tex_min) = 33;
-       MY(tex_max) = 33;
-       MY(trailspacing) = 16;
-       MY(type) = "smoke";
-}
-
-DEF(nade_neutral_burn);
-SUB(nade_neutral_burn) {
-       MY(alpha_min) = 100;
-       MY(alpha_max) = 100;
-       MY(alpha_fade) = 250;
-       MY(color_min) = "0xFFFFFF";
-       MY(color_max) = "0xFFFFFF";
-       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_neutral_burn) {
-       MY(alpha_min) = 200;
-       MY(alpha_max) = 200;
-       MY(alpha_fade) = 1000;
-       MY(color_min) = "0xFFFFFF";
-       MY(color_max) = "0xFFFFFF";
-       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_neutral_burn) {
-       MY(alpha_min) = 256;
-       MY(alpha_max) = 256;
-       MY(alpha_fade) = 256;
-       MY(bounce) = 1.500000;
-       MY(color_min) = "0xFFFFFF";
-       MY(color_max) = "0xFFFFFF";
-       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_neutral_burn) {
-       MY(color_min) = "0xFFFFFF";
-       MY(color_max) = "0xFFFFFF";
-       MY(sizeincrease) = -30;
-       MY(size_min) = 25;
-       MY(size_max) = 25;
-       MY(tex_min) = 33;
-       MY(tex_max) = 33;
-       MY(trailspacing) = 16;
-       MY(type) = "smoke";
-}
-
-DEF(nade_blue_explode);
-SUB(nade_blue_explode) {
-       MY(alpha_min) = 256;
-       MY(alpha_max) = 256;
-       MY(countabsolute) = 1;
-       MY(lightcolor) = '20.0 20.0 100.0';
-       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_blue_explode) {
-       MY(alpha_min) = 80;
-       MY(alpha_max) = 80;
-       MY(alpha_fade) = 650;
-       MY(color_min) = "0x80C0FF";
-       MY(color_max) = "0x80C0FF";
-       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_blue_explode) {
-       MY(airfriction) = 30;
-       MY(alpha_min) = 400;
-       MY(alpha_max) = 656;
-       MY(alpha_fade) = 2000;
-       MY(color_min) = "0x629dff";
-       MY(color_max) = "0x0018ff";
-       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_blue_explode) {
-       MY(airfriction) = -9;
-       MY(alpha_min) = 1500;
-       MY(alpha_max) = 3000;
-       MY(alpha_fade) = 13000;
-       MY(color_min) = "0x629dff";
-       MY(color_max) = "0x0018ff";
-       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_blue_explode) {
-       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_blue_explode) {
-       MY(alpha_min) = 128;
-       MY(alpha_max) = 256;
-       MY(alpha_fade) = 64;
-       MY(bounce) = 1.500000;
-       MY(color_min) = "0x404040";
-       MY(color_max) = "0x808080";
-       MY(count) = 32;
-       MY(gravity) = -0.125000;
-       MY(liquidfriction) = 0.250000;
-       MY(originjitter) = '16.0 16.0 16.0';
-       MY(size_min) = 3;
-       MY(size_max) = 6;
-       MY(tex_min) = 62;
-       MY(tex_max) = 62;
-       MY(type) = "bubble";
-       MY(underwater) = true;
-       MY(velocityjitter) = '196.0 196.0 196.0';
-}
-SUB(nade_blue_explode) {
-       MY(airfriction) = 1;
-       MY(alpha_min) = 644;
-       MY(alpha_max) = 956;
-       MY(alpha_fade) = 484;
-       MY(bounce) = 1.600000;
-       MY(color_min) = "0x006cff";
-       MY(color_max) = "0x0600ff";
-       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_blue_explode) {
-       MY(airfriction) = 0.700000;
-       MY(alpha_min) = 644;
-       MY(alpha_max) = 956;
-       MY(alpha_fade) = 684;
-       MY(color_min) = "0x006cff";
-       MY(color_max) = "0x0600ff";
-       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_blue_explode) {
-       MY(airfriction) = 0.500000;
-       MY(alpha_min) = 644;
-       MY(alpha_max) = 956;
-       MY(alpha_fade) = 684;
-       MY(bounce) = 1.600000;
-       MY(color_min) = "0x6a3d25";
-       MY(color_max) = "0xcac5b4";
-       MY(count) = 12;
-       MY(gravity) = 1.300000;
-       MY(notunderwater) = true;
-       MY(startangle_min) = -180;
-       MY(startangle_max) = 180;
-       MY(spin_min) = -1000;
-       MY(spin_max) = 1000;
-       MY(size_min) = 2;
-       MY(size_max) = 6;
-       MY(tex_min) = 66;
-       MY(tex_max) = 68;
-       MY(type) = "alphastatic";
-       MY(velocityjitter) = '324.0 324.0 524.0';
-}
-
-DEF(nade_red_explode);
-SUB(nade_red_explode) {
-       MY(alpha_min) = 256;
-       MY(alpha_max) = 256;
-       MY(countabsolute) = 1;
-       MY(lightcolor) = '100.0 20.0 20.0';
-       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_red_explode) {
-       MY(alpha_min) = 80;
-       MY(alpha_max) = 80;
-       MY(alpha_fade) = 650;
-       MY(color_min) = "0xff0000";
-       MY(color_max) = "0xffa2a2";
-       MY(countabsolute) = 1;
-       MY(sizeincrease) = 2200;
-       MY(size_min) = 32;
-       MY(size_max) = 32;
-       MY(tex_min) = 33;
-       MY(tex_max) = 33;
-       MY(type) = "smoke";
-       MY(velocitymultiplier) = 44;
-}
-SUB(nade_red_explode) {
-       MY(airfriction) = 30;
-       MY(alpha_min) = 400;
-       MY(alpha_max) = 656;
-       MY(alpha_fade) = 2000;
-       MY(color_min) = "0xff0000";
-       MY(color_max) = "0xff4200";
-       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_red_explode) {
-       MY(airfriction) = -9;
-       MY(alpha_min) = 1500;
-       MY(alpha_max) = 3000;
-       MY(alpha_fade) = 13000;
-       MY(color_min) = "0xff0000";
-       MY(color_max) = "0xff4200";
-       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_red_explode) {
-       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_red_explode) {
-       MY(alpha_min) = 128;
-       MY(alpha_max) = 256;
-       MY(alpha_fade) = 64;
-       MY(bounce) = 1.500000;
-       MY(color_min) = "0x404040";
-       MY(color_max) = "0x808080";
-       MY(count) = 32;
-       MY(gravity) = -0.125000;
-       MY(liquidfriction) = 0.250000;
-       MY(originjitter) = '16.0 16.0 16.0';
-       MY(size_min) = 3;
-       MY(size_max) = 6;
-       MY(tex_min) = 62;
-       MY(tex_max) = 62;
-       MY(type) = "bubble";
-       MY(underwater) = true;
-       MY(velocityjitter) = '196.0 196.0 196.0';
-}
-SUB(nade_red_explode) {
-       MY(airfriction) = 1;
-       MY(alpha_min) = 644;
-       MY(alpha_max) = 956;
-       MY(alpha_fade) = 484;
-       MY(bounce) = 1.600000;
-       MY(color_min) = "0xff0000";
-       MY(color_max) = "0xffa2a2";
-       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_red_explode) {
-       MY(airfriction) = 0.700000;
-       MY(alpha_min) = 644;
-       MY(alpha_max) = 956;
-       MY(alpha_fade) = 684;
-       MY(color_min) = "0xff0000";
-       MY(color_max) = "0xffa2a2";
-       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_red_explode) {
-       MY(alpha_min) = 644;
-       MY(alpha_max) = 956;
-       MY(alpha_fade) = 2500;
-       MY(color_min) = "0xff0000";
-       MY(color_max) = "0xffa2a2";
-       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';
-}
-
-DEF(nade_yellow_explode);
-SUB(nade_yellow_explode) {
-       MY(alpha_min) = 256;
-       MY(alpha_max) = 256;
-       MY(countabsolute) = 1;
-       MY(lightcolor) = '100.0 20.0 20.0';
-       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_yellow_explode) {
-       MY(alpha_min) = 80;
-       MY(alpha_max) = 80;
-       MY(alpha_fade) = 650;
-       MY(color_min) = "0xff0000";
-       MY(color_max) = "0xffa2a2";
-       MY(countabsolute) = 1;
-       MY(sizeincrease) = 2200;
-       MY(size_min) = 32;
-       MY(size_max) = 32;
-       MY(tex_min) = 33;
-       MY(tex_max) = 33;
-       MY(type) = "smoke";
-       MY(velocitymultiplier) = 44;
-}
-SUB(nade_yellow_explode) {
-       MY(airfriction) = 30;
-       MY(alpha_min) = 400;
-       MY(alpha_max) = 656;
-       MY(alpha_fade) = 2000;
-       MY(color_min) = "0xFFFF0F";
-       MY(color_max) = "0xFFFF0F";
-       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_yellow_explode) {
-       MY(airfriction) = -9;
-       MY(alpha_min) = 1500;
-       MY(alpha_max) = 3000;
-       MY(alpha_fade) = 13000;
-       MY(color_min) = "0xFFFF0F";
-       MY(color_max) = "0xFFFF0F";
-       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_yellow_explode) {
-       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_yellow_explode) {
-       MY(alpha_min) = 128;
-       MY(alpha_max) = 256;
-       MY(alpha_fade) = 64;
-       MY(bounce) = 1.500000;
-       MY(color_min) = "0x404040";
-       MY(color_max) = "0x808080";
-       MY(count) = 32;
-       MY(gravity) = -0.125000;
-       MY(liquidfriction) = 0.250000;
-       MY(originjitter) = '16.0 16.0 16.0';
-       MY(size_min) = 3;
-       MY(size_max) = 6;
-       MY(tex_min) = 62;
-       MY(tex_max) = 62;
-       MY(type) = "bubble";
-       MY(underwater) = true;
-       MY(velocityjitter) = '196.0 196.0 196.0';
-}
-SUB(nade_yellow_explode) {
-       MY(airfriction) = 1;
-       MY(alpha_min) = 644;
-       MY(alpha_max) = 956;
-       MY(alpha_fade) = 484;
-       MY(bounce) = 1.600000;
-       MY(color_min) = "0xff0000";
-       MY(color_max) = "0xffa2a2";
-       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_yellow_explode) {
-       MY(airfriction) = 0.700000;
-       MY(alpha_min) = 644;
-       MY(alpha_max) = 956;
-       MY(alpha_fade) = 684;
-       MY(color_min) = "0xff0000";
-       MY(color_max) = "0xffa2a2";
-       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_yellow_explode) {
-       MY(alpha_min) = 644;
-       MY(alpha_max) = 956;
-       MY(alpha_fade) = 2500;
-       MY(color_min) = "0xff0000";
-       MY(color_max) = "0xffa2a2";
-       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';
-}
-
-DEF(nade_pink_explode);
-SUB(nade_pink_explode) {
-       MY(alpha_min) = 256;
-       MY(alpha_max) = 256;
-       MY(countabsolute) = 1;
-       MY(lightcolor) = '100.0 20.0 20.0';
-       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_pink_explode) {
-       MY(alpha_min) = 80;
-       MY(alpha_max) = 80;
-       MY(alpha_fade) = 650;
-       MY(color_min) = "0xff0000";
-       MY(color_max) = "0xffa2a2";
-       MY(countabsolute) = 1;
-       MY(sizeincrease) = 2200;
-       MY(size_min) = 32;
-       MY(size_max) = 32;
-       MY(tex_min) = 33;
-       MY(tex_max) = 33;
-       MY(type) = "smoke";
-       MY(velocitymultiplier) = 44;
-}
-SUB(nade_pink_explode) {
-       MY(airfriction) = 30;
-       MY(alpha_min) = 400;
-       MY(alpha_max) = 656;
-       MY(alpha_fade) = 2000;
-       MY(color_min) = "0xFF0FFF";
-       MY(color_max) = "0xFF0FFF";
-       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_pink_explode) {
-       MY(airfriction) = -9;
-       MY(alpha_min) = 1500;
-       MY(alpha_max) = 3000;
-       MY(alpha_fade) = 13000;
-       MY(color_min) = "0xFF0FFF";
-       MY(color_max) = "0xFF0FFF";
-       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_pink_explode) {
-       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_pink_explode) {
-       MY(alpha_min) = 128;
-       MY(alpha_max) = 256;
-       MY(alpha_fade) = 64;
-       MY(bounce) = 1.500000;
-       MY(color_min) = "0x404040";
-       MY(color_max) = "0x808080";
-       MY(count) = 32;
-       MY(gravity) = -0.125000;
-       MY(liquidfriction) = 0.250000;
-       MY(originjitter) = '16.0 16.0 16.0';
-       MY(size_min) = 3;
-       MY(size_max) = 6;
-       MY(tex_min) = 62;
-       MY(tex_max) = 62;
-       MY(type) = "bubble";
-       MY(underwater) = true;
-       MY(velocityjitter) = '196.0 196.0 196.0';
-}
-SUB(nade_pink_explode) {
-       MY(airfriction) = 1;
-       MY(alpha_min) = 644;
-       MY(alpha_max) = 956;
-       MY(alpha_fade) = 484;
-       MY(bounce) = 1.600000;
-       MY(color_min) = "0xff0000";
-       MY(color_max) = "0xffa2a2";
-       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_pink_explode) {
-       MY(airfriction) = 0.700000;
-       MY(alpha_min) = 644;
-       MY(alpha_max) = 956;
-       MY(alpha_fade) = 684;
-       MY(color_min) = "0xff0000";
-       MY(color_max) = "0xffa2a2";
-       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_pink_explode) {
-       MY(alpha_min) = 644;
-       MY(alpha_max) = 956;
-       MY(alpha_fade) = 2500;
-       MY(color_min) = "0xff0000";
-       MY(color_max) = "0xffa2a2";
-       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';
-}
-
-DEF(nade_neutral_explode);
-SUB(nade_neutral_explode) {
-       MY(alpha_min) = 256;
-       MY(alpha_max) = 256;
-       MY(countabsolute) = 1;
-       MY(lightcolor) = '100.0 20.0 20.0';
-       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_neutral_explode) {
-       MY(alpha_min) = 80;
-       MY(alpha_max) = 80;
-       MY(alpha_fade) = 650;
-       MY(color_min) = "0xff0000";
-       MY(color_max) = "0xffa2a2";
-       MY(countabsolute) = 1;
-       MY(sizeincrease) = 2200;
-       MY(size_min) = 32;
-       MY(size_max) = 32;
-       MY(tex_min) = 33;
-       MY(tex_max) = 33;
-       MY(type) = "smoke";
-       MY(velocitymultiplier) = 44;
-}
-SUB(nade_neutral_explode) {
-       MY(airfriction) = 30;
-       MY(alpha_min) = 400;
-       MY(alpha_max) = 656;
-       MY(alpha_fade) = 2000;
-       MY(color_min) = "0xFFFFFF";
-       MY(color_max) = "0xFFFFFF";
-       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_neutral_explode) {
-       MY(airfriction) = -9;
-       MY(alpha_min) = 1500;
-       MY(alpha_max) = 3000;
-       MY(alpha_fade) = 13000;
-       MY(color_min) = "0xFFFFFF";
-       MY(color_max) = "0xFFFFFF";
-       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_neutral_explode) {
-       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_neutral_explode) {
-       MY(alpha_min) = 128;
-       MY(alpha_max) = 256;
-       MY(alpha_fade) = 64;
-       MY(bounce) = 1.500000;
-       MY(color_min) = "0x404040";
-       MY(color_max) = "0x808080";
-       MY(count) = 32;
-       MY(gravity) = -0.125000;
-       MY(liquidfriction) = 0.250000;
-       MY(originjitter) = '16.0 16.0 16.0';
-       MY(size_min) = 3;
-       MY(size_max) = 6;
-       MY(tex_min) = 62;
-       MY(tex_max) = 62;
-       MY(type) = "bubble";
-       MY(underwater) = true;
-       MY(velocityjitter) = '196.0 196.0 196.0';
-}
-SUB(nade_neutral_explode) {
-       MY(airfriction) = 1;
-       MY(alpha_min) = 644;
-       MY(alpha_max) = 956;
-       MY(alpha_fade) = 484;
-       MY(bounce) = 1.600000;
-       MY(color_min) = "0xff0000";
-       MY(color_max) = "0xffa2a2";
-       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_neutral_explode) {
-       MY(airfriction) = 0.700000;
-       MY(alpha_min) = 644;
-       MY(alpha_max) = 956;
-       MY(alpha_fade) = 684;
-       MY(color_min) = "0xff0000";
-       MY(color_max) = "0xffa2a2";
-       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_neutral_explode) {
-       MY(alpha_min) = 644;
-       MY(alpha_max) = 956;
-       MY(alpha_fade) = 2500;
-       MY(color_min) = "0xff0000";
-       MY(color_max) = "0xffa2a2";
-       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
 
 DEF(shockwave_attack);
 SUB(shockwave_attack) {