From fbf48a84dca692890fd7bb2a9bf7f227fdcc7acc Mon Sep 17 00:00:00 2001 From: TimeServ Date: Sun, 9 Oct 2005 22:06:52 +0000 Subject: [PATCH] fix to radomvelvert rehashed particle sets (spikeset, faithful, and highfps are now complete sets), added minimal fix to gl crosshair... git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@1458 fc73d0e0-1445-4013-8a0c-d673dee63da5 --- engine/client/r_part.c | 21 +- engine/client/r_partset.c | 2664 +++++++++++++++++-------------------- engine/client/r_partset.h | 1 + engine/gl/gl_draw.c | 2 +- 4 files changed, 1217 insertions(+), 1471 deletions(-) diff --git a/engine/client/r_part.c b/engine/client/r_part.c index 1e372ec3e..d8aeb0a85 100644 --- a/engine/client/r_part.c +++ b/engine/client/r_part.c @@ -593,9 +593,13 @@ void P_ParticleEffect_f(void) ptype->inwater = assoc; } else if (!strcmp(var, "colorindex")) + { + if (Cmd_Argc()>2) + ptype->colorrand = atof(Cmd_Argv(2)); ptype->colorindex = atoi(value); + } else if (!strcmp(var, "colorrand")) - ptype->colorrand = atoi(value); + ptype->colorrand = atoi(value); // now obsolete else if (!strcmp(var, "citracer")) ptype->flags |= PT_CITRACER; @@ -1415,6 +1419,8 @@ void P_NewServer(void) Cbuf_AddText(particle_set_spikeset, RESTRICT_SERVER); else if (!stricmp(r_particlesdesc.string, "highfps")) Cbuf_AddText(particle_set_highfps, RESTRICT_SERVER); + else if (!stricmp(r_particlesdesc.string, "minimal")) + Cbuf_AddText(particle_set_minimal, RESTRICT_SERVER); else { char *file = COM_LoadMallocFile(va("particles/%s.cfg", r_particlesdesc.string)); @@ -2625,6 +2631,7 @@ static void P_ParticleTrailDraw (vec3_t startpos, vec3_t end, part_type_t *ptype float veladd = -ptype->veladd; float randvel = ptype->randomvel; + float randvelvert = ptype->randomvelvert; float step; float stop; float tdegree = 2*M_PI/256; /* MSVC whine */ @@ -2838,7 +2845,7 @@ static void P_ParticleTrailDraw (vec3_t startpos, vec3_t end, part_type_t *ptype // no offset or areaspread for these particles... p->vel[0] = vec[0]*veladd+crandom()*randvel; p->vel[1] = vec[1]*veladd+crandom()*randvel; - p->vel[2] = vec[2]*veladd+crandom()*randvel; + p->vel[2] = vec[2]*veladd+crandom()*randvelvert; VectorCopy(start, p->org); } @@ -2864,7 +2871,7 @@ static void P_ParticleTrailDraw (vec3_t startpos, vec3_t end, part_type_t *ptype p->vel[0] += vec[0]*veladd+crandom()*randvel; p->vel[1] += vec[1]*veladd+crandom()*randvel; - p->vel[2] = vec[2]*veladd+crandom()*randvel; + p->vel[2] = vec[2]*veladd+crandom()*randvelvert; p->org[0] += start[0]; p->org[1] += start[1]; @@ -2886,7 +2893,7 @@ static void P_ParticleTrailDraw (vec3_t startpos, vec3_t end, part_type_t *ptype p->vel[0] = vec[0]*veladd+crandom()*randvel + right[0]*tcos + up[0]*tsin; p->vel[1] = vec[1]*veladd+crandom()*randvel + right[1]*tcos + up[1]*tsin; - p->vel[2] = vec[2]*veladd+crandom()*randvel + right[2]*tcos + up[2]*tsin; + p->vel[2] = vec[2]*veladd+crandom()*randvelvert + right[2]*tcos + up[2]*tsin; } break; // TODO: directionalize SM_BALL/SM_CIRCLE/SM_DISTBALL @@ -2901,7 +2908,7 @@ static void P_ParticleTrailDraw (vec3_t startpos, vec3_t end, part_type_t *ptype p->vel[0] = vec[0]*veladd+crandom()*randvel + p->org[0]*ptype->offsetspread; p->vel[1] = vec[1]*veladd+crandom()*randvel + p->org[1]*ptype->offsetspread; - p->vel[2] = vec[2]*veladd+crandom()*randvel + p->org[2]*ptype->offsetspreadvert; + p->vel[2] = vec[2]*veladd+crandom()*randvelvert + p->org[2]*ptype->offsetspreadvert; p->org[0] = p->org[0]*ptype->areaspread + start[0]; p->org[1] = p->org[1]*ptype->areaspread + start[1]; @@ -2925,7 +2932,7 @@ static void P_ParticleTrailDraw (vec3_t startpos, vec3_t end, part_type_t *ptype p->vel[0] = vec[0]*veladd+crandom()*randvel + p->org[0]*ptype->offsetspread; p->vel[1] = vec[1]*veladd+crandom()*randvel + p->org[1]*ptype->offsetspread; - p->vel[2] = vec[2]*veladd+crandom()*randvel + p->org[2]*ptype->offsetspreadvert; + p->vel[2] = vec[2]*veladd+crandom()*randvelvert + p->org[2]*ptype->offsetspreadvert; p->org[0] = p->org[0]*ptype->areaspread + start[0]; p->org[1] = p->org[1]*ptype->areaspread + start[1]; @@ -2939,7 +2946,7 @@ static void P_ParticleTrailDraw (vec3_t startpos, vec3_t end, part_type_t *ptype p->vel[0] = vec[0]*veladd+crandom()*randvel + p->org[0]*ptype->offsetspread; p->vel[1] = vec[1]*veladd+crandom()*randvel + p->org[1]*ptype->offsetspread; - p->vel[2] = vec[2]*veladd+crandom()*randvel + p->org[2]*ptype->offsetspreadvert; + p->vel[2] = vec[2]*veladd+crandom()*randvelvert + p->org[2]*ptype->offsetspreadvert; p->org[0] = p->org[0]*ptype->areaspread + start[0]; p->org[1] = p->org[1]*ptype->areaspread + start[1]; diff --git a/engine/client/r_partset.c b/engine/client/r_partset.c index 53f912db9..e2c371637 100644 --- a/engine/client/r_partset.c +++ b/engine/client/r_partset.c @@ -1,1554 +1,1292 @@ #include "r_partset.h" - char *particle_set_spikeset = -#if 1 +// spikeset, originally by Spike +// with contributions from TimeServ, purplehaze, Jedilamma +// and some others I probably forgot to mention ///////////////////////////////////////////////// //rocket trails (derived from purplehaze's, with only minor tweeks) - "r_part rockettrail\n" -"{\n" -" texture \"particles/smoke.tga\"\n" -" count 0.25\n" -" scale 30\n" -" alpha 0.3\n" -" die 1.4\n" -" diesubrand 0.7\n" -" randomvel 1\n" -" veladd 0\n" -" red 255\n" -" green 50 \n" -" blue 10\n" -" reddelta -255\n" -" greendelta -25\n" -" bluedelta -5\n" -" gravity -25\n" -" scalefactor 1\n" -" assoc rocketsmoke\n" -"}\n" +"{\n" +"texture \"particles/smoke.tga\"\n" +"count 0.25\n" +"scale 30\n" +"alpha 0.3\n" +"die 1.4\n" +"diesubrand 0.7\n" +"randomvel 1\n" +"rgb 255 50 10\n" +"rgbdelta -255 -25 -5\n" +"gravity -25\n" +"scalefactor 1\n" +"assoc rocketsmoke\n" +"}\n" "r_part t_rocket\n" -"{\n" -" texture \"particles/rfire\"\n" -" count 0.5\n" -" scale 10\n" -" alpha 0.6\n" -" die 0.25\n" -" randomvel 0\n" -" veladd 0\n" -" red 255\n" -" green 192\n" -" blue 128\n" -" reddelta -14\n" -" greendelta -300\n" -" bluedelta -300\n" -" blend add\n" -" assoc rockettrail\n" -" gravity 0\n" -" scalefactor 0.8\n" -" scaledelta -10\n" -"}\n" +"{\n" +"texture \"particles/rfire\"\n" +"count 0.5\n" +"scale 10\n" +"alpha 0.6\n" +"die 0.25\n" +"rgb 255 192 128\n" +"rgbdelta -14 -300 -300\n" +"blend add\n" +"assoc rockettrail\n" +"scalefactor 0.8\n" +"scaledelta -10\n" +"}\n" "r_part rocketsmoke\n" -"{\n" -" texture \"particles/rtrail\"\n" -" step 8\n" -" scale 7.5\n" -" alpha 0.8\n" -" die 2\n" -" diesubrand 0\n" -" randomvel 3\n" -" veladd 0\n" -" red 10\n" -" green 10\n" -" blue 10\n" -" reddelta 0\n" -" greendelta 0\n" -" reddelta 0\n" -" gravity 1\n" -" blend modulate\n" -" spawnmode spiral\n" -" scalefactor 1\n" -" offsetspread 10\n" -" offsetspreadvert 10\n" -" areaspread 0\n" -" areaspreadvert 0\n" -"}\n" -#elif 0 +"{\n" +"texture \"particles/rtrail\"\n" +"step 8\n" +"scale 7.5\n" +"alpha 0.8\n" +"die 2\n" +"randomvel 3\n" +"rgb 10 10 10\n" +"blend modulate\n" +"spawnmode spiral\n" +"scalefactor 1\n" +"spawnvel 10\n" +"}\n" + "r_part rockettail\n" -"{\n" -" texture \"particles/rtrail\"\n" -" step 7\n" -" scale 10\n" -" alpha 0.3\n" -" die 10\n" -" randomvel 64\n" -" veladd 512\n" -" red 192\n" -" green 192\n" -" blue 192\n" -" gravity 100\n" -" cliptype rockettail\n" -"}\n" -"\n" -"r_part t_rocket\n" -"{\n" -" texture \"particles/rtrail\"\n" -" step 4\n" -" scale 10\n" -" alpha 0.3\n" -" die 0.7\n" -" randomvel 32\n" -" veladd 32\n" -" red 255\n" -" green 198\n" -" blue 128\n" -" reddelta -64\n" -" greendelta 0\n" -" reddelta 0\n" -" gravity -100\n" -" blend add\n" -" assoc rockettail\n" -"}\n" -#else -"r_part t_rocket\n" -"{\n" -" texture \"\"\n" -" gravity -200\n" -" step 40\n" -" scale 10\n" -" scaledelta 50\n" -" alpha 0.5\n" -" die 0.5\n" -" red 254\n" -" green 128\n" -" blue 64\n" -" blend add\n" -" isbeam\n" -" spawnmode spiral\n" -" offsetspread 5\n" -"}\n" -#endif +"{\n" +"texture \"particles/rtrail\"\n" +"step 7\n" +"scale 10\n" +"alpha 0.3\n" +"die 10\n" +"randomvel 64\n" +"veladd 512\n" +"rgb 192 192 192\n" +"gravity 100\n" +"cliptype rockettail\n" +"}\n" + +"r_part t_altrocket\n" +"{\n" +"texture \"particles/rtrail\"\n" +"step 4\n" +"scale 10\n" +"alpha 0.3\n" +"die 0.7\n" +"randomvel 32\n" +"veladd 32\n" +"rgb 255 198 128\n" +"rgbdelta -64 0 0\n" +"gravity -100\n" +"blend add\n" +"assoc rockettail\n" +"}\n" //TeamFortress railgun (by model - this is also the effect used with the TE_LIGHTNING1 extension) "r_part te_railtrail\n" -"{\n" -" texture \"particles/b_rocket3\"\n" -" step 15\n" -" scale 10\n" -" alpha 1\n" -" die 1\n" -" red 255\n" -" green 255\n" -" blue 255\n" -" blend add\n" -" isbeam\n" -" spawnmode spiral\n" -" offsetspread 100\n" -" cliptype te_railtrail\n" -" friction 0.7\n" -"}\n" -"r_trail progs/e_spike1.mdl te_railtrail\n" - +"{\n" +"texture \"particles/b_rocket3\"\n" +"step 15\n" +"scale 10\n" +"die 1\n" +"rgb 255 255 255\n" +"blend add\n" +"type beam\n" +"spawnmode spiral\n" +"spawnorg 100 0\n" +"cliptype te_railtrail\n" +"friction 0.7\n" +"}\n" "r_part t_grenade\n" -"{\n" -" texture \"particles/rtrail\"\n" -" step 10\n" -" scale 10\n" -" alpha 0.3\n" -" die 10\n" -" randomvel 32\n" -" veladd 16\n" -" red 128\n" -" green 128\n" -" blue 128\n" -" reddelta 0\n" -" greendelta 0\n" -" reddelta 0\n" -" gravity 100\n" -"}\n" +"{\n" +"texture \"particles/rtrail\"\n" +"step 10\n" +"scale 10\n" +"alpha 0.3\n" +"die 10\n" +"randomvel 32\n" +"veladd 16\n" +"rgb 128 128 128\n" +"rgbdelta 0 0 0\n" +"gravity 100\n" +"}\n" //cool's blood trails (cos they're cooler) "r_part t_gib\n" -"{\n" -" texture \"particles/blood\"\n" -" step 32\n" -" scale 64\n" -" alpha 0.6\n" -" die 1\n" -" randomvel 64\n" -" veladd 10\n" -" rotationspeed 90\n" -" rotationstart 0 360\n" -" red 128\n" -" green 0\n" -" blue 0\n" -" blend blend\n" -" gravity 200\n" -" scalefactor 0.8\n" -" scaledelta -10\n" -" stains 5\n" -"}\n" -"r_part t_zomgib\n" -"{\n" -" texture \"particles/blood\"\n" -" step 64\n" -" scale 64\n" -" alpha 0.6\n" -" die 1\n" -" randomvel 64\n" -" veladd 10\n" -" rotationspeed 90\n" -" rotationstart 0 360\n" -" red 32\n" -" green 0\n" -" blue 0\n" -" blend blend\n" -" gravity 200\n" -" scalefactor 0.8\n" -" scaledelta -10\n" -" stains 5\n" -"}\n" +"{\n" +"texture \"particles/blood\"\n" +"step 32\n" +"scale 64\n" +"alpha 0.6\n" +"die 1\n" +"randomvel 64\n" +"veladd 10\n" +"rotationspeed 90\n" +"rotationstart 0 360\n" +"rgb 128 0 0\n" +"gravity 200\n" +"scalefactor 0.8\n" +"scaledelta -10\n" +"stains 5\n" +"}\n" + +"r_part t_zomgib\n" +"{\n" +"texture \"particles/blood\"\n" +"step 64\n" +"scale 64\n" +"alpha 0.6\n" +"die 1\n" +"randomvel 64\n" +"veladd 10\n" +"rotationspeed 90\n" +"rotationstart 0 360\n" +"rgb 32 0 0\n" +"gravity 200\n" +"scalefactor 0.8\n" +"scaledelta -10\n" +"stains 5\n" +"}\n" + +"r_part t_tracer\n" +"{\n" +"texture \"particles/tracer\"\n" +"scale 15\n" +"step 5\n" +"alpha 0.6\n" +"rgb 192 192 48\n" +"die 1\n" +"veladd 50\n" +"randomvel 50\n" +"friction 4\n" +"scalefactor 0.825\n" +"}\n" -"r_part t_tracer1\n" -"{\n" -"}\n" "r_part t_tracer2\n" -"{\n" -"}\n" +"{\n" +"texture \"particles/tracer\"\n" +"scale 15\n" +"step 5\n" +"alpha 0.6\n" +"die 1\n" +"rgb 192 96 48\n" +"veladd 50\n" +"randomvel 50\n" +"friction 4\n" +"scalefactor 0.825\n" +"}\n" + "r_part t_tracer3\n" -"{\n" -"}\n" +"{\n" +"texture \"particles/tracer\"\n" +"scale 10\n" +"scaledelta -10\n" +"step 5\n" +"alpha 0.9\n" +"die 0.75\n" +"rgb 192 96 192\n" +"veladd 20\n" +"randomvel 5\n" +"spawnmode spiral\n" +"spawnvel 60 0\n" +"friction 4\n" +"scalefactor 0.825\n" +"}\n" //qw blood "r_part te_lightningblood\n" -"{\n" -" texture \"particles/bloodtrail\"\n" -" count 1\n" -" scale 15\n" -" alpha 0.3\n" -" die 10\n" -" randomvel 32\n" -" veladd 32\n" -" red 192\n" -" green 0\n" -" blue 0\n" -" reddelta -128\n" -" greendelta 0\n" -" reddelta 0\n" -" gravity 100\n" +"{\n" +"texture \"particles/bloodtrail\"\n" +"count 1\n" +"scale 15\n" +"alpha 0.3\n" +"die 10\n" +"randomvel 32\n" +"veladd 32\n" +"rgb 192 0 0\n" +"rgbdelta -128 0 0\n" +"gravity 100\n" "friction 1\n" -" stains 1\n" -" blend add\n" -"}\n" +"stains 1\n" +"blend add\n" +"}\n" //qw blood "r_part te_blood\n" -"{\n" -" texture \"particles/blood\"\n" -" count 10\n" -" scale 10\n" -" alpha 0.3\n" -" die 2\n" -" randomvel 40\n" -" veladd 0\n" -" red 220\n" -" green 0\n" -" blue 0\n" -" reddelta -100\n" -" gravity 200\n" -" stains 2\n" -" scalefactor 0.9\n" -" rotationstart 0 360\n" -"}\n" +"{\n" +"texture \"particles/blood\"\n" +"count 10\n" +"scale 10\n" +"alpha 0.3\n" +"die 2\n" +"randomvel 40\n" +"rgb 220 0 0\n" +"rgbdelta -100 0 0\n" +"gravity 200\n" +"stains 2\n" +"scalefactor 0.9\n" +"rotationstart 0 360\n" +"}\n" //nq blood "r_part pe_73\n" -"{\n" -" texture \"particles/blood\"\n" -" count 1\n" -" scale 20\n" -" alpha 0.3\n" -" die 2\n" -" randomvel 40\n" -" veladd 0\n" -" red 220\n" -" green 0\n" -" blue 0\n" -" reddelta -100\n" -" gravity 200\n" -" stains 2\n" -" scalefactor 0.9\n" -" rotationstart 0 360\n" -"}\n" +"{\n" +"texture \"particles/blood\"\n" +"count 1\n" +"scale 20\n" +"alpha 0.3\n" +"die 2\n" +"randomvel 40\n" +"rgb 220 0 0\n" +"rgbdelta -100 0 0\n" +"gravity 200\n" +"stains 2\n" +"scalefactor 0.9\n" +"rotationstart 0 360\n" +"}\n" -#if 1 ///////////////////////////////////////////////// //rocket explosions - "r_part randomspark\n" -"{\n" -" count 1\n" -" texture \"ball\"\n" -" red 255\n" -" green 128\n" -" blue 76\n" -" gravity 400\n" -" spawnmode ball\n" -" die 2\n" -" blend add\n" -" randomvel 128\n" -" veladd 0\n" -" cliptype randomspark\n" -" type texturedspark\n" -"}\n" +"{\n" +"count 1\n" +"texture \"ball\"\n" +"rgb 255 128 76\n" +"gravity 400\n" +"spawnmode ball\n" +"die 2\n" +"blend add\n" +"randomvel 128\n" +"cliptype randomspark\n" +"type texturedspark\n" +"}\n" "r_part insaneshrapnal\n" -"{\n" -" count 24\n" -" texture \"ball\"\n" -" red 255\n" -" green 128\n" -" blue 76\n" -" gravity 400\n" -" die 2\n" -" blend add\n" -" randomvel 512\n" -" veladd 1\n" -" cliptype randomspark\n" -" clipcount 5\n" -" type texturedspark\n" -"}\n" +"{\n" +"count 24\n" +"texture \"ball\"\n" +"rgb 255 128 76\n" +"gravity 400\n" +"die 2\n" +"blend add\n" +"randomvel 512\n" +"veladd 1\n" +"cliptype randomspark\n" +"clipcount 5\n" +"type texturedspark\n" +"}\n" "r_part ember\n" -"{\n" -" count 1\n" -" texture \"particles/explosion\"\n" -" red 255\n" -" green 128\n" -" blue 76\n" -" alpha 0\n" -" scale 15\n" -" scalefactor 1\n" -" friction 8\n" -" gravity 50\n" -" die 1\n" -" blend add\n" -" randomvel 5\n" -" veladd 1\n" -" rampmode delta\n" //fade it in then out. -" ramp 0 0 0 -0.5 0\n" -" ramp 0 0 0 0.1 0\n" -" ramp 0 0 0 0.1 0\n" -" ramp 0 0 0 0.1 0\n" -" ramp 0 0 0 0.1 0\n" -" ramp 0 0 0 0.1 0\n" -"}\n" +"{\n" +"count 1\n" +"texture \"particles/explosion\"\n" +"rgb 255 128 76\n" +"alpha 0\n" +"scale 15\n" +"scalefactor 1\n" +"friction 8\n" +"gravity 50\n" +"die 1\n" +"blend add\n" +"randomvel 5\n" +"veladd 1\n" +"rampmode delta" //fade it in then out. +"ramp 0 0 0 -0.5 0\n" +"ramp 0 0 0 0.1 0\n" +"ramp 0 0 0 0.1 0\n" +"ramp 0 0 0 0.1 0\n" +"ramp 0 0 0 0.1 0\n" +"ramp 0 0 0 0.1 0\n" +"}\n" //the bits that fly off "r_part expgib\n" -"{\n" -" cliptype expgib\n" -" texture \"particles/explosion\"\n" -" count 16\n" -" scale 0\n" -" alpha 0\n" -" die 1\n" -" randomvel 128\n" -" veladd 64\n" -" veladd 0\n" -" gravity 50\n" -" friction 2\n" -" emit ember\n" -" emitinterval 0.01\n" -" spawnmode circle\n" -" assoc insaneshrapnal\n" -"}\n" +"{\n" +"cliptype expgib\n" +"texture \"particles/explosion\"\n" +"alpha 0\n" +"count 16\n" +"die 1\n" +"randomvel 128\n" +"gravity 50\n" +"friction 2\n" +"emit ember\n" +"emitinterval 0.01\n" +"spawnmode circle\n" +"assoc insaneshrapnal\n" +"}\n" //the heart of the explosion "r_part te_explosion\n" -"{\n" -" texture \"particles/explosion\"\n" -" count 1\n" -" scale 200\n" -" scalefactor 1\n" -" alpha 1\n" -" die 1\n" -" veladd 0\n" -" red 255\n" -" green 128\n" -" blue 76\n" -" reddelta 0\n" -" greendelta -32\n" -" reddelta -32\n" -" gravity 0\n" -" friction 1\n" -" stains 0\n" -" blend add\n" -" assoc expgib\n" -"}\n" -#else -"r_part sparks\n" -"{\n" -" texture \"\"\n" -" count 256\n" -" scale 1\n" -" alpha 0.7\n" -" die 1\n" -" randomvel 512\n" -" veladd 128\n" -" red 255\n" -" green 128\n" -" gravity 800\n" -" blend add\n" -" cliptype sparks\n" -" clipcount 1\n" -"}\n" -"\n" -"r_part shrapnal\n" -"{\n" -" texture \"\"\n" -" count 256\n" -" scale 1\n" -" alpha 0.7\n" -" die 1\n" -" randomvel 512\n" -" veladd 128\n" -" red 255\n" -" green 128\n" -" gravity 800\n" -" cliptype sparks\n" -" clipcount 3\n" -" blend add\n" -" assoc sparks\n" -"}\n" -"\n" -"r_part smallshrapnal\n" -"{\n" -" texture \"\"\n" -" count 32\n" -" scale 1\n" -" alpha 0.7\n" -" die 1\n" -" randomvel 512\n" -" veladd 128\n" -" red 255\n" -" green 128\n" -" gravity 800\n" -" cliptype sparks\n" -" clipcount 3\n" -" blend add\n" -" assoc sparks\n" -"}\n" -"\n" -"r_part emittest2\n" -"{\n" -" texture \"particles/bloodtrail\"\n" -" step 4\n" -" scalefactor 1\n" -" scale 10\n" -" alpha 1\n" -" die 1\n" -" diesubrand 0.5\n" -" randomvel 0\n" -" veladd 0\n" -" red 255\n" -" green 128\n" -" blue 76\n" -" reddelta 0\n" -" greendelta 0\n" -" reddelta 0\n" -" gravity -100\n" -" blend add\n" -"friction 0\n" -" stains 0\n" -"}\n" -"\n" -"r_part emittest\n" -"{\n" -" texture \"particles/bloodtrail\"\n" -" count 25\n" -" scale 15\n" -" scalefactor 1\n" -" alpha 1\n" -" die 10\n" -" diesubrand 5\n" -" randomvel 128\n" -" veladd 0\n" -" red 255\n" -" green 128\n" -" blue 76\n" -" gravity 800\n" -" blend add\n" -"friction 0\n" -" cliptype emittest\n" -" clipcount 1\n" -" stains 0\n" -" emit emittest2\n" -" emitinterval -1\n" -" assoc shrapnal\n" -" emitintervalrand 0\n" -"}\n" -"\n" - -//fixme: 16?!?! -"r_part te_explosion\n" -"{\n" -" texture \"particles/explosion\"\n" -" count 16\n" -" scale 100\n" -" alpha 0.7\n" -" die 4\n" -" randomvel 32\n" -" veladd 0\n" -" red 255\n" -" green 128\n" -" blue 76\n" -" reddelta 0\n" -" greendelta 0\n" -" reddelta 0\n" -" gravity 0\n" +"{\n" +"texture \"particles/explosion\"\n" +"count 1\n" +"scale 200\n" +"scalefactor 1\n" +"die 1\n" +"rgb 255 128 76\n" +"rgbdelta 0 -32 -32\n" "friction 1\n" -" stains 0\n" -" blend add\n" -" _assoc emittest\n" -" assoc shrapnal\n" -" scalefactor 1\n" -"}\n" - -#endif +"blend add\n" +"assoc expgib\n" +"}\n" "r_part empcentral\n" -"{\n" -" texture \"particles/emp\"\n" -" count 100\n" -" scale 100\n" -" alpha 0.4\n" -" die 6\n" -" randomvel 0\n" -" veladd -1\n" -" red 128\n" -" green 128\n" -" blue 255\n" -" reddelta 0\n" -" greendelta 0\n" -" reddelta 0\n" -" gravity 0\n" +"{\n" +"texture \"particles/emp\"\n" +"count 100\n" +"scale 100\n" +"alpha 0.4\n" +"die 6\n" +"veladd -1\n" +"rgb 128 128 255\n" "friction 0.2\n" -" stains 0\n" -" blend add\n" -" assoc shrapnal\n" -" spawnmode circle\n" -" areaspread 64\n" -" areaspreadvert 64\n" -" offsetspread 72\n" -" offsetspreadvert 0\n" -"}\n" +"blend add\n" +"assoc shrapnal\n" +"spawnmode circle\n" +"spawnorg 64\n" +"spawnvel 72 0\n" +"}\n" + "r_part empinner\n" -"{\n" -" texture \"particles/emp\"\n" -" count 75\n" -" scale 100\n" -" alpha 0.4\n" -" die 4\n" -" randomvel 0\n" -" veladd -1\n" -" red 128\n" -" green 128\n" -" blue 255\n" -" reddelta 0\n" -" greendelta 0\n" -" reddelta 0\n" -" gravity 0\n" -"frictioon 0.2\n" -" stains 0\n" -" blend add\n" -" assoc empcentral\n" -" spawnmode circle\n" -" areaspread 8\n" -" areaspreadvert 0\n" -" offsetspread 64\n" -" offsetspreadvert 0\n" -"}\n" -"//the blob tempent is used quite a bit with teamfortress emp grenades.\n" +"{\n" +"texture \"particles/emp\"\n" +"count 75\n" +"scale 100\n" +"alpha 0.4\n" +"die 4\n" +"veladd -1\n" +"rgb 128 128 255\n" +"friction 0.2\n" +"blend add\n" +"assoc empcentral\n" +"spawnmode circle\n" +"spawnorg 8 0\n" +"spawnvel 64 0\n" +"}\n" + +//the blob tempent is used quite a bit with teamfortress emp grenades. "r_part te_blob\n" -"{\n" -" texture \"particles/emp\"\n" -" count 100\n" -" scale 100\n" -" alpha 0.4\n" -" die 4\n" -" randomvel 0\n" -" veladd -1\n" -" red 128\n" -" green 255\n" -" blue 128\n" -" reddelta 0\n" -" greendelta 0\n" -" reddelta 0\n" -" gravity 0\n" +"{\n" +"texture \"particles/emp\"\n" +"count 100\n" +"scale 100\n" +"alpha 0.4\n" +"die 4\n" +"veladd -1\n" +"rgb 128 255 128\n" "friction 1\n" -" stains 0\n" -" blend add\n" -" assoc empinner\n" -" spawnmode circle\n" -" areaspread 64\n" -" areaspreadvert 0\n" -" offsetspread 256\n" -" offsetspreadvert 0\n" -"}\n" -"\n" -"\n" -#if 1 +"blend add\n" +"assoc empinner\n" +"spawnmode circle\n" +"spawnorg 64 0\n" +"spawnvel 256 0\n" +"}\n" + "r_part gunshotsparks\n" -"{\n" -" scalefactor -3\n" -" type texturedspark\n" -" texture \"ball\"\n" -" count 5\n" -" scale 2\n" -" scalefactor 1\n" -" alpha 0.5\n" -" die 0.8\n" -" red 255\n" -" green 128\n" -" reddelta 480\n" -" blend add\n" -" spawnmode ball\n" -" spawnorg 1\n" -" spawnvel 100\n" -" veladd -80\n" -" friction 0.3\n" -" gravity 400\n" -"}\n" +"{\n" +"scalefactor -3\n" +"type texturedspark\n" +"texture \"ball\"\n" +"count 5\n" +"scale 2\n" +"scalefactor 1\n" +"alpha 0.5\n" +"die 0.8\n" +"rgb 255 128 0\n" +"blend add\n" +"spawnmode ball\n" +"spawnorg 1\n" +"spawnvel 100\n" +"veladd -80\n" +"friction 0.3\n" +"gravity 400\n" +"}\n" "r_part te_gunshot\n" -"{\n" -" texture \"particles/smoke\"\n" -" count 3\n" -" scale 25\n" -" scalefactor 1\n" -" die 0.8\n" -" red 64\n" -" alpha 0.12\n" -" green 64\n" -" blue 64\n" -" spawnmode ball\n" -" spawnorg 2\n" -" spawnvel 20\n" -" veladd -20\n" -" friction 0\n" -" blend add\n" -" assoc gunshotsparks\n" -"}\n" -#else -"r_part te_gunshotsparks\n" -"{\n" -" texture \"\"\n" -" count 0.5\n" -" scale 1\n" -" alpha 0.7\n" -" die 10\n" -" randomvel 64\n" -" veladd 0\n" -" red 255\n" -" green 128\n" -" gravity 200\n" -" blend add\n" -" cliptype te_gunshotsparks\n" -" clipcount 1\n" -"}\n" -"\n" -"r_part te_gunshot\n" -"{\n" -" texture \"\"\n" -" count 0.5\n" -" scale 1\n" -" alpha 0.7\n" -" die 10\n" -" randomvel 64\n" -" veladd 0\n" -" red 255\n" -" green 128\n" -" gravity 200\n" -" cliptype te_gunshotsparks\n" -" clipcount 3\n" -" blend add\n" -" assoc te_gunshotsparks\n" -"}\n" -#endif -"\n" +"{\n" +"texture \"particles/smoke\"\n" +"count 3\n" +"scale 25\n" +"scalefactor 1\n" +"die 0.8\n" +"alpha 0.12\n" +"rgb 64 64 64\n" +"spawnmode ball\n" +"spawnorg 2\n" +"spawnvel 20\n" +"veladd -20\n" +"blend add\n" +"assoc gunshotsparks\n" +"}\n" + "r_part te_lavasplash\n" -"{\n" -" texture \"default\"\n" -" count 654\n" -" scale 15\n" -" alpha 0.7\n" -" die 10\n" -" randomvel 64\n" -" veladd 0\n" -" red 255\n" -" green 128\n" -" blue 128\n" -" gravity 50\n" -" blend add\n" -" areaspread 512\n" -" areaspreadvert 64\n" -"}\n" -"\n" +"{\n" +"texture \"default\"\n" +"count 654\n" +"scale 15\n" +"alpha 0.7\n" +"die 4\n" +"randomvel 64\n" +"rgb 255 128 128\n" +"gravity 50\n" +"blend add\n" +"spawnorg 192 64\n" +"up 48\n" +"}\n" + ////////////////////////////////////////////////// //Teleport splash -#if 1 //two rings moving upwards, costs less +//two rings moving upwards, costs less "r_part teleportsplashdown\n" -"{\n" -" texture \"textures/smoke\"\n" -" count 32\n" -" scale 32\n" -" scalefactor 1\n" -" alpha 0.3\n" -" die 1\n" -" randomvel 0\n" -" veladd -52\n" -" red 255\n" -" green 256\n" -" blue 256\n" -" friction 1\n" -" spawnorg 32 0\n" -" spawnmode uniformcircle\n" -"}\n" +"{\n" +"texture \"textures/smoke\"\n" +"count 32\n" +"scale 32\n" +"scalefactor 1\n" +"alpha 0.3\n" +"die 1\n" +"veladd -52\n" +"rgb 255 255 255\n" +"friction 1\n" +"spawnorg 32 0\n" +"spawnmode uniformcircle\n" +"}\n" +"r_part te_teleportsplash\n" +"{\n" +"texture \"textures/smoke\"\n" +"count 32\n" +"scale 32\n" +"scalefactor 1\n" +"alpha 0.3\n" +"die 1\n" +"veladd 52\n" +"rgb 255 255 255\n" +"friction 1\n" +"spawnorg 32 0\n" +"spawnmode uniformcircle\n" +"assoc teleportsplashdown\n" +"}\n" -"r_part te_teleportsplash\n" -"{\n" -" texture \"textures/smoke\"\n" -" count 32\n" -" scale 32\n" -" scalefactor 1\n" -" alpha 0.3\n" -" die 1\n" -" randomvel 0\n" -" veladd 52\n" -" red 255\n" -" green 256\n" -" blue 256\n" -" friction 1\n" -" spawnorg 32 0\n" -" spawnmode uniformcircle\n" -" assoc teleportsplashdown\n" -"}\n" - -#elif 1 //a simpler effect. -"r_part te_teleportsplash\n" -"{\n" -" count 64\n" -" spawnmode ball\n" -" areaspread 48\n" -" areaspreadvert 48\n" -" texture \"textures/smoke\"\n" -" blend blend\n" -" die 1\n" -" friction 2\n" -" gravity 0\n" -" scale 64\n" -" alpha 0.2\n" -" randomvel 64\n" -" red 255\n" -" green 255\n" -" blue 255\n" -" scalefactor 1\n" -"}\n" -#else // the old red ball effect. -"r_part te_teleportsplash\n" -"{\n" -" texture \"particles/teleport\"\n" -" count 4192\n" //EGAD!!!! 4192?!??! What was I thinking?!?!? (it's a very pwetty effect though...) -" scale 2\n" -" scalefactor 1\n" -" alpha 1\n" -" die 1\n" -" randomvel 90\n" -" veladd -100\n" -" red 255\n" -" green 0\n" -" blue 0\n" -" gravity 200\n" -" friction 2\n" -" blend add\n" -" areaspread 32\n" -" areaspreadvert 32\n" -" offsetspread -128\n" -" offsetspreadvert 64\n" -"spawnmode circle\n" -"}\n" -#endif -"\n" -"//flame effect\n" +//flame effect "r_part cu_flame\n" -"{\n" -" texture \"particles/flame\"\n" -" count 1024\n" -" scale 0.4\n" -" scalerand 6\n" -" scalefactor 1\n" -" alpha 0.4\n" -" die 0.8\n" -" randomvel 4 24\n" -" veladd -24\n" -" red 255\n" -" green 128\n" -" blue 76\n" -" reddelta 0\n" -" greendelta 0\n" -" reddelta 0\n" -" gravity 0\n" -"friction 0\n" -" stains 0\n" -" blend add\n" -" areaspread 6\n" -" up -8\n" -" areaspreadvert 0\n" -" spawnmode box\n" -" offsetspread -15\n" -"}\n" -"//flame effect\n" +"{\n" +"texture \"particles/flame\"\n" +"count 1024\n" +"scale 0.4\n" +"scalerand 6\n" +"scalefactor 1\n" +"alpha 0.4\n" +"die 0.8\n" +"randomvel 4 24\n" +"veladd -24\n" +"rgb 255 128 76\n" +"blend add\n" +"up -8\n" +"spawnorg 6 0\n" +"spawnvel -15 0\n" +"}\n" + +//flame effect "r_part cu_torch\n" -"{\n" -" texture \"particles/flame\"\n" -" count 256\n" -" scale 3\n" -" scalefactor 1\n" -" alpha 0.7\n" -" die 0.5\n" -" randomvel 8\n" -" veladd -32\n" -" red 255\n" -" green 128\n" -" blue 76\n" -" reddelta 0\n" -" greendelta 0\n" -" reddelta 0\n" -" gravity 0\n" -"friction 0\n" -" stains 0\n" -" blend add\n" -" areaspread 4\n" -" areaspreadvert 1\n" -" spawnmode circle\n" -" offsetspread -12\n" -" offsetspreadvert -8\n" -"}\n" -"\n" +"{\n" +"texture \"particles/flame\"\n" +"count 256\n" +"scale 3\n" +"scalefactor 1\n" +"alpha 0.7\n" +"die 0.5\n" +"randomvel 8\n" +"veladd -32\n" +"rgb 255 128 76\n" +"blend add\n" +"spawnmode circle\n" +"spawnorg 4 1\n" +"spawnvel -12 -8\n" +"}\n" + "r_part explodesprite\n" -"{\n" -" texture \"particles/flame\"\n" -" count 120\n" -" scale 80\n" -" scalefactor 1\n" -" alpha 0.2\n" -" die 2\n" -" randomvel 23\n" -" veladd -20\n" -" red 255\n" -" green 128\n" -" blue 76\n" -" reddelta 0\n" -" greendelta 0\n" -" reddelta 0\n" -" gravity 0\n" -"friction 0\n" -" stains 0\n" -" blend add\n" -" areaspread 4\n" -" areaspreadvert 1\n" -" spawnmode box\n" -" offsetspread -8\n" -" offsetspreadvert -8\n" -" assoc smallshrapnal\n" -"}\n" +"{\n" +"texture \"particles/flame\"\n" +"count 180\n" +"scale 70\n" +"scaledelta -140\n" +"scalefactor 1\n" +"alpha 0.2\n" +"die 0.5\n" +"randomvel 23\n" +"veladd -20\n" +"rgb 255 128 76\n" +"blend add\n" +"spawnorg 4 1\n" +"spawnvel -8 -2\n" +"up -8\n" +"}\n" + +//you'll probably never see this one +"r_part ef_entityparticles\n" +"{\n" +"texture \"j\"\n" +"count 1\n" +"scale 15\n" +"alpha 0.2\n" +"die 0\n" +"veladd 16\n" +"rgb 255 128 128\n" +"blend add\n" +"}\n" + +// TE_LIGHTNING2 replacement, (c) 2005 TimeServ +// If you steal this GPLed code you will be violating several international laws +// as well as several laws of physics. +"r_part tlightningflash\n" +"{\n" +"spawntime 0.1\n" +"spawnchance 0.1\n" +"die 0.25\n" +"type beam\n" +"alpha 1\n" +"step 80\n" +"scale 14\n" +"scaledelta -52\n" +"rgb 255 255 255\n" +"spawnmode distball\n" +"spawnorg 16\n" +"spawnparam1 0.5\n" +"averageout\n" +"nospreadfirst\n" +"blend add\n" +"}\n" + +"r_part tlightningglow\n" +"{\n" +"step 50\n" +"scale 35\n" +"scalefactor 1\n" +"alpha 1\n" +"die 0\n" +"rgb 1 1 8\n" +"blend add\n" +"assoc tlightningflash\n" +"}\n" + +"r_part tlightningfade\n" +"{\n" +"spawntime 0.05\n" +"die 0.2\n" +"type beam\n" +"alpha 2\n" +"step 96\n" +"scale 1.5\n" +"rgb 16 16 64\n" +"spawnmode distball\n" +"spawnorg 9\n" +"spawnparam1 0.9\n" +"blend add\n" +"averageout\n" +"nospreadfirst\n" +"assoc tlightningglow\n" +"}\n" + +"r_part te_lightning2\n" +"{\n" +"die 0\n" +"type beam\n" +"alpha 2\n" +"step 96\n" +"scale 4\n" +"rgb 196 196 255\n" +"spawnmode distball\n" +"spawnorg 9\n" +"spawnparam1 0.9\n" +"blend add\n" +"averageout\n" +"nospreadfirst\n" +"assoc tlightningfade\n" +"}\n" + +"r_part lbolttrail\n" +"{\n" +"die 0.5\n" +"type beam\n" +"alpha 2\n" +"step 32\n" +"scale 1\n" +"rgb 196 196 255\n" +"rgbdelta -512 -512 -128\n" +"spawnmode distball\n" +"spawnorg 5\n" +"spawnvel 4\n" +"spawnparam1 0.5\n" +"blend add\n" +"}\n" + +"r_part lbolt\n" +"{\n" +"die 0.5\n" +"count 1\n" +"spawnmode circle\n" +"spawnvel 2000\n" +"spawnorg 1\n" +"emit lbolttrail\n" +"emitinterval -1\n" +"}\n" + +"r_part lemit\n" +"{\n" +"die 0.1\n" +"count 1\n" +"spawnchance 1\n" +"emit lbolt\n" +"emitinterval 100\n" +"spawnchance 0.1\n" +"cliptype lemit\n" +"clipcount 1\n" +"clipbounce 0\n" +"}\n" + +"r_part lflash\n" +"{\n" +"die 0.1\n" +"texture \"particles/lflash\"\n" +"count 1\n" +"alpha 1\n" +"scale 100\n" +"scalefactor 1\n" +"scaledelta -500\n" +"rgb 255 255 255\n" +"blend add\n" +"assoc lemit\n" +"}\n" + +"r_part te_lightning2_end\n" +"{\n" +"die 0.3\n" +"alpha 1\n" +"count 8\n" +"scale 2\n" +"rgb 128 128 255\n" +"rgbrand 63 63 0\n" +"rgbrandsync 1\n" +"spawnvel 100\n" +"spawnorg 5\n" +"blend add\n" +"assoc lflash\n" +"}\n" + +"r_part pe_default\n" +"{\n" +"texture \"particles/quake\"\n" +"count 1\n" +"scale 4\n" +"veladd 15\n" +"die 0.4\n" +"alphachange 0\n" +"diesubrand 0.4\n" +"gravity 40\n" +"spawnorg 8\n" +"}\n" + +"r_part pe_defaulttrail\n" +"{\n" +"texture \"particles/quake\"\n" +"step 12\n" +"die 1\n" +"scale 10\n" +"scaledelta -10\n" +"veladd 15\n" +"spawnorg 1\n" +"scalefactor 0.8\n" +"}\n" + "r_effect \"progs/s_explod.spr\" explodesprite 1\n" "r_effect \"progs/flame.spr\" explodesprite 1\n" -"\n" + "r_effect \"progs/flame2.mdl\" cu_flame 1\n" "r_effect \"progs/flame.mdl\" cu_torch\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"\n" -"//you'll probably never see this one\n" -"r_part ef_darkfield\n" -"{\n" -" texture \"fgh\"\n" -" count 1\n" -" scale 2\n" -" scaledelta 2\n" -" alpha 0.3\n" -" die 5\n" -" rrandomvel 8\n" -" veladd 0\n" -" red 255\n" -" green 0\n" -" blue 0\n" -" gravity 0\n" -" blend add\n" -" areaspread 0\n" -" areaspreadvert 0\n" -"}\n" -"\n" -"//you'll probably never see this one\n" -"r_part ef_entityparticles\n" -"{\n" -" texture \"j\"\n" -" count 1\n" -" scale 15\n" -" alpha 0.2\n" -" die 0\n" -" randomvel 0\n" -" veladd 16\n" -" red 255\n" -" green 128\n" -" blue 128\n" -" gravity 0\n" -" blend add\n" -" areaspread 0\n" -" areaspreadvert 0\n" -"}\n" +"r_trail \"progs/e_spike1.mdl\" te_railtrail\n"; -//the default svc_particle effect. -"r_part pe_default\n" -"{\n" -" texture \"particles/quake\"\n" -" count 1\n" -" scale 4\n" -" veladd 15\n" -" alpha 1\n" -" die 0.4\n" -" alphachange 0\n" -" diesubrand 0.4\n" -" gravity 40\n" -" areaspread 8\n" -" areaspreadvert 8\n" -" spawnmode box\n" -"}\n"; - - - - - - -/////////////////////////////////////////////////////////////// - - - - - - - - - - - -char *particle_set_highfps = //submitted by 'ShadowWalker' - //fixme: replace with something more effective +char *particle_set_faithful = +// faithful, by TimeServ "r_part t_gib\n" -"{\n" -" texture \"particles/bloodtrail\"\n" -" step 4\n" -" scale 40\n" -" scaledelta 0\n" -" alpha 0.5\n" -" die 3\n" -" randomvel 256\n" -" veladd 128\n" -" red 64\n" -" green 0\n" -" blue 0\n" -" reddelta -128\n" -" greendelta 0\n" -" reddelta 0\n" -" gravity 1000\n" -"friction 1\n" -" stains 1\n" -"}\n" +"{\n" +"texture \"particles/quake\"\n" +"step 3\n" +"scale 4\n" +"die 2\n" +"alphachange 0\n" +"randomvel 80\n" +"veladd 100\n" +"colorindex 67 4\n" +"gravity 40\n" +"spawnorg 3\n" +"stains 1\n" +"}\n" + "r_part t_zomgib\n" -"{\n" -" texture \"particles/bloodtrail\"\n" -" step 4\n" -" scale 15\n" -" alpha 0.3\n" -" die 10\n" -" randomvel 256\n" -" veladd 128\n" -" red 192\n" -" green 0\n" -" blue 0\n" -" reddelta -128\n" -" greendelta 0\n" -" reddelta 0\n" -" gravity 1000\n" -"friction 1\n" -" stains 0\n" -"}\n" -"r_part t_tracer1\n" -"{\n" -"}\n" -"r_part t_tracer2\n" -"{\n" -"}\n" +"{\n" +"texture \"particles/quake\"\n" +"step 6\n" +"scale 4\n" +"die 2\n" +"alphachange 0\n" +"randomvel 72\n" +"veladd 100\n" +"colorindex 67 4\n" +"gravity 40\n" +"spawnorg 3\n" +"stains 1\n" +"}\n" + "r_part t_tracer3\n" -"{\n" -"}\n" -"r_part te_lightningblood\n" -"{\n" -" texture \"particles/bloodtrail\"\n" -" count 4\n" -" scale 15\n" -" alpha 0.3\n" -" die 10\n" -" randomvel 128\n" -" veladd 128\n" -" red 192\n" -" green 0\n" -" blue 0\n" -" reddelta -128\n" -" greendelta 0\n" -" reddelta 0\n" -" gravity 100\n" -"friction 1\n" -" stains 0\n" -" blend add\n" -"}\n" -"r_part te_blood\n" -"{\n" -" texture \"particles/bloodtrail\"\n" -" count 4\n" -" scale 30\n" -" alpha 0.8\n" -" die 5\n" -" randomvel 32\n" -" veladd 64\n" -" offsetspreadvert 10\n" -" red 32\n" -" green 0\n" -" blue 0\n" -" reddelta -128\n" -" greendelta 0\n" -" reddeelta 0\n" -" gravity 20\n" -"friction 1\n" -" stains 0\n" -"}\n" -"r_part sparks\n" -"{\n" -" texture \"\"\n" -" count 128\n" -" scale 1\n" -" alpha 0.7\n" -" die 0.75\n" -" randomvel 512\n" -" veladd 128\n" -" red 255\n" -" green 128\n" -" gravity 800\n" -" blend add\n" -" cliptype sparks\n" -" clipcount 1\n" -"}\n" -"\n" -"//the blob tempent is used quite a bit with teamfortress emp grenades.\n" -"r_part te_blob\n" -"{\n" -" texture \"particles/emp\"\n" -" count 100\n" -" scale 100\n" -" alpha 0.4\n" -" die 4\n" -" rrandomvel 0\n" -" veladd -1\n" -" red 128\n" -" green 255\n" -" blue 128\n" -" reddelta 0\n" -" greendelta 0\n" -" reddelta 0\n" -" gravity 0\n" -"friction 1\n" -" stains 0\n" -" blend add\n" -" assoc empinner\n" -" spawnmode circle\n" -" areaspread 64\n" -" areaspreadvert 0\n" -" offsetspread 256\n" -" offsetspreadvert 0\n" -"}\n" -"\n" -"\n" -"r_part te_gunshotsparks\n" -"{\n" -" texture \"\"\n" -" count 0.5\n" -" scale 0.75\n" -" alpha 0.7\n" -" die 10\n" -" randomvel 64\n" -" veladd 0\n" -" red 255\n" -" green 128\n" -" gravity 200\n" -" blend add\n" -" cliptype te_gunshotsparks\n" -" clipcount 1\n" -"}\n" -"\n" -"r_part te_gunshot\n" -"{\n" -" texture \"\"\n" -" count 2\n" -" scale 1\n" -" alpha 0.7\n" -" die 0.75\n" -" randomvel 64\n" -" veladd 0\n" -" red 255\n" -" green 128\n" -" gravity 200\n" -" cliptype te_gunshotsparks\n" -" clipcount 3\n" -" blend add\n" -" assoc te_gunshotsparks\n" -"}\n" -"\n" -"r_part te_lavasplash\n" -"{\n" -" texture \"\"\n" -" count 654\n" -" scale 15\n" -" alpha 0.7\n" -" die 10\n" -" randomvel 64\n" -" veladd 0\n" -" red 255\n" -" green 128\n" -" blue 128\n" -" gravity 50\n" -" blend add\n" -" areaspread 512\n" -" areaspreadvert 64\n" -"}\n" -"\n" -"r_part te_teleportsplash\n" -"{\n" -" texture \"particles/teleport\"\n" -" count 128\n" -" scale 40\n" -" scalefactor 1\n" -" alpha 1\n" -" die 1\n" -" randomvel 63\n" -" veladd 0\n" -" red 128\n" -" green 128\n" -" blue 128\n" -" gravity 200\n" -" friction 2\n" -" blend add\n" -" areaspread 4\n" -" areaspreadvert 32\n" -" offsetspread 50\n" -" offsetspreadvert 8\n" -"spawnmode telesquare\n" -"}\n" -"\n" -"\n" -"//you'll probably never see this one\n" -"r_part ef_darkfield\n" -"{\n" -" texture \"fgh\"\n" -" count 1\n" -" scale 2\n" -" scaledelta 2\n" -" alpha 0.3\n" -" die 0.5\n" -" randomvel 8\n" -" veladd 25\n" -" red 255\n" -" green 0\n" -" blue 0\n" -" gravity 0\n" -" blend add\n" -" areaspread 0\n" -" areaspreadvert 0\n" -"}\n" -"\n" -"//you'll probably never see this one\n" -"r_part ef_entityparticles\n" -"{\n" -" texture \"j\"\n" -" count 1\n" -" scale 10\n" -" alpha 0.3\n" -" die 0\n" -" randomvel 0\n" -" veladd 16\n" -" red 128\n" -" green 128\n" -" blue 0\n" -" gravity 0\n" -" blend add\n" -" areaspread 0\n" -" areaspreadvert 0\n" -"}\n"; +"{\n" +"texture \"particles/quake\"\n" +"step 3\n" +"scale 4\n" +"die 0.3\n" +"alphachange 0\n" +"colorindex 152 4\n" +"spawnorg 8\n" +"}\n" - - - - - - -///////////////////////////////////////////////////////////////////// - - - - - - - - - - -char *particle_set_faithful = //Created from origional quake by TimeServ. - //The aim being to clone the old effects exactly. -"r_part t_gib\n" -"{\n" -" texture \"particles/quake\"\n" -" step 3\n" -" scale 4\n" -" alpha 1\n" -" die 2\n" -" alphachange 0\n" -" randomvel 80\n" -" veladd 100\n" -" colorindex 67\n" -" colorrand 4\n" -" gravity 40\n" -" areaspread 3\n" -" areaspreadvert 3\n" -" spawnmode box\n" -" stains 1\n" -"}\n" -"\n" -"r_part t_zomgib\n" -"{\n" -" texture \"particles/quake\"\n" -" step 6\n" -" scale 4\n" -" alpha 1\n" -" die 2\n" -" alphachange 0\n" -" randomvel 72\n" -" veladd 100\n" -" colorindex 67\n" -" colorrand 4\n" -" gravity 40\n" -" areaspread 3\n" -" areaspreadvert 3\n" -" spawnmode box\n" -" stains 1\n" -"}\n" -"\n" -"r_part t_tracer3\n" -"{\n" -" texture \"particles/quake\"\n" -" step 3\n" -" scale 4\n" -" alpha 1\n" -" die 0.3\n" -" alphachange 0\n" -" colorindex 152\n" -" colorrand 4\n" -" areaspread 8\n" -" areaspreadvert 8\n" -" spawnmode box\n" -"}\n" -"\n" "r_part t_tracer\n" -"{\n" -" texture \"particles/quake\"\n" -" step 3\n" -" scale 4\n" -" alpha 1\n" -" die 0.5\n" -" alphachange 0\n" -" colorindex 52\n" -" citracer 1\n" -" offsetspread 30\n" -" spawnmode tracer\n" -"}\n" -"\n" +"{\n" +"texture \"particles/quake\"\n" +"step 3\n" +"scale 4\n" +"die 0.5\n" +"alphachange 0\n" +"colorindex 52\n" +"citracer\n" +"spawnvel 30 0\n" +"spawnmode tracer\n" +"}\n" + "r_part t_tracer2\n" -"{\n" -" texture \"particles/quake\"\n" -" step 3\n" -" scale 4\n" -" alpha 1\n" -" die 0.5\n" -" alphachange 0\n" -" colorindex 230\n" -" citracer 1\n" -" offsetspread 30\n" -" spawnmode tracer\n" -"}\n" -"\n" +"{\n" +"texture \"particles/quake\"\n" +"step 3\n" +"scale 4\n" +"die 0.5\n" +"alphachange 0\n" +"colorindex 230\n" +"citracer\n" +"spawnvel 30 0\n" +"spawnmode tracer\n" +"}\n" + "r_part t_rocket\n" -"{\n" -" texture \"particles/quake\"\n" -" step 3\n" -" scale 4\n" -" die 1.2\n" -" diesubrand 0.6\n" -" rampmode absolute\n" -" rampindex 109 1.0\n" -" rampindex 107 0.833\n" -" rampindex 6 0.667\n" -" rampindex 5 0.5\n" -" rampindex 4 0.333\n" -" rampindex 3 0.167\n" -" areaspread 3\n" -" areaspreadvert 3\n" -" gravity -40\n" -" spawnmode box\n" -"}\n" -"\n" +"{\n" +"texture \"particles/quake\"\n" +"step 3\n" +"scale 4\n" +"die 1.2\n" +"diesubrand 0.6\n" +"rampmode absolute\n" +"rampindex 109 1.0\n" +"rampindex 107 0.833\n" +"rampindex 6 0.667\n" +"rampindex 5 0.5\n" +"rampindex 4 0.333\n" +"rampindex 3 0.167\n" +"spawnorg 3\n" +"gravity -40\n" +"}\n" + "r_part t_grenade\n" -"{\n" -" texture \"particles/quake\"\n" -" step 3\n" -" scale 4\n" -" die 0.8\n" -" diesubrand 0.6\n" -" rampmode absolute\n" -" rampindex 6 0.667\n" -" rampindex 5 0.5\n" -" rampindex 4 0.333\n" -" rampindex 3 0.167\n" -" areaspread 3\n" -" areaspreadvert 3\n" -" gravity -40\n" -" spawnmode box\n" -"}\n" -"\n" +"{\n" +"texture \"particles/quake\"\n" +"step 3\n" +"scale 4\n" +"die 0.8\n" +"diesubrand 0.6\n" +"rampmode absolute\n" +"rampindex 6 0.667\n" +"rampindex 5 0.5\n" +"rampindex 4 0.333\n" +"rampindex 3 0.167\n" +"spawnorg 3\n" +"gravity -40\n" +"}\n" + "r_part pe_size3\n" -"{\n" -" texture \"particles/quake\"\n" -" count 1\n" -" scale 4\n" -" veladd 15\n" -" alpha 1\n" -" die 0.4\n" -" alphachange 0\n" -" diesubrand 0.4\n" -" gravity 40\n" -" areaspread 24\n" -" areaspreadvert 24\n" -" spawnmode box \n" -"}\n" -"\n" +"{\n" +"texture \"particles/quake\"\n" +"count 1\n" +"scale 4\n" +"veladd 15\n" +"die 0.4\n" +"alphachange 0\n" +"diesubrand 0.4\n" +"gravity 40\n" +"spawnorg 24\n" +"}\n" + "r_part pe_size2\n" -"{\n" -" texture \"particles/quake\"\n" -" count 1\n" -" scale 4\n" -" veladd 15\n" -" alpha 1\n" -" die 0.4\n" -" alphachange 0\n" -" diesubrand 0.4\n" -" gravity 40\n" -" areaspread 16\n" -" areaspreadvert 16\n" -" spawnmode box \n" -"}\n" -"\n" +"{\n" +"texture \"particles/quake\"\n" +"count 1\n" +"scale 4\n" +"veladd 15\n" +"die 0.4\n" +"alphachange 0\n" +"diesubrand 0.4\n" +"gravity 40\n" +"spawnorg 16\n" +"}\n" + "r_part pe_default\n" -"{\n" -" texture \"particles/quake\"\n" -" count 1\n" -" scale 4\n" -" veladd 15\n" -" alpha 1\n" -" die 0.4\n" -" alphachange 0\n" -" diesubrand 0.4\n" -" gravity 40\n" -" areaspread 8\n" -" areaspreadvert 8\n" -" spawnmode box \n" -"}\n" -"\n" +"{\n" +"texture \"particles/quake\"\n" +"count 1\n" +"scale 4\n" +"veladd 15\n" +"die 0.4\n" +"alphachange 0\n" +"diesubrand 0.4\n" +"gravity 40\n" +"spawnorg 8\n" +"}\n" + "r_part explode2\n" -"{\n" -" texture \"particles/quake\"\n" -" count 512\n" -" alpha 1\n" -" scale 4\n" -" alphachange 0\n" -" die 0.5333\n" -" diesubrand 0.2667\n" -" rampmode absolute\n" -" rampindexlist 111 110 109 108 107 106 104 102 \n" -" randomvel 256\n" -" gravity 40\n" -" friction 1\n" -" areaspread 16\n" -" areaspreadvert 16\n" -" spawnmode box\n" -"}\n" -"\n" +"{\n" +"texture \"particles/quake\"\n" +"count 512\n" +"scale 4\n" +"alphachange 0\n" +"die 0.5333\n" +"diesubrand 0.2667\n" +"rampmode absolute\n" +"rampindexlist 111 110 109 108 107 106 104 102\n" +"randomvel 256\n" +"gravity 40\n" +"friction 1\n" +"spawnorg 16\n" +"}\n" + "r_part te_explosion\n" -"{\n" -" texture \"particles/quake\"\n" -" count 512\n" -" alpha 1\n" -" scale 4\n" -" die 0.8\n" -" diesubrand 0.4\n" -" randomvel 256\n" -" rampmode absolute\n" -" rampindexlist 111 109 107 105 103 101 99 97 \n" -" gravity 40\n" -" friction -4\n" -" areaspread 16\n" -" areaspreadvert 16\n" -" spawnmode box\n" -" assoc explode2\n" -"}\n" -"\n" +"{\n" +"texture \"particles/quake\"\n" +"count 512\n" +"scale 4\n" +"die 0.8\n" +"diesubrand 0.4\n" +"randomvel 256\n" +"rampmode absolute\n" +"rampindexlist 111 109 107 105 103 101 99 97\n" +"gravity 40\n" +"friction -4\n" +"spawnorg 16\n" +"assoc explode2\n" +"}\n" + "r_part blobexp2b\n" -"{\n" -" texture \"particles/quake\"\n" -" count 256\n" -" alpha 1\n" -" scale 4\n" -" alphachange 0\n" -" die 1.4\n" -" colorindex 150\n" -" colorrand 6\n" -" gravity 40\n" -" friction 4 0\n" -" areaspread 16\n" -" areaspreadvert 16\n" -" randomvel 256\n" -" spawnmode box\n" -"}\n" +"{\n" +"texture \"particles/quake\"\n" +"count 256\n" +"scale 4\n" +"alphachange 0\n" +"die 1.4\n" +"colorindex 150 6\n" +"gravity 40\n" +"friction 4 0\n" +"spawnorg 16\n" +"randomvel 256\n" +"}\n" "r_part blobexp1b\n" -"{\n" -" texture \"particles/quake\"\n" -" count 256\n" -" alpha 1\n" -" scale 4\n" -" alphachange 0\n" -" die 1.4\n" -" colorindex 66\n" -" colorrand 6\n" -" gravity 40\n" -" friction -4 0\n" -" areaspread 16\n" -" areaspreadvert 16\n" -" randomvel 256\n" -" spawnmode box\n" -" assoc blobexp2b\n" -"}\n" -"\n" +"{\n" +"texture \"particles/quake\"\n" +"count 256\n" +"scale 4\n" +"alphachange 0\n" +"die 1.4\n" +"colorindex 66 6\n" +"gravity 40\n" +"friction -4 0\n" +"spawnorg 16\n" +"randomvel 256\n" +"assoc blobexp2b\n" +"}\n" + "r_part blobexp2\n" -"{\n" -" texture \"particles/quake\"\n" -" count 256\n" -" alpha 1\n" -" scale 4\n" -" alphachange 0\n" -" die 1\n" -" colorindex 150\n" -" colorrand 6\n" -" gravity 40\n" -" friction 4 0\n" -" areaspread 16\n" -" areaspreadvert 16\n" -" randomvel 256\n" -" spawnmode box\n" -" assoc blobexp1b\n" -"}\n" +"{\n" +"texture \"particles/quake\"\n" +"count 256\n" +"scale 4\n" +"alphachange 0\n" +"die 1\n" +"colorindex 150 6\n" +"gravity 40\n" +"friction 4 0\n" +"spawnorg 16\n" +"randomvel 256\n" +"assoc blobexp1b\n" +"}\n" "r_part te_blob\n" -"{\n" -" texture \"particles/quake\"\n" -" count 256\n" -" alpha 1\n" -" scale 4\n" -" alphachange 0\n" -" die 1\n" -" colorindex 66\n" -" colorrand 6\n" -" gravity 40\n" -" friction -4 0\n" -" areaspread 16\n" -" areaspreadvert 16\n" -" randomvel 256\n" -" spawnmode box\n" -" assoc blobexp2\n" -"}\n" -"\n" +"{\n" +"texture \"particles/quake\"\n" +"count 256\n" +"scale 4\n" +"alphachange 0\n" +"die 1\n" +"colorindex 66 6\n" +"gravity 40\n" +"friction -4 0\n" +"randomvel 256\n" +"spawnorg 16\n" +"assoc blobexp2\n" +"}\n" + "r_part te_teleportsplash\n" -"{\n" -" texture \"particles/quake\"\n" -" count 896\n" -" alpha 1\n" -" scale 4\n" -" alphachange 0\n" -" die 0.34\n" -" diesubrand 0.14\n" -" colorindex 7\n" -" colorrand 8\n" -" gravity 40\n" -" areaspread 16\n" -" areaspreadvert 28\n" -" offsetspread 113\n" -" offsetspreadvert 113\n" -" up 4\n" -" spawnmode telebox\n" -"}\n" -"\n" +"{\n" +"texture \"particles/quake\"\n" +"count 896\n" +"scale 4\n" +"alphachange 0\n" +"die 0.34\n" +"diesubrand 0.14\n" +"colorindex 7 8\n" +"gravity 40\n" +"up 4\n" +"spawnmode telebox\n" +"spawnorg 16 28\n" +"spawnvel 113\n" +"}\n" + "r_part te_lavasplash\n" -"{\n" -" texture \"particles/quake\"\n" -" count 1024\n" -" alpha 1\n" -" scale 4\n" -" alphachange 0\n" -" die 2.62\n" -" diesubrand 0.62\n" -" colorindex 224\n" -" colorrand 8\n" -" gravity 40\n" -" areaspread 128\n" -" areaspreadvert 63\n" -" offsetspread 113\n" -" offsetspreadvert 113\n" -" spawnmode lavasplash\n" +"{\n" +"texture \"particles/quake\"\n" +"count 1024\n" +"scale 4\n" +"alphachange 0\n" +"die 2.62\n" +"diesubrand 0.62\n" +"colorindex 224 8\n" +"gravity 40\n" +"spawnorg 128 63\n" +"spawnvel 113\n" +"spawnmode lavasplash\n" +"}\n" + +"r_part pe_defaulttrail\n" +"{\n" +"texture \"particles/quake\"\n" +"step 3\n" +"scale 4\n" +"die 0.6\n" +"diesubrand 0.6\n" +"spawnorg 3\n" +"gravity -40\n" "}\n"; +char *particle_set_highfps = +// highfps, originally submitted by 'ShadowWalker' +// rehashed by TimeServ +"r_part t_gib\n" +"{\n" +"texture \"particles/bloodtrail\"\n" +"step 12\n" +"scale 10\n" +"die 1\n" +"randomvel 32\n" +"veladd 32\n" +"rgb 64 0 0\n" +"rgbdelta -128 0 0\n" +"}\n" +"r_part t_zomgib\n" +"{\n" +"texture \"particles/bloodtrail\"\n" +"step 16\n" +"scale 8\n" +"die 1\n" +"randomvel 32\n" +"veladd 32\n" +"rgb 192 0 0\n" +"rgbdelta -128 0 0\n" +"}\n" + +"r_part t_tracer\n" +"{\n" +"texture \"particles/tracer\"\n" +"scale 23\n" +"step 18\n" +"rgb 192 192 0\n" +"die 0.5\n" +"}\n" + +"r_part t_tracer2\n" +"{\n" +"texture \"particles/tracer\"\n" +"scale 23\n" +"step 18\n" +"die 0.5\n" +"rgb 192 96 0\n" +"}\n" + +"r_part t_tracer3\n" +"{\n" +"texture \"particles/tracer\"\n" +"scale 23\n" +"step 18\n" +"die 0.5\n" +"rgb 192 0 192\n" +"}\n" + +"r_part te_lightningblood\n" +"{\n" +"texture \"particles/bloodtrail\"\n" +"count 1\n" +"scale 10\n" +"die 0.5\n" +"randomvel 64\n" +"veladd 128\n" +"rgb 192 0 0\n" +"blend add\n" +"}\n" + +"r_part te_blood\n" +"{\n" +"texture \"particles/bloodtrail\"\n" +"count 1\n" +"scale 12\n" +"die 0.5\n" +"randomvel 32\n" +"veladd 64\n" +"spawnvel 0 10\n" +"rgb 64 0 0\n" +"}\n" + +"r_part sparks\n" +"{\n" +"texture \"particles/spark\"\n" +"count 32\n" +"scale 3\n" +"alpha 1\n" +"die 1\n" +"randomvel 256\n" +"veladd 128\n" +"rgb 255 128 0\n" +"blend add\n" +"cliptype sparks\n" +"clipcount 1\n" +"}\n" + +"r_part explosioncore\n" +"{\n" +"texture \"particles/explosion\"\n" +"count 1\n" +"scale 200\n" +"scalefactor 1\n" +"die 1.2\n" +"rgb 255 128 76\n" +"blend add\n" +"assoc sparks\n" +"}\n" + +"r_part te_explosion\n" +"{\n" +"texture \"particles/explosion\"\n" +"count 8\n" +"scale 60\n" +"alpha 0.5\n" +"die 1\n" +"rgb 255 128 76\n" +"blend add\n" +"assoc explosioncore\n" +"spawnmode ball\n" +"spawnorg 64\n" +"}\n" + +//the blob tempent is used quite a bit with teamfortress emp grenades. +"r_part te_blob\n" +"{\n" +"texture \"particles/blob\"\n" +"count 64\n" +"scale 30\n" +"scalefactor 1\n" +"die 1\n" +"randomvel 32\n" +"veladd 0\n" +"rgb 255 0 196\n" +"spawnorg 8 56\n" +"spawnvel 48 8\n" +"}\n" + +"r_part te_gunshotsparks\n" +"{\n" +"texture \"particles/spark\"\n" +"count 1\n" +"scale 3\n" +"alpha 0.7\n" +"die 0.5\n" +"randomvel 64\n" +"rgb 255 128 0\n" +"red 255\n" +"green 128\n" +"blend add\n" +"cliptype te_gunshotsparks\n" +"clipcount 1\n" +"}\n" + +"r_part te_gunshot\n" +"{\n" +"texture \"particles/spark\"\n" +"count 2\n" +"scale 3\n" +"alpha 0.7\n" +"die 0.5\n" +"randomvel 64\n" +"rgb 255 128 0\n" +"cliptype te_gunshotsparks\n" +"clipcount 1\n" +"blend add\n" +"assoc te_gunshotsparks\n" +"}\n" + +"r_part te_lavasplash\n" +"{\n" +"texture \"particles/lava\"\n" +"count 180\n" +"scale 60\n" +"alpha 0.5\n" +"die 1.6\n" +"rgb 255 128 128\n" +"spawnorg 178 64\n" +"up 56\n" +"scalefactor 1\n" +"}\n" + +"r_part te_teleportsplash\n" +"{\n" +"texture \"particles/teleport\"\n" +"count 48\n" +"scale 30\n" +"scalefactor 1\n" +"die 0.5\n" +"randomvel 32\n" +"veladd 0\n" +"rgb 255 255 255\n" +"spawnorg 4 32\n" +"spawnvel 25 4\n" +"}\n" + +"r_part t_grenade\n" +"{\n" +"texture \"particles/smoke\"\n" +"step 20\n" +"scale 21\n" +"die 0.5\n" +"randvel 16\n" +"rgb 128 128 128\n" +"}\n" + +"r_part t_rocket\n" +"{\n" +"texture \"particles/rocket\"\n" +"step 15\n" +"scale 30\n" +"die 0.2\n" +"rgb 192 48 0\n" +"blend add\n" +"assoc t_grenade\n" +"}\n" + +"r_part t_altrocket\n" +"{\n" +"texture \"particles/rocket\"\n" +"step 15\n" +"scale 25\n" +"randomvel 30\n" +"veladd 30\n" +"die 0.5\n" +"rgb 192 48 0\n" +"blend add\n" +"}\n" + +//you'll probably never see this one +"r_part ef_entityparticles\n" +"{\n" +"texture \"j\"\n" +"count 1\n" +"scale 10\n" +"alpha 0.3\n" +"die 0\n" +"veladd 16\n" +"rgb 128 128 0\n" +"}\n" + +"r_part pe_default\n" +"{\n" +"texture \"particles/quake\"\n" +"count 1\n" +"scale 4\n" +"veladd 15\n" +"die 0.5\n" +"spawnorg 8\n" +"}\n" + +"r_part pe_defaulttrail\n" +"{\n" +"texture \"particles/quake\"\n" +"step 15\n" +"die 0.5\n" +"scale 8\n" +"veladd 15\n" +"spawnorg 1\n" +"}\n"; + +char *particle_set_minimal = +// minimal, by TimeServ +"r_part pe_size3\n" +"{\n" +"texture \"particles/quake\"\n" +"count 1\n" +"die 1\n" +"scale 20\n" +"scaledelta -20\n" +"veladd 25\n" +"spawnorg 38\n" +"spawnvel 38\n" +"scalefactor 0.8\n" +"}\n" + +"r_part pe_size2\n" +"{\n" +"texture \"particles/quake\"\n" +"count 1\n" +"die 1\n" +"scale 12\n" +"scaledelta -12\n" +"veladd 20\n" +"spawnorg 16\n" +"spawnvel 16\n" +"scalefactor 0.8\n" +"}\n" + +"r_part pe_default\n" +"{\n" +"texture \"particles/quake\"\n" +"count 1\n" +"die 1\n" +"scale 10\n" +"scaledelta -10\n" +"veladd 15\n" +"spawnorg 10\n" +"spawnvel 10\n" +"scalefactor 0.8\n" +"}\n" + +"r_part pe_defaulttrail\n" +"{\n" +"texture \"particles/quake\"\n" +"step 10\n" +"die 1\n" +"scale 8\n" +"scaledelta -8\n" +"veladd 15\n" +"spawnorg 2\n" +"spawnvel 2\n" +"scalefactor 0.8\n" +"}\n"; diff --git a/engine/client/r_partset.h b/engine/client/r_partset.h index 208e991d0..e6929d62f 100644 --- a/engine/client/r_partset.h +++ b/engine/client/r_partset.h @@ -1,6 +1,7 @@ extern char *particle_set_spikeset; extern char *particle_set_highfps; extern char *particle_set_faithful; +extern char *particle_set_minimal; // #define particle_set_faithful particle_set_highfps diff --git a/engine/gl/gl_draw.c b/engine/gl/gl_draw.c index 182608fdb..e7723f464 100644 --- a/engine/gl/gl_draw.c +++ b/engine/gl/gl_draw.c @@ -1307,7 +1307,7 @@ void GLDraw_Crosshair(void) } GL_TexEnv(GL_MODULATE); - chrebuild = chmodified != crosshair.modified || crosshair.modified || crosshair.value >= FIRSTANIMATEDCROSHAIR; + chrebuild = chmodified != crosshaircolor.modified || crosshairimage.modified || crosshair.modified || crosshair.value >= FIRSTANIMATEDCROSHAIR; if (chrebuild) {