r4888 - in branches/nexuiz-2.0: . data data/maps data/particles data/qcsrc/client data/qcsrc/menu/nexuiz data/qcsrc/server misc

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sun Oct 26 11:54:48 EDT 2008


Author: div0
Date: 2008-10-26 11:54:47 -0400 (Sun, 26 Oct 2008)
New Revision: 4888

Added:
   branches/nexuiz-2.0/data/maps/turret_test.mapinfo
   branches/nexuiz-2.0/data/qcsrc/server/pathlib.qc
   branches/nexuiz-2.0/misc/spherefunc2skybox.c
Modified:
   branches/nexuiz-2.0/.patchsets
   branches/nexuiz-2.0/data/defaultNexuiz.cfg
   branches/nexuiz-2.0/data/effectinfo.txt
   branches/nexuiz-2.0/data/high.cfg
   branches/nexuiz-2.0/data/low.cfg
   branches/nexuiz-2.0/data/med.cfg
   branches/nexuiz-2.0/data/normal.cfg
   branches/nexuiz-2.0/data/omg.cfg
   branches/nexuiz-2.0/data/particles/particlefont.tga
   branches/nexuiz-2.0/data/qcsrc/client/sbar.qc
   branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_playersetup.c
   branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_settings_effects.c
   branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc
   branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc
   branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc
   branches/nexuiz-2.0/data/qcsrc/server/g_subs.qc
   branches/nexuiz-2.0/data/qcsrc/server/g_triggers.qc
   branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc
   branches/nexuiz-2.0/data/qcsrc/server/portals.qc
   branches/nexuiz-2.0/data/qcsrc/server/progs.src
   branches/nexuiz-2.0/data/qcsrc/server/race.qc
   branches/nexuiz-2.0/data/qcsrc/server/t_plats.qc
   branches/nexuiz-2.0/data/qcsrc/server/t_teleporters.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_hlac.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc
   branches/nexuiz-2.0/data/qcsrc/server/w_seeker.qc
   branches/nexuiz-2.0/data/ultimate.cfg
   branches/nexuiz-2.0/data/ultra.cfg
   branches/nexuiz-2.0/data/weapons.cfg
   branches/nexuiz-2.0/misc/brightspot.c
   branches/nexuiz-2.0/misc/makebuild.sh
Log:
r4864 | div0 | 2008-10-24 14:13:39 +0200 (Fri, 24 Oct 2008) | 2 lines
slightly different hook behaviour (projectiles that the hook teleports must now go THROUGH the hook's circle)
r4865 | esteel | 2008-10-24 14:33:18 +0200 (Fri, 24 Oct 2008) | 2 lines
more precache fixes
r4866 | div0 | 2008-10-24 14:57:49 +0200 (Fri, 24 Oct 2008) | 2 lines
try to fix RL behaviour when holding down a button
r4867 | div0 | 2008-10-25 09:50:06 +0200 (Sat, 25 Oct 2008) | 2 lines
fix ClientDisconnect possibly using a strunzoned string
r4868 | div0 | 2008-10-25 12:46:45 +0200 (Sat, 25 Oct 2008) | 2 lines
add "nolightmaps" option
r4869 | div0 | 2008-10-25 15:20:27 +0200 (Sat, 25 Oct 2008) | 2 lines
update flashblend with dlight on/off
r4870 | div0 | 2008-10-25 15:21:31 +0200 (Sat, 25 Oct 2008) | 2 lines
med.cfg better should have dlight than flashblend
r4871 | div0 | 2008-10-25 15:22:41 +0200 (Sat, 25 Oct 2008) | 2 lines
make omg.cfg work again
r4872 | div0 | 2008-10-25 15:44:11 +0200 (Sat, 25 Oct 2008) | 2 lines
add a simple and stupid skybox generator (to be expanded later), for modern art skyboxes and maybe conversion from panorama images to skybox
r4873 | div0 | 2008-10-25 16:31:32 +0200 (Sat, 25 Oct 2008) | 2 lines
make a sample mandelbrot function
r4874 | morphed | 2008-10-25 18:07:46 +0200 (Sat, 25 Oct 2008) | 1 line
lots of new particle fx, most are unused yet
r4875 | tzork | 2008-10-25 18:29:01 +0200 (Sat, 25 Oct 2008) | 1 line
r4876 | div0 | 2008-10-25 20:24:11 +0200 (Sat, 25 Oct 2008) | 2 lines
add mapinfo to add turret_test (and hide it from the menu)
r4877 | div0 | 2008-10-25 20:58:22 +0200 (Sat, 25 Oct 2008) | 2 lines
fix brushless pointparticles (new fteqcc bug)
r4878 | div0 | 2008-10-25 21:12:57 +0200 (Sat, 25 Oct 2008) | 2 lines
fix message of linked doors
r4879 | div0 | 2008-10-25 22:36:12 +0200 (Sat, 25 Oct 2008) | 2 lines
fix some gibs with independent players mode
r4880 | div0 | 2008-10-26 12:54:27 +0100 (Sun, 26 Oct 2008) | 2 lines
allow mandelbrot to be parametrized; add some cool parameters for a start
r4881 | div0 | 2008-10-26 13:02:38 +0100 (Sun, 26 Oct 2008) | 2 lines
fix "brightspot" tool
r4882 | div0 | 2008-10-26 13:41:40 +0100 (Sun, 26 Oct 2008) | 4 lines
add a cvar for HLAC shots
fix allow more than 4 seeker missiles
fix playerclip
r4883 | div0 | 2008-10-26 14:07:49 +0100 (Sun, 26 Oct 2008) | 2 lines
try player workaround on hook too
r4884 | div0 | 2008-10-26 14:27:31 +0100 (Sun, 26 Oct 2008) | 2 lines
make new HUD the default
r4885 | div0 | 2008-10-26 14:42:14 +0100 (Sun, 26 Oct 2008) | 2 lines
fix ammo display with sbar_hudselector 0
r4886 | div0 | 2008-10-26 15:38:36 +0100 (Sun, 26 Oct 2008) | 2 lines
race: round record times consistently
r4887 | div0 | 2008-10-26 16:47:36 +0100 (Sun, 26 Oct 2008) | 2 lines
comment out OS X support

Modified: branches/nexuiz-2.0/.patchsets
===================================================================
--- branches/nexuiz-2.0/.patchsets	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/.patchsets	2008-10-26 15:54:47 UTC (rev 4888)
@@ -1,2 +1,2 @@
 master = svn://svn.icculus.org/nexuiz/trunk
-revisions_applied = 1-4862
+revisions_applied = 1-4887

Modified: branches/nexuiz-2.0/data/defaultNexuiz.cfg
===================================================================
--- branches/nexuiz-2.0/data/defaultNexuiz.cfg	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/defaultNexuiz.cfg	2008-10-26 15:54:47 UTC (rev 4888)
@@ -99,7 +99,7 @@
 // 2D resolution 800x600
 vid_conwidth 800
 vid_conheight 600
-set sbar_hudselector 0 // use the old nexuiz hud layout
+set sbar_hudselector 1 // use the new nexuiz hud layout
 v_deathtilt 0 // needed for spectators (who are dead to avoid prediction)
 
 // these settings determine how much the view is affected by movement/damage
@@ -1174,4 +1174,10 @@
 alias sbar_columns_set  "cl_cmd sbar_columns_set $*"
 alias sbar_columns_help "cl_cmd sbar_columns_help $*"
 
+alias _gl_flashblend_update_00 "gl_flashblend 1"
+alias _gl_flashblend_update_10 "gl_flashblend 0"
+alias _gl_flashblend_update_01 "gl_flashblend 0"
+alias _gl_flashblend_update_11 "gl_flashblend 0"
+alias gl_flashblend_update "_gl_flashblend_update_$r_shadow_realtime_dlight$r_showsurfaces"
+
 exec turrets.cfg

Modified: branches/nexuiz-2.0/data/effectinfo.txt
===================================================================
--- branches/nexuiz-2.0/data/effectinfo.txt	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/effectinfo.txt	2008-10-26 15:54:47 UTC (rev 4888)
@@ -1,2570 +1,2970 @@
-// item respawn effect
-// flare particle and light
-// used in qcsrc/server/bots.qc:		//te_wizspike(start)
-// used in qcsrc/server/bots.qc:				te_wizspike(org)
-// used in qcsrc/server/bots.qc:	//te_wizspike(e.origin)
-// used in qcsrc/server/bots.qc:		//te_wizspike(e.nearestwaypoint.wpnearestpoint)
-effect TE_WIZSPIKE
-countabsolute 1
-type static
-color 0x63F2EA 0x63f2EA
-size 20 20
-alpha 128 128 128
-lightradius 200
-lightradiusfade 200
-lightcolor 0.4 0.9 0.9
-// cloud of particles which expand rapidly and then slow to form a ball
-effect TE_WIZSPIKE
-count 100
-type static
-color 0x63F2EA 0x63f2EA
-size 2 2
-alpha 64 64 64
-airfriction 2
-liquidfriction 2
-originjitter 16 16 16
-velocityjitter 32 32 32
-
-// laser impact
-// decal
-// used in qcsrc/server/bots.qc:		//te_knightspike(end)
-// used in qcsrc/server/bots.qc:			te_knightspike(start)
-// used in qcsrc/server/bots.qc:						te_knightspike(org)
-// used in qcsrc/server/bots.qc:		te_knightspike(org)
-effect TE_KNIGHTSPIKE
-countabsolute 1
-type decal
-tex 47 47
-size 24 24
-alpha 256 256 0
-originjitter 16 16 16
-lightradius 200
-lightradiusfade 1000
-lightcolor 4 0.2 0.2
-// flare effect
-effect TE_KNIGHTSPIKE
-countabsolute 1
-type static
-tex 39 39
-color 0xFF2010 0xFF2010
-alpha 256 256 1024
-size 24 24
-// sparks that rapidly expand and rapidly slow down to form an interesting spherical effect
-effect TE_KNIGHTSPIKE
-count 256
-type spark
-color 0x800000 0xFF8020
-alpha 256 256 1024
-size 4 4
-//bounce 1.5
-airfriction 6
-liquidfriction 6
-//originjitter 32 32 32
-velocityjitter 256 256 256
-
-// machinegun bullet impact
-// bullet impact decal
-// used nowhere in code
-effect TE_SPIKE
-countabsolute 1
-type decal
-tex 56 59
-size 5 5
-alpha 256 256 0
-originjitter 6 6 6
-// dust/smoke drifting away from the impact
-effect TE_SPIKE
-count 8
-type smoke
-tex 0 8
-color 0x101010 0x101010
-size 3 3
-sizeincrease 3
-alpha 255 255 256
-originjitter 0 0 0
-velocityjitter 8 8 8
-// dust/smoke staying at the impact
-effect TE_SPIKE
-count 1
-type smoke
-tex 0 8
-color 0x505050 0x505050
-size 4 4
-sizeincrease 4
-alpha 255 255 128
-originjitter 0 0 0
-velocityjitter 0 0 0
-// bouncing sparks
-effect TE_SPIKE
-count 20
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 0 256 256
-gravity 1
-bounce 1.5
-velocityoffset 0 0 80
-velocityjitter 64 64 64
-
-// electro combo explosion
-// decal
-// used nowhere in code
-effect TE_SPIKEQUAD
-countabsolute 1
-type decal
-tex 59 59
-size 64 64
-alpha 256 256 0
-originjitter 34 34 34
-lightradius 400
-lightradiusfade 200
-lightcolor 2 2.5 3
-// flare effect
-effect TE_SPIKEQUAD
-countabsolute 1
-type static
-tex 38 38
-color 0x80C0FF 0x80C0FF
-size 48 48
-alpha 256 256 128
-// large sparks
-effect TE_SPIKEQUAD
-count 20
-type static
-color 0x2030FF 0x80C0FF
-size 32 32
-alpha 256 256 256
-//gravity 1
-bounce 1.5
-airfriction 4
-liquidfriction 16
-//velocityoffset 0 0 120
-velocityjitter 512 512 512
-
-// quake effect
-// decal
-// used nowhere in code
-effect TE_SUPERSPIKE
-countabsolute 1
-type decal
-tex 56 59
-size 3 3
-alpha 256 256 0
-originjitter 6 6 6
-// dust/smoke drifting away from the impact
-effect TE_SUPERSPIKE
-count 8
-type smoke
-tex 0 8
-color 0x101010 0x101010
-size 3 3
-sizeincrease 3
-alpha 255 255 256
-originjitter 0 0 0
-velocityjitter 8 8 8
-// dust/smoke staying at the impact
-effect TE_SUPERSPIKE
-count 1
-type smoke
-tex 0 8
-color 0x505050 0x505050
-size 4 4
-sizeincrease 4
-alpha 255 255 128
-originjitter 0 0 0
-velocityjitter 0 0 0
-// sparks that disappear on impact
-effect TE_SUPERSPIKE
-count 30
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 0 256 768
-gravity 1
-bounce -1
-velocityoffset 0 0 80
-velocityjitter 64 64 64
-
-// quake effect
-// decal
-// used nowhere in code
-effect TE_SUPERSPIKEQUAD
-countabsolute 1
-type decal
-tex 56 59
-size 3 3
-alpha 256 256 0
-originjitter 6 6 6
-lightradius 100
-lightradiusfade 500
-lightcolor 0.15 0.15 1.5
-// dust/smoke drifting away from the impact
-effect TE_SUPERSPIKEQUAD
-count 8
-type smoke
-tex 0 8
-color 0x101010 0x101010
-size 3 3
-sizeincrease 3
-alpha 255 255 256
-originjitter 0 0 0
-velocityjitter 8 8 8
-// dust/smoke staying at the impact
-effect TE_SUPERSPIKEQUAD
-count 1
-type smoke
-tex 0 8
-color 0x505050 0x505050
-size 4 4
-sizeincrease 4
-alpha 255 255 128
-originjitter 0 0 0
-velocityjitter 0 0 0
-// sparks that disappear on impact
-effect TE_SUPERSPIKEQUAD
-count 30
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 0 256 768
-gravity 1
-bounce -1
-velocityoffset 0 0 80
-velocityjitter 64 64 64
-
-// shotgun pellet impact
-// decal
-// used in qcsrc/server/bots.qc:			//te_gunshot(org)
-// used in qcsrc/server/bots.qc:					te_gunshot(org)
-// used in qcsrc/server/bots.qc:					te_gunshot(org)
-// used in qcsrc/server/bots.qc:						te_gunshot(org)
-// used in qcsrc/server/bots.qc:		//te_gunshot(end)
-effect TE_GUNSHOT
-countabsolute 1
-type decal
-tex 56 59
-size 3 3
-alpha 256 256 0
-originjitter 6 6 6
-// dust/smoke drifting away from the impact
-effect TE_GUNSHOT
-count 4
-type smoke
-tex 0 8
-color 0x101010 0x101010
-size 3 3
-sizeincrease 3
-alpha 128 128 64
-originjitter 0 0 0
-velocityjitter 8 8 8
-// dust/smoke staying at the impact
-effect TE_GUNSHOT
-count 1
-type smoke
-tex 0 8
-color 0x505050 0x505050
-size 4 4
-sizeincrease 4
-alpha 128 128 64
-originjitter 0 0 0
-velocityjitter 0 0 0
-// bouncing sparks
-effect TE_GUNSHOT
-count 10
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 0 64 64
-gravity 1
-bounce 1.5
-velocityoffset 0 0 80
-velocityjitter 64 64 64
-
-// crylink impact effect
-// decal
-// used nowhere in code
-effect TE_GUNSHOTQUAD
-countabsolute 1
-type decal
-tex 47 47
-size 8 8
-alpha 256 256 0
-originjitter 12 12 12
-//lightradius 100
-//lightradiusfade 300
-//lightcolor 0.5 0.5 0.5
-// purple flare effect
-effect TE_GUNSHOTQUAD
-countabsolute 1
-type static
-tex 39 39
-color 0x504060 0x504060
-size 8 8
-alpha 256 256 512
-// purple sparks
-effect TE_GUNSHOTQUAD
-count 12
-type spark
-color 0xA040C0 0xFFFFFF
-size 1 1
-alpha 128 128 384
-gravity 1
-bounce 1.5
-velocityoffset 0 0 80
-velocityjitter 128 128 128
-
-// mortar/hagar explosion (smaller than rocket)
-// decal
-// used nowhere in code
-effect TE_EXPLOSION
-countabsolute 1
-type decal
-tex 8 16
-size 48 48
-alpha 256 256 0
-originjitter 40 40 40
-lightradius 350
-lightradiusfade 700
-lightcolor 4 2 0.5
-// flare effect
-effect TE_EXPLOSION
-countabsolute 1
-type static
-tex 35 37
-color 0x404040 0x404040
-size 48 48
-alpha 192 192 64
-// fire effect which expands then slows
-effect TE_EXPLOSION
-notunderwater
-count 128
-type static
-tex 48 55
-color 0x902010 0xFFD080
-size 16 16
-alpha 128 128 256
-bounce 1.5
-airfriction 4
-liquidfriction 4
-originjitter 8 8 8
-velocityjitter 256 256 256
-// underwater bubbles
-effect TE_EXPLOSION
-underwater
-count 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 96 96 96
-// bouncing sparks
-effect TE_EXPLOSION
-notunderwater
-count 32
-type spark
-color 0x903010 0xFFD030
-size 2 2
-alpha 256 256 384
-gravity 1
-airfriction 0.2
-bounce 1.5
-liquidfriction 0.8
-velocityoffset 0 0 80
-velocityjitter 256 256 256
-
-// quake effect
-// decal
-// used nowhere in code
-effect TE_EXPLOSIONQUAD
-countabsolute 1
-type decal
-tex 8 16
-size 48 48
-alpha 256 256 0
-originjitter 40 40 40
-lightradius 350
-lightradiusfade 700
-lightcolor 4 2 8
-// smoke cloud
-effect TE_EXPLOSIONQUAD
-notunderwater
-count 32
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 12 12
-alpha 32 32 64
-velocityjitter 48 48 48
-// underwater bubbles
-effect TE_EXPLOSIONQUAD
-underwater
-count 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 96 96 96
-// sparks which go through walls
-effect TE_EXPLOSIONQUAD
-notunderwater
-count 128
-type spark
-color 0x903010 0xFFD030
-size 1 1
-alpha 0 256 512
-gravity 1
-airfriction 0.2
-liquidfriction 0.8
-velocityoffset 0 0 80
-velocityjitter 256 256 256
-
-// quake effect
-// decal
-// used in qcsrc/server/keyhunt.qc:	te_tarexplosion(lostkey.origin)
-effect TE_TAREXPLOSION
-countabsolute 1
-type decal
-tex 8 16
-size 48 48
-alpha 256 256 0
-originjitter 40 40 40
-lightradius 600
-lightradiusfade 1200
-lightcolor 1.6 0.8 2
-// smoke cloud
-effect TE_TAREXPLOSION
-notunderwater
-count 32
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 12 12
-alpha 32 32 64
-velocityjitter 48 48 48
-// underwater bubbles
-effect TE_TAREXPLOSION
-underwater
-count 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 96 96 96
-// sparks which go through walls
-effect TE_TAREXPLOSION
-notunderwater
-count 128
-type spark
-color 0x903010 0xFFD030
-size 1 1
-alpha 0 256 512
-gravity 1
-airfriction 0.2
-liquidfriction 0.8
-velocityoffset 0 0 80
-velocityjitter 256 256 256
-
-// bloody impact effect indicating damage
-// used nowhere in code
-effect TE_BLOOD
-count 0.333
-type blood
-tex 24 32
-size 8 8
-alpha 256 256 64
-bounce -1
-airfriction 1
-liquidfriction 4
-velocityjitter 64 64 64
-velocitymultiplier 1
-
-// sparks (quake effect)
-// used in qcsrc/server/antilag.qc:		te_spark(antilag_takebackorigin(e, time - e.antilag_debug), '0 0 0', 32)
-// used in qcsrc/server/g_triggers.qc:	self.mdl = "TE_SPARK"
-effect TE_SPARK
-count 1
-type spark
-tex 40 40
-color 0x8f4333 0xfff31b
-size 0.4 0.6
-alpha 64 256 768
-gravity 1
-bounce -1
-velocityoffset 0 0 80
-velocityjitter 64 64 64
-velocitymultiplier 1
-
-// nex impact
-// decal
-// used in qcsrc/server/bots.qc:		te_plasmaburn(org)
-effect TE_PLASMABURN
-countabsolute 1
-type decal
-tex 47 47
-size 24 24
-alpha 256 256 0
-originjitter 16 16 16
-lightradius 200
-lightradiusfade 400
-lightcolor 1 1 1
-// flare effect
-effect TE_PLASMABURN
-countabsolute 1
-type static
-tex 37 37
-color 0x80C0FF 0x80C0FF
-size 8 8
-alpha 256 256 512
-// small sparks which form a sphere as they slow down
-effect TE_PLASMABURN
-count 256
-type spark
-color 0x2030FF 0x80C0FF
-size 1 2
-alpha 256 256 1024
-bounce 2
-airfriction 8
-liquidfriction 8
-velocityjitter 128 128 128
-
-// quake effect
-// used in qcsrc/server/bots.qc:	//te_smallflash((e.absmin + e.absmax) * 0.5)
-// used in qcsrc/server/bots.qc:		//te_smallflash((e.absmin + e.absmax) * 0.5)
-effect TE_SMALLFLASH
-lightradius 200
-lightradiusfade 1000
-lightcolor 2 2 2
-
-// quake effect
-// used nowhere in code
-effect TE_FLAMEJET
-count 1
-type smoke
-color 0x6f0f00 0xe3974f
-size 4 4
-alpha 64 128 384
-gravity -1
-bounce 1.1
-airfriction 1
-liquidfriction 4
-velocityjitter 128 128 128
-velocitymultiplier 1
-
-// quake effect
-// used nowhere in code
-effect TE_LAVASPLASH
-count 64
-type alphastatic
-color 0x6f0f00 0xe3974f
-size 12 12
-alpha 256 256 256
-gravity 0.05
-originoffset 0 0 32
-originjitter 128 128 32
-velocityoffset 0 0 256
-velocityjitter 128 128 0
-
-// player teleport effect
-// used nowhere in code
-effect TE_TELEPORT
-count 112
-type static
-color 0xA0A0A0 0xFFFFFF
-size 10 10
-alpha 64 128 256
-airfriction 1
-liquidfriction 4
-originoffset 0 0 28
-originjitter 16 16 28
-velocityjitter 0 0 256
-
-// nex beam
-// used in qcsrc/server/w_minstanex.qc:	trailparticles(world, particleeffectnum("TE_TEI_G3"), w_shotorg, trace_endpos)
-effect TE_TEI_G3
-countabsolute 1
-type beam
-tex 60 60
-color 0xFFFFFF 0xFFFFFF
-size 4 4
-alpha 128 128 256
-// experimental
-effect TE_TEI_G3
-trailspacing 2
-type static
-color 0x202020 0x404040
-size 1 1
-alpha 256 256 512
-airfriction -4
-//liquidfriction -4
-velocityjitter 8 8 8
-type smoke
-
-// smoke effect
-// used nowhere in code
-effect TE_TEI_SMOKE
-count 0.333
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 5 5
-alpha 256 256 512
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-velocitymultiplier 1
-
-// rocket explosion (bigger than mortar and hagar)
-// decal
-// used nowhere in code
-effect TE_TEI_BIGEXPLOSION
-countabsolute 1
-type decal
-tex 8 16
-size 72 72
-alpha 256 256 0
-originjitter 40 40 40
-lightradius 500
-lightradiusfade 500
-lightcolor 4 2 0.5
-// flare effect
-effect TE_TEI_BIGEXPLOSION
-countabsolute 1
-type static
-tex 35 37
-color 0x404040 0x404040
-size 72 72
-alpha 192 192 64
-// fire effect
-effect TE_TEI_BIGEXPLOSION
-notunderwater
-count 256
-type static
-tex 48 55
-color 0x902010 0xFFD080
-size 16 16
-alpha 128 128 256
-bounce 1.5
-airfriction 4
-liquidfriction 4
-originjitter 8 8 8
-velocityjitter 512 512 512
-// underwater bubbles
-effect TE_TEI_BIGEXPLOSION
-underwater
-count 64
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 144 144 144
-// bouncing sparks
-effect TE_TEI_BIGEXPLOSION
-notunderwater
-count 128
-type spark
-color 0x903010 0xFFD030
-size 2 2
-alpha 256 256 384
-gravity 1
-airfriction 0.2
-bounce 1.5
-liquidfriction 0.8
-velocityoffset 0 0 80
-velocityjitter 384 384 384
-
-// electro explosion
-// decal
-// used nowhere in code
-effect TE_TEI_PLASMAHIT
-countabsolute 1
-type decal
-tex 59 59
-size 32 32
-alpha 256 256 0
-originjitter 20 20 20
-lightradius 200
-lightradiusfade 600
-lightcolor 2.4 4.8 8
-// flare effect
-effect TE_TEI_PLASMAHIT
-countabsolute 1
-type static
-tex 38 38
-color 0x80C0FF 0x80C0FF
-size 32 32
-alpha 256 256 512
-// cloud of bouncing sparks
-effect TE_TEI_PLASMAHIT
-count 1
-type spark
-color 0x2030FF 0x80C0FF
-size 2 4
-alpha 256 256 1024
-//gravity 1
-bounce 1.5
-//velocityoffset 0 0 120
-velocityjitter 512 512 512
-
-
-
-
-
-
-
-
-
-//////////////////////////////////////////////////
-// New effects in 2.4
-//////////////////////////////////////////////////
-
-
-
-// bloody impact effect indicating damage
-// used in qcsrc/server/cl_player.qc:		pointparticles(particleeffectnum("blood"), hitloc, force, bound(0, damage, 200))
-// used in qcsrc/server/cl_player.qc:		pointparticles(particleeffectnum("blood"), hitloc, force, bound(0, damage, 200))
-// used in qcsrc/server/g_violence.qc:		pointparticles(particleeffectnum("blood"), self.origin + '0 0 1', '0 0 30', 10)
-effect blood
-count 0.333
-type blood
-tex 24 32
-size 8 8
-alpha 256 256 64
-bounce -1
-airfriction 1
-liquidfriction 4
-velocityjitter 64 64 64
-velocitymultiplier 1
-
-
-
-// player teleport effect
-// used in qcsrc/server/t_teleporters.qc:	pointparticles(particleeffectnum("teleport"), player.origin, '0 0 0', 1)
-// used in qcsrc/server/t_teleporters.qc:	pointparticles(particleeffectnum("teleport"), to + v_forward * 32, '0 0 0', 1)
-effect teleport
-count 112
-type static
-color 0xA0A0A0 0xFFFFFF
-size 10 10
-alpha 64 128 256
-airfriction 1
-liquidfriction 4
-originoffset 0 0 28
-originjitter 16 16 28
-velocityjitter 0 0 256
-
-
-
-// normal super gory blood trail (used by gibs)
-// used nowhere in code
-effect TR_BLOOD
-trailspacing 16
-type blood
-color 0xFFFFFF 0xFFFFFF
-tex 24 32
-size 8 8
-alpha 384 384 192
-bounce -1
-airfriction 1
-liquidfriction 4
-velocityjitter 64 64 64
-velocitymultiplier 0.5
-
-
-
-// thinner blood trail (used by quake zombies)
-// used nowhere in code
-effect TR_SLIGHTBLOOD
-trailspacing 32
-type blood
-color 0xFFFFFF 0xFFFFFF
-tex 24 32
-size 8 8
-alpha 384 384 192
-bounce -1
-airfriction 1
-liquidfriction 4
-velocityjitter 64 64 64
-velocitymultiplier 0.5
-
-
-
-// func_stardust effect, used in some maps to indicate teleporters
-// used in qcsrc/server/assault.qc:		//self.effects = EF_STARDUST
-// used in qcsrc/server/g_triggers.qc:	self.effects = EF_STARDUST
-// used in qcsrc/server/portals.qc:	portal.effects = EF_STARDUST | EF_BLUE
-effect EF_STARDUST
-count 75
-type static
-color 0xfff368 0xfff368
-size 1.0 2.0
-alpha 64 128 128
-gravity -0.1
-airfriction 0.2
-liquidfriction 0.8
-originjitter 16 16 64
-velocityjitter 32 32 0
-//lightradius 200
-//lighttime 0
-//lightcolor 0.4 0.9 0.9
-
-
-// flare particle and light
-// used in qcsrc/server/t_items.qc:	//pointparticles(particleeffectnum("item_respawn"), self.origin + self.mins_z * '0 0 1' + '0 0 48', '0 0 0', 1)
-// used in qcsrc/server/t_items.qc:	pointparticles(particleeffectnum("item_respawn"), self.origin + 0.5 * (self.mins + self.maxs), '0 0 0', 1)
-effect item_respawn
-countabsolute 1
-type static
-color 0x63F2EA 0x63f2EA
-size 32 32
-alpha 128 128 128
-// cloud of particles which expand rapidly and then slow to form a ball
-effect item_respawn
-count 64
-type spark
-tex 41 41
-color 0x63F2EA 0x63f2EA
-size 2 2
-alpha 256 256 1280
-//originjitter 24 24 24
-velocityjitter 256 256 256
-
-
-
-// used in qcsrc/server/t_jumppads.qc:			pointparticles(particleeffectnum("jumppad_activate"), other.origin, other.velocity, 1)
-effect jumppad_activate
-lightradius 200
-lightradiusfade 2000
-lightcolor 2 2 2
-
-
-
-// used in qcsrc/server/w_laser.qc:	pointparticles(particleeffectnum("laser_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
-effect laser_muzzleflash
-count 1
-type smoke
-color 0xFFFFFF 0xFFFFFF
-tex 0 8
-size 5 5
-alpha 64 64 128
-airfriction 12
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-velocitymultiplier 0.01
-lightradius 200
-lightradiusfade 2000
-lightcolor 3 0.1 0.1
-
-
-
-// decal
-// used in qcsrc/server/w_laser.qc:	pointparticles(particleeffectnum("laser_impact"), org2, normal * 1000, 1)
-effect laser_impact
-countabsolute 1
-type decal
-tex 47 47
-size 24 24
-alpha 256 256 0
-originjitter 16 16 16
-lightradius 200
-lightradiusfade 500
-lightcolor 8 0.4 0.4
-// flare effect
-effect laser_impact
-countabsolute 1
-type static
-tex 39 39
-color 0xFF2010 0xFF2010
-alpha 256 256 1024
-size 24 24
-// sparks that rapidly expand and rapidly slow down to form an interesting spherical effect
-effect laser_impact
-count 256
-type spark
-color 0x800000 0xFF8020
-alpha 256 256 1024
-size 4 4
-//bounce 1.5
-airfriction 6
-liquidfriction 6
-//originjitter 32 32 32
-velocityjitter 256 256 256
-effect laser_impact
-count 8
-type smoke
-tex 48 55
-color 0x800000 0xFF8020
-size 12 12
-alpha 128 256 256
-originjitter 1 1 1
-velocitymultiplier 0.01
-velocityjitter 16 16 16
-sizeincrease 6
-
-
-
-// used in qcsrc/server/w_shotgun.qc:	pointparticles(particleeffectnum("shotgun_muzzleflash"), w_shotorg, w_shotdir * 1000, cvar("g_balance_shotgun_primary_ammo"))
-// used in qcsrc/server/w_shotgun.qc:	pointparticles(particleeffectnum("shotgun_muzzleflash"), w_shotorg, w_shotdir * 1000, cvar("g_balance_shotgun_secondary_ammo"))
-effect shotgun_muzzleflash
-count 3
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 5 5
-alpha 256 256 512
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-velocitymultiplier 0.01
-lightradius 200
-lightradiusfade 2000
-lightcolor 2 1.5 0.2
-sizeincrease 12
-velocitymultiplier 0.05
-effect shotgun_muzzleflash
-count 10
-type spark
-tex 40 40
-color 0xFFFDD9 0xff5a00
-size 2 2
-alpha 0 128 1024
-originjitter 1 1 1
-velocityjitter 444 444 444
-velocitymultiplier 1.7
-gravity 0.3
-airfriction 5
-
-
-
-// shotgun pellet impact
-// decal
-// used in qcsrc/server/w_common.qc:				pointparticles(particleeffectnum("shotgun_impact"), trace_endpos, trace_plane_normal * 1000, 1)
-effect shotgun_impact
-countabsolute 1
-type decal
-tex 56 59
-size 3 3
-alpha 256 256 0
-originjitter 6 6 6
-//lightradius 30
-//lightradiusfade 90
-//lightcolor 1 1 1
-// dust/smoke drifting away from the impact
-effect shotgun_impact
-count 5
-type smoke
-tex 0 8
-color 0xFFFFFF 0xA37443
-size 7 7
-alpha 0 64 32
-originjitter 1 1 1
-airfriction 7
-liquidfriction 16
-velocityjitter 100 100 100
-sizeincrease 12
-velocitymultiplier 0.25
-// dust/smoke staying at the impact
-effect shotgun_impact
-count 1
-type smoke
-tex 0 8
-color 0xFFFFFF 0xFFFFFF
-size 17 17
-alpha 64 64 32
-sizeincrease 4
-// sparks
-effect shotgun_impact
-notunderwater
-count 20
-type spark
-tex 40 40
-color 0xFDFFD9 0xFDFFD9
-size 0.6 0.6
-alpha 256 256 768
-gravity 1
-bounce 1
-airfriction 5
-originjitter 1 1 1
-velocityjitter 400 400 400
-velocitymultiplier 0.1
-
-
-
-// used in qcsrc/server/w_uzi.qc:	pointparticles(particleeffectnum("uzi_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
-effect uzi_muzzleflash
-count 2
-type static
-color 0x202020 0x404040
-tex 0 8
-size 5 5
-alpha 256 256 512
-originjitter 1.5 1.5 1.5
-velocityjitter 1 1 1
-velocitymultiplier 0.03
-lightradius 200
-lightradiusfade 2000
-lightcolor 2 1.5 0.2
-gravity -0.1
-effect uzi_muzzleflash
-count 20
-type spark
-tex 40 40
-color 0xFFFDD9 0xFFFDD9
-size 2 2
-alpha 0 128 1024
-originjitter 1 1 1
-velocityjitter 300 300 300
-velocitymultiplier 0.5
-airfriction 12
-
-
-// decal
-// used in qcsrc/server/cl_client.qc:	//pointparticles(particleeffectnum("machinegun_impact"), self.origin + self.view_ofs + '0 0 7', '0 0 0', 1)
-// used in qcsrc/server/w_common.qc:				pointparticles(particleeffectnum("machinegun_impact"), trace_endpos, trace_plane_normal * 1000, 1)
-effect machinegun_impact
-countabsolute 1
-type decal
-tex 56 59
-size 5 5
-alpha 256 256 0
-originjitter 6 6 6
-lightradius 80
-lightradiusfade 800
-lightcolor 6 3.6 0.6
-// dust/smoke drifting away from the impact
-effect machinegun_impact
-count 5
-type smoke
-tex 0 8
-color 0xFFFFFF 0xA37443
-size 7 7
-alpha 0 64 32
-originjitter 1 1 1
-airfriction 7
-liquidfriction 16
-velocityjitter 100 100 100
-sizeincrease 12
-velocitymultiplier 0.25
-// dust/smoke staying at the impact
-effect machinegun_impact
-count 1
-type smoke
-tex 0 8
-color 0xFFFFFF 0xFFFFFF
-size 17 17
-alpha 64 64 32
-sizeincrease 4
-// sparks
-effect machinegun_impact
-notunderwater
-count 20
-type spark
-tex 40 40
-color 0xFDFFD9 0xFDFFD9
-size 0.3 0.3
-alpha 256 256 768
-gravity 1
-bounce 1
-airfriction 5
-originjitter 1 1 1
-velocityjitter 400 400 400
-velocitymultiplier 0.1
-
-
-
-// used in qcsrc/server/w_grenadelauncher.qc:	pointparticles(particleeffectnum("grenadelauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
-// used in qcsrc/server/w_grenadelauncher.qc:	pointparticles(particleeffectnum("grenadelauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
-// used in qcsrc/server/w_porto.qc:	//pointparticles(particleeffectnum("grenadelauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
-effect grenadelauncher_muzzleflash
-count 3
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 5 5
-alpha 256 256 512
-originjitter 1.5 1.5 1.5
-airfriction 12
-velocityjitter 20 20 20
-velocitymultiplier 0.03
-lightradius 200
-lightradiusfade 2000
-lightcolor 2 1.5 0.2
-effect grenadelauncher_muzzleflash
-count 30
-type spark
-tex 40 40
-color 0xFFFDD9 0xFFFDD9
-size 3 3
-alpha 0 128 1024
-originjitter 1 1 1
-velocityjitter 300 300 300
-velocitymultiplier 0.5
-airfriction 12
-
-
-
-// hagar trail
-// smoke
-// used in qcsrc/server/w_hagar.qc:	missile.modelflags = MF_GRENADE
-// used in qcsrc/server/w_hagar.qc:	missile.modelflags = MF_GRENADE
-// used in qcsrc/server/w_porto.qc:	gren.modelflags = MF_GRENADE
-effect TR_GRENADE
-trailspacing 6
-type alphastatic
-color 0x303030 0x000000
-tex 0 8
-size 1 2
-bounce 1
-sizeincrease 2
-alpha 100 200 280
-originjitter 1 1 1
-velocityjitter 1 1 1
-velocitymultiplier -0.02
-//gravity -0.11
-// fire
-effect TR_GRENADE
-notunderwater
-trailspacing 2
-type static
-color 0xffdf72 0x811200
-tex 48 55
-size 1 2
-sizeincrease -15
-alpha 100 144 988
-airfriction 8
-velocityjitter 32 32 32
-velocitymultiplier -1.0
-// bubbles
-effect TR_GRENADE
-underwater
-trailspacing 8
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 1 1
-alpha 256 256 256
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
-
-
-
-// mortar trail
-// smoke
-// used in qcsrc/server/w_grenadelauncher.qc:	gren.modelflags = MF_TRACER2
-// used in qcsrc/server/w_grenadelauncher.qc:	gren.modelflags = MF_TRACER2
-// used in qcsrc/server/w_hook.qc:	gren.modelflags = MF_TRACER2
-effect TR_KNIGHTSPIKE // used for MF_TRACER2
-notunderwater
-trailspacing 5
-type alphastatic
-color 0x303030 0x000000
-tex 0 8
-size 3 3
-bounce 1
-sizeincrease 11
-alpha 100 200 400
-originjitter 2 2 2
-velocityjitter 3 3 3
-velocitymultiplier -0.02
-gravity -0.11
-//marker
-effect TR_KNIGHTSPIKE // used for MF_TRACER2
-type alphastatic
-color 0xFF0000 0xFF0000
-tex 62 62
-size 1 1 
-sizeincrease -0.1
-trailspacing 1
-alpha 256 256 720
-// bubbles
-effect TR_KNIGHTSPIKE // used for MF_TRACER2
-underwater
-trailspacing 16
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 1 1
-alpha 256 256 256
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
-
-
-
-// decal
-// used in qcsrc/server/w_grenadelauncher.qc:	pointparticles(particleeffectnum("grenade_explode"), org2, '0 0 0', 1)
-// used in qcsrc/server/w_grenadelauncher.qc:	pointparticles(particleeffectnum("grenade_explode"), org2, '0 0 0', 1)
-effect grenade_explode
-countabsolute 1
-type decal
-tex 8 16
-size 48 48
-alpha 256 256 0
-originjitter 40 40 40
-lightradius 250
-lightradiusfade 400
-lightcolor 8 4 1
-// fire effect which expands then slows
-effect grenade_explode
-notunderwater
-count 80
-type static
-tex 48 55
-color 0xe03f00 0x5e0000
-size 16 26
-sizeincrease 20
-alpha 128 228 356
-bounce 4.5
-airfriction 8
-liquidfriction 8
-originjitter 8 8 8
-velocityjitter 256 256 256
-// fire effect which make brigt dot inside
-effect grenade_explode
-notunderwater
-count 30
-type static
-tex 48 55
-color 0xe03f00 0xffdf92
-size 6 16
-sizeincrease 40
-alpha 228 328 756
-bounce 1
-airfriction 8
-liquidfriction 8
-originjitter 8 8 8
-velocityjitter 256 256 256
-// smoke
-effect grenade_explode
-type alphastatic
-notunderwater
-tex 0 8
-count 20
-size 20 40
-sizeincrease 34
-alpha 500 600 556
-velocityjitter 256 256 256
-airfriction 5
-color 0x000000 0x111111
-bounce 6
-// underwater bubbles
-effect grenade_explode
-underwater
-count 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 96 96 96
-// bouncing sparks
-effect grenade_explode
-notunderwater
-count 16
-type spark
-color 0x903010 0xFFD030
-size 2 2
-tex 40 40
-alpha 256 256 384
-gravity 1
-airfriction 0.2
-bounce 1.5
-liquidfriction 0.8
-velocityoffset 0 0 80
-velocityjitter 256 256 256
-
-
-
-// used in qcsrc/server/w_electro.qc:	pointparticles(particleeffectnum("electro_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
-// used in qcsrc/server/w_electro.qc:	pointparticles(particleeffectnum("electro_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
-effect electro_muzzleflash
-count 1
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 5 5
-alpha 256 256 512
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-velocitymultiplier 0.01
-lightradius 200
-lightradiusfade 2000
-lightcolor 2 1.5 0.2
-effect electro_muzzleflash
-count 30
-type spark
-tex 31 31
-color 0xD9FDFF 0xD9FDFF
-size 3 3
-alpha 0 128 1024
-originjitter 1 1 1
-velocityjitter 300 300 300
-velocitymultiplier 0.5
-airfriction 12
-
-
-
-// electro trail
-// glowing vapor trail
-// used nowhere in code
-effect TR_NEXUIZPLASMA
-trailspacing 2
-type static
-color 0x283880 0x283880
-size 3 3
-tex 62 62
-alpha 256 256 968
-//velocityjitter 16 16 16
-lightradius 90
-lighttime 0
-lightcolor 1.5 3 6
-velocitymultiplier -0.1
-// bright sparks
-effect TR_NEXUIZPLASMA
-trailspacing 6
-count 3
-type snow
-tex 42 42
-color 0x629dff 0x0018ff
-size 2 4
-sizeincrease -20
-alpha 444 512 1866
-bounce 1
-velocityoffset 0 0 15
-airfriction 12
-originjitter 1 1 1
-velocityjitter 50 50 50
-
-
-
-// decal
-// used in qcsrc/server/w_electro.qc:		pointparticles(particleeffectnum("electro_impact"), org2, '0 0 0', 1)
-effect electro_impact
-countabsolute 1
-type decal
-tex 59 59
-size 32 32
-alpha 256 256 0
-originjitter 20 20 20
-lightradius 250
-lightradiusfade 250
-lightcolor 3.125 4.375 10
-// flare effect
-effect electro_impact
-countabsolute 1
-type static
-tex 38 38
-color 0x80C0FF 0x80C0FF
-size 12 32
-alpha 256 256 512
-// cloud of bouncing sparks
-effect electro_impact
-count 60
-type smoke
-tex 42 42
-color 0x629dff 0x0018ff
-size 36 36
-sizeincrease -50
-alpha 256 256 1024
-bounce 2
-gravity -0.3
-airfriction 6
-originjitter 1 1 1
-velocityjitter 512 512 512
-// inner cloud of smoke
-effect electro_impact
-count 60
-type smoke
-color 0x629dff 0x0018ff
-tex 0 8
-size 20 24
-sizeincrease 50
-alpha 200 256 512
-airfriction 30
-originjitter 20 20 20
-velocityjitter 320 320 320
-
-// decal
-// used in qcsrc/server/w_electro.qc:		pointparticles(particleeffectnum("electro_ballexplode"), org2, '0 0 0', 1)
-effect electro_ballexplode
-countabsolute 1
-type decal
-tex 59 59
-size 32 32
-alpha 256 256 0
-originjitter 20 20 20
-lightradius 250
-lightradiusfade 250
-lightcolor 3.125 4.375 10
-// flare effect
-effect electro_ballexplode
-countabsolute 1
-type static
-tex 38 38
-color 0x80C0FF 0x80C0FF
-size 32 32
-alpha 256 256 512
-// cloud of bouncing sparks
-effect electro_ballexplode
-count 128
-type spark
-tex 41 41
-color 0xFDFFD9 0xFDFFD9
-size 16 16
-alpha 256 256 1024
-bounce 2
-//airfriction 2
-originjitter 1 1 1
-velocityjitter 512 512 512
-// inner cloud of smoke
-effect electro_ballexplode
-count 16
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 24 24
-alpha 256 256 512
-originjitter 20 20 20
-velocityjitter 32 32 32
-
-
-
-// decal
-// used in qcsrc/server/w_electro.qc:	pointparticles(particleeffectnum("electro_combo"), org2, '0 0 0', 1)
-effect electro_combo
-countabsolute 1
-type decal
-tex 59 59
-size 64 64
-alpha 256 256 0
-originjitter 34 34 34
-lightradius 400
-lightradiusfade 300
-lightcolor 4 5 6
-// flare effect
-effect electro_combo
-countabsolute 1
-type static
-tex 38 38
-color 0x80C0FF 0x80C0FF
-size 48 48
-alpha 128 128 64
-// large sparks
-effect electro_combo
-count 20
-type static
-color 0x2030FF 0x80C0FF
-size 32 32
-alpha 256 256 256
-bounce 2
-airfriction 6
-liquidfriction 16
-//velocityoffset 0 0 120
-velocityjitter 512 512 512
-effect electro_combo
-count 64
-type spark
-tex 41 41
-color 0xFDFFD9 0xFDFFD9
-size 16 16
-alpha 444 512 866
-bounce 2
-//airfriction 2
-originjitter 1 1 1
-velocityjitter 512 512 512
-// inner cloud of smoke
-effect electro_combo
-count 0.25
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 24 24
-alpha 256 256 256
-originjitter 20 20 20
-velocityjitter 32 32 32
-
-
-
-// used in qcsrc/server/w_crylink.qc:	pointparticles(particleeffectnum("crylink_muzzleflash"), w_shotorg, w_shotdir * 1000, shots)
-// used in qcsrc/server/w_crylink.qc:	pointparticles(particleeffectnum("crylink_muzzleflash"), w_shotorg, w_shotdir * 1000, shots)
-effect crylink_muzzleflash
-count 1
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 5 5
-alpha 128 128 256
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-velocitymultiplier 0.01
-lightradius 200
-lightradiusfade 2000
-lightcolor 2 1.5 0.2
-effect crylink_muzzleflash
-count 10
-type spark
-tex 40 40
-color 0xA080C0 0xA080C0
-size 3 3
-alpha 0 128 1024
-originjitter 1 1 1
-velocityjitter 200 200 200
-velocitymultiplier 0.3
-airfriction 12
-
-
-
-// crylink impact effect
-// decal
-// used in qcsrc/server/w_crylink.qc:	pointparticles(particleeffectnum("crylink_impact"), self.origin, '0 0 0', 1)
-effect crylink_impact
-countabsolute 1
-type decal
-tex 47 47
-size 8 8
-alpha 256 256 0
-originjitter 12 12 12
-//lightradius 60
-//lightradiusfade 300
-//lightcolor 3.2 0.4 4
-// purple flare effect
-effect crylink_impact
-countabsolute 1
-type static
-tex 39 39
-color 0x504060 0x504060
-size 8 8
-alpha 256 256 512
-// purple sparks
-effect crylink_impact
-count 20
-type spark
-tex 41 41
-color 0xA040C0 0xA040C0
-bounce 2
-size 4 4
-alpha 256 256 1024
-velocityjitter 256 256 256
-// purple splash
-effect crylink_impact
-count 3
-type static
-color 0xE070FF 0xE070FF
-size 8 8
-alpha 256 256 512
-velocityjitter 8 8 8
-// purple splash
-effect crylink_impact
-count 3
-type static
-color 0xE070FF 0xE070FF
-size 8 8
-alpha 256 256 1024
-velocityjitter 32 32 32
-
-
-
-// used in qcsrc/server/w_minstanex.qc:	pointparticles(particleeffectnum("nex_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
-// used in qcsrc/server/w_nex.qc:	pointparticles(particleeffectnum("nex_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
-effect nex_muzzleflash
-count 10
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 16 16
-alpha 128 128 192
-originjitter 4 4 4
-velocityjitter 24 24 24
-velocitymultiplier 0.02
-lightradius 200
-lightradiusfade 200
-lightcolor 2 2.5 3
-effect nex_muzzleflash
-count 150
-type spark
-tex 41 41
-color 0xD9FDFF 0xD9FDFF
-size 3 3
-alpha 0 128 1024
-originjitter 1 1 1
-velocityjitter 600 600 600
-velocitymultiplier 0.5
-airfriction 9
-
-
-
-//// nex beam
-//effect nex_beam
-//countabsolute 1
-//type beam
-//tex 60 60
-//color 0xFFFFFF 0xFFFFFF
-//size 6 6
-//alpha 128 128 192
-// nex beam: ring smoke
-// used in qcsrc/server/w_nex.qc:	trailparticles(world, particleeffectnum("nex_beam"), w_shotorg, trace_endpos)
-effect nex_beam
-trailspacing 32
-color 0x1680A0 0x1680A0
-size 4 4
-tex 32 32
-alpha 64 128 64
-airfriction 5
-sizeincrease 2
-type static
-// nex beam: drifting smoke
-effect nex_beam
-trailspacing 6
-color 0x5080A0 0x5080A0
-size 1 1
-tex 0 8
-alpha 32 64 32
-airfriction 9
-sizeincrease 8
-velocityjitter 64 64 64
-type static
-// nex beam: bright core
-effect nex_beam
-trailspacing 6
-color 0x80CDFF 0x80CDFF
-size 4 4
-//tex 48 55
-alpha 256 256 1280
-type static
-//sparks
-effect nex_beam
-trailspacing 8
-color 0x1680A0 0x1680A0
-size 1 1
-tex 63 63
-alpha 64 128 80
-airfriction 5
-gravity -0.01
-type snow
-
-// nex impact
-// decal
-// used in qcsrc/server/w_minstanex.qc:		pointparticles(particleeffectnum("nex_impact"), trace_endpos - w_shotdir * 6, '0 0 0', 1)
-// used in qcsrc/server/w_nex.qc:		pointparticles(particleeffectnum("nex_impact"), trace_endpos - w_shotdir * 6, '0 0 0', 1)
-effect nex_impact
-countabsolute 1
-type decal
-tex 47 47
-size 24 24
-alpha 256 256 0
-originjitter 16 16 16
-lightradius 200
-lightradiusfade 250
-lightcolor 4 6 8
-// shockwave
-effect nex_impact
-countabsolute 1
-type static
-tex 34 34
-size 16 16
-alpha 100 100 300
-sizeincrease 200
-
-
-// flare effect
-effect nex_impact
-countabsolute 1
-type static
-tex 37 37
-color 0x80C0FF 0x80C0FF
-size 8 8
-alpha 256 256 256
-// small sparks which form a sphere as they slow down
-//effect nex_impact
-//count 256
-//type spark
-//color 0x2030FF 0x80C0FF
-//size 1 2
-//alpha 256 256 512
-//bounce 2
-//airfriction 8
-//liquidfriction 8
-//velocityjitter 384 384 384
-// small sparks which glow brightly but live briefly
-effect nex_impact
-count 128
-type spark
-tex 41 41
-color 0xD9FDFF 0xD9FDFF
-size 4 4
-alpha 0 128 512
-bounce 2
-velocityjitter 600 600 600
-velocitymultiplier 0.5
-airfriction 9
-
-
-
-// used in qcsrc/server/w_hagar.qc:	pointparticles(particleeffectnum("hagar_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
-// used in qcsrc/server/w_hagar.qc:	pointparticles(particleeffectnum("hagar_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
-effect hagar_muzzleflash
-count 4
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 5 5
-alpha 256 256 512
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-velocitymultiplier 0.01
-lightradius 200
-lightradiusfade 2000
-lightcolor 2 1.5 0.2
-effect hagar_muzzleflash
-count 30
-type spark
-tex 40 40
-color 0xFFFDD9 0xFFFDD9
-size 3 3
-alpha 0 128 1024
-originjitter 1 1 1
-velocityjitter 300 300 300
-velocitymultiplier 0.5
-airfriction 12
-
-
-
-// used in qcsrc/server/w_hagar.qc:		pointparticles(particleeffectnum("hagar_bounce"), self.origin, self.velocity, 1)
-effect hagar_bounce
-count 4
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 5 5
-alpha 256 256 256
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-velocitymultiplier 0.01
-lightradius 60
-lightradiusfade 300
-lightcolor 2 1.5 0.2
-effect hagar_bounce
-count 30
-type spark
-tex 40 40
-color 0xFFFDD9 0xFFFDD9
-size 3 3
-alpha 0 256 256
-gravity 1
-bounce 1.5
-originjitter 1 1 1
-velocityjitter 600 600 600
-velocitymultiplier 0.5
-airfriction 12
-
-
-
-// decal
-// used in qcsrc/server/w_hagar.qc:	pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1)
-// used in qcsrc/server/w_hagar.qc:	pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1)
-effect hagar_explode
-countabsolute 1
-type decal
-tex 8 16
-size 28 38
-alpha 256 256 0
-originjitter 40 40 40
-lightradius 250
-lightradiusfade 400
-lightcolor 8 4 1
-// fire effect which make bright dot inside
-effect hagar_explode
-notunderwater
-count 12
-type smoke
-tex 48 55
-color 0xffe955 0xff5a00
-size 16 26
-sizeincrease 5
-alpha 128 256 456
-bounce 1.5
-airfriction 8
-liquidfriction 8
-originjitter 8 8 8
-velocityjitter 156 156 156
-// fire effect which expands then slows
-effect hagar_explode
-notunderwater
-count 24
-type static
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 20 26
-sizeincrease 15
-alpha 128 256 456
-bounce 1.5
-airfriction 12
-liquidfriction 8
-originjitter 8 8 8
-velocityjitter 256 256 256
-
-// smoke
-effect hagar_explode
-type alphastatic
-notunderwater
-tex 0 8
-count 20
-size 20 40
-sizeincrease 20
-alpha 500 600 556
-velocityjitter 244 244 244
-airfriction 5
-color 0x000000 0x111111
-bounce 2
-
-// underwater bubbles
-effect hagar_explode
-underwater
-count 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 96 96 96
-// bouncing sparks
-effect hagar_explode
-notunderwater
-count 16
-type spark
-color 0x903010 0xFFD030
-size 2 2
-tex 40 40
-alpha 256 256 384
-gravity 1
-airfriction 0.2
-bounce 1.5
-liquidfriction 0.8
-velocityoffset 0 0 80
-velocityjitter 256 256 256
-
-
-
-// used in qcsrc/server/w_rocketlauncher.qc:	pointparticles(particleeffectnum("rocketlauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
-effect rocketlauncher_muzzleflash
-count 20
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 1 1
-sizeincrease 20
-alpha 256 256 256
-airfriction 2
-originjitter 1.5 1.5 1.5
-velocityjitter 40 40 40
-velocitymultiplier -0.13
-//lightradius 200
-//lightradiusfade 2000
-//lightcolor 2 1.5 0.2
-effect rocketlauncher_muzzleflash
-count 30
-type spark
-tex 40 40
-color 0xFFFDD9 0xFFFDD9
-size 3 3
-alpha 0 128 1024
-originjitter 1 1 1
-velocityjitter 300 300 300
-velocitymultiplier 0.5
-airfriction 12
-
-
-
-// rocket trail
-// smoke
-// used nowhere in code
-effect TR_ROCKET
-trailspacing 5
-type alphastatic
-color 0x303030 0x000000
-tex 0 8
-size 1 4
-bounce 1
-sizeincrease 11
-alpha 200 300 200
-lightradius 150
-lighttime 0
-lightcolor 6 3 1
-originjitter 2 2 2
-velocityjitter 3 3 3
-velocitymultiplier -0.02
-//gravity -0.11
-// fire
-effect TR_ROCKET
-notunderwater
-trailspacing 2
-type static
-color 0xffdf72 0x811200
-tex 48 55
-size 7 7
-sizeincrease -30
-alpha 100 144 588
-airfriction 8
-velocityjitter 32 32 32
-velocitymultiplier -1.5
-// bubbles
-effect TR_ROCKET
-underwater
-trailspacing 8
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 1 1
-alpha 256 256 256
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
-// sparks
-effect TR_ROCKET
-trailspacing 10
-type spark
-tex 40 40
-color 0xFFFDD9 0xFFFDD9
-size 1 1
-alpha 444 512 1866
-//gravity 1
-bounce 1
-//velocityoffset 0 0 15
-airfriction 5
-originjitter 1 1 1
-velocityjitter 100 100 100
-velocitymultiplier -0.31
-
-// rocket explosion (bigger than mortar and hagar)
-// decal
-// used in qcsrc/server/cl_player.qc:				pointparticles(particleeffectnum("rocket_explode"), self.origin, '0 0 0', 1)
-// used in qcsrc/server/portals.qc:		pointparticles(particleeffectnum("rocket_explode"), portal.origin + v_forward * 16, v_forward * 1024, 4)
-// used in qcsrc/server/w_rocketlauncher.qc:	pointparticles(particleeffectnum("rocket_explode"), org2, '0 0 0', 1)
-effect rocket_explode
-countabsolute 1
-type decal
-tex 8 16
-size 72 72
-alpha 256 256 0
-originjitter 40 40 40
-lightradius 400
-lightradiusfade 750
-lightcolor 8 4 1
-// fire effect
-effect rocket_explode
-notunderwater
-count 64
-type static
-tex 48 55
-color 0x8f0d00 0xff5a00
-size 33 44
-sizeincrease 45
-alpha 200 256 512
-bounce 1.5
-airfriction 8
-liquidfriction 8
-originjitter 8 8 8
-velocityjitter 512 512 512
-// fire effect 2
-effect rocket_explode
-notunderwater
-count 28
-type smoke
-tex 48 55
-color 0xea691b 0xeed05a
-size 33 44
-sizeincrease 55
-alpha 200 256 612
-bounce 2.5
-airfriction 19
-liquidfriction 19
-originjitter 8 8 8
-velocityjitter 912 912 912
-// smoke
-effect rocket_explode
-type alphastatic
-notunderwater
-tex 0 8
-count 64
-size 20 40
-sizeincrease 44
-alpha 400 500 456
-velocityjitter 444 444 444
-airfriction 5
-color 0x000000 0x111111
-bounce 2
-// underwater bubbles
-effect rocket_explode
-underwater
-count 64
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 144 144 144
-// bouncing sparks
-effect rocket_explode
-notunderwater
-count 64
-type spark
-tex 40 40
-color 0xffa800 0xffedaf
-size 1 1
-sizeincrease 2
-alpha 44 256 384
-gravity 1
-airfriction -1
-bounce 1.5
-liquidfriction 0.8
-velocityoffset 0 0 80
-originjitter 16 16 16
-velocityjitter 224 224 324
-
-
-
-// used in qcsrc/server/g_hook.qc:	pointparticles(particleeffectnum("grapple_muzzleflash"), org, '0 0 0', 1)
-effect grapple_muzzleflash
-lightradius 160
-lightradiusfade 800
-lightcolor 1 0 0
-
-
-
-// used in qcsrc/server/g_hook.qc:	pointparticles(particleeffectnum("grapple_impact"), self.origin, '0 0 0', 1)
-effect grapple_impact
-lightradius 160
-lightradiusfade 800
-lightcolor 1 0 0
-
-
-
-// used nowhere in code
-effect nex242_misc_laser_beam
-countabsolute 1
-type beam
-tex 60 60
-size 1 1
-alpha 256 256 64
-color 0xff0000 0xff0000
-sizeincrease 1
-
-// used nowhere in code
-effect nex242_misc_laser_beam_end
-count 1
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-
-
-// used nowhere in code
-effect nex242_misc_laser_beam_fast
-countabsolute 1
-type beam
-tex 60 60
-size 1 1
-alpha 256 256 640
-color 0xff0000 0xff0000
-sizeincrease 0.1
-
-// used nowhere in code
-effect nex242_misc_laser_beam_fast_end
-count 1
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-// additional laser colors (mike)
-// used nowhere in code
-effect nex242_misc_laser_green_beam
-countabsolute 1
-type beam
-tex 60 60
-size 1 1
-alpha 256 256 64
-color 0x00ff00 0x00ff00
-sizeincrease 1
-
-// used nowhere in code
-effect nex242_misc_laser_green_beam_end
-count 1
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-// used nowhere in code
-effect nex242_misc_laser_blue_beam
-countabsolute 1
-type beam
-tex 60 60
-size 1 1
-alpha 256 256 64
-color 0x0000ff 0x0000ff
-sizeincrease 1
-
-// used nowhere in code
-effect nex242_misc_laser_blue_beam_end
-count 1
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-// used nowhere in code
-effect nex242_misc_laser_yellow_beam
-countabsolute 1
-type beam
-tex 60 60
-size 1 1
-alpha 256 256 64
-color 0xffff00 0xffff00
-sizeincrease 1
-
-// used nowhere in code
-effect nex242_misc_laser_yellow_beam_end
-count 1
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-// used nowhere in code
-effect nex242_misc_laser_cyan_beam
-countabsolute 1
-type beam
-tex 60 60
-size 1 1
-alpha 256 256 64
-color 0x00ffff 0x00ffff
-sizeincrease 1
-
-// used nowhere in code
-effect nex242_misc_laser_cyan_beam_end
-count 1
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-// used nowhere in code
-effect nex242_misc_laser_magenta_beam
-countabsolute 1
-type beam
-tex 60 60
-size 1 1
-alpha 256 256 64
-color 0xff00ff 0xff00ff
-sizeincrease 1
-
-// used nowhere in code
-effect nex242_misc_laser_magenta_beam_end
-count 1
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-// used nowhere in code
-effect nex242_misc_laser_white_beam
-countabsolute 1
-type beam
-tex 60 60
-size 1 1
-alpha 256 256 64
-color 0xffffff 0xffffff
-sizeincrease 1
-
-// used nowhere in code
-effect nex242_misc_laser_white_beam_end
-count 1
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-// used nowhere in code
-effect nex242_misc_laser_black_beam
-countabsolute 1
-type beam
-tex 60 60
-size 1 1
-alpha 256 256 64
-color 0x000000 0x000000
-sizeincrease 1
-
-// used nowhere in code
-effect nex242_misc_laser_black_beam_end
-count 1
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-// used nowhere in code
-effect nex242_misc_laser_orange_beam
-countabsolute 1
-type beam
-tex 60 60
-size 1 1
-alpha 256 256 64
-color 0xff6600 0xff6600
-sizeincrease 1
-
-// used nowhere in code
-effect nex242_misc_laser_orange_beam_end
-count 1
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-
-
-
-// bigger crylink impact effect
-// decal
-// used in qcsrc/server/w_crylink.qc:	pointparticles(particleeffectnum("crylink_impactbig"), self.origin, '0 0 0', 1)
-effect crylink_impactbig
-countabsolute 1
-type decal
-tex 47 47
-size 24 24
-alpha 256 256 0
-originjitter 12 12 12
-//lightradius 200
-//lightradiusfade 800
-//lightcolor 3.2 0.4 4
-// purple flare effect
-effect crylink_impactbig
-countabsolute 1
-type static
-tex 39 39
-color 0x504060 0x504060
-size 24 24
-alpha 256 256 512
-// purple sparks
-effect crylink_impactbig
-count 80
-type spark
-tex 41 41
-color 0xA040C0 0xA040C0
-bounce 2
-size 6 6
-alpha 256 256 1024
-velocityjitter 512 512 512
-// purple splash
-effect crylink_impactbig
-count 3
-type static
-color 0xE070FF 0xE070FF
-size 16 16
-alpha 256 256 512
-velocityjitter 32 32 32
-// purple splash
-effect crylink_impactbig
-count 6
-type static
-color 0xE070FF 0xE070FF
-size 16 16
-alpha 256 256 1024
-velocityjitter 256 256 256
-
-// Zero-violence effects
-
-// impact effect indicating damage
-// used in qcsrc/server/cl_player.qc:		pointparticles(particleeffectnum("damage_hit"), hitloc, force, bound(0, damage, 200))
-effect damage_hit
-count 1
-type static
-color 0x20FF30 0x80FFC0
-size 1 1
-alpha 256 256 256
-gravity -0.4
-bounce 1.5
-airfriction 8
-liquidfriction 16
-//velocityoffset 0 0 120
-velocityjitter 16 16 16
-
-// effect for removing player model
-// "teleport"
-// used in qcsrc/server/cl_player.qc:			pointparticles(particleeffectnum("damage_dissolve"), self.origin, force, 1)
-effect damage_dissolve
-count 96
-type static
-color 0x66FF66 0xFFFFFF
-size 10 10
-alpha 64 128 128
-airfriction 1
-liquidfriction 4
-originoffset 0 0 28
-originjitter 16 16 28
-velocityjitter 0 0 256
-// flare
-effect damage_dissolve
-countabsolute 1
-type static
-tex 38 38
-color 0x00FF00 0x99FF99
-size 32 32
-alpha 256 256 196
-// large sparks
-effect damage_dissolve
-count 20
-type static
-color 0x00FF00 0x99FF99
-size 16 16
-alpha 256 256 256
-//gravity 1
-bounce 1.5
-airfriction 4
-liquidfriction 16
-//velocityoffset 0 0 120
-velocityjitter 512 512 512
-
-// decal
-// used in qcsrc/server/g_triggers.qc:			self.cnt = particleeffectnum("laser_deadly")
-effect laser_deadly
-countabsolute 1
-type decal
-tex 56 59
-size 5 5
-alpha 256 256 0
-originjitter 6 6 6
-// dust/smoke drifting away from the impact
-effect laser_deadly
-count 0.05 // 50 per second
-type smoke
-tex 48 55
-color 0xFFFFFF 0xFFFFFF
-size 3 3
-alpha 0 64 64
-originjitter 1 1 1
-airfriction 7
-liquidfriction 16
-velocityjitter 15 15 15
-sizeincrease 2
-velocitymultiplier 20
-// sparks
-effect laser_deadly
-notunderwater
-count 0.05 // 50 per second
-type spark
-tex 40 40
-color 0xFDFFD9 0xFDFFD9
-size 0.6 0.6
-alpha 256 256 768
-gravity 1
-bounce 1
-airfriction 5
-originjitter 1 1 1
-velocityjitter 100 100 100
-velocitymultiplier 100
-
-
-//torch
-//fire
-// used nowhere in code
-effect torch_small
-//notunderwater
-count 16
-type smoke
-tex 48 55
-size 1 11
-alpha 200 256 512
-gravity -0.5
-color 0x8f0d00 0xff5a00
-//bounce 1
-sizeincrease -1
-originjitter 5 5 5
-velocityjitter 1 1 50
-// smoke
-effect torch_small
-type alphastatic
-count 8
-tex 0 8
-size 5 10
-sizeincrease 5
-alpha 200 256 200
-color 0x000000 0x111111
-gravity -0.3
-originjitter 3 3 3
-velocityjitter 11 11 50
-//bounce 1
-
-//fountain01
-// used nowhere in code
-effect fountain01
-count 32
-tex 0 8
-size 10 15
-alpha 0 100 100
-gravity 0.6
-bounce 1
-sizeincrease 20
-type snow
-bounce 1
-originjitter 5 5 5
-velocityjitter 81 81 150
-color 0x7cbaff 0xcfd1ff
-velocitymultiplier 2
-
-
-
-// decal
-// used in qcsrc/server/w_hook.qc:	pointparticles(particleeffectnum("hookbomb_explode"), org2, '0 0 0', 1)
-effect hookbomb_explode
-countabsolute 1
-type decal
-tex 8 16
-size 96 96
-alpha 256 256 0
-originjitter 40 40 40
-lightradius 1600
-lightradiusfade 800
-lightcolor 1 4 8
-// fire effect which make brigt dot inside
-effect hookbomb_explode
-notunderwater
-count 100
-type static
-tex 48 55
-color 0x003fe0 0x92dfff
-size 12 32
-sizeincrease 80
-alpha 512 328 756
-bounce 1
-airfriction 8
-liquidfriction 8
-originjitter 8 8 8
-velocityjitter 1024 1024 1024
-// smoke
-effect hookbomb_explode
-type alphastatic
-notunderwater
-tex 0 8
-count 160
-size 80 160
-sizeincrease 300
-alpha 500 600 556
-velocityoffset 0 0 0
-velocityjitter 256 256 256
-airfriction 0
-color 0x000000 0x111111
-bounce 6
-// underwater bubbles
-effect hookbomb_explode
-underwater
-count 60
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.0625
-originjitter 16 16 16
-velocityjitter 192 192 192
-
-
-// smoke
-effect EF_MGTURRETTRAIL
-notunderwater
-trailspacing 2
-type smoke
-color 0xd0d0a0 0xfffff0
-tex 0 8
-size 6 2
-alpha 16 32 16
-// bubbles
-effect EF_MGTURRETTRAIL
-underwater
-trailspacing 16
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 1 1
-alpha 256 256 256
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
-
+// item respawn effect
+// flare particle and light
+// used in qcsrc/server/bots.qc:		//te_wizspike(start)
+// used in qcsrc/server/bots.qc:				te_wizspike(org)
+// used in qcsrc/server/bots.qc:	//te_wizspike(e.origin)
+// used in qcsrc/server/bots.qc:		//te_wizspike(e.nearestwaypoint.wpnearestpoint)
+effect TE_WIZSPIKE
+countabsolute 1
+type static
+color 0x63F2EA 0x63f2EA
+size 20 20
+alpha 128 128 128
+lightradius 200
+lightradiusfade 200
+lightcolor 0.4 0.9 0.9
+// cloud of particles which expand rapidly and then slow to form a ball
+effect TE_WIZSPIKE
+count 100
+type static
+color 0x63F2EA 0x63f2EA
+size 2 2
+alpha 64 64 64
+airfriction 2
+liquidfriction 2
+originjitter 16 16 16
+velocityjitter 32 32 32
+
+// laser impact
+// decal
+// used in qcsrc/server/bots.qc:		//te_knightspike(end)
+// used in qcsrc/server/bots.qc:			te_knightspike(start)
+// used in qcsrc/server/bots.qc:						te_knightspike(org)
+// used in qcsrc/server/bots.qc:		te_knightspike(org)
+effect TE_KNIGHTSPIKE
+countabsolute 1
+type decal
+tex 47 47
+size 24 24
+alpha 256 256 0
+originjitter 16 16 16
+lightradius 200
+lightradiusfade 1000
+lightcolor 4 0.2 0.2
+// flare effect
+effect TE_KNIGHTSPIKE
+countabsolute 1
+type static
+tex 39 39
+color 0xFF2010 0xFF2010
+alpha 256 256 1024
+size 24 24
+// sparks that rapidly expand and rapidly slow down to form an interesting spherical effect
+effect TE_KNIGHTSPIKE
+count 256
+type spark
+color 0x800000 0xFF8020
+alpha 256 256 1024
+size 4 4
+//bounce 1.5
+airfriction 6
+liquidfriction 6
+//originjitter 32 32 32
+velocityjitter 256 256 256
+
+// machinegun bullet impact
+// bullet impact decal
+// used nowhere in code
+effect TE_SPIKE
+countabsolute 1
+type decal
+tex 56 59
+size 5 5
+alpha 256 256 0
+originjitter 6 6 6
+// dust/smoke drifting away from the impact
+effect TE_SPIKE
+count 8
+type smoke
+tex 0 8
+color 0x101010 0x101010
+size 3 3
+sizeincrease 3
+alpha 255 255 256
+originjitter 0 0 0
+velocityjitter 8 8 8
+// dust/smoke staying at the impact
+effect TE_SPIKE
+count 1
+type smoke
+tex 0 8
+color 0x505050 0x505050
+size 4 4
+sizeincrease 4
+alpha 255 255 128
+originjitter 0 0 0
+velocityjitter 0 0 0
+// bouncing sparks
+effect TE_SPIKE
+count 20
+type spark
+color 0x8f4333 0xfff31b
+size 0.4 0.4
+alpha 0 256 256
+gravity 1
+bounce 1.5
+velocityoffset 0 0 80
+velocityjitter 64 64 64
+
+// electro combo explosion
+// decal
+// used nowhere in code
+effect TE_SPIKEQUAD
+countabsolute 1
+type decal
+tex 59 59
+size 64 64
+alpha 256 256 0
+originjitter 34 34 34
+lightradius 400
+lightradiusfade 200
+lightcolor 2 2.5 3
+// flare effect
+effect TE_SPIKEQUAD
+countabsolute 1
+type static
+tex 38 38
+color 0x80C0FF 0x80C0FF
+size 48 48
+alpha 256 256 128
+// large sparks
+effect TE_SPIKEQUAD
+count 20
+type static
+color 0x2030FF 0x80C0FF
+size 32 32
+alpha 256 256 256
+//gravity 1
+bounce 1.5
+airfriction 4
+liquidfriction 16
+//velocityoffset 0 0 120
+velocityjitter 512 512 512
+
+// quake effect
+// decal
+// used nowhere in code
+effect TE_SUPERSPIKE
+countabsolute 1
+type decal
+tex 56 59
+size 3 3
+alpha 256 256 0
+originjitter 6 6 6
+// dust/smoke drifting away from the impact
+effect TE_SUPERSPIKE
+count 8
+type smoke
+tex 0 8
+color 0x101010 0x101010
+size 3 3
+sizeincrease 3
+alpha 255 255 256
+originjitter 0 0 0
+velocityjitter 8 8 8
+// dust/smoke staying at the impact
+effect TE_SUPERSPIKE
+count 1
+type smoke
+tex 0 8
+color 0x505050 0x505050
+size 4 4
+sizeincrease 4
+alpha 255 255 128
+originjitter 0 0 0
+velocityjitter 0 0 0
+// sparks that disappear on impact
+effect TE_SUPERSPIKE
+count 30
+type spark
+color 0x8f4333 0xfff31b
+size 0.4 0.4
+alpha 0 256 768
+gravity 1
+bounce -1
+velocityoffset 0 0 80
+velocityjitter 64 64 64
+
+// quake effect
+// decal
+// used nowhere in code
+effect TE_SUPERSPIKEQUAD
+countabsolute 1
+type decal
+tex 56 59
+size 3 3
+alpha 256 256 0
+originjitter 6 6 6
+lightradius 100
+lightradiusfade 500
+lightcolor 0.15 0.15 1.5
+// dust/smoke drifting away from the impact
+effect TE_SUPERSPIKEQUAD
+count 8
+type smoke
+tex 0 8
+color 0x101010 0x101010
+size 3 3
+sizeincrease 3
+alpha 255 255 256
+originjitter 0 0 0
+velocityjitter 8 8 8
+// dust/smoke staying at the impact
+effect TE_SUPERSPIKEQUAD
+count 1
+type smoke
+tex 0 8
+color 0x505050 0x505050
+size 4 4
+sizeincrease 4
+alpha 255 255 128
+originjitter 0 0 0
+velocityjitter 0 0 0
+// sparks that disappear on impact
+effect TE_SUPERSPIKEQUAD
+count 30
+type spark
+color 0x8f4333 0xfff31b
+size 0.4 0.4
+alpha 0 256 768
+gravity 1
+bounce -1
+velocityoffset 0 0 80
+velocityjitter 64 64 64
+
+// shotgun pellet impact
+// decal
+// used in qcsrc/server/bots.qc:			//te_gunshot(org)
+// used in qcsrc/server/bots.qc:					te_gunshot(org)
+// used in qcsrc/server/bots.qc:					te_gunshot(org)
+// used in qcsrc/server/bots.qc:						te_gunshot(org)
+// used in qcsrc/server/bots.qc:		//te_gunshot(end)
+effect TE_GUNSHOT
+countabsolute 1
+type decal
+tex 56 59
+size 3 3
+alpha 256 256 0
+originjitter 6 6 6
+// dust/smoke drifting away from the impact
+effect TE_GUNSHOT
+count 4
+type smoke
+tex 0 8
+color 0x101010 0x101010
+size 3 3
+sizeincrease 3
+alpha 128 128 64
+originjitter 0 0 0
+velocityjitter 8 8 8
+// dust/smoke staying at the impact
+effect TE_GUNSHOT
+count 1
+type smoke
+tex 0 8
+color 0x505050 0x505050
+size 4 4
+sizeincrease 4
+alpha 128 128 64
+originjitter 0 0 0
+velocityjitter 0 0 0
+// bouncing sparks
+effect TE_GUNSHOT
+count 10
+type spark
+color 0x8f4333 0xfff31b
+size 0.4 0.4
+alpha 0 64 64
+gravity 1
+bounce 1.5
+velocityoffset 0 0 80
+velocityjitter 64 64 64
+
+// crylink impact effect
+// decal
+// used nowhere in code
+effect TE_GUNSHOTQUAD
+countabsolute 1
+type decal
+tex 47 47
+size 8 8
+alpha 256 256 0
+originjitter 12 12 12
+//lightradius 100
+//lightradiusfade 300
+//lightcolor 0.5 0.5 0.5
+// purple flare effect
+effect TE_GUNSHOTQUAD
+countabsolute 1
+type static
+tex 39 39
+color 0x504060 0x504060
+size 8 8
+alpha 256 256 512
+// purple sparks
+effect TE_GUNSHOTQUAD
+count 12
+type spark
+color 0xA040C0 0xFFFFFF
+size 1 1
+alpha 128 128 384
+gravity 1
+bounce 1.5
+velocityoffset 0 0 80
+velocityjitter 128 128 128
+
+// mortar/hagar explosion (smaller than rocket)
+// decal
+// used nowhere in code
+effect TE_EXPLOSION
+countabsolute 1
+type decal
+tex 8 16
+size 48 48
+alpha 256 256 0
+originjitter 40 40 40
+lightradius 350
+lightradiusfade 700
+lightcolor 4 2 0.5
+// flare effect
+effect TE_EXPLOSION
+countabsolute 1
+type static
+tex 35 37
+color 0x404040 0x404040
+size 48 48
+alpha 192 192 64
+// fire effect which expands then slows
+effect TE_EXPLOSION
+notunderwater
+count 128
+type static
+tex 48 55
+color 0x902010 0xFFD080
+size 16 16
+alpha 128 128 256
+bounce 1.5
+airfriction 4
+liquidfriction 4
+originjitter 8 8 8
+velocityjitter 256 256 256
+// underwater bubbles
+effect TE_EXPLOSION
+underwater
+count 32
+type bubble
+tex 62 62
+color 0x404040 0x808080
+size 3 3
+alpha 128 256 64
+gravity -0.125
+bounce 1.5
+liquidfriction 0.25
+originjitter 16 16 16
+velocityjitter 96 96 96
+// bouncing sparks
+effect TE_EXPLOSION
+notunderwater
+count 32
+type spark
+color 0x903010 0xFFD030
+size 2 2
+alpha 256 256 384
+gravity 1
+airfriction 0.2
+bounce 1.5
+liquidfriction 0.8
+velocityoffset 0 0 80
+velocityjitter 256 256 256
+
+// quake effect
+// decal
+// used nowhere in code
+effect TE_EXPLOSIONQUAD
+countabsolute 1
+type decal
+tex 8 16
+size 48 48
+alpha 256 256 0
+originjitter 40 40 40
+lightradius 350
+lightradiusfade 700
+lightcolor 4 2 8
+// smoke cloud
+effect TE_EXPLOSIONQUAD
+notunderwater
+count 32
+type smoke
+color 0x202020 0x404040
+tex 0 8
+size 12 12
+alpha 32 32 64
+velocityjitter 48 48 48
+// underwater bubbles
+effect TE_EXPLOSIONQUAD
+underwater
+count 32
+type bubble
+tex 62 62
+color 0x404040 0x808080
+size 3 3
+alpha 128 256 64
+gravity -0.125
+bounce 1.5
+liquidfriction 0.25
+originjitter 16 16 16
+velocityjitter 96 96 96
+// sparks which go through walls
+effect TE_EXPLOSIONQUAD
+notunderwater
+count 128
+type spark
+color 0x903010 0xFFD030
+size 1 1
+alpha 0 256 512
+gravity 1
+airfriction 0.2
+liquidfriction 0.8
+velocityoffset 0 0 80
+velocityjitter 256 256 256
+
+// quake effect
+// decal
+// used in qcsrc/server/keyhunt.qc:	te_tarexplosion(lostkey.origin)
+effect TE_TAREXPLOSION
+countabsolute 1
+type decal
+tex 8 16
+size 48 48
+alpha 256 256 0
+originjitter 40 40 40
+lightradius 600
+lightradiusfade 1200
+lightcolor 1.6 0.8 2
+// smoke cloud
+effect TE_TAREXPLOSION
+notunderwater
+count 32
+type smoke
+color 0x202020 0x404040
+tex 0 8
+size 12 12
+alpha 32 32 64
+velocityjitter 48 48 48
+// underwater bubbles
+effect TE_TAREXPLOSION
+underwater
+count 32
+type bubble
+tex 62 62
+color 0x404040 0x808080
+size 3 3
+alpha 128 256 64
+gravity -0.125
+bounce 1.5
+liquidfriction 0.25
+originjitter 16 16 16
+velocityjitter 96 96 96
+// sparks which go through walls
+effect TE_TAREXPLOSION
+notunderwater
+count 128
+type spark
+color 0x903010 0xFFD030
+size 1 1
+alpha 0 256 512
+gravity 1
+airfriction 0.2
+liquidfriction 0.8
+velocityoffset 0 0 80
+velocityjitter 256 256 256
+
+// bloody impact effect indicating damage
+// used nowhere in code
+effect TE_BLOOD
+count 0.333
+type blood
+tex 24 32
+size 8 8
+alpha 256 256 64
+bounce -1
+airfriction 1
+liquidfriction 4
+velocityjitter 64 64 64
+velocitymultiplier 1
+
+
+// sparks (quake effect)
+// used in qcsrc/server/antilag.qc:		te_spark(antilag_takebackorigin(e, time - e.antilag_debug), '0 0 0', 32)
+// used in qcsrc/server/g_triggers.qc:	self.mdl = "TE_SPARK"
+effect TE_SPARK
+count 1
+type spark
+tex 40 40
+color 0x8f4333 0xfff31b
+size 0.4 0.6
+alpha 64 256 768
+gravity 1
+bounce -1
+velocityoffset 0 0 80
+velocityjitter 64 64 64
+velocitymultiplier 1
+
+// nex impact
+// decal
+// used in qcsrc/server/bots.qc:		te_plasmaburn(org)
+effect TE_PLASMABURN
+countabsolute 1
+type decal
+tex 47 47
+size 24 24
+alpha 256 256 0
+originjitter 16 16 16
+lightradius 200
+lightradiusfade 400
+lightcolor 1 1 1
+// flare effect
+effect TE_PLASMABURN
+countabsolute 1
+type static
+tex 37 37
+color 0x80C0FF 0x80C0FF
+size 8 8
+alpha 256 256 512
+// small sparks which form a sphere as they slow down
+effect TE_PLASMABURN
+count 256
+type spark
+color 0x2030FF 0x80C0FF
+size 1 2
+alpha 256 256 1024
+bounce 2
+airfriction 8
+liquidfriction 8
+velocityjitter 128 128 128
+
+// quake effect
+// used in qcsrc/server/bots.qc:	//te_smallflash((e.absmin + e.absmax) * 0.5)
+// used in qcsrc/server/bots.qc:		//te_smallflash((e.absmin + e.absmax) * 0.5)
+effect TE_SMALLFLASH
+lightradius 200
+lightradiusfade 1000
+lightcolor 2 2 2
+
+// quake effect
+// used nowhere in code
+effect TE_FLAMEJET
+count 1
+type smoke
+color 0x6f0f00 0xe3974f
+size 4 4
+alpha 64 128 384
+gravity -1
+bounce 1.1
+airfriction 1
+liquidfriction 4
+velocityjitter 128 128 128
+velocitymultiplier 1
+
+// quake effect
+// used nowhere in code
+effect TE_LAVASPLASH
+count 64
+type alphastatic
+color 0x6f0f00 0xe3974f
+size 12 12
+alpha 256 256 256
+gravity 0.05
+originoffset 0 0 32
+originjitter 128 128 32
+velocityoffset 0 0 256
+velocityjitter 128 128 0
+
+// player teleport effect
+// used nowhere in code
+effect TE_TELEPORT
+count 112
+type static
+color 0xA0A0A0 0xFFFFFF
+size 10 10
+alpha 64 128 256
+airfriction 1
+liquidfriction 4
+originoffset 0 0 28
+originjitter 16 16 28
+velocityjitter 0 0 256
+
+// nex beam
+// used in qcsrc/server/w_minstanex.qc:	trailparticles(world, particleeffectnum("TE_TEI_G3"), w_shotorg, trace_endpos)
+effect TE_TEI_G3
+countabsolute 1
+type beam
+tex 60 60
+color 0xFFFFFF 0xFFFFFF
+size 4 4
+alpha 128 128 256
+// experimental
+effect TE_TEI_G3
+trailspacing 2
+type static
+color 0x202020 0x404040
+size 1 1
+alpha 256 256 512
+airfriction -4
+//liquidfriction -4
+velocityjitter 8 8 8
+type smoke
+
+// smoke effect
+// used nowhere in code
+effect TE_TEI_SMOKE
+count 0.333
+type smoke
+color 0x202020 0x404040
+tex 0 8
+size 5 5
+alpha 256 256 512
+originjitter 1.5 1.5 1.5
+velocityjitter 6 6 6
+velocitymultiplier 1
+
+// rocket explosion (bigger than mortar and hagar)
+// decal
+// used nowhere in code
+effect TE_TEI_BIGEXPLOSION
+countabsolute 1
+type decal
+tex 8 16
+size 72 72
+alpha 256 256 0
+originjitter 40 40 40
+lightradius 500
+lightradiusfade 500
+lightcolor 4 2 0.5
+// flare effect
+effect TE_TEI_BIGEXPLOSION
+countabsolute 1
+type static
+tex 35 37
+color 0x404040 0x404040
+size 72 72
+alpha 192 192 64
+// fire effect
+effect TE_TEI_BIGEXPLOSION
+notunderwater
+count 256
+type static
+tex 48 55
+color 0x902010 0xFFD080
+size 16 16
+alpha 128 128 256
+bounce 1.5
+airfriction 4
+liquidfriction 4
+originjitter 8 8 8
+velocityjitter 512 512 512
+// underwater bubbles
+effect TE_TEI_BIGEXPLOSION
+underwater
+count 64
+type bubble
+tex 62 62
+color 0x404040 0x808080
+size 3 3
+alpha 128 256 64
+gravity -0.125
+bounce 1.5
+liquidfriction 0.25
+originjitter 16 16 16
+velocityjitter 144 144 144
+// bouncing sparks
+effect TE_TEI_BIGEXPLOSION
+notunderwater
+count 128
+type spark
+color 0x903010 0xFFD030
+size 2 2
+alpha 256 256 384
+gravity 1
+airfriction 0.2
+bounce 1.5
+liquidfriction 0.8
+velocityoffset 0 0 80
+velocityjitter 384 384 384
+
+// electro explosion
+// decal
+// used nowhere in code
+effect TE_TEI_PLASMAHIT
+countabsolute 1
+type decal
+tex 59 59
+size 32 32
+alpha 256 256 0
+originjitter 20 20 20
+lightradius 200
+lightradiusfade 600
+lightcolor 2.4 4.8 8
+// flare effect
+effect TE_TEI_PLASMAHIT
+countabsolute 1
+type static
+tex 38 38
+color 0x80C0FF 0x80C0FF
+size 32 32
+alpha 256 256 512
+// cloud of bouncing sparks
+effect TE_TEI_PLASMAHIT
+count 1
+type spark
+color 0x2030FF 0x80C0FF
+size 2 4
+alpha 256 256 1024
+//gravity 1
+bounce 1.5
+//velocityoffset 0 0 120
+velocityjitter 512 512 512
+
+
+
+
+
+
+
+
+
+//////////////////////////////////////////////////
+// New effects in 2.4
+//////////////////////////////////////////////////
+
+
+
+// bloody impact effect indicating damage
+// used in qcsrc/server/cl_player.qc:		pointparticles(particleeffectnum("blood"), hitloc, force, bound(0, damage, 200))
+// used in qcsrc/server/cl_player.qc:		pointparticles(particleeffectnum("blood"), hitloc, force, bound(0, damage, 200))
+// used in qcsrc/server/g_violence.qc:		pointparticles(particleeffectnum("blood"), self.origin + '0 0 1', '0 0 30', 10)
+effect blood
+count 0.333
+type blood
+tex 24 32
+size 3 8
+alpha 256 256 64
+bounce -1
+airfriction 1
+liquidfriction 4
+velocityjitter 64 64 64
+velocitymultiplier 5
+//blood mist
+effect blood
+countabsolute 1
+type alphastatic
+tex 0 8
+size 25 30
+alpha 100 256 400
+color 0xff0000 0xe62b00
+originjitter 11 11 11
+
+
+// player teleport effect
+// used in qcsrc/server/t_teleporters.qc:	pointparticles(particleeffectnum("teleport"), player.origin, '0 0 0', 1)
+// used in qcsrc/server/t_teleporters.qc:	pointparticles(particleeffectnum("teleport"), to + v_forward * 32, '0 0 0', 1)
+effect teleport
+count 1000
+type spark
+tex 40 40
+color 0x807aff 0x4463d5
+size 1 3
+alpha 0 256 100
+//gravity 1
+bounce 1.5
+originjitter 1 1 1
+velocityjitter 2000 2000 3000
+velocitymultiplier 0.5
+airfriction 2
+
+
+
+// normal super gory blood trail (used by gibs)
+// used nowhere in code
+effect TR_BLOOD
+trailspacing 16
+type blood
+color 0xFFFFFF 0xFFFFFF
+tex 24 32
+size 8 8
+alpha 384 384 192
+bounce -1
+airfriction 1
+liquidfriction 4
+velocityjitter 64 64 64
+velocitymultiplier 0.5
+
+
+
+// thinner blood trail (used by quake zombies)
+// used nowhere in code
+effect TR_SLIGHTBLOOD
+trailspacing 32
+type blood
+color 0xFFFFFF 0xFFFFFF
+tex 24 32
+size 8 8
+alpha 384 384 192
+bounce -1
+airfriction 1
+liquidfriction 4
+velocityjitter 64 64 64
+velocitymultiplier 0.5
+
+
+
+// func_stardust effect, used in some maps to indicate teleporters
+// used in qcsrc/server/assault.qc:		//self.effects = EF_STARDUST
+// used in qcsrc/server/g_triggers.qc:	self.effects = EF_STARDUST
+// used in qcsrc/server/portals.qc:	portal.effects = EF_STARDUST | EF_BLUE
+effect EF_STARDUST
+count 75
+type static
+color 0xfff368 0xfff368
+size 1.0 2.0
+alpha 64 128 128
+gravity -0.1
+airfriction 0.2
+liquidfriction 0.8
+originjitter 16 16 64
+velocityjitter 32 32 0
+//lightradius 200
+//lighttime 0
+//lightcolor 0.4 0.9 0.9
+
+
+// flare particle and light
+// used in qcsrc/server/t_items.qc:	//pointparticles(particleeffectnum("item_respawn"), self.origin + self.mins_z * '0 0 1' + '0 0 48', '0 0 0', 1)
+// used in qcsrc/server/t_items.qc:	pointparticles(particleeffectnum("item_respawn"), self.origin + 0.5 * (self.mins + self.maxs), '0 0 0', 1)
+effect item_respawn
+countabsolute 1
+type static
+color 0x63F2EA 0x63f2EA
+size 32 32
+alpha 128 128 128
+// cloud of particles which expand rapidly and then slow to form a ball
+effect item_respawn
+count 64
+type spark
+tex 41 41
+color 0x63F2EA 0x63f2EA
+size 2 2
+alpha 256 256 1280
+//originjitter 24 24 24
+velocityjitter 256 256 256
+
+
+
+// used in qcsrc/server/t_jumppads.qc:			pointparticles(particleeffectnum("jumppad_activate"), other.origin, other.velocity, 1)
+effect jumppad_activate
+lightradius 200
+lightradiusfade 2000
+lightcolor 2 2 2
+
+
+
+// used in qcsrc/server/w_laser.qc:	pointparticles(particleeffectnum("laser_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+effect laser_muzzleflash
+count 1
+type smoke
+color 0xFFFFFF 0xFFFFFF
+tex 0 8
+size 5 5
+alpha 64 64 128
+airfriction 12
+originjitter 1.5 1.5 1.5
+velocityjitter 6 6 6
+velocitymultiplier 0.01
+lightradius 200
+lightradiusfade 2000
+lightcolor 3 0.1 0.1
+
+
+
+// decal
+// used in qcsrc/server/w_laser.qc:	pointparticles(particleeffectnum("laser_impact"), org2, normal * 1000, 1)
+effect laser_impact
+countabsolute 1
+type decal
+tex 47 47
+size 24 24
+alpha 256 256 0
+originjitter 16 16 16
+lightradius 200
+lightradiusfade 500
+lightcolor 8 0.4 0.4
+// flare effect
+effect laser_impact
+countabsolute 1
+type static
+tex 39 39
+color 0xFF2010 0xFF2010
+alpha 256 256 1024
+size 24 24
+// sparks that rapidly expand and rapidly slow down to form an interesting spherical effect
+effect laser_impact
+count 256
+type spark
+color 0x800000 0xFF8020
+alpha 256 256 1024
+size 4 4
+//bounce 1.5
+airfriction 6
+liquidfriction 6
+//originjitter 32 32 32
+velocityjitter 256 256 256
+effect laser_impact
+count 8
+type smoke
+tex 48 55
+color 0x800000 0xFF8020
+size 12 12
+alpha 128 256 256
+originjitter 1 1 1
+velocitymultiplier 0.01
+velocityjitter 16 16 16
+sizeincrease 6
+
+
+
+// used in qcsrc/server/w_shotgun.qc:	pointparticles(particleeffectnum("shotgun_muzzleflash"), w_shotorg, w_shotdir * 1000, cvar("g_balance_shotgun_primary_ammo"))
+// used in qcsrc/server/w_shotgun.qc:	pointparticles(particleeffectnum("shotgun_muzzleflash"), w_shotorg, w_shotdir * 1000, cvar("g_balance_shotgun_secondary_ammo"))
+effect shotgun_muzzleflash
+count 3
+type smoke
+color 0x202020 0x404040
+tex 0 8
+size 5 5
+alpha 256 256 512
+originjitter 1.5 1.5 1.5
+velocityjitter 6 6 6
+velocitymultiplier 0.01
+lightradius 200
+lightradiusfade 2000
+lightcolor 2 1.5 0.2
+sizeincrease 12
+velocitymultiplier 0.05
+effect shotgun_muzzleflash
+count 10
+type spark
+tex 40 40
+color 0xFFFDD9 0xff5a00
+size 2 2
+alpha 0 128 1024
+originjitter 1 1 1
+velocityjitter 444 444 444
+velocitymultiplier 1.7
+gravity 0.3
+airfriction 5
+
+
+
+// shotgun pellet impact
+// decal
+// used in qcsrc/server/w_common.qc:				pointparticles(particleeffectnum("shotgun_impact"), trace_endpos, trace_plane_normal * 1000, 1)
+effect shotgun_impact
+countabsolute 1
+type decal
+tex 56 59
+size 3 3
+alpha 256 256 0
+originjitter 6 6 6
+//lightradius 30
+//lightradiusfade 90
+//lightcolor 1 1 1
+// dust/smoke drifting away from the impact
+effect shotgun_impact
+count 5
+type smoke
+tex 0 8
+color 0xFFFFFF 0xA37443
+size 7 7
+alpha 0 64 32
+originjitter 1 1 1
+airfriction 7
+liquidfriction 16
+velocityjitter 100 100 100
+sizeincrease 12
+velocitymultiplier 0.25
+// dust/smoke staying at the impact
+effect shotgun_impact
+count 1
+type smoke
+tex 0 8
+color 0xFFFFFF 0xFFFFFF
+size 17 17
+alpha 64 64 32
+sizeincrease 4
+// sparks
+effect shotgun_impact
+notunderwater
+count 20
+type spark
+tex 40 40
+color 0xFDFFD9 0xFDFFD9
+size 0.6 0.6
+alpha 256 256 768
+gravity 1
+bounce 1
+airfriction 5
+originjitter 1 1 1
+velocityjitter 400 400 400
+velocitymultiplier 0.1
+
+
+
+// used in qcsrc/server/w_uzi.qc:	pointparticles(particleeffectnum("uzi_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+effect uzi_muzzleflash
+count 2
+type static
+color 0x202020 0x404040
+tex 0 8
+size 5 5
+alpha 256 256 512
+originjitter 1.5 1.5 1.5
+velocityjitter 1 1 1
+velocitymultiplier 0.03
+lightradius 200
+lightradiusfade 2000
+lightcolor 2 1.5 0.2
+gravity -0.1
+effect uzi_muzzleflash
+count 20
+type spark
+tex 40 40
+color 0xFFFDD9 0xFFFDD9
+size 2 2
+alpha 0 128 1024
+originjitter 1 1 1
+velocityjitter 300 300 300
+velocitymultiplier 0.5
+airfriction 12
+
+
+// decal
+// used in qcsrc/server/cl_client.qc:	//pointparticles(particleeffectnum("machinegun_impact"), self.origin + self.view_ofs + '0 0 7', '0 0 0', 1)
+// used in qcsrc/server/w_common.qc:				pointparticles(particleeffectnum("machinegun_impact"), trace_endpos, trace_plane_normal * 1000, 1)
+effect machinegun_impact
+countabsolute 1
+type decal
+tex 56 59
+size 5 5
+alpha 256 256 0
+originjitter 6 6 6
+lightradius 80
+lightradiusfade 800
+lightcolor 6 3.6 0.6
+// dust/smoke drifting away from the impact
+effect machinegun_impact
+count 5
+type smoke
+tex 0 8
+color 0xFFFFFF 0xA37443
+size 7 7
+alpha 0 64 32
+originjitter 1 1 1
+airfriction 7
+liquidfriction 16
+velocityjitter 100 100 100
+sizeincrease 12
+velocitymultiplier 0.25
+// dust/smoke staying at the impact
+effect machinegun_impact
+count 1
+type smoke
+tex 0 8
+color 0xFFFFFF 0xFFFFFF
+size 17 17
+alpha 64 64 32
+sizeincrease 4
+// sparks
+effect machinegun_impact
+notunderwater
+count 20
+type spark
+tex 40 40
+color 0xFDFFD9 0xFDFFD9
+size 0.3 0.3
+alpha 256 256 768
+gravity 1
+bounce 1
+airfriction 5
+originjitter 1 1 1
+velocityjitter 400 400 400
+velocitymultiplier 0.1
+
+
+
+// used in qcsrc/server/w_grenadelauncher.qc:	pointparticles(particleeffectnum("grenadelauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+// used in qcsrc/server/w_grenadelauncher.qc:	pointparticles(particleeffectnum("grenadelauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+// used in qcsrc/server/w_porto.qc:	//pointparticles(particleeffectnum("grenadelauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+effect grenadelauncher_muzzleflash
+count 3
+type smoke
+color 0x202020 0x404040
+tex 0 8
+size 5 5
+alpha 256 256 512
+originjitter 1.5 1.5 1.5
+airfriction 12
+velocityjitter 20 20 20
+velocitymultiplier 0.03
+lightradius 200
+lightradiusfade 2000
+lightcolor 2 1.5 0.2
+effect grenadelauncher_muzzleflash
+count 30
+type spark
+tex 40 40
+color 0xFFFDD9 0xFFFDD9
+size 3 3
+alpha 0 128 1024
+originjitter 1 1 1
+velocityjitter 300 300 300
+velocitymultiplier 0.5
+airfriction 12
+
+
+
+// hagar trail
+// smoke
+// used in qcsrc/server/w_hagar.qc:	missile.modelflags = MF_GRENADE
+// used in qcsrc/server/w_hagar.qc:	missile.modelflags = MF_GRENADE
+// used in qcsrc/server/w_porto.qc:	gren.modelflags = MF_GRENADE
+effect TR_GRENADE
+trailspacing 6
+type alphastatic
+color 0x303030 0x000000
+tex 0 8
+size 1 2
+bounce 1
+sizeincrease 2
+alpha 100 200 280
+originjitter 1 1 1
+velocityjitter 1 1 1
+velocitymultiplier -0.02
+//gravity -0.11
+// fire
+effect TR_GRENADE
+notunderwater
+trailspacing 2
+type static
+color 0xffdf72 0x811200
+tex 48 55
+size 1 2
+sizeincrease -15
+alpha 100 144 988
+airfriction 8
+velocityjitter 32 32 32
+velocitymultiplier -1.0
+// bubbles
+effect TR_GRENADE
+underwater
+trailspacing 8
+type bubble
+tex 62 62
+color 0x404040 0x808080
+size 1 1
+alpha 256 256 256
+gravity -0.125
+bounce 1.5
+liquidfriction 4
+velocityjitter 16 16 16
+
+
+
+// mortar trail
+// smoke
+// used in qcsrc/server/w_grenadelauncher.qc:	gren.modelflags = MF_TRACER2
+// used in qcsrc/server/w_grenadelauncher.qc:	gren.modelflags = MF_TRACER2
+// used in qcsrc/server/w_hook.qc:	gren.modelflags = MF_TRACER2
+effect TR_KNIGHTSPIKE // used for MF_TRACER2
+notunderwater
+trailspacing 5
+type alphastatic
+color 0x303030 0x000000
+tex 0 8
+size 3 3
+bounce 1
+sizeincrease 11
+alpha 100 200 400
+originjitter 2 2 2
+velocityjitter 3 3 3
+velocitymultiplier -0.02
+gravity -0.11
+//marker
+effect TR_KNIGHTSPIKE // used for MF_TRACER2
+type alphastatic
+color 0xFF0000 0xFF0000
+tex 62 62
+size 1 1 
+sizeincrease -0.1
+trailspacing 1
+alpha 256 256 720
+// bubbles
+effect TR_KNIGHTSPIKE // used for MF_TRACER2
+underwater
+trailspacing 16
+type bubble
+tex 62 62
+color 0x404040 0x808080
+size 1 1
+alpha 256 256 256
+gravity -0.125
+bounce 1.5
+liquidfriction 4
+velocityjitter 16 16 16
+
+
+
+// decal
+// used in qcsrc/server/w_grenadelauncher.qc:	pointparticles(particleeffectnum("grenade_explode"), org2, '0 0 0', 1)
+// used in qcsrc/server/w_grenadelauncher.qc:	pointparticles(particleeffectnum("grenade_explode"), org2, '0 0 0', 1)
+effect grenade_explode
+countabsolute 1
+type decal
+tex 8 16
+size 48 48
+alpha 256 256 0
+originjitter 40 40 40
+lightradius 250
+lightradiusfade 400
+lightcolor 8 4 1
+// fire effect which expands then slows
+effect grenade_explode
+notunderwater
+count 80
+type static
+tex 48 55
+color 0xe03f00 0x5e0000
+size 16 26
+sizeincrease 20
+alpha 128 228 356
+bounce 4.5
+airfriction 8
+liquidfriction 8
+originjitter 8 8 8
+velocityjitter 256 256 256
+// fire effect which make brigt dot inside
+effect grenade_explode
+notunderwater
+count 30
+type static
+tex 48 55
+color 0xe03f00 0xffdf92
+size 6 16
+sizeincrease 40
+alpha 228 328 756
+bounce 1
+airfriction 8
+liquidfriction 8
+originjitter 8 8 8
+velocityjitter 256 256 256
+// smoke
+effect grenade_explode
+type alphastatic
+notunderwater
+tex 0 8
+count 20
+size 20 40
+sizeincrease 34
+alpha 500 600 556
+velocityjitter 256 256 256
+airfriction 5
+color 0x000000 0x111111
+bounce 6
+// underwater bubbles
+effect grenade_explode
+underwater
+count 32
+type bubble
+tex 62 62
+color 0x404040 0x808080
+size 3 3
+alpha 128 256 64
+gravity -0.125
+bounce 1.5
+liquidfriction 0.25
+originjitter 16 16 16
+velocityjitter 96 96 96
+// bouncing sparks
+effect grenade_explode
+notunderwater
+count 16
+type spark
+color 0x903010 0xFFD030
+size 2 2
+tex 40 40
+alpha 256 256 384
+gravity 1
+airfriction 0.2
+bounce 1.5
+liquidfriction 0.8
+velocityoffset 0 0 80
+velocityjitter 256 256 256
+
+
+
+// used in qcsrc/server/w_electro.qc:	pointparticles(particleeffectnum("electro_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+// used in qcsrc/server/w_electro.qc:	pointparticles(particleeffectnum("electro_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+effect electro_muzzleflash
+count 1
+type smoke
+color 0x202020 0x404040
+tex 0 8
+size 5 5
+alpha 256 256 512
+originjitter 1.5 1.5 1.5
+velocityjitter 6 6 6
+velocitymultiplier 0.01
+lightradius 200
+lightradiusfade 2000
+lightcolor 2 1.5 0.2
+effect electro_muzzleflash
+count 30
+type spark
+tex 31 31
+color 0xD9FDFF 0xD9FDFF
+size 3 3
+alpha 0 128 1024
+originjitter 1 1 1
+velocityjitter 300 300 300
+velocitymultiplier 0.5
+airfriction 12
+
+
+
+// electro trail
+// glowing vapor trail
+// used nowhere in code
+effect TR_NEXUIZPLASMA
+trailspacing 2
+type static
+color 0x283880 0x283880
+size 3 3
+tex 62 62
+alpha 256 256 968
+//velocityjitter 16 16 16
+lightradius 90
+lighttime 0
+lightcolor 1.5 3 6
+velocitymultiplier -0.1
+// bright sparks
+effect TR_NEXUIZPLASMA
+trailspacing 6
+count 3
+type snow
+tex 42 42
+color 0x629dff 0x0018ff
+size 2 4
+sizeincrease -20
+alpha 444 512 1866
+bounce 1
+velocityoffset 0 0 15
+airfriction 12
+originjitter 1 1 1
+velocityjitter 50 50 50
+
+
+
+// decal
+// used in qcsrc/server/w_electro.qc:		pointparticles(particleeffectnum("electro_impact"), org2, '0 0 0', 1)
+effect electro_impact
+countabsolute 1
+type decal
+tex 59 59
+size 32 32
+alpha 256 256 0
+originjitter 20 20 20
+lightradius 250
+lightradiusfade 250
+lightcolor 3.125 4.375 10
+// flare effect
+effect electro_impact
+countabsolute 1
+type static
+tex 38 38
+color 0x80C0FF 0x80C0FF
+size 12 32
+alpha 256 256 512
+// cloud of bouncing sparks
+effect electro_impact
+count 60
+type smoke
+tex 42 42
+color 0x629dff 0x0018ff
+size 36 36
+sizeincrease -50
+alpha 256 256 1024
+bounce 2
+gravity -0.3
+airfriction 6
+originjitter 1 1 1
+velocityjitter 512 512 512
+// inner cloud of smoke
+effect electro_impact
+count 60
+type smoke
+color 0x629dff 0x0018ff
+tex 0 8
+size 20 24
+sizeincrease 50
+alpha 200 256 512
+airfriction 30
+originjitter 20 20 20
+velocityjitter 320 320 320
+
+// decal
+// used in qcsrc/server/w_electro.qc:		pointparticles(particleeffectnum("electro_ballexplode"), org2, '0 0 0', 1)
+effect electro_ballexplode
+countabsolute 1
+type decal
+tex 59 59
+size 32 32
+alpha 256 256 0
+originjitter 20 20 20
+lightradius 250
+lightradiusfade 250
+lightcolor 3.125 4.375 10
+// flare effect
+effect electro_ballexplode
+countabsolute 1
+type static
+tex 38 38
+color 0x80C0FF 0x80C0FF
+size 32 32
+alpha 256 256 512
+// cloud of bouncing sparks
+effect electro_ballexplode
+count 128
+type spark
+tex 41 41
+color 0xFDFFD9 0xFDFFD9
+size 16 16
+alpha 256 256 1024
+bounce 2
+//airfriction 2
+originjitter 1 1 1
+velocityjitter 512 512 512
+// inner cloud of smoke
+effect electro_ballexplode
+count 16
+type smoke
+color 0x202020 0x404040
+tex 0 8
+size 24 24
+alpha 256 256 512
+originjitter 20 20 20
+velocityjitter 32 32 32
+
+
+
+// decal
+// used in qcsrc/server/w_electro.qc:	pointparticles(particleeffectnum("electro_combo"), org2, '0 0 0', 1)
+effect electro_combo
+countabsolute 1
+type decal
+tex 59 59
+size 64 64
+alpha 256 256 0
+originjitter 34 34 34
+lightradius 400
+lightradiusfade 300
+lightcolor 4 5 6
+// flare effect
+effect electro_combo
+countabsolute 1
+type static
+tex 38 38
+color 0x80C0FF 0x80C0FF
+size 48 48
+alpha 128 128 64
+// large sparks
+effect electro_combo
+count 20
+type static
+color 0x2030FF 0x80C0FF
+size 32 32
+alpha 256 256 256
+bounce 2
+airfriction 6
+liquidfriction 16
+//velocityoffset 0 0 120
+velocityjitter 512 512 512
+effect electro_combo
+count 64
+type spark
+tex 41 41
+color 0xFDFFD9 0xFDFFD9
+size 16 16
+alpha 444 512 866
+bounce 2
+//airfriction 2
+originjitter 1 1 1
+velocityjitter 512 512 512
+// inner cloud of smoke
+effect electro_combo
+count 0.25
+type smoke
+color 0x202020 0x404040
+tex 0 8
+size 24 24
+alpha 256 256 256
+originjitter 20 20 20
+velocityjitter 32 32 32
+
+
+
+// used in qcsrc/server/w_crylink.qc:	pointparticles(particleeffectnum("crylink_muzzleflash"), w_shotorg, w_shotdir * 1000, shots)
+// used in qcsrc/server/w_crylink.qc:	pointparticles(particleeffectnum("crylink_muzzleflash"), w_shotorg, w_shotdir * 1000, shots)
+effect crylink_muzzleflash
+count 1
+type smoke
+color 0x202020 0x404040
+tex 0 8
+size 5 5
+alpha 128 128 256
+originjitter 1.5 1.5 1.5
+velocityjitter 6 6 6
+velocitymultiplier 0.01
+lightradius 200
+lightradiusfade 2000
+lightcolor 2 1.5 0.2
+effect crylink_muzzleflash
+count 10
+type spark
+tex 40 40
+color 0xA080C0 0xA080C0
+size 3 3
+alpha 0 128 1024
+originjitter 1 1 1
+velocityjitter 200 200 200
+velocitymultiplier 0.3
+airfriction 12
+
+
+
+// crylink impact effect
+// decal
+// used in qcsrc/server/w_crylink.qc:	pointparticles(particleeffectnum("crylink_impact"), self.origin, '0 0 0', 1)
+effect crylink_impact
+countabsolute 1
+type decal
+tex 47 47
+size 8 8
+alpha 256 256 0
+originjitter 12 12 12
+//lightradius 60
+//lightradiusfade 300
+//lightcolor 3.2 0.4 4
+// purple flare effect
+effect crylink_impact
+countabsolute 1
+type static
+tex 39 39
+color 0x504060 0x504060
+size 8 8
+alpha 256 256 512
+// purple sparks
+effect crylink_impact
+count 20
+type spark
+tex 41 41
+color 0xA040C0 0xA040C0
+bounce 2
+size 4 4
+alpha 256 256 1024
+velocityjitter 256 256 256
+// purple splash
+effect crylink_impact
+count 3
+type static
+color 0xE070FF 0xE070FF
+size 8 8
+alpha 256 256 512
+velocityjitter 8 8 8
+// purple splash
+effect crylink_impact
+count 3
+type static
+color 0xE070FF 0xE070FF
+size 8 8
+alpha 256 256 1024
+velocityjitter 32 32 32
+
+
+
+// used in qcsrc/server/w_minstanex.qc:	pointparticles(particleeffectnum("nex_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+// used in qcsrc/server/w_nex.qc:	pointparticles(particleeffectnum("nex_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+effect nex_muzzleflash
+count 10
+type smoke
+color 0x202020 0x404040
+tex 0 8
+size 16 16
+alpha 128 128 192
+originjitter 4 4 4
+velocityjitter 24 24 24
+velocitymultiplier 0.02
+lightradius 200
+lightradiusfade 200
+lightcolor 2 2.5 3
+effect nex_muzzleflash
+count 150
+type spark
+tex 41 41
+color 0xD9FDFF 0xD9FDFF
+size 3 3
+alpha 0 128 1024
+originjitter 1 1 1
+velocityjitter 600 600 600
+velocitymultiplier 0.5
+airfriction 9
+
+
+
+//// nex beam
+//effect nex_beam
+//countabsolute 1
+//type beam
+//tex 60 60
+//color 0xFFFFFF 0xFFFFFF
+//size 6 6
+//alpha 128 128 192
+// nex beam: ring smoke
+// used in qcsrc/server/w_nex.qc:	trailparticles(world, particleeffectnum("nex_beam"), w_shotorg, trace_endpos)
+effect nex_beam
+trailspacing 32
+color 0x1680A0 0x1680A0
+size 4 4
+tex 32 32
+alpha 64 128 64
+airfriction 5
+sizeincrease 2
+type static
+// nex beam: drifting smoke
+effect nex_beam
+trailspacing 6
+color 0x5080A0 0x5080A0
+size 1 1
+tex 0 8
+alpha 32 64 32
+airfriction 9
+sizeincrease 8
+velocityjitter 64 64 64
+type static
+// nex beam: bright core
+effect nex_beam
+trailspacing 6
+color 0x80CDFF 0x80CDFF
+size 4 4
+//tex 48 55
+alpha 256 256 1280
+type static
+//sparks
+effect nex_beam
+trailspacing 8
+color 0x1680A0 0x1680A0
+size 1 1
+tex 63 63
+alpha 64 128 80
+airfriction 5
+gravity -0.01
+type snow
+
+// nex impact
+// decal
+// used in qcsrc/server/w_minstanex.qc:		pointparticles(particleeffectnum("nex_impact"), trace_endpos - w_shotdir * 6, '0 0 0', 1)
+// used in qcsrc/server/w_nex.qc:		pointparticles(particleeffectnum("nex_impact"), trace_endpos - w_shotdir * 6, '0 0 0', 1)
+effect nex_impact
+countabsolute 1
+type decal
+tex 47 47
+size 24 24
+alpha 256 256 0
+originjitter 16 16 16
+lightradius 200
+lightradiusfade 250
+lightcolor 4 6 8
+// shockwave
+effect nex_impact
+countabsolute 1
+type static
+tex 34 34
+size 16 16
+alpha 100 100 300
+sizeincrease 200
+
+
+// flare effect
+effect nex_impact
+countabsolute 1
+type static
+tex 37 37
+color 0x80C0FF 0x80C0FF
+size 8 8
+alpha 256 256 256
+// small sparks which form a sphere as they slow down
+//effect nex_impact
+//count 256
+//type spark
+//color 0x2030FF 0x80C0FF
+//size 1 2
+//alpha 256 256 512
+//bounce 2
+//airfriction 8
+//liquidfriction 8
+//velocityjitter 384 384 384
+// small sparks which glow brightly but live briefly
+effect nex_impact
+count 128
+type spark
+tex 41 41
+color 0xD9FDFF 0xD9FDFF
+size 4 4
+alpha 0 128 512
+bounce 2
+velocityjitter 600 600 600
+velocitymultiplier 0.5
+airfriction 9
+
+
+
+// used in qcsrc/server/w_hagar.qc:	pointparticles(particleeffectnum("hagar_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+// used in qcsrc/server/w_hagar.qc:	pointparticles(particleeffectnum("hagar_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+effect hagar_muzzleflash
+count 4
+type smoke
+color 0x202020 0x404040
+tex 0 8
+size 5 5
+alpha 256 256 512
+originjitter 1.5 1.5 1.5
+velocityjitter 6 6 6
+velocitymultiplier 0.01
+lightradius 200
+lightradiusfade 2000
+lightcolor 2 1.5 0.2
+effect hagar_muzzleflash
+count 30
+type spark
+tex 40 40
+color 0xFFFDD9 0xFFFDD9
+size 3 3
+alpha 0 128 1024
+originjitter 1 1 1
+velocityjitter 300 300 300
+velocitymultiplier 0.5
+airfriction 12
+
+
+
+// used in qcsrc/server/w_hagar.qc:		pointparticles(particleeffectnum("hagar_bounce"), self.origin, self.velocity, 1)
+effect hagar_bounce
+count 4
+type smoke
+color 0x202020 0x404040
+tex 0 8
+size 5 5
+alpha 256 256 256
+originjitter 1.5 1.5 1.5
+velocityjitter 6 6 6
+velocitymultiplier 0.01
+lightradius 60
+lightradiusfade 300
+lightcolor 2 1.5 0.2
+effect hagar_bounce
+count 30
+type spark
+tex 40 40
+color 0xFFFDD9 0xFFFDD9
+size 3 3
+alpha 0 256 256
+gravity 1
+bounce 1.5
+originjitter 1 1 1
+velocityjitter 600 600 600
+velocitymultiplier 0.5
+airfriction 12
+
+
+
+// decal
+// used in qcsrc/server/w_hagar.qc:	pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1)
+// used in qcsrc/server/w_hagar.qc:	pointparticles(particleeffectnum("hagar_explode"), org2, '0 0 0', 1)
+effect hagar_explode
+countabsolute 1
+type decal
+tex 8 16
+size 28 38
+alpha 256 256 0
+originjitter 40 40 40
+lightradius 250
+lightradiusfade 400
+lightcolor 8 4 1
+// fire effect which make bright dot inside
+effect hagar_explode
+notunderwater
+count 12
+type smoke
+tex 48 55
+color 0xffe955 0xff5a00
+size 16 26
+sizeincrease 5
+alpha 128 256 456
+bounce 1.5
+airfriction 8
+liquidfriction 8
+originjitter 8 8 8
+velocityjitter 156 156 156
+// fire effect which expands then slows
+effect hagar_explode
+notunderwater
+count 24
+type static
+tex 48 55
+color 0x8f0d00 0xff5a00
+size 20 26
+sizeincrease 15
+alpha 128 256 456
+bounce 1.5
+airfriction 12
+liquidfriction 8
+originjitter 8 8 8
+velocityjitter 256 256 256
+
+// smoke
+effect hagar_explode
+type alphastatic
+notunderwater
+tex 0 8
+count 20
+size 20 40
+sizeincrease 20
+alpha 500 600 556
+velocityjitter 244 244 244
+airfriction 5
+color 0x000000 0x111111
+bounce 2
+
+// underwater bubbles
+effect hagar_explode
+underwater
+count 32
+type bubble
+tex 62 62
+color 0x404040 0x808080
+size 3 3
+alpha 128 256 64
+gravity -0.125
+bounce 1.5
+liquidfriction 0.25
+originjitter 16 16 16
+velocityjitter 96 96 96
+// bouncing sparks
+effect hagar_explode
+notunderwater
+count 16
+type spark
+color 0x903010 0xFFD030
+size 2 2
+tex 40 40
+alpha 256 256 384
+gravity 1
+airfriction 0.2
+bounce 1.5
+liquidfriction 0.8
+velocityoffset 0 0 80
+velocityjitter 256 256 256
+
+
+
+// used in qcsrc/server/w_rocketlauncher.qc:	pointparticles(particleeffectnum("rocketlauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1)
+effect rocketlauncher_muzzleflash
+count 20
+type smoke
+color 0x202020 0x404040
+tex 0 8
+size 1 1
+sizeincrease 20
+alpha 256 256 256
+airfriction 2
+originjitter 1.5 1.5 1.5
+velocityjitter 40 40 40
+velocitymultiplier -0.13
+//lightradius 200
+//lightradiusfade 2000
+//lightcolor 2 1.5 0.2
+effect rocketlauncher_muzzleflash
+count 30
+type spark
+tex 40 40
+color 0xFFFDD9 0xFFFDD9
+size 3 3
+alpha 0 128 1024
+originjitter 1 1 1
+velocityjitter 300 300 300
+velocitymultiplier 0.5
+airfriction 12
+
+
+
+// rocket trail
+// smoke
+// used nowhere in code
+effect TR_ROCKET
+trailspacing 5
+type alphastatic
+color 0x303030 0x000000
+tex 0 8
+size 1 4
+bounce 1
+sizeincrease 11
+alpha 200 300 200
+lightradius 150
+lighttime 0
+lightcolor 6 3 1
+originjitter 2 2 2
+velocityjitter 3 3 3
+velocitymultiplier -0.02
+//gravity -0.11
+// fire
+effect TR_ROCKET
+notunderwater
+trailspacing 2
+type static
+color 0xffdf72 0x811200
+tex 48 55
+size 7 7
+sizeincrease -30
+alpha 100 144 588
+airfriction 8
+velocityjitter 32 32 32
+velocitymultiplier -1.5
+// bubbles
+effect TR_ROCKET
+underwater
+trailspacing 8
+type bubble
+tex 62 62
+color 0x404040 0x808080
+size 1 1
+alpha 256 256 256
+gravity -0.125
+bounce 1.5
+liquidfriction 4
+velocityjitter 16 16 16
+// sparks
+effect TR_ROCKET
+trailspacing 10
+type spark
+tex 40 40
+color 0xFFFDD9 0xFFFDD9
+size 1 1
+alpha 444 512 1866
+//gravity 1
+bounce 1
+//velocityoffset 0 0 15
+airfriction 5
+originjitter 1 1 1
+velocityjitter 100 100 100
+velocitymultiplier -0.31
+
+// rocket explosion (bigger than mortar and hagar)
+// decal
+// used in qcsrc/server/cl_player.qc:				pointparticles(particleeffectnum("rocket_explode"), self.origin, '0 0 0', 1)
+// used in qcsrc/server/portals.qc:		pointparticles(particleeffectnum("rocket_explode"), portal.origin + v_forward * 16, v_forward * 1024, 4)
+// used in qcsrc/server/w_rocketlauncher.qc:	pointparticles(particleeffectnum("rocket_explode"), org2, '0 0 0', 1)
+effect rocket_explode
+countabsolute 1
+type decal
+tex 8 16
+size 72 72
+alpha 256 256 0
+originjitter 40 40 40
+lightradius 400
+lightradiusfade 750
+lightcolor 8 4 1
+// fire effect
+effect rocket_explode
+notunderwater
+count 64
+type static
+tex 48 55
+color 0x8f0d00 0xff5a00
+size 33 44
+sizeincrease 45
+alpha 200 256 512
+bounce 1.5
+airfriction 8
+liquidfriction 8
+originjitter 8 8 8
+velocityjitter 512 512 512
+// fire effect 2
+effect rocket_explode
+notunderwater
+count 28
+type smoke
+tex 48 55
+color 0xea691b 0xeed05a
+size 33 44
+sizeincrease 55
+alpha 200 256 612
+bounce 2.5
+airfriction 19
+liquidfriction 19
+originjitter 8 8 8
+velocityjitter 912 912 912
+// smoke
+effect rocket_explode
+type alphastatic
+notunderwater
+tex 0 8
+count 64
+size 20 40
+sizeincrease 44
+alpha 400 500 456
+velocityjitter 444 444 444
+airfriction 5
+color 0x000000 0x111111
+bounce 2
+// underwater bubbles
+effect rocket_explode
+underwater
+count 64
+type bubble
+tex 62 62
+color 0x404040 0x808080
+size 3 3
+alpha 128 256 64
+gravity -0.125
+bounce 1.5
+liquidfriction 0.25
+originjitter 16 16 16
+velocityjitter 144 144 144
+// bouncing sparks
+effect rocket_explode
+notunderwater
+count 64
+type spark
+tex 40 40
+color 0xffa800 0xffedaf
+size 1 1
+sizeincrease 2
+alpha 44 256 384
+gravity 1
+airfriction -1
+bounce 1.5
+liquidfriction 0.8
+velocityoffset 0 0 80
+originjitter 16 16 16
+velocityjitter 224 224 324
+
+
+
+// used in qcsrc/server/g_hook.qc:	pointparticles(particleeffectnum("grapple_muzzleflash"), org, '0 0 0', 1)
+effect grapple_muzzleflash
+lightradius 160
+lightradiusfade 800
+lightcolor 1 0 0
+
+
+
+// used in qcsrc/server/g_hook.qc:	pointparticles(particleeffectnum("grapple_impact"), self.origin, '0 0 0', 1)
+effect grapple_impact
+lightradius 160
+lightradiusfade 800
+lightcolor 1 0 0
+
+
+
+// used nowhere in code
+effect nex242_misc_laser_beam
+countabsolute 1
+type beam
+tex 60 60
+size 1 1
+alpha 256 256 64
+color 0xff0000 0xff0000
+sizeincrease 1
+
+// used nowhere in code
+effect nex242_misc_laser_beam_end
+count 1
+type spark
+color 0x8f4333 0xfff31b
+size 0.4 0.4
+alpha 128 256 768
+gravity 1
+bounce -1
+velocityjitter 64 64 64
+velocitymultiplier 100
+
+
+
+// used nowhere in code
+effect nex242_misc_laser_beam_fast
+countabsolute 1
+type beam
+tex 60 60
+size 1 1
+alpha 256 256 640
+color 0xff0000 0xff0000
+sizeincrease 0.1
+
+// used nowhere in code
+effect nex242_misc_laser_beam_fast_end
+count 1
+type spark
+color 0x8f4333 0xfff31b
+size 0.4 0.4
+alpha 128 256 768
+gravity 1
+bounce -1
+velocityjitter 64 64 64
+velocitymultiplier 100
+
+// additional laser colors (mike)
+// used nowhere in code
+effect nex242_misc_laser_green_beam
+countabsolute 1
+type beam
+tex 60 60
+size 1 1
+alpha 256 256 64
+color 0x00ff00 0x00ff00
+sizeincrease 1
+
+// used nowhere in code
+effect nex242_misc_laser_green_beam_end
+count 1
+type spark
+color 0x8f4333 0xfff31b
+size 0.4 0.4
+alpha 128 256 768
+gravity 1
+bounce -1
+velocityjitter 64 64 64
+velocitymultiplier 100
+
+// used nowhere in code
+effect nex242_misc_laser_blue_beam
+countabsolute 1
+type beam
+tex 60 60
+size 1 1
+alpha 256 256 64
+color 0x0000ff 0x0000ff
+sizeincrease 1
+
+// used nowhere in code
+effect nex242_misc_laser_blue_beam_end
+count 1
+type spark
+color 0x8f4333 0xfff31b
+size 0.4 0.4
+alpha 128 256 768
+gravity 1
+bounce -1
+velocityjitter 64 64 64
+velocitymultiplier 100
+
+// used nowhere in code
+effect nex242_misc_laser_yellow_beam
+countabsolute 1
+type beam
+tex 60 60
+size 1 1
+alpha 256 256 64
+color 0xffff00 0xffff00
+sizeincrease 1
+
+// used nowhere in code
+effect nex242_misc_laser_yellow_beam_end
+count 1
+type spark
+color 0x8f4333 0xfff31b
+size 0.4 0.4
+alpha 128 256 768
+gravity 1
+bounce -1
+velocityjitter 64 64 64
+velocitymultiplier 100
+
+// used nowhere in code
+effect nex242_misc_laser_cyan_beam
+countabsolute 1
+type beam
+tex 60 60
+size 1 1
+alpha 256 256 64
+color 0x00ffff 0x00ffff
+sizeincrease 1
+
+// used nowhere in code
+effect nex242_misc_laser_cyan_beam_end
+count 1
+type spark
+color 0x8f4333 0xfff31b
+size 0.4 0.4
+alpha 128 256 768
+gravity 1
+bounce -1
+velocityjitter 64 64 64
+velocitymultiplier 100
+
+// used nowhere in code
+effect nex242_misc_laser_magenta_beam
+countabsolute 1
+type beam
+tex 60 60
+size 1 1
+alpha 256 256 64
+color 0xff00ff 0xff00ff
+sizeincrease 1
+
+// used nowhere in code
+effect nex242_misc_laser_magenta_beam_end
+count 1
+type spark
+color 0x8f4333 0xfff31b
+size 0.4 0.4
+alpha 128 256 768
+gravity 1
+bounce -1
+velocityjitter 64 64 64
+velocitymultiplier 100
+
+// used nowhere in code
+effect nex242_misc_laser_white_beam
+countabsolute 1
+type beam
+tex 60 60
+size 1 1
+alpha 256 256 64
+color 0xffffff 0xffffff
+sizeincrease 1
+
+// used nowhere in code
+effect nex242_misc_laser_white_beam_end
+count 1
+type spark
+color 0x8f4333 0xfff31b
+size 0.4 0.4
+alpha 128 256 768
+gravity 1
+bounce -1
+velocityjitter 64 64 64
+velocitymultiplier 100
+
+// used nowhere in code
+effect nex242_misc_laser_black_beam
+countabsolute 1
+type beam
+tex 60 60
+size 1 1
+alpha 256 256 64
+color 0x000000 0x000000
+sizeincrease 1
+
+// used nowhere in code
+effect nex242_misc_laser_black_beam_end
+count 1
+type spark
+color 0x8f4333 0xfff31b
+size 0.4 0.4
+alpha 128 256 768
+gravity 1
+bounce -1
+velocityjitter 64 64 64
+velocitymultiplier 100
+
+// used nowhere in code
+effect nex242_misc_laser_orange_beam
+countabsolute 1
+type beam
+tex 60 60
+size 1 1
+alpha 256 256 64
+color 0xff6600 0xff6600
+sizeincrease 1
+
+// used nowhere in code
+effect nex242_misc_laser_orange_beam_end
+count 1
+type spark
+color 0x8f4333 0xfff31b
+size 0.4 0.4
+alpha 128 256 768
+gravity 1
+bounce -1
+velocityjitter 64 64 64
+velocitymultiplier 100
+
+
+
+
+// bigger crylink impact effect
+// decal
+// used in qcsrc/server/w_crylink.qc:	pointparticles(particleeffectnum("crylink_impactbig"), self.origin, '0 0 0', 1)
+effect crylink_impactbig
+countabsolute 1
+type decal
+tex 47 47
+size 24 24
+alpha 256 256 0
+originjitter 12 12 12
+//lightradius 200
+//lightradiusfade 800
+//lightcolor 3.2 0.4 4
+// purple flare effect
+effect crylink_impactbig
+countabsolute 1
+type static
+tex 39 39
+color 0x504060 0x504060
+size 24 24
+alpha 256 256 512
+// purple sparks
+effect crylink_impactbig
+count 80
+type spark
+tex 41 41
+color 0xA040C0 0xA040C0
+bounce 2
+size 6 6
+alpha 256 256 1024
+velocityjitter 512 512 512
+// purple splash
+effect crylink_impactbig
+count 3
+type static
+color 0xE070FF 0xE070FF
+size 16 16
+alpha 256 256 512
+velocityjitter 32 32 32
+// purple splash
+effect crylink_impactbig
+count 6
+type static
+color 0xE070FF 0xE070FF
+size 16 16
+alpha 256 256 1024
+velocityjitter 256 256 256
+
+// Zero-violence effects
+
+// impact effect indicating damage
+// used in qcsrc/server/cl_player.qc:		pointparticles(particleeffectnum("damage_hit"), hitloc, force, bound(0, damage, 200))
+effect damage_hit
+count 1
+type static
+color 0x20FF30 0x80FFC0
+size 1 1
+alpha 256 256 256
+gravity -0.4
+bounce 1.5
+airfriction 8
+liquidfriction 16
+//velocityoffset 0 0 120
+velocityjitter 16 16 16
+
+// effect for removing player model
+// "teleport"
+// used in qcsrc/server/cl_player.qc:			pointparticles(particleeffectnum("damage_dissolve"), self.origin, force, 1)
+effect damage_dissolve
+count 96
+type static
+color 0x66FF66 0xFFFFFF
+size 10 10
+alpha 64 128 128
+airfriction 1
+liquidfriction 4
+originoffset 0 0 28
+originjitter 16 16 28
+velocityjitter 0 0 256
+// flare
+effect damage_dissolve
+countabsolute 1
+type static
+tex 38 38
+color 0x00FF00 0x99FF99
+size 32 32
+alpha 256 256 196
+// large sparks
+effect damage_dissolve
+count 20
+type static
+color 0x00FF00 0x99FF99
+size 16 16
+alpha 256 256 256
+//gravity 1
+bounce 1.5
+airfriction 4
+liquidfriction 16
+//velocityoffset 0 0 120
+velocityjitter 512 512 512
+
+// decal
+// used in qcsrc/server/g_triggers.qc:			self.cnt = particleeffectnum("laser_deadly")
+effect laser_deadly
+countabsolute 1
+type decal
+tex 56 59
+size 5 5
+alpha 256 256 0
+originjitter 6 6 6
+// dust/smoke drifting away from the impact
+effect laser_deadly
+count 0.05 // 50 per second
+type smoke
+tex 48 55
+color 0xFFFFFF 0xFFFFFF
+size 3 3
+alpha 0 64 64
+originjitter 1 1 1
+airfriction 7
+liquidfriction 16
+velocityjitter 15 15 15
+sizeincrease 2
+velocitymultiplier 20
+// sparks
+effect laser_deadly
+notunderwater
+count 0.05 // 50 per second
+type spark
+tex 40 40
+color 0xFDFFD9 0xFDFFD9
+size 0.6 0.6
+alpha 256 256 768
+gravity 1
+bounce 1
+airfriction 5
+originjitter 1 1 1
+velocityjitter 100 100 100
+velocitymultiplier 100
+
+
+//torch
+//fire
+// used nowhere in code
+effect torch_small
+//notunderwater
+count 16
+type smoke
+tex 48 55
+size 1 11
+alpha 200 256 512
+gravity -0.5
+color 0x8f0d00 0xff5a00
+//bounce 1
+sizeincrease -1
+originjitter 5 5 5
+velocityjitter 1 1 50
+// smoke
+effect torch_small
+type alphastatic
+count 8
+tex 0 8
+size 5 10
+sizeincrease 5
+alpha 200 256 200
+color 0x000000 0x111111
+gravity -0.3
+originjitter 3 3 3
+velocityjitter 11 11 50
+//bounce 1
+
+//fountain01
+// used nowhere in code
+effect fountain01
+count 32
+tex 0 8
+size 10 15
+alpha 0 100 100
+gravity 0.6
+bounce 1
+sizeincrease 20
+type snow
+bounce 1
+originjitter 5 5 5
+velocityjitter 81 81 150
+color 0x7cbaff 0xcfd1ff
+velocitymultiplier 2
+
+// decal
+// used in qcsrc/server/w_hook.qc:	pointparticles(particleeffectnum("hookbomb_explode"), org2, '0 0 0', 1)
+effect hookbomb_explode
+count 50
+type static
+tex 38 38
+color 0x807aff 0x4463d5
+size 150 200
+sizeincrease -160
+alpha 0 256 200
+//gravity 1
+bounce 1.5
+originjitter 10 10 10
+velocityjitter 550 550 550
+//velocitymultiplier -20
+airfriction 10
+// decal in the air
+effect hookbomb_explode
+countabsolute 3
+type static
+tex 38 38
+color 0x807aff 0x4463d5
+size 160 200
+alpha 256 265 100
+sizeincrease -60
+originoffset 0 0 6
+// decal on the ground
+effect hookbomb_explode
+countabsolute 1
+type decal
+tex 39 39
+size 80 100
+alpha 256 256 0
+originjitter 6 6 6
+// some sparks
+effect hookbomb_explode
+count 60
+type spark
+tex 38 38
+color 0x807aff 0x4463d5
+size 20 30
+alpha 256 256 456
+sizeincrease -60
+gravity 1
+bounce 1.5
+originjitter 1 1 1
+velocityjitter 1900 1900 1300
+velocitymultiplier 0.5
+airfriction 2
+
+
+// smoke
+effect EF_MGTURRETTRAIL
+notunderwater
+trailspacing 2
+type smoke
+color 0xd0d0a0 0xfffff0
+tex 0 8
+size 6 2
+alpha 16 32 16
+// bubbles
+effect EF_MGTURRETTRAIL
+underwater
+trailspacing 16
+type bubble
+tex 62 62
+color 0x404040 0x808080
+size 1 1
+alpha 256 256 256
+gravity -0.125
+bounce 1.5
+liquidfriction 4
+velocityjitter 16 16 16
+
+//fire_big
+//fire
+effect fire_big
+//notunderwater
+count 52
+type smoke
+tex 48 55
+size 11 31
+alpha 200 356 512
+gravity -0.5
+color 0x8f0d00 0xff5a00
+bounce 2
+sizeincrease -3
+originjitter 33 33 33
+velocityjitter 22 22 50
+// smoke
+effect fire_big
+type alphastatic
+count 22
+tex 0 8
+size 22 33
+sizeincrease 11
+alpha 200 256 200
+color 0x000000 0x111111
+gravity -0.3
+originjitter 44 44 44
+velocityjitter 11 11 50
+bounce 2
+
+//red_flare
+//smoke
+effect red_flare
+type alphastatic
+count 21
+tex 0 8
+size 1 11
+sizeincrease 11
+alpha 200 256 160
+color 0xff0000 0xdc7171
+gravity -0.24
+originjitter 2 2 0
+velocityjitter 15 15 30
+bounce 1
+
+//blue_flare
+//smoke
+effect blue_flare
+type alphastatic
+count 21
+tex 0 8
+size 1 11
+sizeincrease 11
+alpha 200 256 160
+color 0x0000ff 0x7194dc
+gravity -0.24
+originjitter 2 2 0
+velocityjitter 15 15 30
+bounce 1
+
+//smoke_ring
+//smoke
+effect smoke_ring
+type smoke
+count 90
+tex 0 8
+size 1 11
+sizeincrease 21
+gravity 0.1
+airfriction 3
+alpha 100 156 200
+color 0x111111 0x979797
+//originjitter 2 2 0
+velocityjitter 190 190 50
+bounce 1.1
+notunderwater
+
+//smoke_large
+//smoke
+effect smoke_large
+type alphastatic
+count 50
+tex 0 8
+size 11 21
+sizeincrease 21
+gravity -0.15
+airfriction 7
+alpha 140 256 190
+color 0x9e895f 0xffd39b
+//originjitter 2 2 0
+velocityjitter 390 390 390
+bounce 1.1
+notunderwater
+
+//sparks
+effect sparks
+count 30
+type spark
+tex 40 40
+color 0xFFFDD9 0xFFFDD9
+size 1 3
+alpha 0 256 256
+gravity 1
+bounce 1.5
+originjitter 1 1 1
+velocityjitter 300 300 200
+velocitymultiplier 1.5
+airfriction 3
+
+//sparks
+effect electricity_sparks
+count 70
+type spark
+tex 40 40
+color 0x807aff 0x4463d5
+size 1 3
+alpha 0 256 556
+gravity 1
+bounce 1.5
+originjitter 1 1 1
+velocityjitter 300 300 300
+velocitymultiplier 0.5
+airfriction 3
+
+//steam, it needs direction
+effect steam
+effect steam
+type smoke
+count 2
+tex 0 8
+size 1 3
+sizeincrease 7
+gravity -0.25
+velocitymultiplier 14
+airfriction 5
+alpha 140 256 190
+color 0xfffbdf 0xffffff
+//originjitter 2 2 0
+velocityjitter 19 19 19
+bounce 1.1
+notunderwater
+
+// smoke emiter
+effect smoking
+count 20
+type alphastatic
+tex 0 8
+color 0x292929 0x000000
+size 10 40
+sizeincrease 5
+alpha 100 256 100
+gravity -0.1
+bounce 1.5
+originjitter 10 10 10
+velocityjitter 5 5 20
+//velocitymultiplier -20
+airfriction -1
+
+//golden dust (create it once per second to cover large area in small yellow particles)
+effect goldendust  
+count 50
+type snow
+tex 38 38
+color 0xff9600 0xffefb8
+size 2 3
+sizeincrease -0.3
+alpha 256 256 70
+//gravity -0.1
+bounce 1.5
+originjitter 500 500 500
+velocityjitter 0.1 0.1 0.1
+//velocitymultiplier -20
+//airfriction -0.1
+
+effect healing_fx
+count 50
+type spark
+tex 40 40
+color 0xff0000 0xff0000
+size 1 3
+sizeincrease -0.05
+alpha 256 256 170
+gravity -0.1
+bounce 1.5
+originjitter 5 5 100
+velocityjitter 50 50 0
+//velocitymultiplier 20
+airfriction -0.5
+
+effect armorrepair_fx
+count 50
+type spark
+tex 40 40
+color 0x00ff00 0x00ff00
+size 1 3
+sizeincrease -0.05
+alpha 256 256 170
+gravity -0.1
+bounce 1.5
+originjitter 5 5 50
+velocityjitter 50 50 0
+//velocitymultiplier 20
+airfriction -0.5
+
+effect ammoregen_fx
+count 50
+type spark
+tex 40 40
+color 0x0000ff 0x0000ff
+size 1 3
+sizeincrease -0.05
+alpha 256 256 170
+gravity -0.1
+bounce 1.5
+originjitter 5 5 50
+velocityjitter 50 50 0
+//velocitymultiplier 20
+airfriction -0.5
+
+// red-yellow flame like fx
+effect rage
+count 5
+type smoke
+tex 35 36
+color 0xff0000 0xff7800
+size 1 3
+sizeincrease 10
+gravity -0.06
+alpha 256 256 190
+originjitter 5 5 5
+velocityjitter 25 25 25
+airfriction 2
+
+// pieces of glass or ice falling on the floor 
+effect iceorglass
+count 30
+type alphastatic
+tex 44 44
+color 0xffffff 0xb2d3e6
+size 3 7
+//sizeincrease 10
+gravity 1.3
+alpha 256 256 0
+time 1 3
+bounce 2
+originjitter 30 30 30
+velocityjitter 100 100 100
+airfriction 3
+
+// cover small area in poison gas, spawn it once per second
+effect poisonfield
+count 30
+type smoke
+tex 0 8
+color 0x00ff00 0x7db843
+size 1 1
+sizeincrease 30
+ gravity -0.01
+alpha 256 256 50
+bounce 1.5
+originjitter 333 333 50
+velocityjitter 5 5 5
+airfriction 1
+
+// cover small area in icy mist, spawn it once per second
+effect icefield
+count 20
+type smoke
+tex 0 8
+color 0x008aff 0x75e7ff
+size 1 1
+sizeincrease 10
+ gravity -0.01
+alpha 256 256 50
+bounce 1.5
+originjitter 333 333 0
+velocityjitter 5 5 30
+airfriction 1
+effect icefield
+count 10 
+type smoke
+tex 48 55
+size 1 1
+sizeincrease 10
+color 0x008aff 0x75e7ff
+alpha 256 256 50
+gravity -0.001
+originjitter 333 333 0
+
+
+// cover very small area in flames, spawn it 3 times per second (or more often to get better looking fire at cost of fps hit )
+// flames that go up
+effect firefield
+count 200
+type smoke
+tex 48 55
+color 0x8f0d00 0xff5a00
+size 1 1 
+sizeincrease 20
+ gravity -0.06
+alpha 50 256 200
+bounce 1.5
+originjitter 180 180 0
+velocityjitter 5 5 30
+airfriction 1
+//flames that stay on the ground
+effect firefield
+count 100
+type smoke
+tex 48 55
+color 0x8f0d00 0xff5a00
+size 1 1 
+sizeincrease 40
+alpha 50 256 200
+originjitter 180 180 0
+// smoke
+effect firefield
+count 40
+type alphastatic
+tex 0 8
+size 1 1
+sizeincrease 7
+color 0x000000 0x111111
+alpha 256 256 70
+gravity -0.02
+originjitter 180 180 0
+
+//flamethrower, spawn it as fast as you can  20 times per second or more, it needs direction
+//fast fire
+effect flamethrower
+count 6
+type smoke
+tex 48 55
+color 0x8f0d00 0xff5a00
+size 5 5 
+sizeincrease 20
+ gravity -0.06
+alpha 50 256 250
+bounce 1.5
+velocityjitter 40 40 11
+velocitymultiplier 30
+airfriction 1.2
+//slowfire
+effect flamethrower
+count 5
+type smoke
+tex 48 55
+color 0x8f0d00 0xff5a00
+size 5 5 
+sizeincrease 20
+ gravity -0.06
+alpha 50 256 200
+bounce 1.5
+velocityjitter 40 40 40
+velocitymultiplier 20
+airfriction 1.2
+// very slow and small fire
+effect flamethrower
+count 3
+type smoke
+tex 48 55
+color 0x8f0d00 0xff5a00
+size 5 5 
+sizeincrease 10
+ gravity -0.06
+alpha 50 256 200
+bounce 1.5
+velocityjitter 30 30 30
+velocitymultiplier 10
+airfriction 0.3
+//decreasing fire
+effect flamethrower
+count 4
+type smoke
+tex 48 55
+color 0x8f0d00 0xff5a00
+size 20 30
+sizeincrease -10
+ gravity -0.06
+alpha 50 256 200
+bounce 1.5
+velocityjitter 10 10 10
+velocitymultiplier 15
+airfriction 0.3
+//smoke
+effect flamethrower
+count 1
+type alphastatic
+tex 0 8
+size 5 15
+sizeincrease 7
+color 0x000000 0x111111
+alpha 256 256 90
+//gravity -0.2
+originjitter 10 10 10
+velocitymultiplier 20
+velocityoffset 0 0 10
+airfriction 1

Modified: branches/nexuiz-2.0/data/high.cfg
===================================================================
--- branches/nexuiz-2.0/data/high.cfg	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/high.cfg	2008-10-26 15:54:47 UTC (rev 4888)
@@ -2,8 +2,10 @@
 cl_nogibs 0
 cl_particles_quality 1
 gl_picmip 0
+gl_flashblend 0
 r_picmipworld 0
 gl_texture_anisotropy 16
+mod_q3bsp_nolightmaps 0
 r_bloom 1
 r_coronas 1
 r_glsl_deluxemapping 1

Modified: branches/nexuiz-2.0/data/low.cfg
===================================================================
--- branches/nexuiz-2.0/data/low.cfg	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/low.cfg	2008-10-26 15:54:47 UTC (rev 4888)
@@ -1,9 +1,11 @@
 cl_decals 1
 cl_nogibs 0
 cl_particles_quality 0.20
+gl_flashblend 1
 gl_picmip 2
 r_picmipworld 1
 gl_texture_anisotropy 1
+mod_q3bsp_nolightmaps 1
 r_bloom 0
 r_coronas 1
 r_glsl_deluxemapping 0

Copied: branches/nexuiz-2.0/data/maps/turret_test.mapinfo (from rev 4887, trunk/data/maps/turret_test.mapinfo)
===================================================================
--- branches/nexuiz-2.0/data/maps/turret_test.mapinfo	                        (rev 0)
+++ branches/nexuiz-2.0/data/maps/turret_test.mapinfo	2008-10-26 15:54:47 UTC (rev 4888)
@@ -0,0 +1,14 @@
+title <TITLE>
+description <DESCRIPTION>
+author <AUTHOR>
+cdtrack 6
+has weapons
+type dm 30 20
+type tdm 50 20 2
+type lms 9 20
+type kh 1000 20 3
+// optional: fog density red green blue alpha mindist maxdist
+// optional: settemp_for_type (all|gametypename) cvarname value
+// optional: clientsettemp_for_type (all|gametypename) cvarname value
+// optional: size mins_x mins_y mins_z maxs_x maxs_y maxs_z
+hidden

Modified: branches/nexuiz-2.0/data/med.cfg
===================================================================
--- branches/nexuiz-2.0/data/med.cfg	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/med.cfg	2008-10-26 15:54:47 UTC (rev 4888)
@@ -2,8 +2,10 @@
 cl_nogibs 0
 cl_particles_quality 0.5
 gl_picmip 2
+gl_flashblend 0
 r_picmipworld 0
 gl_texture_anisotropy 1
+mod_q3bsp_nolightmaps 0
 r_bloom 0
 r_coronas 1
 r_glsl_deluxemapping 0
@@ -12,7 +14,7 @@
 r_hdr 0
 r_shadow_usenormalmap 0
 r_shadow_gloss 0
-r_shadow_realtime_dlight 0
+r_shadow_realtime_dlight 1
 r_shadow_realtime_dlight_shadows 0
 r_shadow_realtime_world 0
 r_shadow_realtime_world_shadows 0

Modified: branches/nexuiz-2.0/data/normal.cfg
===================================================================
--- branches/nexuiz-2.0/data/normal.cfg	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/normal.cfg	2008-10-26 15:54:47 UTC (rev 4888)
@@ -2,8 +2,10 @@
 cl_nogibs 0
 cl_particles_quality 0.5
 gl_picmip 1
+gl_flashblend 0
 r_picmipworld 0
 gl_texture_anisotropy 1
+mod_q3bsp_nolightmaps 0
 r_bloom 0
 r_coronas 1
 r_glsl_deluxemapping 1

Modified: branches/nexuiz-2.0/data/omg.cfg
===================================================================
--- branches/nexuiz-2.0/data/omg.cfg	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/omg.cfg	2008-10-26 15:54:47 UTC (rev 4888)
@@ -1,10 +1,11 @@
 cl_decals 1
 cl_nogibs 0
 cl_particles_quality 0.20
-cl_particles_snow 0
+gl_flashblend 1
 gl_picmip 1337
 r_picmipworld 1
 gl_texture_anisotropy 1
+mod_q3bsp_nolightmaps 1
 r_bloom 0
 r_coronas 1
 r_glsl_deluxemapping 0
@@ -21,6 +22,8 @@
 r_showsurfaces 1
 r_water 0
 r_water_resolutionmultiplier 0.5
+r_drawparticles_drawdistance 250
+r_drawdecals_drawdistance 100
 vid_samples 1
 
 menu_sync

Modified: branches/nexuiz-2.0/data/particles/particlefont.tga
===================================================================
(Binary files differ)

Modified: branches/nexuiz-2.0/data/qcsrc/client/sbar.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/client/sbar.qc	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/qcsrc/client/sbar.qc	2008-10-26 15:54:47 UTC (rev 4888)
@@ -1722,9 +1722,8 @@
 				else
 					Sbar_DrawXNum('81 12 0', x, 3, 24, '0.6 0.7 0.8', 1, 0);
 
-				// AK dont draw ammo for the laser
 				x = getstati(STAT_AMMO);
-				if(activeweapon != 12)
+				if ((stat_items & IT_AMMO) || x != 0)
 				{
 					// (519-3*24) = 447
 					if (stat_items & IT_SHELLS)

Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_playersetup.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_playersetup.c	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_multiplayer_playersetup.c	2008-10-26 15:54:47 UTC (rev 4888)
@@ -117,7 +117,7 @@
 			e.configureNexuizTextSliderValues(e);
 	me.TR(me);
 		me.TDempty(me, 0.2);
-		me.TD(me, 1, 2.8, e = makeNexuizCheckBox(0, "sbar_hudselector", "Use alternate HUD layout"));
+		me.TD(me, 1, 2.8, e = makeNexuizCheckBox(1, "sbar_hudselector", "Use old-style HUD layout"));
 			setDependent(e, "viewsize", 0, 110);
 	me.TR(me);
 		me.TDempty(me, 0.5);

Modified: branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_settings_effects.c
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_settings_effects.c	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/qcsrc/menu/nexuiz/dialog_settings_effects.c	2008-10-26 15:54:47 UTC (rev 4888)
@@ -87,6 +87,8 @@
 		me.TDempty(me, 0.2);
 		me.TD(me, 1, 2.8, e = makeNexuizCheckBox(1, "r_picmipworld", "Reduce model texture quality only"));
 			setDependent(e, "gl_picmip", 0.5, -0.5);
+	me.TR(me);
+		me.TD(me, 1, 3, e = makeNexuizCheckBox(1, "mod_q3bsp_nolightmaps", "Use lightmaps"));
 
 	me.TR(me);
 
@@ -112,8 +114,6 @@
 			e.configureNexuizTextSliderValues(e);
 
 	me.TR(me);
-
-	me.TR(me);
 		me.TD(me, 1, 3, e = makeNexuizCheckBox(0, "r_coronas", "Coronas"));
 	me.TR(me);
 		me.TD(me, 1, 1, e = makeNexuizCheckBox(0, "r_bloom", "Bloom"));
@@ -183,7 +183,7 @@
 			me.TD(me, 1, 3, e = makeNexuizCheckBox(0, "r_showsurfaces", "Show surfaces"));
 
 	me.gotoRC(me, me.rows - 1, 0);
-		me.TD(me, 1, me.columns, makeNexuizCommandButton("Apply immediately", '0 0 0', "sendcvar cl_nogibs; r_restart", COMMANDBUTTON_APPLY));
+		me.TD(me, 1, me.columns, makeNexuizCommandButton("Apply immediately", '0 0 0', "sendcvar cl_nogibs; gl_flashblend_update; r_restart", COMMANDBUTTON_APPLY));
 }
 /*
  * [X] depth first world [X] depth first models (?????)

Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_client.qc	2008-10-26 15:54:47 UTC (rev 4888)
@@ -1271,11 +1271,8 @@
 .entity chatbubbleentity;
 .entity teambubbleentity;
 void ReadyCount();
-//void() ctf_clientdisconnect;
 void ClientDisconnect (void)
 {
-	float save;
-
 	if not(self.flags & FL_CLIENT)
 	{
 		print("Warning: ClientDisconnect without ClientConnect\n");
@@ -1292,38 +1289,30 @@
 	bprint ("^4",self.netname);
 	bprint ("^4 disconnected\n");
 
+	DropAllRunes(self);
+	kh_Key_DropAll(self, TRUE);
+
+	Portal_ClearAll(self);
+
+	if(self.flagcarried)
+		DropFlag(self.flagcarried, world, world);
+
+	// Here, everything has been done that requires this player to be a client.
+
+	self.flags (-) FL_CLIENT;
+
 	if (self.chatbubbleentity)
-	{
 		remove (self.chatbubbleentity);
-		self.chatbubbleentity = world;
-	}
 
 	if (self.teambubbleentity)
-	{
 		remove (self.teambubbleentity);
-		self.teambubbleentity = world;
-	}
 
 	if (self.killindicator)
-	{
 		remove (self.killindicator);
-		self.killindicator = world;
-	}
 
-	DropAllRunes(self);
-	kh_Key_DropAll(self, TRUE);
-
-	Portal_ClearAll(self);
-
-	if(self.flagcarried)
-		DropFlag(self.flagcarried, world, world);
-
 	WaypointSprite_PlayerGone();
 
-	save = self.flags;
-	self.flags = self.flags - (self.flags & FL_CLIENT);
 	bot_relinkplayerlist();
-	self.flags = save;
 
 	// remove laserdot
 	if(self.weaponentity)
@@ -1335,11 +1324,6 @@
 		Spawnqueue_Unmark(self);
 		Spawnqueue_Remove(self);
 	}
-	/*if(g_ctf)
-	{
-		ctf_clientdisconnect();
-	}
-	*/
 
 	PlayerScore_Detach(self);
 
@@ -1348,11 +1332,11 @@
 
 	ClearPlayerSounds();
 
-	// free cvars
-	GetCvars(-1);
 	self.playerid = 0;
-
 	ReadyCount();
+
+	// free cvars
+	GetCvars(-1);
 }
 
 .float BUTTON_CHAT;

Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_player.qc	2008-10-26 15:54:47 UTC (rev 4888)
@@ -273,6 +273,7 @@
 	else if (take > 10)
 		sound (self, CHAN_PROJECTILE, "misc/bodyimpact1.wav", VOL_BASE, ATTN_NORM);
 
+	if not(IS_INDEPENDENT_PLAYER(self))
 	if(sv_gentle < 1) {	
 		if (take > 50)
 			TossGib (world, "models/gibs/chunk.mdl", hitloc, force * -0.1,1);
@@ -307,8 +308,16 @@
 
 
 		// make a meaty mess
-		TossGib (self, "models/gibs/eye.md3", self.origin + self.view_ofs, self.velocity + randomvec() * 150,0);
+		if(IS_INDEPENDENT_PLAYER(self))
+		{
+			TossGib (self, "models/gibs/eye.md3", self.origin + self.view_ofs, self.velocity + randomvec() * 150,0);
+			MAKE_INDEPENDENT_PLAYER(self); // undo SOLID_CORPSE
+			self.takedamage = DAMAGE_NO; // can't damage this gib, to prevent better jumps from it
+		}
+		else
+			TossGib (self, "models/gibs/eye.md3", self.origin + self.view_ofs, self.velocity + randomvec() * 150,0);
 		
+		if not(IS_INDEPENDENT_PLAYER(self))
 		if(sv_gentle < 1) {
 			te_bloodshower (self.origin + self.mins, self.origin + self.maxs, 1200 * multiplier, 1000);
 			TossGib (world, "models/gibs/bloodyskull.md3", self.origin + self.view_ofs, self.velocity,0);

Modified: branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/qcsrc/server/cl_weaponsystem.qc	2008-10-26 15:54:47 UTC (rev 4888)
@@ -33,8 +33,8 @@
 	float nudge = 1; // added to traceline target and subtracted from result
 	local vector trueaimpoint;
 	local float oldsolid;
-	oldsolid = self.solid;
-	self.solid = SOLID_BBOX; // make all shot test traces bypass playerclip
+	oldsolid = self.dphitcontentsmask;
+	self.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE;
 	traceline(self.origin + self.view_ofs, self.origin + self.view_ofs + v_forward * MAX_SHOT_DISTANCE, MOVE_NOMONSTERS, self);
 	trueaimpoint = trace_endpos;
 
@@ -162,7 +162,7 @@
 	}
 #endif
 
-	self.solid = oldsolid; // restore solid type (generally SOLID_SLIDEBOX)
+	self.dphitcontentsmask = oldsolid; // restore solid type (generally SOLID_SLIDEBOX)
 
 	if (!g_norecoil)
 		self.punchangle_x = recoil * -1;

Modified: branches/nexuiz-2.0/data/qcsrc/server/g_subs.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_subs.qc	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_subs.qc	2008-10-26 15:54:47 UTC (rev 4888)
@@ -242,8 +242,8 @@
 		lag = 0; // only antilag for clients
 
 	// change shooter to SOLID_BBOX so the shot can hit corpses
-	oldsolid = source.solid;
-	source.solid = SOLID_BBOX;
+	oldsolid = source.dphitcontentsmask;
+	source.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE;
 
 	if (lag)
 	{
@@ -271,7 +271,7 @@
 	}
 
 	// restore shooter solid type
-	source.solid = oldsolid;
+	source.dphitcontentsmask = oldsolid;
 }
 void traceline_antilag (entity source, vector v1, vector v2, float nomonst, entity forent, float lag)
 {

Modified: branches/nexuiz-2.0/data/qcsrc/server/g_triggers.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_triggers.qc	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_triggers.qc	2008-10-26 15:54:47 UTC (rev 4888)
@@ -540,7 +540,7 @@
 	{
 		self.modelindex = 4.2;
 		self.origin += self.mins;
-		self.maxs -= self.mins;
+		self.maxs = self.maxs - self.mins;
 	}
 	self.model = "net_entity";
 	if(!self.cnt)

Modified: branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/qcsrc/server/miscfunctions.qc	2008-10-26 15:54:47 UTC (rev 4888)
@@ -481,6 +481,7 @@
 	{
 		if(self.field)
 			strunzone(self.field);
+		self.field = string_null;
 	}
 	else if(f > 0)
 	{
@@ -787,7 +788,7 @@
 			start_ammo_nails = cvar("g_pickup_nails_max");
 			start_ammo_rockets = cvar("g_pickup_rockets_max");
 			start_ammo_cells = cvar("g_pickup_cells_max");
-			start_items |= IT_UNLIMITED_WEAPON_AMMO;
+			start_items |= IT_UNLIMITED_AMMO;
 		}
 
 		for(i = WEP_FIRST; i <= WEP_LAST; ++i)

Copied: branches/nexuiz-2.0/data/qcsrc/server/pathlib.qc (from rev 4887, trunk/data/qcsrc/server/pathlib.qc)
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/pathlib.qc	                        (rev 0)
+++ branches/nexuiz-2.0/data/qcsrc/server/pathlib.qc	2008-10-26 15:54:47 UTC (rev 4888)
@@ -0,0 +1,308 @@
+.float pathgroup;
+
+.entity path_next;
+.entity path_prev;
+// .entity path_start;
+
+.float(vector start,vector end) path_validate;
+
+float pathlib_stdproc_path_validate(vector start,vector end)
+{
+    tracebox(start, self.mins, self.maxs, end, MOVE_NOMONSTERS, self);
+
+    if(vlen(trace_endpos - end) < 32)
+        return 1;
+
+    return 0;
+}
+
+void pathlib_point_use()
+{
+    remove(self);
+}
+
+entity pathlib_createpoint(entity parent,entity next,entity first,vector where)
+{
+    entity point;
+    point = spawn();
+    point.classname = "path_node";
+
+    //bprint("Create point\n");
+
+    traceline(where + '0 0 32' ,where - '0 0 10000',MOVE_NOMONSTERS,self);
+    where = trace_endpos + '0 0 32';
+
+    setorigin(point,where);
+
+    if(first)
+        point.owner = parent;
+    else
+    {
+        point.classname = "path_master";
+        point.owner = point;
+    }
+
+    if(parent)
+        point.path_prev = parent;
+
+    if(next)
+        point.path_next = next;
+    else
+        point.classname = "path_end";
+
+    return point;
+}
+
+#define pathib_maxdivide 128
+
+vector pathlib_findsubpath(vector start,vector vcrash,vector end,float maxsize)
+{
+    float x,y;//,z;
+    float step;
+    float clear;
+    float dist;
+    float pathlength;
+    float pathlength_best;
+    vector bestpoint;
+    vector point;
+    //string s;
+
+    pathlength_best = 1000000;
+
+    step = vlen(self.maxs - self.mins) * 1.5;
+    //s = ftos(step);
+
+    //bprint("pathlib_findsubpath: step=",s);
+    //s = ftos(maxsize);
+    //bprint(" size=",s,"\n");
+
+    //for(z = -maxsize; z < maxsize; z += step)
+    for(y = -maxsize; y < maxsize; y += step)
+    for(x = -maxsize; x < maxsize; x += step)
+    {
+
+        point = vcrash;
+        point_x = point_x + x;
+        point_y = point_y + y;
+
+        traceline(point + '0 0 32' ,point - '0 0 10000',MOVE_NOMONSTERS,self);
+        point = trace_endpos + '0 0 32';
+
+        clear = self.path_validate(start,point);
+
+        if(clear)
+        {
+            //bprint("Good point\n");
+
+            dist = vlen(start - point);
+            if(dist > step)
+            {
+                pathlength = dist + vlen(point - end);
+                if(pathlength < pathlength_best)
+                {
+                    bestpoint = point;
+                    pathlength_best = pathlength;
+                }
+            }
+        }
+
+    }
+
+    if(pathlength_best != 1000000)
+        return bestpoint;
+
+    return vcrash;
+}
+
+float pathlib_path(entity start,entity end)
+{
+    vector vcrash;
+    vector subpath_point;
+    entity subpoint;
+    //bprint("pathlib_path...\n");
+
+    // Fail.
+    if(start.cnt > pathib_maxdivide)
+        return 0;
+
+    if(self.path_validate(start.origin,end.origin))
+        return 1;
+
+    vcrash = trace_endpos;
+
+    subpath_point = pathlib_findsubpath(start.origin,vcrash,end.origin,500);
+
+    if(subpath_point == vcrash)
+        return 0; // Fail.
+
+    subpoint = pathlib_createpoint(start,end,start.owner,subpath_point);
+    subpoint.cnt = start.cnt +1;
+    start.path_next = subpoint;
+    end.path_prev = subpoint;
+    if(self.path_validate(start.origin,end.origin))
+        return 1;
+
+    return pathlib_path(subpoint,end);
+
+    /*
+    while(!clear)
+    {
+        ++c;
+
+        if(c > pathib_maxdivide)
+            return 0;
+
+        subpath_point = pathlib_findsubpath(subpoint2.origin,vcrash,end.origin,2000);
+        if(subpath_point == vcrash)
+            return 0; // Fail.
+
+        subpoint = pathlib_createpoint(subpoint2,end,start.owner,subpath_point);
+        subpoint.cnt = subpoint2.cnt +1;
+        subpoint2.path_next = subpoint;
+
+        clear = self.path_validate(subpoint2.origin,end.origin);
+        vcrash = trace_endpos;
+        if(clear)
+            return 1;
+        subpoint2 = subpoint;
+
+        // Fail.
+
+    }*
+
+    */
+
+
+    return 1;
+}
+
+void pathlib_path_optimize(entity start,entity end)
+{
+    entity point,point_tmp;
+    point = start.path_next;
+    float c;
+
+    while(point != end)
+    {
+        c++;
+        if(c > 200)
+        {
+            //bprint("pathlib_path_optimize runaway!\n");
+            return;
+        }
+        point_tmp = point;
+        point = point.path_next;
+        if(self.path_validate(point_tmp.path_prev.origin,point_tmp.path_next.origin))
+        {
+
+            point_tmp.path_next.path_prev = point_tmp.path_prev;
+            point_tmp.path_prev.path_next = point_tmp.path_next;
+            remove(point_tmp);
+        }
+    }
+}
+
+void pathlib_deletepath(entity start)
+{
+    entity e;
+
+    e = findentity(start, owner, start);
+    while(e)
+    {
+        remove(e);
+        e = findentity(start, owner, start);
+    }
+}
+
+void pathlib_showpath(entity start)
+{
+    entity e;
+    e = start;
+    while(e.path_next)
+    {
+        te_lightning1(e,e.origin,e.path_next.origin);
+        e = e.path_next;
+    }
+}
+
+entity dynpath_make(vector from, vector to)
+{
+    entity e_start,e_end;
+
+    //float t;
+    //t = time;
+
+    if(!self.path_validate)
+        self.path_validate = pathlib_stdproc_path_validate;
+
+    e_start = pathlib_createpoint(world,world,world,from);
+    e_start.owner = e_start;
+    e_end = pathlib_createpoint(e_start,world,e_start,to);
+    e_start.path_next = e_end;
+    e_start.cnt = 0;
+
+    if(!pathlib_path(e_start,e_end))
+    {
+        //bprint("Crap.\n");
+        pathlib_deletepath(e_start);
+        remove(e_start);
+        return world;
+    }
+
+    pathlib_path_optimize(e_start,e_end);
+
+    //string s;
+    //t = time - t;
+    //s = ftos(t);
+    //bprint("^2Path created in ", s, " seconds\n");
+
+    return e_start;
+
+}
+
+void pathlib_test_think()
+{
+    //bprint("pathlib_test tink...\n");
+    pathlib_showpath(self.enemy);
+    self.nextthink = time + 0.5;
+}
+void pathlib_test_dinit()
+{
+    entity path;
+    entity end;
+    // bprint("pathlib_test spawning...\n");
+
+    if(self.target == "")
+    {
+        bprint("^1 ==== ERROR: pathlib_test with no target. ====\n");
+        remove(self);
+        return;
+    }
+
+    end = find(world,targetname,self.target);
+    if(!end)
+    {
+        bprint("^1 ==== ERROR: pathlib_test with no valid target. ====\n");
+        remove(self);
+        return;
+    }
+
+    setsize(self,'-70 -70 0','70 70 70');
+    path = dynpath_make(self.origin,end.origin);
+    if(!path)
+    {
+        bprint("^1 ==== ERROR: pathlib_test pathing fail ====\n");
+        remove(self);
+        return;
+    }
+
+    self.enemy = path;
+    self.think = pathlib_test_think;
+    self.nextthink = time + 0.5;
+
+}
+void spawnfunc_pathlib_test()
+{
+    self.think = pathlib_test_dinit;
+    self.nextthink = time + 2;
+}

Modified: branches/nexuiz-2.0/data/qcsrc/server/portals.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/portals.qc	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/qcsrc/server/portals.qc	2008-10-26 15:54:47 UTC (rev 4888)
@@ -226,12 +226,40 @@
 	return 1;
 }
 
+float Portal_WillHitPlane(vector eorg, vector emins, vector emaxs, vector evel, vector porg, vector pnorm, float psize)
+{
+	float dist, distpersec, delta;
+	vector v;
+
+	dist = (eorg - porg) * pnorm;
+	dist += min(emins_x * pnorm_x, emaxs_x * pnorm_x);
+	dist += min(emins_y * pnorm_y, emaxs_y * pnorm_y);
+	dist += min(emins_z * pnorm_z, emaxs_z * pnorm_z);
+	if(dist < -1) // other side?
+		return 0;
+	distpersec = evel * pnorm;
+	if(distpersec >= 0) // going away from the portal?
+		return 0;
+	delta = dist / distpersec;
+	v = eorg - evel * delta - porg;
+	v = v - pnorm * (pnorm * v);
+	return vlen(v) < psize;
+}
+
 void Portal_Touch()
 {
+	vector g;
+
 	// portal is being removed?
 	if(self.solid != SOLID_TRIGGER)
 		return; // possibly engine bug
+
+	if(other.classname == "player")
+		return; // handled by think
 	
+	if(other.classname == "grapplinghook")
+		return; // handled by think
+	
 	if(!self.enemy)
 		error("Portal_Touch called for a broken portal\n");
 
@@ -239,9 +267,6 @@
 		return; // only handle TouchAreaGrid ones (only these can teleport)
 		// for some unknown reason, this also gets collisions from SV_Impact sometimes
 
-	if(other.classname == "grapplinghook")
-		return;
-
 	if(other.classname == "porto")
 	{
 		if(other.portal_id == self.portal_id)
@@ -262,7 +287,8 @@
 			if(IS_INDEPENDENT_PLAYER(other.owner) || IS_INDEPENDENT_PLAYER(self.owner))
 				return; // cannot go through someone else's portal
 	fixedmakevectors(self.angles);
-	if((other.origin - self.origin) * v_forward < 0)
+	g = frametime * '0 0 -1' * cvar("sv_gravity");
+	if(!Portal_WillHitPlane(other.origin, other.mins, other.maxs, other.velocity + g, self.origin, v_forward, self.maxs_x))
 		return;
 
 	/*
@@ -420,9 +446,22 @@
 		Portal_Remove(self, 1);
 }
 
+void Portal_Think_TryTeleportPlayer(entity e, vector g)
+{
+	if(!Portal_WillHitPlane(e.origin, e.mins, e.maxs, e.velocity + g, self.origin, v_forward, self.maxs_x))
+		return;
+
+	// if e would hit the portal in a frame...
+	// already teleport him
+	tracebox(e.origin, e.mins, e.maxs, e.origin + e.velocity * 2 * frametime, MOVE_NORMAL, e);
+	if(trace_ent == self)
+		Portal_TeleportPlayer(self, e);
+}
+
 void Portal_Think()
 {
 	entity e, o;
+	vector g;
 
 	// portal is being removed?
 	if(self.solid != SOLID_TRIGGER)
@@ -435,24 +474,21 @@
 	self.solid = SOLID_BBOX;
 	self.owner = world;
 
+	g = frametime * '0 0 -1' * cvar("sv_gravity");
+
 	fixedmakevectors(self.angles);
 
 	FOR_EACH_PLAYER(e)
 	{
-		if(time < self.portal_activatetime)
-			if(e == o)
-				continue;
 		if(e != o)
 			if(IS_INDEPENDENT_PLAYER(e) || IS_INDEPENDENT_PLAYER(o))
 				continue; // cannot go through someone else's portal
-		if((e.origin - self.origin) * v_forward < 0) // wrong side of the plane? no teleport
-			continue;
 
-		// if e would hit the portal in a frame...
-		// already teleport him
-		tracebox(e.origin, e.mins, e.maxs, e.origin + e.velocity * 2 * frametime, MOVE_NORMAL, e);
-		if(trace_ent == self)
-			Portal_TeleportPlayer(self, e);
+		if(e != o || time >= self.portal_activatetime)
+			Portal_Think_TryTeleportPlayer(e, g);
+
+		if(e.hook)
+			Portal_Think_TryTeleportPlayer(e.hook, g);
 	}
 	self.solid = SOLID_TRIGGER;
 	self.owner = o;
@@ -599,7 +635,7 @@
 	portal.angles = ang;
 	portal.think = Portal_Think;
 	portal.nextthink = 0;
-	portal.portal_activatetime = time + 1.1;
+	portal.portal_activatetime = time + 0.1;
 	portal.event_damage = Portal_Damage;
 	portal.health = 200;
 	portal.fade_time = time + cvar("g_balance_portal_lifetime");

Modified: branches/nexuiz-2.0/data/qcsrc/server/progs.src
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/progs.src	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/qcsrc/server/progs.src	2008-10-26 15:54:47 UTC (rev 4888)
@@ -39,6 +39,7 @@
 
 waypointsprites.qc
 
+
 // general bot utility functions and management
 bots.qc
 
@@ -46,6 +47,9 @@
 havocbot_roles.qc
 havocbot.qc
 
+// tZorks pathlib
+pathlib.qc
+
 g_subs.qc
 
 runematch.qc

Modified: branches/nexuiz-2.0/data/qcsrc/server/race.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/race.qc	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/qcsrc/server/race.qc	2008-10-26 15:54:47 UTC (rev 4888)
@@ -80,7 +80,8 @@
 	float snew, l;
 	entity p;
 
-	t = floor(0.5 + 10 * t); // make integer
+	t = floor(0.4 + 10 * t); // make integer
+	// adding just 0.4 so it rounds down in the .5 case (matching the timer display)
 
 	if(tvalid)
 	if(cp == 0) // finish line
@@ -139,6 +140,7 @@
 			if(recordholder == e.netname)
 				recordholder = "";
 
+			if(t != 0)
 			if(t < recordtime || recordtime == 0)
 			{
 				race_checkpoint_records[cp] = t;

Modified: branches/nexuiz-2.0/data/qcsrc/server/t_plats.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/t_plats.qc	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/qcsrc/server/t_plats.qc	2008-10-26 15:54:47 UTC (rev 4888)
@@ -700,7 +700,11 @@
 	self.state = STATE_UP;
 	SUB_CalcMove (self.pos2, self.speed, door_hit_top);
 
+	string oldmessage;
+	oldmessage = self.message;
+	self.message = "";
 	SUB_UseTargets();
+	self.message = oldmessage;
 };
 
 
@@ -716,13 +720,10 @@
 {
 	local entity 	oself;
 	local entity	starte;
-	string oldmessage;
 
 	if (self.owner != self)
 		objerror ("door_fire: self.owner != self");
 
-	oldmessage = self.message;
-	self.message = ""; // no more message
 	oself = self;
 
 	if (self.spawnflags & DOOR_TOGGLE)
@@ -748,8 +749,6 @@
 		self = self.enemy;
 	} while ( (self != starte) && (self != world) );
 	self = oself;
-
-	self.message = oldmessage;
 };
 
 
@@ -817,7 +816,7 @@
 
 	self.owner.attack_finished_single = time + 2;
 
-	if (!self.dmg && self.owner.message != "")
+	if (!(self.owner.dmg) && (self.owner.message != ""))
 	{
 		if (other.flags & FL_CLIENT)
 			centerprint (other, self.owner.message);
@@ -1024,8 +1023,6 @@
 		self.wait = 3;
 	if (!self.lip)
 		self.lip = 8;
-	if (!self.dmg)
-		self.dmg = 2;
 
 	self.pos1 = self.origin;
 	self.pos2 = self.pos1 + self.movedir*(fabs(self.movedir*self.size) - self.lip);

Modified: branches/nexuiz-2.0/data/qcsrc/server/t_teleporters.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/t_teleporters.qc	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/qcsrc/server/t_teleporters.qc	2008-10-26 15:54:47 UTC (rev 4888)
@@ -25,8 +25,6 @@
 
 	if(player.classname == "player")
 	{
-		RemoveGrapplingHook(player);
-
 		// Kill anyone else in the teleporter box (NO MORE TDEATH)
 		if(player.takedamage && player.deadflag == DEAD_NO && !g_race)
 		{
@@ -104,6 +102,10 @@
 	EXACTTRIGGER_TOUCH;
 
 	makevectors(self.enemy.mangle);
+
+	if(other.classname == "player")
+		RemoveGrapplingHook(other);
+
 	TeleportPlayer(self, other, self.enemy.origin + '0 0 1' * (1 - other.mins_z - 24), self.enemy.mangle, v_forward * vlen(other.velocity), '0 0 0', '0 0 0');
 
 	if(self.enemy.target)

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_hlac.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_hlac.qc	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_hlac.qc	2008-10-26 15:54:47 UTC (rev 4888)
@@ -163,7 +163,7 @@
         self.ammo_cells = self.ammo_cells - cvar("g_balance_hlac_secondary_ammo");
     }
 
-    for(i=0;i<6;++i)
+    for(i=cvar("g_balance_hlac_secondary_shots");i>0;--i)
         W_HLAC_Attack2f();
 
 	if (!g_norecoil)

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_rocketlauncher.qc	2008-10-26 15:54:47 UTC (rev 4888)
@@ -388,8 +388,11 @@
 				rockfound = 0;
 				for(rock = world; (rock = find(rock, classname, "rocket")); ) if(rock.owner == self)
 				{
-					rock.rl_detonate_later = TRUE;
-					rockfound = 1;
+					if(!rock.rl_detonate_later)
+					{
+						rock.rl_detonate_later = TRUE;
+						rockfound = 1;
+					}
 				}
 				if(rockfound)
 					sound (self, CHAN_WEAPON2, "weapons/rocket_det.wav", 0.5 * VOL_BASE, ATTN_NORM);
@@ -422,20 +425,20 @@
 				W_Rocket_Attack();
 				weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_rocketlauncher_animtime"), w_ready);
 			}
-			if (self.BUTTON_ATCK2 && self.rl_release)
+			if (self.BUTTON_ATCK2)
 			{
 				rockfound = 0;
 				for(rock = world; (rock = find(rock, classname, "rocket")); ) if(rock.owner == self)
 				{
-					rock.rl_detonate_later = TRUE;
-					rockfound = 1;
+					if(!rock.rl_detonate_later)
+					{
+						rock.rl_detonate_later = TRUE;
+						rockfound = 1;
+					}
 				}
 				if(rockfound)
 					sound (self, CHAN_WEAPON2, "weapons/rocket_det.wav", 0.5 * VOL_BASE, ATTN_NORM);
-				self.rl_release = 0;
 			}
-			if (!self.BUTTON_ATCK2)
-				self.rl_release = 1;
 		}
 	}
 	else if (req == WR_PRECACHE)

Modified: branches/nexuiz-2.0/data/qcsrc/server/w_seeker.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/w_seeker.qc	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/qcsrc/server/w_seeker.qc	2008-10-26 15:54:47 UTC (rev 4888)
@@ -230,21 +230,7 @@
     oldenemy = self.enemy;
     self.enemy = oldself.enemy;
 
-    switch(oldself.cnt)
-    {
-        case 0:
-            Seeker_Fire_Missile('37.5 17 -22');
-            break;
-        case 1:
-            Seeker_Fire_Missile('37.5 9.5 -22');
-            break;
-        case 2:
-            Seeker_Fire_Missile('40 17 -29');
-            break;
-        case 3:
-            Seeker_Fire_Missile('40 09.5 -29');
-            break;
-    }
+	Seeker_Fire_Missile('56 13 -15' + 7 * randomvec());
 
 
 
@@ -272,11 +258,11 @@
 
     b = crandom();
     if (b<-0.7)
-        sound (self, CHAN_PROJECTILE, "weapons/hagexp1.ogg", 1, ATTN_NORM);
+        sound (self, CHAN_PROJECTILE, "weapons/hagexp1.wav", 1, ATTN_NORM);
     else if (b<0.4)
-        sound (self, CHAN_PROJECTILE, "weapons/hagexp2.ogg", 1, ATTN_NORM);
+        sound (self, CHAN_PROJECTILE, "weapons/hagexp2.wav", 1, ATTN_NORM);
     else if (b<1)
-        sound (self, CHAN_PROJECTILE, "weapons/hagexp3.ogg", 1, ATTN_NORM);
+        sound (self, CHAN_PROJECTILE, "weapons/hagexp3.wav", 1, ATTN_NORM);
 
     remove (self);
 }
@@ -379,11 +365,11 @@
 
     b = crandom();
     if (b<-0.7)
-        sound (self, CHAN_PROJECTILE, "weapons/hagexp1.ogg", 1, ATTN_NORM);
+        sound (self, CHAN_PROJECTILE, "weapons/hagexp1.wav", 1, ATTN_NORM);
     else if (b<0.4)
-        sound (self, CHAN_PROJECTILE, "weapons/hagexp2.ogg", 1, ATTN_NORM);
+        sound (self, CHAN_PROJECTILE, "weapons/hagexp2.wav", 1, ATTN_NORM);
     else if (b<1)
-        sound (self, CHAN_PROJECTILE, "weapons/hagexp3.ogg", 1, ATTN_NORM);
+        sound (self, CHAN_PROJECTILE, "weapons/hagexp3.wav", 1, ATTN_NORM);
 
     self.event_damage = SUB_Null;
 
@@ -403,27 +389,11 @@
 void Seeker_Fire_Flac()
 {
 	local entity missile;
-    vector f_org;
 
 	if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
 		self.ammo_rockets = self.ammo_rockets - cvar("g_balance_seeker_flac_ammo");
 
-    switch(floor(random() * 3))
-    {
-        case 0:
-            f_org = '37.5 17 -22';
-            break;
-        case 1:
-            f_org = '37.5 9.5 -22';
-            break;
-        case 2:
-            f_org = '40 17 -29';
-            break;
-        case 3:
-            f_org = '40 9.5 -29';
-            break;
-    }
-    W_SetupShot (self, f_org, FALSE, 2, "weapons/hagar_fire.wav");
+    W_SetupShot (self, '56 13 -15', FALSE, 2, "weapons/hagar_fire.wav");
 
 	pointparticles(particleeffectnum("hagar_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
 
@@ -501,7 +471,7 @@
     else if (req == WR_CHECKAMMO1)
         return self.ammo_rockets >= cvar("g_balance_seeker_tag_ammo");
     else if (req == WR_CHECKAMMO2)
-        return self.ammo_rockets >= cvar("g_balance_seeker_secondary_ammo");
+        return self.ammo_rockets >= cvar("g_balance_seeker_flac_ammo");
     else if (req == WR_SUICIDEMESSAGE)
         w_deathtypestring = "played with tiny rockets";
     else if (req == WR_KILLMESSAGE)

Modified: branches/nexuiz-2.0/data/ultimate.cfg
===================================================================
--- branches/nexuiz-2.0/data/ultimate.cfg	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/ultimate.cfg	2008-10-26 15:54:47 UTC (rev 4888)
@@ -2,8 +2,10 @@
 cl_nogibs 0
 cl_particles_quality 1
 gl_picmip 0
+gl_flashblend 0
 r_picmipworld 0
 gl_texture_anisotropy 16
+mod_q3bsp_nolightmaps 0
 r_bloom 1
 r_coronas 1
 r_glsl_deluxemapping 1

Modified: branches/nexuiz-2.0/data/ultra.cfg
===================================================================
--- branches/nexuiz-2.0/data/ultra.cfg	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/ultra.cfg	2008-10-26 15:54:47 UTC (rev 4888)
@@ -2,8 +2,10 @@
 cl_nogibs 0
 cl_particles_quality 1
 gl_picmip 0
+gl_flashblend 0
 r_picmipworld 0
 gl_texture_anisotropy 16
+mod_q3bsp_nolightmaps 0
 r_bloom 1
 r_coronas 1
 r_glsl_deluxemapping 1

Modified: branches/nexuiz-2.0/data/weapons.cfg
===================================================================
--- branches/nexuiz-2.0/data/weapons.cfg	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/data/weapons.cfg	2008-10-26 15:54:47 UTC (rev 4888)
@@ -274,6 +274,7 @@
 set g_balance_hlac_secondary_refire 1
 set g_balance_hlac_secondary_animtime 0.3
 set g_balance_hlac_secondary_ammo 10
+set g_balance_hlac_secondary_shots 6
 
 
 // TAG Seeker
@@ -318,7 +319,7 @@
 set g_balance_seeker_flac_lifetime      0.1
 set g_balance_seeker_flac_lifetime_rand 0.05
 set g_balance_seeker_flac_speed         3000
-set g_balance_seeker_flac_spread	    0.25
+set g_balance_seeker_flac_spread	    0.5
 
 set g_balance_seeker_flac_damage       15
 set g_balance_seeker_flac_edgedamage   10

Modified: branches/nexuiz-2.0/misc/brightspot.c
===================================================================
--- branches/nexuiz-2.0/misc/brightspot.c	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/misc/brightspot.c	2008-10-26 15:54:47 UTC (rev 4888)
@@ -145,8 +145,9 @@
 	FILE *f;
 	int i, j, k;
 	unsigned char picture[6][512][512];
+	unsigned char max;
 	double brightvec[3];
-	double pitch, yaw;
+	double pitch, yaw, l;
 
 	if(argc != 2)
 	{
@@ -164,18 +165,27 @@
 	fclose(f);
 
 	brightvec[0] = brightvec[1] = brightvec[2] = 0;
+	max = 0;
 	for(i = 0; i < 6; ++i)
 		for(j = 0; j < 512; ++j)
 			for(k = 0; k < 512; ++k)
+				if(picture[i][j][k] > max)
+					max = picture[i][j][k];
+	for(i = 0; i < 6; ++i)
+		for(j = 0; j < 512; ++j)
+			for(k = 0; k < 512; ++k)
 			{
 				double vec[3], f;
 				MapCoord(i, j, k, vec);
 				f = pow(vec[0]*vec[0] + vec[1]*vec[1] + vec[2]*vec[2], -1.5); // I know what I am doing.
-				f *= exp(10 * (picture[i][j][k] - 255));
+				f *= exp(10 * (picture[i][j][k] - max));
 				brightvec[0] += f * vec[0];
 				brightvec[1] += f * vec[1];
 				brightvec[2] += f * vec[2];
 			}
+
+	l = sqrt(brightvec[0]*brightvec[0] + brightvec[1]*brightvec[1] + brightvec[2]*brightvec[2]);
+	fprintf(stderr, "vec = %f %f %f\n", brightvec[0] / l, brightvec[1] / l, brightvec[2] / l);
 	
 	pitch = atan2(brightvec[2], sqrt(brightvec[0]*brightvec[0] + brightvec[1]*brightvec[1]));
 	yaw = atan2(brightvec[1], brightvec[0]);

Modified: branches/nexuiz-2.0/misc/makebuild.sh
===================================================================
--- branches/nexuiz-2.0/misc/makebuild.sh	2008-10-26 15:47:36 UTC (rev 4887)
+++ branches/nexuiz-2.0/misc/makebuild.sh	2008-10-26 15:54:47 UTC (rev 4888)
@@ -111,9 +111,9 @@
 	buildon eos.thruhere.net                        nexuiz-linux-686    fteqcc-linux-686    /tmp/Darkplaces.build 'CC="gcc -g" DP_MODPLUG_STATIC_LIBDIR=/home/divverent/modplug-i386/lib' strip
 	buildon alientrap.org                         nexuiz-linux-x86_64 fteqcc-linux-x86_64 /tmp/Darkplaces.build 'CC="gcc -g -Wl,--hash-style=sysv" DP_MODPLUG_STATIC_LIBDIR=/home/divverent/modplug-x86_64/lib' strip
 	buildon alientrap.org                         nexuiz              fteqcc.exe          /tmp/Darkplaces.build 'DP_MAKE_TARGET=mingw CC="/chroot/debian-etch/usr/bin/i586-mingw32msvc-gcc -g -DSUPPORTDIRECTX -I/home/divverent/dxheaders" WINDRES=/chroot/debian-etch/usr/bin/i586-mingw32msvc-windres SDL_CONFIG=/home/divverent/sdl-win32/SDL-1.2.13/bin/sdl-config' /chroot/debian-etch/usr/bin/i586-mingw32msvc-strip
-	buildon mac.alientrap.org                     nexuiz-osx          fteqcc-osx          /tmp/Darkplaces.build 'CC="gcc -g -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk"' strip
-		mv "$tmpdir/nexuiz-osx-agl"     "$tmpdir/Nexuiz.app/Contents/MacOS/nexuiz-osx-agl-bin"
-		mv "$tmpdir/nexuiz-osx-sdl"     "$tmpdir/Nexuiz-SDL.app/Contents/MacOS/nexuiz-osx-sdl-bin"
+# OS X SUPPORT DISCONTINUED	buildon mac.alientrap.org                     nexuiz-osx          fteqcc-osx          /tmp/Darkplaces.build 'CC="gcc -g -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk"' strip
+# OS X SUPPORT DISCONTINUED		mv "$tmpdir/nexuiz-osx-agl"     "$tmpdir/Nexuiz.app/Contents/MacOS/nexuiz-osx-agl-bin"
+# OS X SUPPORT DISCONTINUED		mv "$tmpdir/nexuiz-osx-sdl"     "$tmpdir/Nexuiz-SDL.app/Contents/MacOS/nexuiz-osx-sdl-bin"
 }
 
 # avoid dupes
@@ -155,7 +155,7 @@
 fi
 
 # prepare directory structure
-cp -r "$osxapps"/*.app "$tmpdir"
+# OS X SUPPORT DISCONTINUED cp -r "$osxapps"/*.app "$tmpdir"
 mkdir "$tmpdir/debuginfo"
 mkdir "$tmpdir/fteqcc"
 

Copied: branches/nexuiz-2.0/misc/spherefunc2skybox.c (from rev 4887, trunk/misc/spherefunc2skybox.c)
===================================================================
--- branches/nexuiz-2.0/misc/spherefunc2skybox.c	                        (rev 0)
+++ branches/nexuiz-2.0/misc/spherefunc2skybox.c	2008-10-26 15:54:47 UTC (rev 4888)
@@ -0,0 +1,269 @@
+#include <stdio.h>
+#include <err.h>
+#include <stdint.h>
+#include <math.h>
+#include <string.h>
+#include <stdlib.h>
+
+double rnd()
+{
+	return rand() / (RAND_MAX + 1.0);
+}
+
+typedef void (*mapfunc_t) (double x_in, double y_in, double *x_out, double *y_out, double *z_out);
+typedef void (*colorfunc_t) (double x, double y, double z, double *r, double *g, double *b);
+
+void color_test(double x, double y, double z, double *r, double *g, double *b)
+{
+	// put in a nice function here
+	*r = 0.5 + 0.5 * x;
+	*g = 0.5 + 0.5 * y;
+	*b = 0.5 + 0.5 * z;
+}
+
+double mandelbrot_iter(double zx, double zy, double cx, double cy, int maxiter)
+{
+	double tmp;
+	int i;
+
+	double f, fprev;
+
+	f = 0;
+
+	for(i = 1; i < maxiter; ++i)
+	{
+		tmp = zx;
+		zx = zx * zx - zy * zy + cx;
+		zy = 2 * tmp * zy + cy;
+		fprev = f;
+		f = zx * zx + zy * zy;
+		if(f > 4)
+			break;
+	}
+
+	if(i >= maxiter)
+		return i;
+	else
+	{
+		// f: the greater, the more in 0 direction
+		//    the smaller, the more in 1 direction
+		// fprev:
+		//    the greater, the more in 0 direction
+		return i + 1 / (f - 4 + 1); // f = 16: + 0, f = 4: + 1
+	}
+	// i.e. 0 for i=1, 1 for i=maxiter
+}
+
+double mandelbrot_range(double zx, double zy, double cx, double cy, int maxiter, double offset)
+{
+	double i = mandelbrot_iter(zx, zy, cx, cy, maxiter);
+	// map linearily 1/(offset + iter) so that:
+	//   0       -> 0
+	//   maxiter -> 1
+	// i.e. solve:
+	//   f(iter) = A/(offset + iter) + B
+	// that is:
+	//   f(0)       = A/offset + B = 0
+	//   f(maxiter) = A/(offset + maxiter) + B = 1
+	// -->
+	//   1/(1/(offset + maxiter) - 1/offset) = A
+	//   B =          1 + offset / maxiter
+	//   A = -offset (1 + offset / maxiter)
+	// -->
+	//   f(iter) = -offset (1 + offset / maxiter) / (offset + iter) + 1 + offset / maxiter
+	//           = -offset (1 + offset / maxiter) / (offset + iter) + 1 + offset / maxiter
+	//           = iter (offset + maxiter)   /   maxiter (offset + iter)
+	return (i * (offset + maxiter)) / ((i + offset) * maxiter);
+}
+
+double color_mandelbrot_parms[13];
+double mandelbrot_miniter = -1;
+#define MAXITER 8192
+
+double iter_mandelbrot_raw(double x, double y, double z)
+{
+	z -= color_mandelbrot_parms[6];
+	x /= fabs(z);
+	y /= fabs(z);
+
+	if(z > 0)
+		return mandelbrot_range(color_mandelbrot_parms[4], color_mandelbrot_parms[5], color_mandelbrot_parms[0] + x * color_mandelbrot_parms[2], color_mandelbrot_parms[1] + y * color_mandelbrot_parms[3], MAXITER, color_mandelbrot_parms[9]);
+	else
+		return 0;
+}
+
+void iter_mandelbrot_raw_initialize_min()
+{
+	if(mandelbrot_miniter >= 0)
+		return;
+	// randomly sample 256 points
+	// mandelbrot them
+	// set that as miniter
+	int i = 0;
+	double x, y, z;
+	mandelbrot_miniter = MAXITER;
+	for(i = 0; i < 8192; ++i)
+	{
+		x = rnd() * 2 - 1;
+		y = rnd() * 2 - 1;
+		z = rnd() * 2 - 1;
+		double f = sqrt(x*x + y*y + z*z);
+		x /= f;
+		y /= f;
+		z /= f;
+		double a = (z - color_mandelbrot_parms[6]) / (color_mandelbrot_parms[7] - color_mandelbrot_parms[6]);
+		a = (a - color_mandelbrot_parms[8]) / (1 - color_mandelbrot_parms[8]);
+		if(a < 1)
+			continue;
+		double iterations = iter_mandelbrot_raw(x, y, z);
+		if(iterations == 0)
+			continue;
+		if(iterations < mandelbrot_miniter)
+			mandelbrot_miniter = iterations;
+	}
+}
+
+void color_mandelbrot(double x, double y, double z, double *r, double *g, double *b)
+{
+	iter_mandelbrot_raw_initialize_min();
+
+	double iterations = iter_mandelbrot_raw(x, y, z);
+	//printf("iter = %f\n", iterations);
+	double a = (z - color_mandelbrot_parms[6]) / (color_mandelbrot_parms[7] - color_mandelbrot_parms[6]);
+	a = (a - color_mandelbrot_parms[8]) / (1 - color_mandelbrot_parms[8]);
+	if(a < 0)
+		a = 0;
+	if(a > 1)
+		a = 1;
+	iterations = iterations * a + mandelbrot_miniter * (1-a);
+	*r = pow(iterations, color_mandelbrot_parms[10]);
+	*g = pow(iterations, color_mandelbrot_parms[11]);
+	*b = pow(iterations, color_mandelbrot_parms[12]);
+}
+
+void map_back(double x_in, double y_in, double *x_out, double *y_out, double *z_out)
+{
+	*x_out = 2 * x_in - 1;
+	*y_out = +1;
+	*z_out = 1 - 2 * y_in;
+}
+
+void map_right(double x_in, double y_in, double *x_out, double *y_out, double *z_out)
+{
+	*x_out = +1;
+	*y_out = 1 - 2 * x_in;
+	*z_out = 1 - 2 * y_in;
+}
+
+void map_front(double x_in, double y_in, double *x_out, double *y_out, double *z_out)
+{
+	*x_out = 1 - 2 * x_in;
+	*y_out = -1;
+	*z_out = 1 - 2 * y_in;
+}
+
+void map_left(double x_in, double y_in, double *x_out, double *y_out, double *z_out)
+{
+	*x_out = -1;
+	*y_out = 2 * x_in - 1;
+	*z_out = 1 - 2 * y_in;
+}
+
+void map_up(double x_in, double y_in, double *x_out, double *y_out, double *z_out)
+{
+	*x_out = 2 * y_in - 1;
+	*y_out = 1 - 2 * x_in;
+	*z_out = +1;
+}
+
+void map_down(double x_in, double y_in, double *x_out, double *y_out, double *z_out)
+{
+	*x_out = 1 - 2 * y_in;
+	*y_out = 1 - 2 * x_in;
+	*z_out = -1;
+}
+
+void writepic(colorfunc_t f, mapfunc_t m, const char *fn, int width, int height)
+{
+	int x, y;
+	uint8_t tga[18];
+
+	FILE *file = fopen(fn, "wb");
+	if(!file)
+		err(1, "fopen %s", fn);
+
+	memset(tga, 0, sizeof(tga));
+	tga[2] = 2;          // uncompressed type
+	tga[12] = (width >> 0) & 0xFF;
+	tga[13] = (width >> 8) & 0xFF;
+	tga[14] = (height >> 0) & 0xFF;
+	tga[15] = (height >> 8) & 0xFF;
+	tga[16] = 24;        // pixel size
+
+	fwrite(&tga, sizeof(tga), 1, file);
+	for(y = height-1; y >= 0; --y)
+		for(x = 0; x < width; ++x)
+		{
+			uint8_t rgb[3];
+			double rr, gg, bb;
+			double xx, yy;
+			double xxx, yyy, zzz;
+			double r;
+			xx = (x + 0.5) / width;
+			yy = (y + 0.5) / height;
+			m(xx, yy, &xxx, &yyy, &zzz);
+			r = sqrt(xxx*xxx + yyy*yyy + zzz*zzz);
+			xxx /= r;
+			yyy /= r;
+			zzz /= r;
+			f(xxx, yyy, zzz, &rr, &gg, &bb);
+			rgb[2] = floor(rnd() + rr * 255);
+			rgb[1] = floor(rnd() + gg * 255);
+			rgb[0] = floor(rnd() + bb * 255);
+			fwrite(rgb, sizeof(rgb), 1, file);
+		}
+	
+	fclose(file);
+}
+
+void map_all(const char *fn, colorfunc_t f, int width, int height)
+{
+	char buf[1024];
+	snprintf(buf, sizeof(buf), "%s_bk.tga", fn); buf[sizeof(buf) - 1] = 0; writepic(f, map_back, buf, width, height);
+	snprintf(buf, sizeof(buf), "%s_ft.tga", fn); buf[sizeof(buf) - 1] = 0; writepic(f, map_front, buf, width, height);
+	snprintf(buf, sizeof(buf), "%s_rt.tga", fn); buf[sizeof(buf) - 1] = 0; writepic(f, map_right, buf, width, height);
+	snprintf(buf, sizeof(buf), "%s_lf.tga", fn); buf[sizeof(buf) - 1] = 0; writepic(f, map_left, buf, width, height);
+	snprintf(buf, sizeof(buf), "%s_up.tga", fn); buf[sizeof(buf) - 1] = 0; writepic(f, map_up, buf, width, height);
+	snprintf(buf, sizeof(buf), "%s_dn.tga", fn); buf[sizeof(buf) - 1] = 0; writepic(f, map_down, buf, width, height);
+}
+
+int main(int argc, char **argv)
+{
+	colorfunc_t f;
+	if(argc < 4)
+		errx(1, "usage: %s filename res func parms...", *argv);
+	int res = atoi(argv[2]);
+	if(!strcmp(argv[3], "mandel"))
+	{
+		f = color_mandelbrot;
+		color_mandelbrot_parms[0]  = argc<= 4 ?  -0.740 :  atof(argv[4]); // shift xy
+		color_mandelbrot_parms[1]  = argc<= 5 ?  -0.314 :  atof(argv[5]);
+		color_mandelbrot_parms[2]  = argc<= 6 ?  -0.003 :  atof(argv[6]); // mul xy
+		color_mandelbrot_parms[3]  = argc<= 7 ?  -0.003 :  atof(argv[7]);
+		color_mandelbrot_parms[4]  = argc<= 8 ?   0.420 :  atof(argv[8]); // shift z
+		color_mandelbrot_parms[5]  = argc<= 9 ?   0.000 :  atof(argv[9]);
+		color_mandelbrot_parms[6]  = argc<=10 ?  -0.8   : atof(argv[10]); // horizon
+		color_mandelbrot_parms[7]  = argc<=11 ?  -0.7   : atof(argv[11]);
+		color_mandelbrot_parms[8]  = argc<=12 ?   0.5   : atof(argv[12]);
+		color_mandelbrot_parms[9]  = argc<=13 ? 400     : atof(argv[13]); // coloring
+		color_mandelbrot_parms[10] = argc<=14 ?   0.6   : atof(argv[14]);
+		color_mandelbrot_parms[11] = argc<=15 ?   0.5   : atof(argv[15]);
+		color_mandelbrot_parms[12] = argc<=16 ?   0.2   : atof(argv[16]);
+	}
+	else
+	{
+		f = color_test;
+	}
+	map_all(argv[1], color_mandelbrot, res, res);
+	return 0;
+}




More information about the nexuiz-commits mailing list