]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/effects/effectinfo.inc
Merge branch 'master' into Mario/csqc_muzzleflash
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / effects / effectinfo.inc
index 7a0fc66e4ac21666542be1a885cc52da2821abae..80c6bbacf96f9ec6426913aa227862bc2c90bf64 100644 (file)
@@ -1,3 +1,13 @@
+// docs: https://www.quakewiki.net/darkplaces-wiki/effectinfo-scripting-reference/
+// use `cl_particles_reloadeffects` to reload effects without restarting engine
+// use `chase_active 1` and `cl_lockview 1` to see effects from different perspectives
+// `dumpeffectinfo` currently doesn't work so edit effectinfo.txt manually, just try to keep the files in sync
+// always add new effects to the bottom of the list
+
+// `tex` are indices into particles/particlefont.tga (see particles/particlefont-template.tga for numbers)
+// the first index is inclusive, second exclusive (so `tex 0 8` will use images 0 though 7)
+// unless they're equal (`tex 69 69` is the same as `tex 69 70`)
+
 // item respawn effect
 DEF(TE_WIZSPIKE);
 // flare particle and light
@@ -4410,20 +4420,50 @@ SUB(flac_explode) {
 
 // bullet trail (somewhat like a tracer)
 DEF(tr_bullet);
+SUB(tr_bullet) {
+       MY(alpha) = '500 600 10000';
+       MY(color_min) = "0xf03000";
+       MY(color_max) = "0xff6010";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = -3;
+       MY(size_min) = 0.6;
+       MY(size_max) = 0.8;
+       my(tex_min) = 200;
+       my(tex_max) = 200;
+       MY(type) = "beam";
+}
+SUB(tr_bullet) {
+       MY(airfriction) = -4;
+       MY(alpha) = '256 256 350';
+       MY(color_min) = "0x202020";
+       MY(color_max) = "0x404040";
+       MY(notunderwater) = true;
+       MY(sizeincrease) = 0.4;
+       MY(size_min) = 1;
+       MY(size_max) = 2;
+       MY(tex_min) = 0;
+       MY(tex_max) = 8;
+       MY(trailspacing) = 16;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '4 4 4';
+}
 SUB(tr_bullet) {
        MY(alpha_min) = 256;
        MY(alpha_max) = 256;
-       MY(alpha_fade) = 2560;
-       MY(color_min) = "0xff8960";
-       MY(color_max) = "0xff8533";
-       MY(size_min) = 4;
-       MY(size_max) = 4;
-       MY(stretchfactor) = 0.200000;
-       MY(tex_min) = 70;
-       MY(tex_max) = 70;
-       MY(trailspacing) = 750;
-       MY(type) = "spark";
-       MY(velocitymultiplier) = 3;
+       MY(alpha_fade) = 128;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 0.5;
+       MY(size_max) = 0.6;
+       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';
 }
 
 // smoke emitter for small pipes
@@ -7111,8 +7151,8 @@ SUB(tr_hagar) {
 }
 
 // laser damage effect
-DEF(damage_laser);
-SUB(damage_laser) {
+DEF(damage_blaster);
+SUB(damage_blaster) {
        MY(airfriction) = -0.350000;
        MY(alpha_min) = 128;
        MY(alpha_max) = 16;
@@ -7173,8 +7213,8 @@ SUB(damage_shotgun) {
 }
 
 // shotgun damage effect, alien blood
-DEF(damage_shotgun_alien);
-SUB(damage_shotgun_alien) {
+DEF(alien_damage_shotgun);
+SUB(alien_damage_shotgun) {
        MY(airfriction) = 1;
        MY(alpha_min) = 256;
        MY(alpha_max) = 256;
@@ -7197,7 +7237,7 @@ SUB(damage_shotgun_alien) {
        MY(velocitymultiplier) = 5;
 }
 // blood mist
-SUB(damage_shotgun_alien) {
+SUB(alien_damage_shotgun) {
        MY(alpha_min) = 100;
        MY(alpha_max) = 256;
        MY(alpha_fade) = 400;
@@ -7212,8 +7252,8 @@ SUB(damage_shotgun_alien) {
 }
 
 // shotgun damage effect, robot blood
-DEF(damage_shotgun_robot);
-SUB(damage_shotgun_robot) {
+DEF(robot_damage_shotgun);
+SUB(robot_damage_shotgun) {
        MY(airfriction) = 1;
        MY(alpha_min) = 256;
        MY(alpha_max) = 256;
@@ -7236,7 +7276,7 @@ SUB(damage_shotgun_robot) {
        MY(velocitymultiplier) = 5;
 }
 // blood mist
-SUB(damage_shotgun_robot) {
+SUB(robot_damage_shotgun) {
        MY(alpha_min) = 100;
        MY(alpha_max) = 256;
        MY(alpha_fade) = 400;
@@ -7251,8 +7291,8 @@ SUB(damage_shotgun_robot) {
 }
 
 // machinegun damage effect, normal blood
-DEF(damage_uzi);
-SUB(damage_uzi) {
+DEF(damage_machinegun);
+SUB(damage_machinegun) {
        MY(airfriction) = 1;
        MY(alpha_min) = 256;
        MY(alpha_max) = 256;
@@ -7275,7 +7315,7 @@ SUB(damage_uzi) {
        MY(velocitymultiplier) = 5;
 }
 // blood mist
-SUB(damage_uzi) {
+SUB(damage_machinegun) {
        MY(alpha_min) = 100;
        MY(alpha_max) = 256;
        MY(alpha_fade) = 400;
@@ -7289,8 +7329,8 @@ SUB(damage_uzi) {
 }
 
 // machinegun damage effect, alien blood
-DEF(damage_uzi_alien);
-SUB(damage_uzi_alien) {
+DEF(alien_damage_machinegun);
+SUB(alien_damage_machinegun) {
        MY(airfriction) = 1;
        MY(alpha_min) = 256;
        MY(alpha_max) = 256;
@@ -7313,7 +7353,7 @@ SUB(damage_uzi_alien) {
        MY(velocitymultiplier) = 5;
 }
 // blood mist
-SUB(damage_uzi_alien) {
+SUB(alien_damage_machinegun) {
        MY(alpha_min) = 100;
        MY(alpha_max) = 256;
        MY(alpha_fade) = 400;
@@ -7327,8 +7367,8 @@ SUB(damage_uzi_alien) {
 }
 
 // machinegun damage effect, robot blood
-DEF(damage_uzi_robot);
-SUB(damage_uzi_robot) {
+DEF(robot_damage_machinegun);
+SUB(robot_damage_machinegun) {
        MY(airfriction) = 1;
        MY(alpha_min) = 256;
        MY(alpha_max) = 256;
@@ -7351,7 +7391,7 @@ SUB(damage_uzi_robot) {
        MY(velocitymultiplier) = 5;
 }
 // blood mist
-SUB(damage_uzi_robot) {
+SUB(robot_damage_machinegun) {
        MY(alpha_min) = 100;
        MY(alpha_max) = 256;
        MY(alpha_fade) = 400;
@@ -7404,8 +7444,8 @@ SUB(damage_minelayer) {
 }
 
 // mortar damage effect
-DEF(damage_grenadelauncher);
-SUB(damage_grenadelauncher) {
+DEF(damage_mortar);
+SUB(damage_mortar) {
        MY(alpha_min) = 512;
        MY(alpha_max) = 64;
        MY(alpha_fade) = 1024;
@@ -7424,7 +7464,7 @@ SUB(damage_grenadelauncher) {
        MY(velocityjitter) = '22.0 22.0 50.0';
 }
 // smoke
-SUB(damage_grenadelauncher) {
+SUB(damage_mortar) {
        MY(alpha_min) = 128;
        MY(alpha_max) = 32;
        MY(alpha_fade) = 128;
@@ -7442,6 +7482,73 @@ SUB(damage_grenadelauncher) {
        MY(velocityjitter) = '11.0 11.0 50.0';
 }
 
+// arc damage effect
+DEF(damage_arc);
+SUB(damage_arc) {
+       MY(airfriction) = -0.650000;
+       MY(alpha_min) = 48;
+       MY(alpha_max) = 8;
+       MY(alpha_fade) = 48;
+       MY(color_min) = "0x66ffff";
+       MY(color_max) = "0x2288ff";
+       MY(count) = 2;
+       MY(gravity) = -0.000100;
+       MY(liquidfriction) = 0.600000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '2.0 2.0 2.0';
+       MY(startangle_min) = 180;
+       MY(startangle_max) = 360;
+       MY(spin_min) = -30;
+       MY(spin_max) = 30;
+       MY(sizeincrease) = -14;
+       MY(size_min) = 4;
+       MY(size_max) = 8;
+       MY(tex_min) = 47;
+       MY(tex_max) = 47;
+       MY(type) = "static";
+       MY(velocityjitter) = '6.0 6.0 12.0';
+}
+// plasma smoke
+SUB(damage_arc) {
+       MY(airfriction) = -0.500000;
+       MY(alpha_min) = 64;
+       MY(alpha_max) = 16;
+       MY(alpha_fade) = 64;
+       MY(color_min) = "0x2244ff";
+       MY(color_max) = "0x002266";
+       MY(count) = 4;
+       MY(notunderwater) = true;
+       MY(originjitter) = '3.0 3.0 3.0';
+       MY(startangle_max) = 180;
+       MY(spin_min) = -30;
+       MY(spin_max) = 30;
+       MY(sizeincrease) = 10;
+       MY(size_min) = 3;
+       MY(size_max) = 6;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '0.3 0.3 0.5';
+}
+// bouncing sparks
+SUB(damage_arc) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 768;
+       MY(alpha_max) = 64;
+       MY(alpha_fade) = 256;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x003090";
+       MY(color_max) = "0x00CCFF";
+       MY(count) = 0.500000;
+       MY(gravity) = 0.150000;
+       MY(liquidfriction) = 0.600000;
+       MY(size_min) = 1;
+       MY(size_max) = 1;
+       MY(tex_min) = 66;
+       MY(tex_max) = 68;
+       MY(type) = "spark";
+       MY(velocityjitter) = '24.0 24.0 24.0';
+}
+
 // electro damage effect
 DEF(damage_electro);
 SUB(damage_electro) {
@@ -7598,8 +7705,8 @@ SUB(damage_hlac) {
 }
 
 // vortex damage effect
-DEF(damage_nex);
-SUB(damage_nex) {
+DEF(damage_vortex);
+SUB(damage_vortex) {
        MY(airfriction) = -0.500000;
        MY(alpha_min) = 64;
        MY(alpha_max) = 8;
@@ -7623,7 +7730,7 @@ SUB(damage_nex) {
        MY(velocityjitter) = '8.0 8.0 16.0';
 }
 // plasma smoke
-SUB(damage_nex) {
+SUB(damage_vortex) {
        MY(airfriction) = -0.350000;
        MY(alpha_min) = 64;
        MY(alpha_max) = 16;
@@ -7643,7 +7750,7 @@ SUB(damage_nex) {
        MY(velocityjitter) = '0.5 0.5 0.8';
 }
 // bouncing sparks
-SUB(damage_nex) {
+SUB(damage_vortex) {
        MY(airfriction) = 2;
        MY(alpha_min) = 255;
        MY(alpha_max) = 255;
@@ -7664,8 +7771,8 @@ SUB(damage_nex) {
 }
 
 // vaporizer damage effect
-DEF(damage_minstanex);
-SUB(damage_minstanex) {
+DEF(damage_vaporizer);
+SUB(damage_vaporizer) {
        MY(airfriction) = -0.500000;
        MY(alpha_min) = 64;
        MY(alpha_max) = 8;
@@ -7689,7 +7796,7 @@ SUB(damage_minstanex) {
        MY(velocityjitter) = '8.0 8.0 16.0';
 }
 // plasma smoke
-SUB(damage_minstanex) {
+SUB(damage_vaporizer) {
        MY(airfriction) = -0.350000;
        MY(alpha_min) = 64;
        MY(alpha_max) = 16;
@@ -7709,7 +7816,7 @@ SUB(damage_minstanex) {
        MY(velocityjitter) = '0.5 0.5 0.8';
 }
 // bouncing sparks
-SUB(damage_minstanex) {
+SUB(damage_vaporizer) {
        MY(airfriction) = 2;
        MY(alpha_min) = 255;
        MY(alpha_max) = 255;
@@ -7961,8 +8068,8 @@ SUB(damage_fireball) {
 }
 
 // rocketlauncher damage effect
-DEF(damage_rocketlauncher);
-SUB(damage_rocketlauncher) {
+DEF(damage_devastator);
+SUB(damage_devastator) {
        MY(alpha_min) = 512;
        MY(alpha_max) = 64;
        MY(alpha_fade) = 1024;
@@ -7981,7 +8088,7 @@ SUB(damage_rocketlauncher) {
        MY(velocityjitter) = '22.0 22.0 30.0';
 }
 // smoke
-SUB(damage_rocketlauncher) {
+SUB(damage_devastator) {
        MY(alpha_min) = 128;
        MY(alpha_max) = 32;
        MY(alpha_fade) = 128;
@@ -8529,6 +8636,22 @@ SUB(arc_lightning) {
        MY(velocityjitter) = '250.0 250.0 250.0';
        MY(velocitymultiplier) = 20;
 }
+// impact smoke
+SUB(arc_lightning) {
+       MY(alpha_min) = 40;
+       MY(alpha_max) = 40;
+       MY(alpha_fade) = 350;
+       MY(color_min) = "0x80C0FF";
+       MY(color_max) = "0x80C0FF";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = 400;
+       MY(size_min) = 4;
+       MY(size_max) = 4;
+       MY(tex_min) = 38;
+       MY(tex_max) = 38;
+       MY(type) = "smoke";
+       MY(velocitymultiplier) = 100;
+}
 
 DEF(arc_beam);
 // sparks on beam
@@ -8731,3 +8854,257 @@ SUB(arc_overheat_fire) {
 #include "effectinfo_buffs.inc"
 
 #include "effectinfo_instagib.inc"
+
+DEF(arc_muzzleflash);
+SUB(arc_muzzleflash) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0x00ff00";
+       MY(color_max) = "0x8f4333";
+       MY(count) = 2;
+       MY(lightcolor) = '0.3 2.0 0.2';
+       MY(lightradiusfade) = 2000;
+       MY(lightradius) = 200;
+       MY(originjitter) = '1.5 1.5 1.5';
+       MY(size_min) = 5;
+       MY(size_max) = 5;
+       MY(tex_max) = 8;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '6.0 6.0 6.0';
+       MY(velocitymultiplier) = 0.010000;
+}
+SUB(arc_muzzleflash) {
+       MY(airfriction) = 12;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 1024;
+       MY(color_min) = "0x00ff00";
+       MY(color_max) = "0x8f4333";
+       MY(count) = 15;
+       MY(originjitter) = '1.0 1.0 1.0';
+       MY(startangle_min) = -180;
+       MY(startangle_max) = 180;
+       MY(spin_min) = -400;
+       MY(spin_max) = 400;
+       MY(size_min) = 5;
+       MY(size_max) = 10;
+       MY(stretchfactor) = 2;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "spark";
+       MY(velocityjitter) = '200.0 200.0 200.0';
+       MY(velocitymultiplier) = 0.500000;
+}
+
+DEF(arc_bolt_explode);
+// decal
+SUB(arc_bolt_explode) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(countabsolute) = 1;
+       MY(lightcolor) = '8.0 4.0 1.0';
+       MY(lightradiusfade) = 400;
+       MY(lightradius) = 120;
+       MY(originjitter) = '14.0 14.0 14.0';
+       MY(size_min) = 28;
+       MY(size_max) = 38;
+       MY(tex_min) = 8;
+       MY(tex_max) = 16;
+       MY(type) = "decal";
+}
+// fire effect which make bright dot inside
+SUB(arc_bolt_explode) {
+       MY(airfriction) = 8;
+       MY(alpha_min) = 80;
+       MY(alpha_max) = 200;
+       MY(alpha_fade) = 356;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x00ffff";
+       MY(color_max) = "0x00ffff";
+       MY(count) = 3.500000;
+       MY(liquidfriction) = 8;
+       MY(notunderwater) = true;
+       MY(originjitter) = '8.0 8.0 8.0';
+       MY(sizeincrease) = 5;
+       MY(size_min) = 16;
+       MY(size_max) = 26;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '156.0 156.0 156.0';
+}
+// fire effect which expands then slows
+SUB(arc_bolt_explode) {
+       MY(airfriction) = 12;
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 456;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x00ff00";
+       MY(color_max) = "0x8f4333";
+       MY(count) = 12;
+       MY(liquidfriction) = 8;
+       MY(notunderwater) = true;
+       MY(originjitter) = '8.0 8.0 8.0';
+       MY(sizeincrease) = 15;
+       MY(size_min) = 20;
+       MY(size_max) = 26;
+       MY(tex_min) = 48;
+       MY(tex_max) = 55;
+       MY(type) = "static";
+       MY(velocityjitter) = '286.0 286.0 286.0';
+}
+// underwater bubbles
+SUB(arc_bolt_explode) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 64;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(count) = 16;
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 0.250000;
+       MY(originjitter) = '16.0 16.0 16.0';
+       MY(size_min) = 3;
+       MY(size_max) = 3;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '96.0 96.0 96.0';
+}
+// bouncing sparks
+SUB(arc_bolt_explode) {
+       MY(airfriction) = 1;
+       MY(alpha_min) = 644;
+       MY(alpha_max) = 956;
+       MY(alpha_fade) = 684;
+       MY(bounce) = 1.600000;
+       MY(color_min) = "0x00ff00";
+       MY(color_max) = "0x8f4333";
+       MY(count) = 16;
+       MY(gravity) = 1;
+       MY(liquidfriction) = 0.800000;
+       MY(notunderwater) = true;
+       MY(originjitter) = '16.0 16.0 16.0';
+       MY(size_min) = 1;
+       MY(size_max) = 0.100000;
+       MY(tex_min) = 40;
+       MY(tex_max) = 40;
+       MY(type) = "spark";
+       MY(velocityjitter) = '224.0 224.0 224.0';
+       MY(velocityoffset) = '0.0 0.0 80.0';
+}
+
+// weak bullet trail (somewhat like a tracer)
+DEF(tr_bullet_weak);
+SUB(tr_bullet_weak) {
+       MY(alpha) = '75 100 3000';
+       MY(color_min) = "0xf03000";
+       MY(color_max) = "0xff6010";
+       MY(countabsolute) = 1;
+       MY(sizeincrease) = -3;
+       MY(size_min) = 0.6;
+       MY(size_max) = 0.8;
+       my(tex_min) = 200;
+       my(tex_max) = 200;
+       MY(type) = "beam";
+}
+SUB(tr_bullet_weak) {
+       MY(airfriction) = -4;
+       MY(alpha) = '256 256 350';
+       MY(color_min) = "0x202020";
+       MY(color_max) = "0x404040";
+       MY(notunderwater) = true;
+       MY(sizeincrease) = 0.4;
+       MY(size_min) = 1;
+       MY(size_max) = 2;
+       MY(tex_min) = 0;
+       MY(tex_max) = 8;
+       MY(trailspacing) = 16;
+       MY(type) = "smoke";
+       MY(velocityjitter) = '4 4 4';
+}
+SUB(tr_bullet_weak) {
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 128;
+       MY(bounce) = 1.500000;
+       MY(color_min) = "0x404040";
+       MY(color_max) = "0x808080";
+       MY(gravity) = -0.125000;
+       MY(liquidfriction) = 4;
+       MY(size_min) = 0.5;
+       MY(size_max) = 0.6;
+       MY(tex_min) = 62;
+       MY(tex_max) = 62;
+       MY(trailspacing) = 32;
+       MY(type) = "bubble";
+       MY(underwater) = true;
+       MY(velocityjitter) = '16.0 16.0 16.0';
+}
+
+// Vaporizer hit effect
+DEF(TE_TEI_G3_HIT);
+SUB(TE_TEI_G3_HIT) {
+       MY(alpha_min) = 128;
+       MY(alpha_max) = 128;
+       MY(alpha_fade) = 256;
+       MY(color_min) = "0xFFFFFF";
+       MY(color_max) = "0xFFFFFF";
+       MY(countabsolute) = 1;
+       MY(size_min) = 8;
+       MY(size_max) = 8;
+       MY(tex_min) = 200;
+       MY(tex_max) = 200;
+       MY(type) = "beam";
+}
+SUB(TE_TEI_G3_HIT) /* rings */ {
+       MY(airfriction) = -4;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0xFFFFFF";
+       MY(color_max) = "0xFFFFFF";
+       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_HIT) {
+       MY(airfriction) = -4;
+       MY(alpha_min) = 256;
+       MY(alpha_max) = 256;
+       MY(alpha_fade) = 512;
+       MY(color_min) = "0xFFFFFF";
+       MY(color_max) = "0xFFFFFF";
+       MY(sizeincrease) = -6;
+       MY(size_min) = 10;
+       MY(size_max) = 10;
+       MY(trailspacing) = 40;
+       MY(type) = "smoke";
+}
+
+// respawn ghosts effect
+DEF(RESPAWN_GHOST);
+SUB(RESPAWN_GHOST) {
+       MY(count) = 75;
+       MY(type) = "static";
+       MY(color_min) = "0xA0A0A0";
+       MY(color_max) = "0xFFFFFF";
+       MY(size_min) = 2;
+       MY(size_max) = 2;
+       MY(alpha_min) = 32;
+       MY(alpha_max) = 64;
+       MY(alpha_fade) = 128;
+       MY(airfriction) = 1;
+       MY(liquidfriction) = 4;
+       MY(originoffset) = '0 0 -8';
+       MY(originjitter) = '28 28 16';
+       MY(velocityjitter) = '0 0 256';
+}
+
+// always add new effects to the bottom of the list. And keep this comment in the bottom line of this file!