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