//lame example weather particles by Spike //move to id1/particles/weather.cfg // //to use from qc, r_particledesc "weather classic" or call particleeffecnum("weather.te_rain") so the engine knows which config to use, then use the particle[rain|snow] builtins as normal. //without qc changes option 1) use a texture called skyrain or skysnow, in addition to the r_particledesc thing so that this config is actually used (this is more for people to add stuff to existing maps). //without qc changes option 2) add a worldspawn field called "_texpart_TEXTURENAME" with value "weather.tex_skysnow" or "weather.tex_skyrain" //without qc changes option 3) an equivelent console command: r_partredirect tex_TEXTURENAME "weather.tex_skysnow" //note that without qc, you need to restart the map for it to take effect. //on the other hand, if you wanted to emit particles from models, use r_effect (which can optionally hide those models too). //to override trails defined by model flags, you can use the r_trail command. //weather effects that leave decals are probably overkill //one option is to spawn a particle from qc that emits other particles that leave trails. emitting such trail emitting emitters from surfaces is definitely overkill. //generic rain for the qc builtin //create another called te_rain_12 or whatever for alternative versions of rain (going by the specified palette) r_part te_rain { texture ball scalefactor 1 count 1 alpha 0.4 rgb 255 255 255 die 2 veladd 2 scale 2 stretchfactor -40 type texturedspark cliptype weather.rainsplash clipbounce 100 clipcount 5 } //internal splash effect for rain r_part weather.rainsplash { randomvel 50 50 count 1 texture ball scalefactor 1 alpha 0.1 rgb 255 255 255 die 0.4 scale 50 stretchfactor -2.5 veladd 1 scale 1 type texturedspark gravity 800 } //generic snow for the qc builtin //naming itself causes it to bounce r_part te_snow { texture ball scalefactor 1 count 1 alpha 1 rgb 255 255 255 die 2 veladd 1 scale 5 flurry 40 gravity 400 friction 5 //settle clipbounce 0 } //rain effect to be emitted from textures //the base direction points away from the surface, so veladd is the speed to move away from said surface. //this isn't very useful for rain, because that vector is quite often horizontal (where the sky surrounds the player) //that said, sitting in a box of such rain surfaces gives an interesting laser-field effect... //anyway, that's why we can't reuse the qc effects, because qc gives a velocity that is actually meant to be usable. r_part tex_skyrain { texture ball scalefactor 1 rainfrequency 10 count 1 alpha 0.1 rgb 255 255 255 die 2 veladd 2000 velbias 0 0 0 scale 1 stretchfactor -40 type texturedspark cliptype weather.rainsplash clipbounce 100 clipcount 5 } //snow from sky surfaces is often within a box //this means we don't want the snow to ever settle. //we also have no volume, so make the snow fall a little further. r_part tex_skysnow { texture ball scalefactor 1 rainfrequency 2 count 1 alpha 1 rgb 255 255 255 die 8 veladd 1000 scale 5 flurry 40 gravity 400 friction 5 cliptype tex_skysnow clipbounce 0 }